package catala
Compiler and library for the literate programming language for tax code specification
Install
Dune Dependency
Authors
Maintainers
Sources
0.7.0.tar.gz
md5=6dbbc2f50c23693f26ab6f048e78172f
sha512=a5701e14932d8a866e2aa3731f76df85ff2a68b4fa943fd510c535913573274d66eaec1ae6fcae17f20b475876048a9ab196ef6d8c23d4ea6b90b986aa0a6daa
doc/catala.surface/Surface/Ast/index.html
Module Surface.Ast
Source
Abstract syntax tree built by the Catala parser
To allow for quick traversal and/or modification of this AST structure, we provide a visitor design pattern. This feature is implemented via François Pottier's OCaml visitors library.
Type definitions
Constructors are CamelCase
include sig ... end
include sig ... end
Idents are snake_case
include sig ... end
include sig ... end
include sig ... end
Source
type primitive_typ =
| Integer
| Decimal
| Boolean
| Money
| Duration
| Text
| Date
| Named of constructor
include sig ... end
include sig ... end
Source
type base_typ_data =
| Primitive of primitive_typ
| Collection of base_typ_data Utils.Marked.pos
include sig ... end
include sig ... end
include sig ... end
include sig ... end
include sig ... end
include sig ... end
Source
type struct_decl_field = {
struct_decl_field_name : ident Utils.Marked.pos;
struct_decl_field_typ : typ Utils.Marked.pos;
}
include sig ... end
include sig ... end
Source
type struct_decl = {
struct_decl_name : constructor Utils.Marked.pos;
struct_decl_fields : struct_decl_field Utils.Marked.pos list;
}
include sig ... end
include sig ... end
Source
type enum_decl_case = {
enum_decl_case_name : constructor Utils.Marked.pos;
enum_decl_case_typ : typ Utils.Marked.pos option;
}
include sig ... end
include sig ... end
Source
type enum_decl = {
enum_decl_name : constructor Utils.Marked.pos;
enum_decl_cases : enum_decl_case Utils.Marked.pos list;
}
include sig ... end
include sig ... end
Source
type match_case_pattern =
(constructor Utils.Marked.pos option * constructor Utils.Marked.pos) list
* ident Utils.Marked.pos option
include sig ... end
include sig ... end
include sig ... end
include sig ... end
include sig ... end
include sig ... end
include sig ... end
include sig ... end
include sig ... end
include sig ... end
include sig ... end
include sig ... end
include sig ... end
include sig ... end
include sig ... end
Source
type literal =
| LNumber of literal_number Utils.Marked.pos * literal_unit Utils.Marked.pos option
| LBool of bool
| LMoneyAmount of money_amount
| LDate of literal_date
include sig ... end
include sig ... end
Source
type aggregate_func =
| AggregateSum of primitive_typ
| AggregateCount
| AggregateExtremum of bool * primitive_typ * expression Utils.Marked.pos
| AggregateArgExtremum of bool * primitive_typ * expression Utils.Marked.pos
Source
and explicit_match_case = {
match_case_pattern : match_case_pattern Utils.Marked.pos;
match_case_expr : expression Utils.Marked.pos;
}
Source
and expression =
| MatchWith of expression Utils.Marked.pos * match_cases Utils.Marked.pos
| IfThenElse of expression Utils.Marked.pos * expression Utils.Marked.pos * expression Utils.Marked.pos
| Binop of binop Utils.Marked.pos * expression Utils.Marked.pos * expression Utils.Marked.pos
| Unop of unop Utils.Marked.pos * expression Utils.Marked.pos
| CollectionOp of collection_op Utils.Marked.pos * ident Utils.Marked.pos * expression Utils.Marked.pos * expression Utils.Marked.pos
| MemCollection of expression Utils.Marked.pos * expression Utils.Marked.pos
| TestMatchCase of expression Utils.Marked.pos * match_case_pattern Utils.Marked.pos
| FunCall of expression Utils.Marked.pos * expression Utils.Marked.pos
| Builtin of builtin_expression
| Literal of literal
| EnumInject of constructor Utils.Marked.pos option * constructor Utils.Marked.pos * expression Utils.Marked.pos option
| StructLit of constructor Utils.Marked.pos * (ident Utils.Marked.pos * expression Utils.Marked.pos) list
| ArrayLit of expression Utils.Marked.pos list
| Ident of ident
| Dotted of expression Utils.Marked.pos * constructor Utils.Marked.pos option * ident Utils.Marked.pos
(*Dotted is for both struct field projection and sub-scope variables
*)
include sig ... end
include sig ... end
Source
type exception_to =
| NotAnException
| UnlabeledException
| ExceptionToLabel of ident Utils.Marked.pos
include sig ... end
include sig ... end
Source
type rule = {
rule_label : ident Utils.Marked.pos option;
rule_exception_to : exception_to;
rule_parameter : ident Utils.Marked.pos option;
rule_condition : expression Utils.Marked.pos option;
rule_name : qident Utils.Marked.pos;
rule_id : Desugared.Ast.RuleName.t;
rule_consequence : bool Utils.Marked.pos;
rule_state : ident Utils.Marked.pos option;
}
Source
type definition = {
definition_label : ident Utils.Marked.pos option;
definition_exception_to : exception_to;
definition_name : qident Utils.Marked.pos;
definition_parameter : ident Utils.Marked.pos option;
definition_condition : expression Utils.Marked.pos option;
definition_id : Desugared.Ast.RuleName.t;
definition_expr : expression Utils.Marked.pos;
definition_state : ident Utils.Marked.pos option;
}
include sig ... end
include sig ... end
include sig ... end
include sig ... end
Source
type meta_assertion =
| FixedBy of qident Utils.Marked.pos * ident Utils.Marked.pos
| VariesWith of qident Utils.Marked.pos * expression Utils.Marked.pos * variation_typ Utils.Marked.pos option
include sig ... end
include sig ... end
Source
type assertion = {
assertion_condition : expression Utils.Marked.pos option;
assertion_content : expression Utils.Marked.pos;
}
include sig ... end
include sig ... end
Source
type scope_use_item =
| Rule of rule
| Definition of definition
| Assertion of assertion
| MetaAssertion of meta_assertion
include sig ... end
include sig ... end
Source
type scope_use = {
scope_use_condition : expression Utils.Marked.pos option;
scope_use_name : constructor Utils.Marked.pos;
scope_use_items : scope_use_item Utils.Marked.pos list;
}
include sig ... end
include sig ... end
include sig ... end
include sig ... end
Source
type scope_decl_context_io = {
scope_decl_context_io_input : io_input Utils.Marked.pos;
scope_decl_context_io_output : bool Utils.Marked.pos;
}
include sig ... end
include sig ... end
Source
type scope_decl_context_scope = {
scope_decl_context_scope_name : ident Utils.Marked.pos;
scope_decl_context_scope_sub_scope : constructor Utils.Marked.pos;
scope_decl_context_scope_attribute : scope_decl_context_io;
}
include sig ... end
include sig ... end
Source
type scope_decl_context_data = {
scope_decl_context_item_name : ident Utils.Marked.pos;
scope_decl_context_item_typ : typ Utils.Marked.pos;
scope_decl_context_item_attribute : scope_decl_context_io;
scope_decl_context_item_states : ident Utils.Marked.pos list;
}
include sig ... end
include sig ... end
Source
type scope_decl_context_item =
| ContextData of scope_decl_context_data
| ContextScope of scope_decl_context_scope
include sig ... end
include sig ... end
Source
type scope_decl = {
scope_decl_name : constructor Utils.Marked.pos;
scope_decl_context : scope_decl_context_item Utils.Marked.pos list;
}
include sig ... end
include sig ... end
Source
type code_item =
| ScopeUse of scope_use
| ScopeDecl of scope_decl
| StructDecl of struct_decl
| EnumDecl of enum_decl
include sig ... end
include sig ... end
include sig ... end
include sig ... end
include sig ... end
include sig ... end
Source
type law_heading = {
law_heading_name : string Utils.Marked.pos;
law_heading_id : string option;
law_heading_expiration_date : string option;
law_heading_precedence : int;
}
include sig ... end
include sig ... end
Source
type law_include =
| PdfFile of string Utils.Marked.pos * int option
| CatalaFile of string Utils.Marked.pos
| LegislativeText of string Utils.Marked.pos
include sig ... end
include sig ... end
Source
type law_structure =
| LawInclude of law_include
| LawHeading of law_heading * law_structure list
| LawText of string
| CodeBlock of code_block * source_repr * bool
include sig ... end
include sig ... end
include sig ... end
include sig ... end
Helpers
Translates a rule
into the corresponding definition
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page