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(); }
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(); }
private void CreateDestinationFile(FileInfo grammar, ParserDefinition definition, Parser parser) => definition.ToXml().Save(this.DestinationFile(grammar).FullName);
private void CreateDestinationFile(FileInfo grammar, ParserDefinition definition) => this.CreateDestinationFile(grammar, definition, Parser.From(definition));
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)));
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}";