Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }