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