public void SaveToFile(ParsingGrammar grammar, string fileName) { using (var stream = File.OpenWrite(fileName)) { _xs.Serialize(stream, new GrammarType(grammar)); } }
public IndentedWriter Generate(ParsingGrammar g) { var mb = new ModelBuilder(g); var model = mb.Complete(); model.Namespace = string.IsNullOrWhiteSpace(this.Namespace) ? g.Name : this.Namespace; model.Public = this.Public; var gen = new ModelSourceCodeGenerator(model); return(gen.Generate()); }
public ParsingGrammar ToGrammar() { var g = new ParsingGrammar() { StartRuleName = this.StartRule, SkipRuleName = this.SkipRule }; foreach (var rule in this.Items) { g.Add(rule.Name, rule.Item.Apply(XmlExprTypeToParsingExpressionConverter.Instance)); } return(g); }
private static ParsingGrammar Translate(grammar grammar) { var g = new ParsingGrammar(); if (grammar.header.nsName != null) { g.Name = string.Join(".", grammar.header.nsName.identifiers.Select(s => s.@string)); } g.StartRuleName = grammar.header.identifiers.First().@string; if (grammar.header.identifiers.Length > 1) { g.SkipRuleName = grammar.header.identifiers.Last().@string; } foreach (var r in grammar.rules) { g.Add(r.identifier.@string, TranslateSeq(r.exprsSeq)); } return(g); }
public LtlAutomatonTextParser() { _grammar = DefenitionsGrammar.TryParse(LtlParserResources.SourceGrammarText); }
public ModelBuilder(ParsingGrammar g) { _g = g; }
public GrammarType(ParsingGrammar g) { this.SkipRule = g.SkipRuleName; this.StartRule = g.StartRuleName; this.Items = g.Select(r => new RuleType(r)).ToArray(); }
static DefenitionsGrammar() { var loader = new Xml.GrammarXmlSerializer(); _grammar = loader.LoadFromXml(PegResources.defXml); }