public static MofSpecificationAst Parse(List <Token> lexerTokens, ParserQuirks quirks = ParserQuirks.None) { // remove all comments and whitespace var tokens = lexerTokens.Where(lt => !(lt is CommentToken) && !(lt is WhitespaceToken)).ToList(); var stream = new ParserStream(tokens); var program = ParserEngine.ParseMofSpecificationAst(stream, quirks); return(program); }
//[TestFixture] //public static class ConvertToMofMethodTestCasesWmiWinXp //{ // [Test, TestCaseSource(typeof(ConvertToMofMethodTestCasesWmiWinXp), "GetTestCases")] // public static void ConvertToMofMethodTestsFromDisk(string mofFilename) // { // ConvertToMofTests.MofGeneratorRoundtripTest(mofFilename); // } // public static IEnumerable<TestCaseData> GetTestCases // { // get // { // return TestUtils.GetMofTestCase("Parsing\\WMI\\WinXp"); // } // } //} //[TestFixture] //public static class ConvertToMofMethodGolfExamples //{ // //[Test, TestCaseSource(typeof(ConvertToMofMethodGolfExamples), "GetTestCases")] // public static void ConvertToMofMethodTestsFromDisk(string mofFilename) // { // ConvertToMofTests.MofGeneratorRoundtripTest(mofFilename); // } // public static IEnumerable<TestCaseData> GetTestCases // { // get // { // return TestUtils.GetMofTestCase("Parsing\\DSP0221_3.0.1"); // } // } //} private static void AssertRoundtrip(string sourceMof, ParserQuirks parserQuirks = ParserQuirks.None) { // check the lexer tokens roundtrips ok var tokens = Lexing.Lexer.Lex(SourceReader.From(sourceMof)); var tokensMof = TokenMofGenerator.ConvertToMof(tokens); Assert.AreEqual(sourceMof, tokensMof); // check the parser ast roundtrips ok var astNodes = Parser.Parse(tokens, parserQuirks); var astMof = AstMofGenerator.ConvertToMof(astNodes); Assert.AreEqual(sourceMof, astMof); }