Exemplo n.º 1
0
        public Parser(ParserDefinition parserDefinition, Dictionary <string, OutputModuleWrapper> outputs, YASLServer server)
        {
            Server = server;

            List <OutputModuleWrapper> PreOutputs = new List <OutputModuleWrapper>();

            foreach (string outputName in parserDefinition.Output)
            {
                PreOutputs.Add(outputs[outputName]);
            }
            Outputs = PreOutputs.ToArray();
        }
Exemplo n.º 2
0
 public static Parser From(ParserDefinition definition) =>
 new Parser(
     LexerLoader.From(definition),
     ShiftTable.From(definition.Table.Shift),
     ReduceTable.From(definition.Table.Reduce, definition.Grammar.Rules.ToArray()),
     GotoTable.From(definition.Table.Goto));
 protected AnyGrammarParserTestsBase(IEnumerable <string> grammar)
 {
     this.ParserDefinition = new GrammarParser().Parse(grammar).BuildParser();
 }
Exemplo n.º 4
0
 private void CreateDestinationFile(FileInfo grammar, ParserDefinition definition, Parser parser) =>
 definition.ToXml().Save(this.DestinationFile(grammar).FullName);
Exemplo n.º 5
0
 private void CreateDestinationFile(FileInfo grammar, ParserDefinition definition) =>
 this.CreateDestinationFile(grammar, definition, Parser.From(definition));
Exemplo n.º 6
0
 public static Lexer From(ParserDefinition definition) =>
 new Lexer()
 .AddIgnorePatterns(definition.Grammar.IgnoreLexemes.Select(ignore => ignore.Pattern.ToString()))
 .AddConstants(definition.Grammar.ConstantLexemes.Select(constant => constant.ConstantValue))
 .AddPatterns(definition.Grammar.LexemePatterns.Select(pattern => (pattern.Pattern.ToString(), pattern.Name)));
Exemplo n.º 7
0
 public static string ToString(ParserDefinition parser) =>
 $"{parser.Grammar}{Environment.NewLine}{Environment.NewLine}" +
 $"{parser.Table}{Environment.NewLine}{Environment.NewLine}" +
 $"{parser.FirstSets.ToString(set => parser.Grammar.SortOrderFor(set.Label))}{Environment.NewLine}{Environment.NewLine}" +
 $"{parser.FollowSets.ToString(set => parser.Grammar.SortOrderFor(set.Label))}{Environment.NewLine}{Environment.NewLine}" +
 $"{parser.States}";