Comp.Expression_objecttype t = | Raw_identifier of {location : Beluga_syntax.Syncom.Location.t;identifier : Beluga_syntax.Syncom.Identifier.t;prefixed : Stdlib.Bool.t;}| Raw_qualified_identifier of {location : Beluga_syntax.Syncom.Location.t;identifier : Beluga_syntax.Syncom.Qualified_identifier.t;prefixed : Stdlib.Bool.t;}Raw_qualified_identifier { identifier = "M.x"; prefixed = false; _ } is the constant "M.x".Raw_qualified_identifier { identifier = "M.x"; prefixed = true; _ } is the prefixed constant "(M.x)".Since identifiers are ambiguous with qualified identifiers in the parser, the following may be assumed during disambiguation: List.length (Qualified_identifier.namespaces identifier) >= 1.
Qualified identifiers are ambiguous with observations.
A prefixed constant may appear as an argument, or as applicand in prefix notation irrespective of its pre-defined fixity and associativity.
*)| Raw_fn of {location : Beluga_syntax.Syncom.Location.t;parameters : (Beluga_syntax.Syncom.Location.t
* Beluga_syntax.Syncom.Identifier.t Support.Option.t)
Support.List1.t;body : t;}| Raw_mlam of {location : Beluga_syntax.Syncom.Location.t;parameters : (Beluga_syntax.Syncom.Location.t
* (Beluga_syntax.Syncom.Identifier.t Support.Option.t
* [ `Plain | `Hash | `Dollar ]))
Support.List1.t;body : t;}| Raw_fun of {location : Beluga_syntax.Syncom.Location.t;branches : (Synprs__.Synprs_definition.Meta.Context_object.t
* Copattern_object.t Support.List1.t
* t)
Support.List1.t;}| Raw_box of {location : Beluga_syntax.Syncom.Location.t;meta_object : Synprs__.Synprs_definition.Meta.Thing.t;}| Raw_let of {location : Beluga_syntax.Syncom.Location.t;meta_context : Synprs__.Synprs_definition.Meta.Context_object.t;pattern : Pattern_object.t;scrutinee : t;body : t;}| Raw_impossible of {location : Beluga_syntax.Syncom.Location.t;scrutinee : t;}| Raw_case of {location : Beluga_syntax.Syncom.Location.t;scrutinee : t;check_coverage : Stdlib.Bool.t;branches : (Synprs__.Synprs_definition.Meta.Context_object.t
* Pattern_object.t
* t)
Support.List1.t;}| Raw_tuple of {location : Beluga_syntax.Syncom.Location.t;elements : t Support.List2.t;}| Raw_hole of {location : Beluga_syntax.Syncom.Location.t;label : Beluga_syntax.Syncom.Identifier.t Support.Option.t;}| Raw_box_hole of {location : Beluga_syntax.Syncom.Location.t;}| Raw_application of {location : Beluga_syntax.Syncom.Location.t;expressions : t Support.List2.t;}| Raw_annotated of {location : Beluga_syntax.Syncom.Location.t;expression : t;typ : Sort_object.t;}| Raw_observation of {location : Beluga_syntax.Syncom.Location.t;scrutinee : t;destructor : Beluga_syntax.Syncom.Qualified_identifier.t;}Raw_observation { scrutinee = e; destructor = ".tl"; _ } is the observation e .tl.
Because of the lexical convention, destructor may be multiple consecutive destructors. For instance, (x) .tl .tl has destructor = ".tl.tl".