package catala
Install
Dune Dependency
Authors
Maintainers
Sources
md5=4c6f725ef4d21c5ff91f60d74b454ef7
sha512=98806e03daa6f33740b80a0f78a37320fb70ebea8cb927ea8fed022673459189c32e2389ccba0fa25d93f754b0fa0128a5ee28e1bb9abefa330deb4be8cc7d95
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 Dcalc.Ast.EDefault
tree instead of a flat list of rules.
The module describing the abstract syntax tree is:
Scopelang.Ast
Abstract 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.
Translation to the default calculus
Related modules:
Scopelang.Dependency
Graph representation of the dependencies between scopes in the Catala program. Vertices are functions, x -> y if x is used in the definition of y.Scopelang.Scope_to_dcalc
The translation from the scope language to the default calculus involves three big features:
- Translating structures and enums into simpler sum and product types
- Build thunked signatures for the scopes as functions
- Transform the list of scopes into a program
1 and 3 involve computing dependency graphs for respectively the structs and enums on one hand, and the inter-scope dependencies on the other hand. Both can be found in Scopelang.Dependency
, while Scopelang.Scope_to_dcalc
is mostly responsible for 2.