package catala
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
Low-level language for tax code specification
Install
dune-project
Dependency
Authors
Maintainers
Sources
0.3.0.tar.gz
md5=4a2c5495f30d8fc2e3bf977df6e602f9
sha512=8dcc404b6068b9dbd76982ade60d8fba1950fdd0a8a626db17429120483367dce1f51997e96d7b8ee5308f305c3bcbb897ef85336f25e9ef3681f4cb9237f56a
doc/catala.surface/Surface/Ast/index.html
Module Surface.AstSource
Abstract syntax tree built by the Catala parser
Type definitions
Constructors are CamelCase
Idents are snake_case
Source
type primitive_typ = | Integer| Decimal| Boolean| Money| Duration| Text| Date| Named of constructor
Source
type base_typ_data = | Primitive of primitive_typ| Collection of base_typ_data Utils.Pos.marked
Source
type struct_decl_field = {struct_decl_field_name : ident Utils.Pos.marked;struct_decl_field_typ : typ Utils.Pos.marked;
}Source
type struct_decl = {struct_decl_name : constructor Utils.Pos.marked;struct_decl_fields : struct_decl_field Utils.Pos.marked list;
}Source
type enum_decl_case = {enum_decl_case_name : constructor Utils.Pos.marked;enum_decl_case_typ : typ Utils.Pos.marked option;
}Source
type enum_decl = {enum_decl_name : constructor Utils.Pos.marked;enum_decl_cases : enum_decl_case Utils.Pos.marked list;
}Source
type match_case_pattern =
(constructor Utils.Pos.marked option * constructor Utils.Pos.marked) list
* ident Utils.Pos.marked optionSource
type literal_date = {literal_date_day : int Utils.Pos.marked;literal_date_month : int Utils.Pos.marked;literal_date_year : int Utils.Pos.marked;
}Source
type money_amount = {money_amount_units : Runtime.integer;money_amount_cents : Runtime.integer;
}Source
type literal = | LNumber of literal_number Utils.Pos.marked * literal_unit Utils.Pos.marked option| LBool of bool| LMoneyAmount of money_amount| LDate of literal_date
Source
type aggregate_func = | AggregateSum of primitive_typ| AggregateCount| AggregateExtremum of bool * primitive_typ * expression Utils.Pos.marked| AggregateArgExtremum of bool * primitive_typ * expression Utils.Pos.marked
Source
and match_case = {match_case_pattern : match_case_pattern Utils.Pos.marked;match_case_expr : expression Utils.Pos.marked;
}Source
and expression = | MatchWith of expression Utils.Pos.marked * match_cases Utils.Pos.marked| IfThenElse of expression Utils.Pos.marked * expression Utils.Pos.marked * expression Utils.Pos.marked| Binop of binop Utils.Pos.marked * expression Utils.Pos.marked * expression Utils.Pos.marked| Unop of unop Utils.Pos.marked * expression Utils.Pos.marked| CollectionOp of collection_op Utils.Pos.marked * ident Utils.Pos.marked * expression Utils.Pos.marked * expression Utils.Pos.marked| MemCollection of expression Utils.Pos.marked * expression Utils.Pos.marked| TestMatchCase of expression Utils.Pos.marked * match_case_pattern Utils.Pos.marked| FunCall of expression Utils.Pos.marked * expression Utils.Pos.marked| Builtin of builtin_expression| Literal of literal| EnumInject of constructor Utils.Pos.marked option * constructor Utils.Pos.marked * expression Utils.Pos.marked option| StructLit of constructor Utils.Pos.marked * (ident Utils.Pos.marked * expression Utils.Pos.marked) list| ArrayLit of expression Utils.Pos.marked list| Ident of ident| Dotted of expression Utils.Pos.marked * constructor Utils.Pos.marked option * ident Utils.Pos.marked(*Dotted is for both struct field projection and sub-scope variables
*)
Source
type exception_to = | NotAnException| UnlabeledException| ExceptionToLabel of ident Utils.Pos.marked
Source
type rule = {rule_label : ident Utils.Pos.marked option;rule_exception_to : exception_to;rule_parameter : ident Utils.Pos.marked option;rule_condition : expression Utils.Pos.marked option;rule_name : qident Utils.Pos.marked;rule_consequence : bool Utils.Pos.marked;
}Source
type definition = {definition_label : ident Utils.Pos.marked option;definition_exception_to : exception_to;definition_name : qident Utils.Pos.marked;definition_parameter : ident Utils.Pos.marked option;definition_condition : expression Utils.Pos.marked option;definition_expr : expression Utils.Pos.marked;
}Source
type meta_assertion = | FixedBy of qident Utils.Pos.marked * ident Utils.Pos.marked| VariesWith of qident Utils.Pos.marked * expression Utils.Pos.marked * variation_typ Utils.Pos.marked option
Source
type assertion = {assertion_condition : expression Utils.Pos.marked option;assertion_content : expression Utils.Pos.marked;
}Source
type scope_use_item = | Rule of rule| Definition of definition| Assertion of assertion| MetaAssertion of meta_assertion
Source
type scope_use = {scope_use_condition : expression Utils.Pos.marked option;scope_use_name : constructor Utils.Pos.marked;scope_use_items : scope_use_item Utils.Pos.marked list;
}Source
type scope_decl_context_scope = {scope_decl_context_scope_name : ident Utils.Pos.marked;scope_decl_context_scope_sub_scope : constructor Utils.Pos.marked;
}Source
type scope_decl_context_data = {scope_decl_context_item_name : ident Utils.Pos.marked;scope_decl_context_item_typ : typ Utils.Pos.marked;
}Source
type scope_decl_context_item = | ContextData of scope_decl_context_data| ContextScope of scope_decl_context_scope
Source
type scope_decl = {scope_decl_name : constructor Utils.Pos.marked;scope_decl_context : scope_decl_context_item Utils.Pos.marked list;
}Source
type code_item = | ScopeUse of scope_use| ScopeDecl of scope_decl| StructDecl of struct_decl| EnumDecl of enum_decl
Source
type law_article = {law_article_name : string Utils.Pos.marked;law_article_id : string option;law_article_expiration_date : string option;law_article_precedence : int;
}Source
type law_include = | PdfFile of string Utils.Pos.marked * int option| CatalaFile of string Utils.Pos.marked| LegislativeText of string Utils.Pos.marked
Source
type law_structure = | LawInclude of law_include| LawHeading of law_heading * law_structure list| LawArticle of law_article * law_article_item list| MetadataBlock of code_block * source_repr| IntermediateText of string
Source
type source_file_or_master = | SourceFile of program_item list| MasterFile of string Utils.Pos.marked list
Visitor classes for programs
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.
Program map visitor
Program iter visitor
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page