feat: better name validation
This PR adds more validation to add-to-grammar
, improves error
messages related to RACR exception, and document the RACR naming rules.
- An identifier in Racket could be empty (
||
), which confuses the name generation, so override the `id' syntax class to prohibit empty identifier. - Non-terminal must start with an uppercase letter.
- Terminal must be all lowercase letters.