I removed the last top-level effect (the execution of cpp).
The idea is that ParserUnit.ml and each ParserMain.ml get closer
to pascaligo.ml, cameligo.ml and reasonligo.ml, respectively.
I removed AST.mli from CameLIGO (for maintenance's sake).
I removed useless functions.
I renamed unlexer.ml to Unlexer.ml
I added a cleaning rule for my Makefile in Makefile.cfg
Some weeks ago, anonymous functions as expressions were added to
PascaLIGO, unfortunately in a manner that allowed in theory for
contexts in which a named function was found when an anonymous was
expected, and vice-versa. That explains that the simplifier had two new possible errors:
* unexpected_anonymous_function
("you provided a function declaration without name")
* unexpected_named_function
I changed the AST and the parser so that function expressions
correspond to anonymous functions (without block) and function
declarations correspond to named functions.
I also removed a error in the simplifier, which was unused:
* bad_bytes
("you provided a function expression with a name (remove it)")
* Duplicate variants in the same type declaration
* Duplicate parameter in the same function declaration
* Shadowing of predefined value in a declaration
I fixed the architecture for that support: ParserMain.ml is now where
those specific errors are handled, and they are produced by the
semantic actions of the parsers.
Unfortunately, even thought all the front-ends use the same
ParserAPI.ml, that file cannot be moved to the folder `shared` due to
a dependency on AST.ml produced by Menhir.
* I added CLI option "--mono" to select the monolithic API of Menhir.
* I added a field "win" to the state of the lexer (a two-token
window for error reporting).
* I escaped LIGO strings before making them OCaml strings (for
example for printing).