package catala

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

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:

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 rest of the pass is performed on the scopelang ast:

  • Scopelang.Dependency analyses inter-scope dependencies as well as the well-foundedness of types
  • This is also where the main, full typing of the program takes place