--- a
+++ b/trunk/Cm/Cm.Test/UnitTestFile.hpp
@@ -0,0 +1,37 @@
+#ifndef UnitTestFile_hpp_23220
+#define UnitTestFile_hpp_23220
+#include <Soul.Parsing/Grammar.hpp>
+#include <Soul.Parsing/Keyword.hpp>
+#include <Cm.Test/UnitTest.hpp>
+
+
+namespace Cm { namespace Test {
+
+using Soul::Parsing::GrammarPtr;
+using Soul::Parsing::ParsingDomainPtr;
+using Soul::Parsing::String;
+using Soul::Parsing::KeywordRule;
+
+class UnitTestFile;
+typedef boost::shared_ptr<UnitTestFile> UnitTestFileGrammarPtr;
+
+class UnitTestFile : public Soul::Parsing::Grammar
+{
+public:
+    static UnitTestFileGrammarPtr Create();
+    static UnitTestFileGrammarPtr Create(const ParsingDomainPtr& parsingDomain);
+    void Parse(const String& content, int fileIndex, const String& fileName, std::vector<UnitTest>* tests);
+private:
+    UnitTestFile(const ParsingDomainPtr& parsingDomain_);
+    virtual void CreateRules();
+    virtual void GetReferencedGrammars();
+    class UnitTestFileRuleParser;
+    class UnitTestRuleParser;
+    class FileNameRuleParser;
+    class ErrorCodeRuleParser;
+    class ErrorLineNumberRuleParser;
+};
+
+} } // Cm.Test
+
+#endif // UnitTestFile_hpp_23220