Additional keywords and identifiers.
Used to cast an expression or a l-value to a given type.
These keywords are used to plug an existing AST into an AST being built by the parser. There is a keyword per type of pluggable AST (list of declarations, expression, l-value, type name).
They start with an underscore, and use the same letters as standard identifiers. These symbols are used internally by the compiler to name or rename entities. Note that _main is still a valid identifier, not a reserved one.
reserved-id ::= _ { letter | digit | _ }