private void InitializeParsers() { #region Grammar Grammar = new Grammar(); //Grammar.Load(); var finiteAutomaton = new FiniteAutomaton(); dynamic parser = ParserManager.InitializeParser( "GrammarParser.dll", "GrammarParser.GrammarParser", Configuration.Path.GrammarInputXml, Configuration.Parser.ShouldIncludeTerminalsFromInsideOfDefinedTokens, Configuration.Parser.ShouldConvertLeftRecursionToRight); Grammar.Parse(parser); var controlTerminals = Grammar.Nodes.Terminals.Where(n => n.IsControl).Select(n => n.Name).ToArray(); Editor.DocumentOpened += (doc) => mainWindow.ScriptEditor.ApplyTextColor(doc, controlTerminals, Color.FromRgb(0, 0, 255)); // Parse finite automaton parser = ParserManager.InitializeParser( "FiniteAutomatonParser.dll", "FiniteAutomatonParser.FiniteAutomatonParser", Grammar.ClassTable, Grammar.Nodes, Grammar.UnclassifiedTerminals); finiteAutomaton.Parse(parser); //finiteAutomaton.Save(); //finiteAutomaton.Load(); SaveGrammarTxt(Grammar); SaveGrammarFactorizedTxt(Grammar); //Grammar.Save(); #endregion ParserManager.InitializeParser( "SyntaxRecursiveParser.dll", "SyntaxRecursiveParser.SyntaxRecursiveParser", true, Grammar.ClassTable.TokenClasses.Forward(Grammar.ClassTable.UndefinedTokenClassName), Grammar.Nodes.Axiom); //PushdownAutomaton pushdownAutomaton = new PushdownAutomaton(); //pushdownAutomaton.Load(); //ParserManager.InitializeParser( // "SyntaxPushdownParser.dll", // "SyntaxPushdownParser.SyntaxPushdownParser", // pushdownAutomaton, // Grammar.Nodes, // true, // Grammar.ClassTable.TokenClasses.Forward(Grammar.ClassTable.UndefinedTokenClassName)); ParserManager.InitializeParser( "TokenParser.dll", "TokenParser.TokenParser", Grammar.Nodes, Grammar.ClassTable, finiteAutomaton); ParserManager.InitializeParser( "SemanticParser.dll", "SemanticParser.SemanticParser", Grammar.ClassTable, Grammar.Nodes); #region Predescence //Create predescence table //parser = ParserManager.InitializeParser( // "PredescenceTableParser.dll", // "PredescenceTableParser.PredescenceTableParser", // Grammar.Nodes); //var predescenceTable = new PredescenceTable(); //predescenceTable.Parse(parser); //var f = (Func<IEnumerable<IParsedToken>>)(() => ParsedTokens); //parser = ParserManager.InitializeParser( // "SyntaxPredescenceTableParserWithPOLIZ.dll", // "SyntaxPredescenceTableParser.SyntaxPredescenceTableParser", // predescenceTable.Nodes, // f, // Grammar.Nodes, // Grammar.Nodes.Axiom); //parser = ParserManager.InitializeParser( // "SyntaxPredescenceTableParser.dll", // "SyntaxPredescenceTableParser.SyntaxPredescenceTableParser", // predescenceTable.Nodes, // f, // Grammar.Nodes, // Grammar.Nodes.Axiom); //SavePredescenceTableTxt(predescenceTable, Grammar); #endregion ParserManager.InitializeParser( "RpnParser.dll", "RpnParser.RpnParser", Grammar.Nodes, Configuration.Path.StatementRulesXml); }