示例#1
0
        private Nonterminal Map(RuleExpr rule)
        {
            if (!Rules.TryGetValue(rule, out var mapped))
            {
                mapped = new Nonterminal(rule.Name);
                Rules.Add(rule, mapped);
                mapped.Body = Map(mapped, rule.Body);
            }

            return(mapped);
        }
示例#2
0
 public Grammar From(RuleExpr startSymbol)
 {
     return(new Grammar(Map(startSymbol)));
 }