Fix parsing TYPEIDs in declarators (#169)
* Remove `init_declarator_list` workarounds
* Remove `struct_declaration` workaround
* Remove `declarator` pointer workaround
* Add `@parameterized` decorator for parser rules
* Rename `declarator` productions to `id_declarator` in preparation of adding `typeid_declarator`
* Use `id_declarator` in function definitions
* Add `typeid_declarator` and allow it as a `declarator`
* Create separate production for `type_specifier_no_typeid`
* Allow specifiers to be appended (useful for left-recursive lists)
* Change `specifier_qualifier_list` to be left-recursive and require at least one `type specifier`
* Change `declaration_specifiers` to require one `type_specifier` and disallow `typeid`s once we've seen a `type_specifier`
* Allow `decl_body` to omit a `type_specifier` if `init_declarator` doesn't start with a TYPEID
* Add `typeid_noparen_declarator` for use in `parameter_declaration`s
* Add test for multi-declarator declaration using a typedef name
* Move test into a more appropriate function and add another test
* Expand UnaryOp in `expand_init()`
* Add test for redefining name in the middle of a declaration
* Added info on the `append` parameter.
* Move rule template processing to a class constructor
* Auto-remove template methods and remove leading underscores
* Use xxx/yyy instead of XXX/YYY for better readability
* Add more documentation of the templating functions
* Add test for correct handling of ambiguity in parameter declarations
* Don't test incremental generation of declarators yet
3 files changed