Modify grammar to simplify parser with ~30% fewer "special" functions and renamings
Move to a consistent parse tree tracking the type of the node. Although more human readable and easier to interact with for lookups, using maps of key-value pairs for the parsed tree that comes out of instaparse's transform function for things like type-fields, variables, and arguments actually makes it harder to do validation (e.g., guard against duplicate keys) and is less consistent to walk the tree (things like zippers tracking the path into the tree may be useful for clojure.spec global naming, and could simplify type lookup and validation). Use a vector of maps instead.
Fix root cause of the enum value ambiguity with boolean values. The spec states: EnumValue can be a Name but not true or false or null
Consolidate parser tests (including CATS cases and others) in a single test namespace that can react to changes in the parser namespace (for things like prism)
Fix :ListType parsing
Use :argument-name and :field-name to remain unambiguous. Arguments can have both a :variable-name and an :argument-name and these were colliding when they were both called :name
Simplify :selection-set parsed representation by removing the :selection and :field wrapping keys
EnumValue can be a Name but not true or false or null
:ListType
parsing:argument-name
and:field-name
to remain unambiguous. Arguments can have both a:variable-name
and an:argument-name
and these were colliding when they were both called:name
:selection-set
parsed representation by removing the:selection
and:field
wrapping keys:enum-value
wrapper