- Notifications
You must be signed in to change notification settings - Fork0
Description
(Fromwe-like-parsers/pegen#84.)
Items in an alternative may be named, and the names may be referenced in actions. But there are some "forbidden" names. E.g. don't name an itemp, because (when generating C code) every rule parsing function has an argument namedp. There are other possible name clashes too:res andmark are always local variables.And there are many helper functions, with names like And of course anything that's a C reserved word (e.g.is_memoized orsingleton_seq.if) cannot be used either. Also there are systematic generated names like*_var,*_type and*_rule.
It's easy to renamep,mark andres in the generated code to start with an underscore (by convention, rule names don't start with_, and maybe we should make this a hard requirement). I'm not sure we need to worry about the others, though we may have to warn about them in the docs.
When generating Python code there are other possible clashes, e.g.self,mark andcut. We can handle these the same way. (There are a few others that seem less important, likeast and of course Python builtins and keywords.)