BnfGrammar Convert(EbnfGrammar EG) { Bnf = new BnfGrammar(); Footprint = new GrammarConversionFootprint(EG, Bnf); foreach (var er in EG.Rules) { BnfRule br = Convert(er); } List <IOperationFootprint> ops = new List <IOperationFootprint> (); ops.AddRange(nonterminalConversions.Values); ops.AddRange(ruleConversions.Values); Footprint.Parts = ops.ToArray(); return(Bnf); }
public static BnfGrammar Test1() { BnfNonterminal S = new BnfNonterminal(nameof(S)); BnfNonterminal A = new BnfNonterminal(nameof(A)); TerminalSymbol a = new TerminalSymbol(nameof(a)); TerminalSymbol b = new TerminalSymbol(nameof(b)); TerminalSymbol c = new TerminalSymbol(nameof(c)); TerminalSymbol d = new TerminalSymbol(nameof(d)); var rule1 = new BnfRule(S, new ISymbol [] { c, A, d }); var rule2 = new BnfRule(A, new ISymbol [] { a, b }); var rule3 = new BnfRule(A, new ISymbol [] { a }); var G = new BnfGrammar(); G.Add(rule1); G.Add(rule2); G.Add(rule3); return(G); }