package catala
Install
dune-project
Dependency
Authors
Maintainers
Sources
md5=42196e9a9c5e12839b38cb3da935f10c
sha512=ede2d8c17dcb936c1c8c596f1453bf89370a2f824a190efe74e438d7d7f7f83875c1ecbc18219c6a8a3e98b3ab4da1c3a6cc4e534687dbc90f3dca8230f43f7b
doc/scopelang.html
The scope language
This representation is the third in the compilation chain (see Architecture). Its main difference with the previous desugared representation is that inside a scope, the definitions are ordered according to their computational dependency order, and each definition is a Shared_ast.base_gexpr.EDefault tree instead of a flat list of rules.
Overloaded operators are also resolved during the translation to this representation.
The module describing the abstract syntax tree is:
Scopelang.AstAbstract syntax tree of the scope language
Printing helpers can be found in Scopelang.Print.
This intermediate representation corresponds to the scope language presented in the Catala formalization.
The Scopelang.From_desugared pass performs a few important transformation:
- the construction of the default trees (see
Shared_ast.base_gexpr.EDefault) from the list of prioritized rules - the resolution of overloads (using
Shared_ast.Typing) - wrapping of subscope arguments
The rest of the pass is performed on the scopelang ast:
Scopelang.Dependencyanalyses inter-scope dependencies as well as the well-foundedness of types- This is also where the main, full typing of the program takes place