From a4916208ba5ec4d143ff935cf799258f26567cb4 Mon Sep 17 00:00:00 2001 From: Denis Merigoux Date: Thu, 10 Dec 2020 09:27:51 +0100 Subject: [PATCH] amount -> money --- CONTRIBUTING.md | 2 +- doc/enlish_token_list.md | 2 +- .../allocations_familiales/metadata.catala_fr | 48 +++++++++---------- ...Section_I_Dispositions_generales.catala_fr | 18 +++---- examples/tutorial/tutorial_en.catala_en | 8 ++-- examples/us_tax_code/section_1015.catala_en | 18 +++---- examples/us_tax_code/section_121.catala_en | 6 +-- examples/us_tax_code/section_132.catala_en | 10 ++-- src/catala/catala_surface/lexer.ml | 4 +- src/catala/catala_surface/lexer_en.ml | 4 +- src/catala/catala_surface/lexer_fr.ml | 4 +- src/catala/default_calculus/print.ml | 6 +-- src/catala/scope_language/print.ml | 6 +-- .../en/atom/grammars/catala_en.cson | 4 +- syntax_highlighting/en/catala_en.iro | 4 +- syntax_highlighting/en/pygments/catala_en.py | 20 ++++---- .../en/vscode/syntaxes/catalavs.xml | 4 +- .../fr/atom/grammars/catala_fr.cson | 2 +- syntax_highlighting/fr/catala_fr.iro | 2 +- syntax_highlighting/fr/pygments/catala_fr.py | 20 ++++---- .../fr/vscode/syntaxes/catalavs.xml | 2 +- .../nv/atom/grammars/catala_nv.cson | 4 +- syntax_highlighting/nv/catala_nv.iro | 4 +- syntax_highlighting/nv/pygments/catala_nv.py | 4 +- .../nv/vscode/syntaxes/catalavs.xml | 4 +- tests/Makefile | 4 +- tests/test_money/no_mingle.catala | 13 +++++ tests/test_money/no_mingle.catala.A.out | 13 +++++ tests/test_money/simple.catala | 6 +-- tests/test_scope/cycle_in_scope.catala.A.out | 4 +- tests/test_scope/sub_scope.catala.B.out | 4 +- tests/test_scope/sub_sub_scope.catala.C.out | 2 +- tests/test_struct/nested.catala.A.out | 2 +- tests/test_struct/nested2.catala.A.out | 2 +- 34 files changed, 148 insertions(+), 112 deletions(-) create mode 100644 tests/test_money/no_mingle.catala create mode 100644 tests/test_money/no_mingle.catala.A.out diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a0d08361..ff6c3ac2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -87,7 +87,7 @@ While all the code sections are equivalent in terms of execution, you can mark s /* declaration structure FooBar: data foo content boolean - data bar content amount + data bar content money */ diff --git a/doc/enlish_token_list.md b/doc/enlish_token_list.md index 16866b95..66b336a0 100644 --- a/doc/enlish_token_list.md +++ b/doc/enlish_token_list.md @@ -157,7 +157,7 @@ Current proposal : "amount". The base data type for representing amounts of money. ``` -data foo content amount +data foo content money ``` ## TEXT diff --git a/examples/allocations_familiales/metadata.catala_fr b/examples/allocations_familiales/metadata.catala_fr index db66c4bc..1f901074 100644 --- a/examples/allocations_familiales/metadata.catala_fr +++ b/examples/allocations_familiales/metadata.catala_fr @@ -17,7 +17,7 @@ déclaration énumération PriseEnCharge : déclaration structure Enfant : donnée fin_obligation_scolaire contenu date donnée âge contenu entier - donnée rémuneration_mensuelle contenu montant + donnée rémuneration_mensuelle contenu argent donnée prise_en_charge contenu PriseEnCharge condition confié_service_social @@ -99,8 +99,8 @@ déclaration énumération Prestation: déclaration structure PrestationsFamiliales : condition conditions_hors_âge dépend de Enfant condition droits_ouverts dépend de Enfant - donnée base_mensuelle contenu montant - donnée base_mensuelle_dom contenu montant + donnée base_mensuelle contenu argent + donnée base_mensuelle_dom contenu argent déclaration énumération ChargeAllocation : -- Complète @@ -110,21 +110,21 @@ déclaration structure AllocationsFamiliales : condition droits_ouverts donnée date_ouverture_droits contenu date condition conditions_hors_âge dépend de Enfant - donnée base contenu montant - donnée avec_garde_alternée contenu montant - donnée montant_versé contenu montant + donnée base contenu argent + donnée avec_garde_alternée contenu argent + donnée montant_versé contenu argent donnée récipiendaire_par_enfant contenu Personne dépend de Enfant donnée charge_par_enfant contenu ChargeAllocation dépend de Enfant donnée rapport_enfants_total_moyen contenu décimal donnée nombre_total_enfants contenu entier donnée nombre_moyen_enfants contenu décimal - donnée montant_premier_enfant contenu montant - donnée montant_deuxieme_enfant contenu montant - donnée montant_troisième_enfant_et_plus contenu montant + donnée montant_premier_enfant contenu argent + donnée montant_deuxieme_enfant contenu argent + donnée montant_troisième_enfant_et_plus contenu argent déclaration structure AllocationForfaitaire : condition droits_ouverts dépend de Enfant - donnée montant_versé contenu montant + donnée montant_versé contenu argent déclaration énumération ChoixParentAllocataire : -- UnParent contenu Personne @@ -140,16 +140,16 @@ déclaration structure AllocationsGardeAlternée : déclaration structure MajorationsAllocationsFamiliales : condition droits_ouverts dépend de Enfant - donnée base_par_enfant contenu montant dépend de Enfant - donnée avec_garde_alternée contenu montant dépend de Enfant - donnée montant_versé contenu montant + donnée base_par_enfant contenu argent dépend de Enfant + donnée avec_garde_alternée contenu argent dépend de Enfant + donnée montant_versé contenu argent déclaration structure ComplémentDégressif : condition droits_ouverts dépend de montant - donnée dépassement contenu montant dépend de montant - donnée pour_allocation_forfaitaire contenu montant - donnée pour_allocations_familiales_et_majorations contenu montant - donnée montant_versé contenu montant + donnée dépassement contenu argent dépend de montant + donnée pour_allocation_forfaitaire contenu argent + donnée pour_allocations_familiales_et_majorations contenu argent + donnée montant_versé contenu argent déclaration structure TitreI: condition droits_ouverts_allocations_familiales dépend de Personne @@ -161,25 +161,25 @@ déclaration structure L512_3 : donnée âge_limite_alinéa_2 contenu entier donnée âge_limite_alinéa_2_alternatif contenu entier condition âge_limite_alinéa_2_alternatif_utilisé - donnée plafond_rémunération_mensuelle_alinéa_2 contenu montant + donnée plafond_rémunération_mensuelle_alinéa_2 contenu argent déclaration structure L521_1 : - donnée nombre_minimum_enfants contenu montant - donnée ressources_ménage contenu montant + donnée nombre_minimum_enfants contenu argent + donnée ressources_ménage contenu argent déclaration structure L521_3 : donnée âge_limite_alinéa_1 contenu entier dépend de Enfant - donnée minimum_alinéa_2 contenu montant + donnée minimum_alinéa_2 contenu argent déclaration structure L751_1 : condition régime_outre_mer déclaration structure D521_3 : - donnée plafond_I contenu montant - donnée plafond_II contenu montant + donnée plafond_I contenu argent + donnée plafond_II contenu argent déclaration structure SMIC : - donnée brut_horaire contenu montant dépend de Collectivité + donnée brut_horaire contenu argent dépend de Collectivité déclaration champ d'application CalculPrestationsFamiliales : # Les règles déclarées dans PrestationsFamiliales pourront utiliser diff --git a/examples/code_general_impots/Section_I_Dispositions_generales.catala_fr b/examples/code_general_impots/Section_I_Dispositions_generales.catala_fr index 7e70a0d8..99e27733 100644 --- a/examples/code_general_impots/Section_I_Dispositions_generales.catala_fr +++ b/examples/code_general_impots/Section_I_Dispositions_generales.catala_fr @@ -36,15 +36,15 @@ total dont sont retranchées les charges énumérées à l'article 156. /* déclaration structure RevenuNetGlobal: -donnée revenus_fonciers contenu montant -donnée bénéfices_industriels_commerciaux contenu montant -donnée rémunérations_dirigeants contenu montant -donnée bénéfices_agricoles contenu montant -donnée traitements_salaires contenu montant -donnée bénéfices_non_commerciaux contenu montant -donnée revenus_capitaux_mobiliers contenu montant -donnée plus_values contenu montant -donnée total contenu montant +donnée revenus_fonciers contenu argent +donnée bénéfices_industriels_commerciaux contenu argent +donnée rémunérations_dirigeants contenu argent +donnée bénéfices_agricoles contenu argent +donnée traitements_salaires contenu argent +donnée bénéfices_non_commerciaux contenu argent +donnée revenus_capitaux_mobiliers contenu argent +donnée plus_values contenu argent +donnée total contenu argent déclaration champ d'application CalculImpotSurLeRevenu : contexte revenu_net_global contenu RevenuNetGlobal diff --git a/examples/tutorial/tutorial_en.catala_en b/examples/tutorial/tutorial_en.catala_en index 94fd31f1..af24c70a 100644 --- a/examples/tutorial/tutorial_en.catala_en +++ b/examples/tutorial/tutorial_en.catala_en @@ -46,11 +46,11 @@ individual and the income tax computation: @@Begin metadata@@ /* declaration structure Individual: - data income content amount + data income content money declaration structure Article1: data fixed_percentage content decimal - data income_tax content amount + data income_tax content money */ @@End metadata@@ @@ -158,13 +158,13 @@ computation: @@Begin metadata@@ /* declaration structure TwoBrackets: - data breakpoint content amount + data breakpoint content money data rate1 content decimal data rate2 content decimal declaration scope TwoBracketsTaxComputation : context brackets content TwoBrackets - context tax_formula content amount depends on amount + context tax_formula content money depends on amount */ @@End metadata@@ diff --git a/examples/us_tax_code/section_1015.catala_en b/examples/us_tax_code/section_1015.catala_en index 16770ee3..4161ce45 100644 --- a/examples/us_tax_code/section_1015.catala_en +++ b/examples/us_tax_code/section_1015.catala_en @@ -13,23 +13,23 @@ declaration structure Acquisition: data no_sale_or_exchange_before content boolean declaration structure Value: - data fair_market content amount depends on date - data last_acquisition content amount - data net_appreciation content amount + data fair_market content money depends on date + data last_acquisition content money + data net_appreciation content money declaration structure Transferor: - data basis content amount + data basis content money data basis_known content optional amount data acquisition content Acquisition - data gain_or_loss content amount depends on date + data gain_or_loss content money depends on date declaration scope BasisOfGift: context acquisition content Acquisition - context basis_subsection_a content amount - context basis content amount - context basis_bonus_after_1976 content amount + context basis_subsection_a content money + context basis content money + context basis_bonus_after_1976 content money context transferor content Transferor - context gift_tax_paid content amount + context gift_tax_paid content money */ @@End metadata@@ diff --git a/examples/us_tax_code/section_121.catala_en b/examples/us_tax_code/section_121.catala_en index 878a694b..5e2084f1 100644 --- a/examples/us_tax_code/section_121.catala_en +++ b/examples/us_tax_code/section_121.catala_en @@ -13,14 +13,14 @@ declaration structure Property: declaration structure SaleOrExchange: data property content Property - data gain content amount + data gain content money data date_of_sale_or_exchange content date declaration scope Section121: context taxpayer content Person context applicable condition - context maximum_gain_excluded content amount - context gain_considered_for_exclusion content amount + context maximum_gain_excluded content money + context gain_considered_for_exclusion content money context sale_or_exchange content SaleOrExchange context included_in_gross_income condition context ownage_considered_for_gain_inclusion condition diff --git a/examples/us_tax_code/section_132.catala_en b/examples/us_tax_code/section_132.catala_en index 41a8058b..cd47db87 100644 --- a/examples/us_tax_code/section_132.catala_en +++ b/examples/us_tax_code/section_132.catala_en @@ -8,12 +8,12 @@ declaration enumeration DiscountType: -- Services declaration scope QualifiedEmployeeDiscount: - context customer_price content amount - context employee_price content amount + context customer_price content money + context employee_price content money context gross_profit_percentage content decimal - context qualified_employee_discount content amount - context employee_discount content amount - context aggregate_cost content amount + context qualified_employee_discount content money + context employee_discount content money + context aggregate_cost content money context discount_type content DiscountType */ @@End metadata@@ diff --git a/src/catala/catala_surface/lexer.ml b/src/catala/catala_surface/lexer.ml index 0b4143c7..d2924021 100644 --- a/src/catala/catala_surface/lexer.ml +++ b/src/catala/catala_surface/lexer.ml @@ -65,7 +65,7 @@ let token_list : (string * token) list = ("set", COLLECTION); ("enum", ENUM); ("int", INTEGER); - ("amount", MONEY); + ("money", MONEY); ("text", TEXT); ("decimal", DECIMAL); ("date", DATE); @@ -155,7 +155,7 @@ let rec lex_code (lexbuf : lexbuf) : token = | "int" -> update_acc lexbuf; INTEGER - | "amount" -> + | "money" -> update_acc lexbuf; MONEY | "text" -> diff --git a/src/catala/catala_surface/lexer_en.ml b/src/catala/catala_surface/lexer_en.ml index 76373cdf..37d29876 100644 --- a/src/catala/catala_surface/lexer_en.ml +++ b/src/catala/catala_surface/lexer_en.ml @@ -33,7 +33,7 @@ let token_list_en : (string * token) list = ("collection", COLLECTION); ("enumeration", ENUM); ("integer", INTEGER); - ("amount", MONEY); + ("money", MONEY); ("text", TEXT); ("decimal", DECIMAL); ("date", DATE); @@ -123,7 +123,7 @@ let rec lex_code_en (lexbuf : lexbuf) : token = | "integer" -> L.update_acc lexbuf; INTEGER - | "amount" -> + | "money" -> L.update_acc lexbuf; MONEY | "text" -> diff --git a/src/catala/catala_surface/lexer_fr.ml b/src/catala/catala_surface/lexer_fr.ml index fa867c5b..a41b5ea5 100644 --- a/src/catala/catala_surface/lexer_fr.ml +++ b/src/catala/catala_surface/lexer_fr.ml @@ -33,7 +33,7 @@ let token_list_fr : (string * token) list = ("collection", COLLECTION); ("énumération", ENUM); ("entier", INTEGER); - ("montant", MONEY); + ("argent", MONEY); ("texte", TEXT); ("decimal", DECIMAL); ("date", DATE); @@ -124,7 +124,7 @@ let rec lex_code_fr (lexbuf : lexbuf) : token = | "entier" -> L.update_acc lexbuf; INTEGER - | "montant" -> + | "argent" -> L.update_acc lexbuf; MONEY | "texte" -> diff --git a/src/catala/default_calculus/print.ml b/src/catala/default_calculus/print.ml index 2212df76..30b7c20f 100644 --- a/src/catala/default_calculus/print.ml +++ b/src/catala/default_calculus/print.ml @@ -25,9 +25,9 @@ let rec format_typ (fmt : Format.formatter) (typ : typ Pos.marked) : unit = in match Pos.unmark typ with | TLit TUnit -> Format.fprintf fmt "unit" - | TLit TBool -> Format.fprintf fmt "bool" - | TLit TInt -> Format.fprintf fmt "int" - | TLit TRat -> Format.fprintf fmt "dec" + | TLit TBool -> Format.fprintf fmt "boolean" + | TLit TInt -> Format.fprintf fmt "integer" + | TLit TRat -> Format.fprintf fmt "decimal" | TLit TMoney -> Format.fprintf fmt "money" | TTuple ts -> Format.fprintf fmt "(%a)" diff --git a/src/catala/scope_language/print.ml b/src/catala/scope_language/print.ml index af240081..393cfe4b 100644 --- a/src/catala/scope_language/print.ml +++ b/src/catala/scope_language/print.ml @@ -38,9 +38,9 @@ let rec format_typ (fmt : Format.formatter) (typ : typ Pos.marked) : unit = in match Pos.unmark typ with | TLit TUnit -> Format.fprintf fmt "unit" - | TLit TBool -> Format.fprintf fmt "bool" - | TLit TInt -> Format.fprintf fmt "int" - | TLit TRat -> Format.fprintf fmt "dec" + | TLit TBool -> Format.fprintf fmt "boolean" + | TLit TInt -> Format.fprintf fmt "integer" + | TLit TRat -> Format.fprintf fmt "decimal" | TLit TMoney -> Format.fprintf fmt "money" | TStruct s -> Format.fprintf fmt "%a" Ast.StructName.format_t s | TEnum e -> Format.fprintf fmt "%a" Ast.EnumName.format_t e diff --git a/syntax_highlighting/en/atom/grammars/catala_en.cson b/syntax_highlighting/en/atom/grammars/catala_en.cson index 4c404679..603d61cc 100644 --- a/syntax_highlighting/en/atom/grammars/catala_en.cson +++ b/syntax_highlighting/en/atom/grammars/catala_en.cson @@ -120,11 +120,11 @@ 'name' : 'punctuation.catala_en' } { - 'match' : '(\\-\\>|\\+|\\-|\\*|/|\\!|not|or|and|=|>|<|\\$|%|year|month|day)' + 'match' : '(\\-\\>|\\+|\\-|\\*|/|\\!|not|or|and|=|>|<|\$|%|year|month|day)' 'name' : 'keyword.operator.catala_en' } { - 'match' : '\\b(integer|boolean|date|amount|text|decimal|number|sum|now)\\b' + 'match' : '\\b(integer|boolean|date|money|text|decimal|number|sum|now)\\b' 'name' : 'support.type.catala_en' } { diff --git a/syntax_highlighting/en/catala_en.iro b/syntax_highlighting/en/catala_en.iro index 958b2031..243c083d 100644 --- a/syntax_highlighting/en/catala_en.iro +++ b/syntax_highlighting/en/catala_en.iro @@ -240,12 +240,12 @@ code : context { } : pattern { - regex \= (\-\>|\+|\-|\*|/|\!|not|or|and|=|>|<|\\$|%|year|month|day) + regex \= (\-\>|\+|\-|\*|/|\!|not|or|and|=|>|<|\$|%|year|month|day) styles [] = .operator; } : pattern { - regex \= \b(integer|boolean|date|amount|text|decimal|number|sum|now)\b + regex \= \b(integer|boolean|date|money|text|decimal|number|sum|now)\b styles [] = .primitive; } diff --git a/syntax_highlighting/en/pygments/catala_en.py b/syntax_highlighting/en/pygments/catala_en.py index fbf30a55..6a4e537e 100644 --- a/syntax_highlighting/en/pygments/catala_en.py +++ b/syntax_highlighting/en/pygments/catala_en.py @@ -3,7 +3,8 @@ from pygments.token import * import re -__all__=['CatalaEnLexer'] +__all__ = ['CatalaEnLexer'] + class CatalaEnLexer(RegexLexer): name = 'CatalaEn' @@ -12,7 +13,7 @@ class CatalaEnLexer(RegexLexer): flags = re.MULTILINE | re.UNICODE tokens = { - 'root' : [ + 'root': [ (u'(@@)', bygroups(Generic.Heading), 'main__1'), (u'(@)', bygroups(Generic.Heading), 'main__2'), (u'([^\\/\\n\\r])', bygroups(Text)), @@ -20,18 +21,21 @@ class CatalaEnLexer(RegexLexer): ('(\n|\r|\r\n)', Text), ('.', Text), ], - 'code' : [ + 'code': [ (u'(\\*\\/)', bygroups(Text), 'root'), (u'(\\s*\\#.*$)', bygroups(Comment.Single)), - (u'(context)(\\s+)([a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\']*)', bygroups(Keyword.Declaration, Text, Name.Variable)), + (u'(context)(\\s+)([a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\']*)', + bygroups(Keyword.Declaration, Text, Name.Variable)), (u'\\b(match|with\\s+pattern|fixed|by|decreasing|increasing|varies|with|we\\s+have|in|such\\s+that|exists|for|all|of|if|then|else)\\b', bygroups(Keyword.Reserved)), (u'\\b(scope|depends\\s+on|declaration|includes|collection|content|optional|structure|enumeration|context|rule|under\\s+condition|condition|data|consequence|fulfilled|equals|assertion|definition)\\b', bygroups(Keyword.Declaration)), (u'(\\|[0-9]+/[0-9]+/[0-9]+\\|)', bygroups(Number.Integer)), (u'\\b(true|false)\\b', bygroups(Keyword.Constant)), (u'\\b([0-9]+(,[0.9]*|))\\b', bygroups(Number.Integer)), (u'(\\-\\-|\\;|\\.|\\,|\\:|\\(|\\))', bygroups(Operator)), - (u'(\\-\\>|\\+|\\-|\\*|/|\\!|not|or|and|=|>|<|\\$|%|year|month|day)', bygroups(Operator)), - (u'\\b(integer|boolean|date|amount|text|decimal|number|sum|now)\\b', bygroups(Keyword.Type)), + (u'(\\-\\>|\\+|\\-|\\*|/|\\!|not|or|and|=|>|<|\$|%|year|month|day)', + bygroups(Operator)), + (u'\\b(integer|boolean|date|money|text|decimal|number|sum|now)\\b', + bygroups(Keyword.Type)), (u'\\b([A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\']*)(\\.)([a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\']*)\\b', bygroups(Name.Class, Operator, Name.Variable)), (u'\\b([a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\']*)(\\.)([a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\'\\.]*)\\b', bygroups(Name.Variable, Operator, Text)), (u'\\b([a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\']*)\\b', bygroups(Name.Variable)), @@ -39,13 +43,13 @@ class CatalaEnLexer(RegexLexer): ('(\n|\r|\r\n)', Text), ('.', Text), ], - 'main__1' : [ + 'main__1': [ (u'(@@)', bygroups(Generic.Heading), 'root'), (u'(.)', bygroups(Generic.Heading)), ('(\n|\r|\r\n)', Text), ('.', Text), ], - 'main__2' : [ + 'main__2': [ (u'(@)', bygroups(Generic.Heading), 'root'), (u'(.)', bygroups(Generic.Heading)), ('(\n|\r|\r\n)', Text), diff --git a/syntax_highlighting/en/vscode/syntaxes/catalavs.xml b/syntax_highlighting/en/vscode/syntaxes/catalavs.xml index 319404f9..d6a8d374 100644 --- a/syntax_highlighting/en/vscode/syntaxes/catalavs.xml +++ b/syntax_highlighting/en/vscode/syntaxes/catalavs.xml @@ -191,13 +191,13 @@ match - (\-\>|\+|\-|\*|/|\!|not|or|and|=|>|<|\\$|%|year|month|day) + (\-\>|\+|\-|\*|/|\!|not|or|and|=|>|<|\$|%|year|month|day) name keyword.operator.catala_en match - \b(integer|boolean|date|amount|text|decimal|number|sum|now)\b + \b(integer|boolean|date|money|text|decimal|number|sum|now)\b name support.type.catala_en diff --git a/syntax_highlighting/fr/atom/grammars/catala_fr.cson b/syntax_highlighting/fr/atom/grammars/catala_fr.cson index 0f26ff7b..d23bf6c1 100644 --- a/syntax_highlighting/fr/atom/grammars/catala_fr.cson +++ b/syntax_highlighting/fr/atom/grammars/catala_fr.cson @@ -124,7 +124,7 @@ 'name' : 'keyword.operator.catala_fr' } { - 'match' : '\\b(entier|booléen|date|montant|texte|décimal|décret|loi|nombre|somme|date_aujourd_hui)\\b' + 'match' : '\\b(entier|booléen|date|argent|texte|décimal|décret|loi|nombre|somme|date_aujourd_hui)\\b' 'name' : 'support.type.catala_fr' } { diff --git a/syntax_highlighting/fr/catala_fr.iro b/syntax_highlighting/fr/catala_fr.iro index 86c6a6e3..546910c1 100644 --- a/syntax_highlighting/fr/catala_fr.iro +++ b/syntax_highlighting/fr/catala_fr.iro @@ -245,7 +245,7 @@ code : context { } : pattern { - regex \= \b(entier|booléen|date|montant|texte|décimal|décret|loi|nombre|somme|date_aujourd_hui)\b + regex \= \b(entier|booléen|date|argent|texte|décimal|décret|loi|nombre|somme|date_aujourd_hui)\b styles [] = .primitive; } diff --git a/syntax_highlighting/fr/pygments/catala_fr.py b/syntax_highlighting/fr/pygments/catala_fr.py index 0ce38e70..21047bf2 100644 --- a/syntax_highlighting/fr/pygments/catala_fr.py +++ b/syntax_highlighting/fr/pygments/catala_fr.py @@ -3,7 +3,8 @@ from pygments.token import * import re -__all__=['CatalaFrLexer'] +__all__ = ['CatalaFrLexer'] + class CatalaFrLexer(RegexLexer): name = 'CatalaFr' @@ -12,7 +13,7 @@ class CatalaFrLexer(RegexLexer): flags = re.MULTILINE | re.UNICODE tokens = { - 'root' : [ + 'root': [ (u'(@@)', bygroups(Generic.Heading), 'main__1'), (u'(@)', bygroups(Generic.Heading), 'main__2'), (u'([^\\/\\n\\r])', bygroups(Text)), @@ -20,18 +21,21 @@ class CatalaFrLexer(RegexLexer): ('(\n|\r|\r\n)', Text), ('.', Text), ], - 'code' : [ + 'code': [ (u'(\\*\\/)', bygroups(Text), 'root'), (u'(\\s*\\#.*$)', bygroups(Comment.Single)), - (u'(contexte)(\\s+)([a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\']*)', bygroups(Keyword.Declaration, Text, Name.Variable)), + (u'(contexte)(\\s+)([a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\']*)', + bygroups(Keyword.Declaration, Text, Name.Variable)), (u'\\b(selon|sous\\s+forme|fix\xe9|par|d\xe9croissante|croissante|varie|avec|on\\s+a|dans|tel\\s+que|existe|pour|tout|de|si|alors|sinon)\\b', bygroups(Keyword.Reserved)), (u'\\b(champ\\s+d\'application|si\\s+et\\s+seulement\\s+si|d\xe9pend\\s+de|d\xe9claration|inclus|collection|contenu|optionnel|structure|\xe9num\xe9ration|contexte|r\xe8gle|sous\\s+condition|condition|donn\xe9e|cons\xe9quence|rempli|\xe9gal\\s+\xe0|assertion|d\xe9finition)\\b', bygroups(Keyword.Declaration)), (u'(\\|[0-9]+/[0-9]+/[0-9]+\\|)', bygroups(Number.Integer)), (u'\\b(vrai|faux)\\b', bygroups(Keyword.Constant)), (u'\\b([0-9]+(,[0.9]*|))\\b', bygroups(Number.Integer)), (u'(\\-\\-|\\;|\\.|\\,|\\:|\\(|\\))', bygroups(Operator)), - (u'(\\-\\>|\\+|\\-|\\*|/|\\!|non|ou|et|=|>|<|\u20ac|%|an|mois|jour)', bygroups(Operator)), - (u'\\b(entier|bool\xe9en|date|montant|texte|d\xe9cimal|d\xe9cret|loi|nombre|somme|date_aujourd_hui)\\b', bygroups(Keyword.Type)), + (u'(\\-\\>|\\+|\\-|\\*|/|\\!|non|ou|et|=|>|<|\u20ac|%|an|mois|jour)', + bygroups(Operator)), + (u'\\b(entier|bool\xe9en|date|argent|texte|d\xe9cimal|d\xe9cret|loi|nombre|somme|date_aujourd_hui)\\b', + bygroups(Keyword.Type)), (u'\\b([A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\']*)(\\.)([a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\']*)\\b', bygroups(Name.Class, Operator, Name.Variable)), (u'\\b([a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\']*)(\\.)([a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\'\\.]*)\\b', bygroups(Name.Variable, Operator, Text)), (u'\\b([a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\']*)\\b', bygroups(Name.Variable)), @@ -39,13 +43,13 @@ class CatalaFrLexer(RegexLexer): ('(\n|\r|\r\n)', Text), ('.', Text), ], - 'main__1' : [ + 'main__1': [ (u'(@@)', bygroups(Generic.Heading), 'root'), (u'(.)', bygroups(Generic.Heading)), ('(\n|\r|\r\n)', Text), ('.', Text), ], - 'main__2' : [ + 'main__2': [ (u'(@)', bygroups(Generic.Heading), 'root'), (u'(.)', bygroups(Generic.Heading)), ('(\n|\r|\r\n)', Text), diff --git a/syntax_highlighting/fr/vscode/syntaxes/catalavs.xml b/syntax_highlighting/fr/vscode/syntaxes/catalavs.xml index a3fff0c2..b9af454c 100644 --- a/syntax_highlighting/fr/vscode/syntaxes/catalavs.xml +++ b/syntax_highlighting/fr/vscode/syntaxes/catalavs.xml @@ -197,7 +197,7 @@ match - \b(entier|booléen|date|montant|texte|décimal|décret|loi|nombre|somme|date_aujourd_hui)\b + \b(entier|booléen|date|argent|texte|décimal|décret|loi|nombre|somme|date_aujourd_hui)\b name support.type.catala_fr diff --git a/syntax_highlighting/nv/atom/grammars/catala_nv.cson b/syntax_highlighting/nv/atom/grammars/catala_nv.cson index a069501c..943a3a30 100644 --- a/syntax_highlighting/nv/atom/grammars/catala_nv.cson +++ b/syntax_highlighting/nv/atom/grammars/catala_nv.cson @@ -120,11 +120,11 @@ 'name' : 'punctuation.catala_nv' } { - 'match' : '(\\-\\>|\\+|\\-|\\*|/|\\!|not|or|and|=|>|<|\\\\$|%|year|month|day)' + 'match' : '(\\-\\>|\\+|\\-|\\*|/|\\!|not|or|and|=|>|<|\\$|%|year|month|day)' 'name' : 'keyword.operator.catala_nv' } { - 'match' : '\\b(int|bool|date|amount|text|decimal|number|sum|now)\\b' + 'match' : '\\b(int|bool|date|money|text|decimal|number|sum|now)\\b' 'name' : 'support.type.catala_nv' } { diff --git a/syntax_highlighting/nv/catala_nv.iro b/syntax_highlighting/nv/catala_nv.iro index 029ee140..2dd58f73 100644 --- a/syntax_highlighting/nv/catala_nv.iro +++ b/syntax_highlighting/nv/catala_nv.iro @@ -240,12 +240,12 @@ code : context { } : pattern { - regex \= (\-\>|\+|\-|\*|/|\!|not|or|and|=|>|<|\\$|%|year|month|day) + regex \= (\-\>|\+|\-|\*|/|\!|not|or|and|=|>|<|\$|%|year|month|day) styles [] = .operator; } : pattern { - regex \= \b(int|bool|date|amount|text|decimal|number|sum|now)\b + regex \= \b(int|bool|date|money|text|decimal|number|sum|now)\b styles [] = .primitive; } diff --git a/syntax_highlighting/nv/pygments/catala_nv.py b/syntax_highlighting/nv/pygments/catala_nv.py index 192c3c04..9f322053 100644 --- a/syntax_highlighting/nv/pygments/catala_nv.py +++ b/syntax_highlighting/nv/pygments/catala_nv.py @@ -33,9 +33,9 @@ class CatalaNvLexer(RegexLexer): (u'\\b([0-9]+(,[0.9]*|))\\b', bygroups(Number.Integer)), (u'(\\-\\-|\\;|\\.|\\,|\\:=|\\:|\\(|\\)|\\[|\\])', bygroups(Operator)), - (u'(\\-\\>|\\+|\\-|\\*|/|\\!|not|or|and|=|>|<|\\\\$|%|year|month|day)', + (u'(\\-\\>|\\+|\\-|\\*|/|\\!|not|or|and|=|>|<|\\$|%|year|month|day)', bygroups(Operator)), - (u'\\b(int|bool|date|amount|text|decimal|number|sum|now)\\b', + (u'\\b(int|bool|date|money|text|decimal|number|sum|now)\\b', bygroups(Keyword.Type)), (u'\\b([A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\']*)(\\.)([a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\']*)\\b', bygroups(Name.Class, Operator, Name.Variable)), (u'\\b([a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\']*)(\\.)([a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\'\\.]*)\\b', bygroups(Name.Variable, Operator, Text)), diff --git a/syntax_highlighting/nv/vscode/syntaxes/catalavs.xml b/syntax_highlighting/nv/vscode/syntaxes/catalavs.xml index a3c13c45..84a1ed97 100644 --- a/syntax_highlighting/nv/vscode/syntaxes/catalavs.xml +++ b/syntax_highlighting/nv/vscode/syntaxes/catalavs.xml @@ -191,13 +191,13 @@ match - (\-\>|\+|\-|\*|/|\!|not|or|and|=|>|<|\\$|%|year|month|day) + (\-\>|\+|\-|\*|/|\!|not|or|and|=|>|<|\$|%|year|month|day) name keyword.operator.catala_nv match - \b(int|bool|date|amount|text|decimal|number|sum|now)\b + \b(int|bool|date|money|text|decimal|number|sum|now)\b name support.type.catala_nv diff --git a/tests/Makefile b/tests/Makefile index fb22540c..2b58b826 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -6,7 +6,9 @@ CATALA_OPTS?= CATALA=dune exec --no-buffer --no-print-director ../src/catala.exe -- Interpret $(CATALA_OPTS) -tests: $(wildcard */*.out) +pass_tests: $(wildcard */*.out) + +reset_tests: $(subst .out,.in,$(wildcard */*.out)) # Forces all the tests to be redone .FORCE: diff --git a/tests/test_money/no_mingle.catala b/tests/test_money/no_mingle.catala new file mode 100644 index 00000000..72fae441 --- /dev/null +++ b/tests/test_money/no_mingle.catala @@ -0,0 +1,13 @@ +@Article@ + +/* +new scope A: + param x content money + param y content money + param z content money + +scope A: + def x := $123.54 + def y := $8548,650.96 + def z := (x *$ y) +*/ \ No newline at end of file diff --git a/tests/test_money/no_mingle.catala.A.out b/tests/test_money/no_mingle.catala.A.out new file mode 100644 index 00000000..b4e19443 --- /dev/null +++ b/tests/test_money/no_mingle.catala.A.out @@ -0,0 +1,13 @@ +[ERROR] Error during typechecking, types dec and money are incompatible +[ERROR] +[ERROR] Type dec coming from expression: +[ERROR] --> test_money/no_mingle.catala +[ERROR] | +[ERROR] 12 | def z := (x *$ y) +[ERROR] | ^^ +[ERROR] +[ERROR] Type money coming from expression: +[ERROR] --> test_money/no_mingle.catala +[ERROR] | +[ERROR] 4 | new scope A: +[ERROR] | ^ diff --git a/tests/test_money/simple.catala b/tests/test_money/simple.catala index 7d5653a4..dec82db8 100644 --- a/tests/test_money/simple.catala +++ b/tests/test_money/simple.catala @@ -2,9 +2,9 @@ /* new scope A: - param x content amount - param y content amount - param z content amount + param x content money + param y content money + param z content money scope A: def x := $123.54 diff --git a/tests/test_scope/cycle_in_scope.catala.A.out b/tests/test_scope/cycle_in_scope.catala.A.out index 56338bb3..8514de34 100644 --- a/tests/test_scope/cycle_in_scope.catala.A.out +++ b/tests/test_scope/cycle_in_scope.catala.A.out @@ -22,7 +22,7 @@ [ERROR] --> test_scope/cycle_in_scope.catala [ERROR] | [ERROR] 13 | def z [y < 1] := y -[ERROR] | ^ +[ERROR] | ^ [ERROR] [ERROR] Cycle variable x, declared: [ERROR] --> test_scope/cycle_in_scope.catala @@ -34,4 +34,4 @@ [ERROR] --> test_scope/cycle_in_scope.catala [ERROR] | [ERROR] 11 | def y [x >= 0] := x -[ERROR] | ^ +[ERROR] | ^ diff --git a/tests/test_scope/sub_scope.catala.B.out b/tests/test_scope/sub_scope.catala.B.out index db60adbc..cc4ef583 100644 --- a/tests/test_scope/sub_scope.catala.B.out +++ b/tests/test_scope/sub_scope.catala.B.out @@ -1,2 +1,2 @@ -[RESULT] a -> 42 -[RESULT] b -> true \ No newline at end of file +[RESULT] a -> 42 +[RESULT] b -> true diff --git a/tests/test_scope/sub_sub_scope.catala.C.out b/tests/test_scope/sub_sub_scope.catala.C.out index 59553b02..70b6389a 100644 --- a/tests/test_scope/sub_sub_scope.catala.C.out +++ b/tests/test_scope/sub_sub_scope.catala.C.out @@ -1 +1 @@ -[RESULT] z -> 2 \ No newline at end of file +[RESULT] z -> 2 diff --git a/tests/test_struct/nested.catala.A.out b/tests/test_struct/nested.catala.A.out index 9161e374..7dc817d4 100644 --- a/tests/test_struct/nested.catala.A.out +++ b/tests/test_struct/nested.catala.A.out @@ -3,4 +3,4 @@ [ERROR] --> test_struct/nested.catala [ERROR] | [ERROR] 5 | data x content S -[ERROR] | ^ +[ERROR] | ^ diff --git a/tests/test_struct/nested2.catala.A.out b/tests/test_struct/nested2.catala.A.out index 22ce0bdc..56204f5d 100644 --- a/tests/test_struct/nested2.catala.A.out +++ b/tests/test_struct/nested2.catala.A.out @@ -3,4 +3,4 @@ [ERROR] --> test_struct/nested2.catala [ERROR] | [ERROR] 5 | data x content E -[ERROR] | ^ +[ERROR] | ^