package catala

  1. Overview
  2. Docs
Compiler and library for the literate programming language for tax code specification

Install

Dune Dependency

Authors

Maintainers

Sources

0.10.0.tar.gz
md5=5abd76e8c51a47670645e91b21b57fc5
sha512=9c6fbe50c0b5a60566e877eeddadca0a339e2ce35deb5c1beceb03bc40eb6af2d519313e71859d88645b53fad591d4fa5288c633b185c9d765603da0f5b7dd7b

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.

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.

Translation to the default calculus

The translation from the scope language to the default calculus involves three big features:

  1. Translating structures and enums into simpler sum and product types
  2. Build thunked signatures for the scopes as functions
  3. 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 Dcalc.From_scopelang is mostly responsible for 2.

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.
  • Dcalc.From_scopelang Scope language to default calculus translator
OCaml

Innovation. Community. Security.