[wg-camlp4] Changes to the parsetree
alain.frisch at lexifi.com
Mon Mar 25 11:42:57 GMT 2013
Now that we have reached a stable state concerning the syntax of
attributes and extension nodes, I'd like to get feedback on the proposed
changes to the definition of the Parsetree:
The following changes have been applied:
- Adding new constructors for extension nodes and for attributes as
stand-alone signature/structure items.
- Storing attributes as new fields in record types (such as
expression, pattern, core_type, etc).
- Introducing some more records to replace tuples/n-ary constructors:
label_declaration, constructor_declaration, exception_declaration,
module_declaration, module_type_declaration, module_binding,
- Adding a name field to value_description and type_declaration.
Another tiny change is that recursive modules are no longer restricted
syntactically to come with explicit module types (this is enforced in
the type-checker). This means that "module rec A = (struct ... end :
sig ... end)" is now accepted as well as "module rec A : sig ... end =
struct ... end".
More cleanup to the Parsetree representation can be considered. Examples:
- Cleaner representation of "when" guard (before doing anything here,
I'd like to know if the removal of the "fun pat when cond -> ..." form
will be accepted, see http://caml.inria.fr/mantis/view.php?id=5939).
- Doing less desugaring the parser (interval patterns, M.(e) === let
open M in e, ....).
- Make the type-checker more robust w.r.t. where Ptyp_poly node have
to be inserted (currently the parser introduces some empty Ptyp_poly
nodes and the type-checker expects to find them).
- Replacing Booleans with more explicit sum types and getting rid of
more tuples/n-ary constructors.
It's probably good to validate the general approach first with the core
team before we apply any such further cleanups. Before submitting the
current version for review to the core team, I'd like to get feedback
from the participants of this working group.
More information about the wg-camlp4