def nonterminal_apply(self, name, args): if name in self.terminal_names: raise ValueError( "parameters applied to terminal {!r}".format(name)) if len(set(k for k, expr in args)) != len(args): raise ValueError("parameter passed multiple times") return grammar.Nt(name, tuple(args))
def nonterminal(self, name): if name in self.terminal_names: return name return grammar.Nt(name, ())
def nt_lhs_with_params(self, name, params): return grammar.Nt(name, tuple(params))
def nt_lhs_no_params(self, name): return grammar.Nt(name, ())
def nonterminal_apply(self, name, ob, args, cb): assert (ob, cb) == ('[', ']') if len(set(k for k, expr in args)) != len(args): raise ValueError("parameter passed multiple times") return grammar.Nt(name, tuple(args))
def nonterminal_apply(self, name, args): if len(set(k for k, expr in args)) != len(args): raise ValueError("parameter passed multiple times") return grammar.Nt(name, tuple(args))