From 3323f47a944cf6b0766c7d742920584350af2229 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Sat, 8 May 2021 17:38:52 +0200 Subject: [PATCH 01/35] add beginning of polish civil law tax --- examples/polish_taxes/.gitignore | 14 ++++ examples/polish_taxes/Makefile | 4 + .../rozdzial_3.catala_en | 78 +++++++++++++++++++ examples/polish_taxes/polish_taxes.catala_en | 4 + .../tests/test_a7_u1_p1.catala_en | 23 ++++++ .../tests/test_a7_u1_p2.catala_en | 23 ++++++ .../tests/test_a7_u1_p3.catala_en | 13 ++++ .../tests/test_a7_u1_p4.catala_en | 13 ++++ 8 files changed, 172 insertions(+) create mode 100644 examples/polish_taxes/.gitignore create mode 100644 examples/polish_taxes/Makefile create mode 100644 examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_en create mode 100644 examples/polish_taxes/polish_taxes.catala_en create mode 100644 examples/polish_taxes/tests/test_a7_u1_p1.catala_en create mode 100644 examples/polish_taxes/tests/test_a7_u1_p2.catala_en create mode 100644 examples/polish_taxes/tests/test_a7_u1_p3.catala_en create mode 100644 examples/polish_taxes/tests/test_a7_u1_p4.catala_en diff --git a/examples/polish_taxes/.gitignore b/examples/polish_taxes/.gitignore new file mode 100644 index 00000000..5304e283 --- /dev/null +++ b/examples/polish_taxes/.gitignore @@ -0,0 +1,14 @@ +*.aux +*.dvi +*.fdb_latexmk +*.fls +*.log +*.out +*.fls +*.tex +*.pdf +_minted* +*.toc +*.pyg +*.d +*.ml \ No newline at end of file diff --git a/examples/polish_taxes/Makefile b/examples/polish_taxes/Makefile new file mode 100644 index 00000000..426b83ea --- /dev/null +++ b/examples/polish_taxes/Makefile @@ -0,0 +1,4 @@ +CATALA_LANG=en +SRC=polish_tax_code.catala_en + +include ../Makefile.common.mk diff --git a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_en b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_en new file mode 100644 index 00000000..35b882d5 --- /dev/null +++ b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_en @@ -0,0 +1,78 @@ +## Rozdzial 3 + +> Begin metadata + +```catala +declaration scope UmowaSprzedazy: # A7_U1_P1 + context kwota content money + context stawka content decimal + context podatek content money + context inne_prawa_majatkowe condition + +scope UmowaSprzedazy: + definition podatek equals + kwota *$ stawka + +scope UmowaSprzedazy: + label a7_u1_p1_ppa + definition stawka equals 2% # A7_U1_P1_PPa + +scope UmowaSprzedazy: + exception a7_u1_p1_ppa + definition stawka under condition + inne_prawa_majatkowe + consequence equals 1% # A7_U1_P1_PPb + +declaration scope UmowaZamianyLubDarowizny: # A7_U1_P2 + context kwota content money + context stawka content decimal + context podatek content money + context inne_prawa_majatkowe condition + +scope UmowaZamianyLubDarowizny: + definition podatek equals + kwota *$ stawka + +scope UmowaZamianyLubDarowizny: + label a7_u1_p2_ppa + definition stawka equals 2% # A7_U1_P2_PPa + +scope UmowaZamianyLubDarowizny: + exception a7_u1_p2_ppa + definition stawka under condition + inne_prawa_majatkowe + consequence equals 1% # A7_U1_P2_PPb + +### + +declaration scope OdplatneUzytkowanie: # A7_U1_P3 + context kwota content money + context stawka content decimal + context podatek content money + context inne_prawa_majatkowe condition + +scope OdplatneUzytkowanie: + definition podatek equals + kwota *$ stawka + +scope OdplatneUzytkowanie: + definition stawka equals 1% # A7_U1_P3 + +### + +declaration scope PozyczkaLubDepozytNieprawidlowy: # A7_U1_P4 + context kwota content money + context stawka content decimal + context podatek content money + context inne_prawa_majatkowe condition + +scope PozyczkaLubDepozytNieprawidlowy: + definition podatek equals + kwota *$ stawka + +scope PozyczkaLubDepozytNieprawidlowy: + definition stawka equals 0.5% # A7_U1_P4 + +``` + +> End metadata diff --git a/examples/polish_taxes/polish_taxes.catala_en b/examples/polish_taxes/polish_taxes.catala_en new file mode 100644 index 00000000..869cec35 --- /dev/null +++ b/examples/polish_taxes/polish_taxes.catala_en @@ -0,0 +1,4 @@ +# Master file + +> Include: podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_en + diff --git a/examples/polish_taxes/tests/test_a7_u1_p1.catala_en b/examples/polish_taxes/tests/test_a7_u1_p1.catala_en new file mode 100644 index 00000000..03362352 --- /dev/null +++ b/examples/polish_taxes/tests/test_a7_u1_p1.catala_en @@ -0,0 +1,23 @@ +> Include: ../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_en + +## [Test - Art. 7 ustęp 1 punkt 1] + +```catala +declaration scope Test_A7_U1_P1_PPa: + context sprzedaz scope UmowaSprzedazy + +scope Test_A7_U1_P1_PPa: + definition sprzedaz.kwota equals $100 + + assertion sprzedaz.podatek = $2 + + +declaration scope Test_A7_U1_P1_PPb: + context sprzedaz scope UmowaSprzedazy + +scope Test_A7_U1_P1_PPb: + definition sprzedaz.kwota equals $100 + definition sprzedaz.inne_prawa_majatkowe equals true + + assertion sprzedaz.podatek = $1 +``` \ No newline at end of file diff --git a/examples/polish_taxes/tests/test_a7_u1_p2.catala_en b/examples/polish_taxes/tests/test_a7_u1_p2.catala_en new file mode 100644 index 00000000..698da5fc --- /dev/null +++ b/examples/polish_taxes/tests/test_a7_u1_p2.catala_en @@ -0,0 +1,23 @@ +> Include: ../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_en + +## [Test - Art. 7 ustęp 1 punkt 2] + +```catala +declaration scope Test_A7_U1_P2_PPa: + context sprzedaz scope UmowaZamianyLubDarowizny + +scope Test_A7_U1_P2_PPa: + definition sprzedaz.kwota equals $100 + + assertion sprzedaz.podatek = $2 + + +declaration scope Test_A7_U1_P2_PPb: + context sprzedaz scope UmowaZamianyLubDarowizny + +scope Test_A7_U1_P2_PPb: + definition sprzedaz.kwota equals $100 + definition sprzedaz.inne_prawa_majatkowe equals true + + assertion sprzedaz.podatek = $1 +``` \ No newline at end of file diff --git a/examples/polish_taxes/tests/test_a7_u1_p3.catala_en b/examples/polish_taxes/tests/test_a7_u1_p3.catala_en new file mode 100644 index 00000000..0e883783 --- /dev/null +++ b/examples/polish_taxes/tests/test_a7_u1_p3.catala_en @@ -0,0 +1,13 @@ +> Include: ../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_en + +## [Test - Art. 7 ustęp 1 punkt 3] + +```catala +declaration scope Test_A7_U1_P3: + context sprzedaz scope OdplatneUzytkowanie + +scope Test_A7_U1_P3: + definition sprzedaz.kwota equals $100 + + assertion sprzedaz.podatek = $1 +``` \ No newline at end of file diff --git a/examples/polish_taxes/tests/test_a7_u1_p4.catala_en b/examples/polish_taxes/tests/test_a7_u1_p4.catala_en new file mode 100644 index 00000000..5555fbf6 --- /dev/null +++ b/examples/polish_taxes/tests/test_a7_u1_p4.catala_en @@ -0,0 +1,13 @@ +> Include: ../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_en + +## [Test - Art. 7 ustęp 1 punkt 4] + +```catala +declaration scope Test_A7_U1_P4: + context sprzedaz scope PozyczkaLubDepozytNieprawidlowy + +scope Test_A7_U1_P4: + definition sprzedaz.kwota equals $200 + + assertion sprzedaz.podatek = $1 +``` \ No newline at end of file From 37c8f8da6406708be8d2480516b3a43041dbe4f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Sun, 9 May 2021 17:10:26 +0200 Subject: [PATCH 02/35] fixes for pdf, cleanup --- .../rozdzial_3.catala_en | 105 +++++++++++------- .../tests/test_a7_u1_p1.catala_en | 2 +- .../tests/test_a7_u1_p2.catala_en | 2 +- .../tests/test_a7_u1_p3.catala_en | 2 +- .../tests/test_a7_u1_p4.catala_en | 2 +- 5 files changed, 71 insertions(+), 42 deletions(-) diff --git a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_en b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_en index 35b882d5..983d5f2b 100644 --- a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_en +++ b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_en @@ -1,9 +1,13 @@ ## Rozdzial 3 -> Begin metadata +## Art. 7. 1. Stawki podatku wynoszą: +### 1) od umowy sprzedaży: +#### a) nieruchomości, rzeczy ruchomych, prawa użytkowania wieczystego, własnościowego spółdzielczego prawa do lokalu mieszkalnego, spółdzielczego prawa do lokalu użytkowego oraz wynikających z przepisów prawa spółdzielczego: prawa do domu jednorodzinnego oraz prawa do lokalu w małym domu mieszkalnym – 2%, + +> Begin metadata ```catala -declaration scope UmowaSprzedazy: # A7_U1_P1 +declaration scope UmowaSprzedazy: context kwota content money context stawka content decimal context podatek content money @@ -15,15 +19,30 @@ scope UmowaSprzedazy: scope UmowaSprzedazy: label a7_u1_p1_ppa - definition stawka equals 2% # A7_U1_P1_PPa + definition stawka equals 2% +``` +> End metadata + +#### b) innych praw majątkowych – 1%; +> Begin metadata +```catala scope UmowaSprzedazy: exception a7_u1_p1_ppa definition stawka under condition inne_prawa_majatkowe - consequence equals 1% # A7_U1_P1_PPb + consequence equals 1% +``` +> End metadata -declaration scope UmowaZamianyLubDarowizny: # A7_U1_P2 +### 2) od umów zamiany, dożywocia, o dział spadku, o zniesienie współwłasności oraz darowizny: + +#### a) przy przeniesieniu własności nieruchomości, rzeczy ruchomych, prawa użytkowania wieczystego, własnościowego spółdzielczego prawa do lokalu +mieszkalnego, spółdzielczego prawa do lokalu użytkowego oraz wynikających z przepisów prawa spółdzielczego: prawa do domu jednorodzinnego oraz prawa do lokalu w małym domu mieszkalnym – 2%, +> Begin metadata + +```catala +declaration scope UmowaZamianyLubDarowizny: context kwota content money context stawka content decimal context podatek content money @@ -35,44 +54,54 @@ scope UmowaZamianyLubDarowizny: scope UmowaZamianyLubDarowizny: label a7_u1_p2_ppa - definition stawka equals 2% # A7_U1_P2_PPa + definition stawka equals 2% +``` +> End metadata +#### b) przy przeniesieniu własności innych praw majątkowych – 1%; + +>Begin metadata +```catala scope UmowaZamianyLubDarowizny: exception a7_u1_p2_ppa definition stawka under condition inne_prawa_majatkowe - consequence equals 1% # A7_U1_P2_PPb - -### - -declaration scope OdplatneUzytkowanie: # A7_U1_P3 - context kwota content money - context stawka content decimal - context podatek content money - context inne_prawa_majatkowe condition - -scope OdplatneUzytkowanie: - definition podatek equals - kwota *$ stawka - -scope OdplatneUzytkowanie: - definition stawka equals 1% # A7_U1_P3 - -### - -declaration scope PozyczkaLubDepozytNieprawidlowy: # A7_U1_P4 - context kwota content money - context stawka content decimal - context podatek content money - context inne_prawa_majatkowe condition - -scope PozyczkaLubDepozytNieprawidlowy: - definition podatek equals - kwota *$ stawka - -scope PozyczkaLubDepozytNieprawidlowy: - definition stawka equals 0.5% # A7_U1_P4 - + consequence equals 1% ``` +>End metadata +### 3) od umowy ustanowienia odpłatnego użytkowania, w tym nieprawidłowego, oraz odpłatnej służebności – 1%, z zastrzeżeniem ust. 5; + +> Begin metadata +```catala +declaration scope OdplatneUzytkowanie: + context kwota content money + context stawka content decimal + context podatek content money + +scope OdplatneUzytkowanie: + definition podatek equals + kwota *$ stawka + +scope OdplatneUzytkowanie: + definition stawka equals 1% +``` +> End metadata + +### 4) od umowy pożyczki oraz depozytu nieprawidłowego – 0,5%, z zastrzeżeniem ust. 5; + +> Begin metadata +```catala +declaration scope PozyczkaLubDepozytNieprawidlowy: + context kwota content money + context stawka content decimal + context podatek content money + +scope PozyczkaLubDepozytNieprawidlowy: + definition podatek equals + kwota *$ stawka # TODO: extract somehow? + +scope PozyczkaLubDepozytNieprawidlowy: + definition stawka equals 0.5% +``` > End metadata diff --git a/examples/polish_taxes/tests/test_a7_u1_p1.catala_en b/examples/polish_taxes/tests/test_a7_u1_p1.catala_en index 03362352..5f74843c 100644 --- a/examples/polish_taxes/tests/test_a7_u1_p1.catala_en +++ b/examples/polish_taxes/tests/test_a7_u1_p1.catala_en @@ -8,7 +8,7 @@ declaration scope Test_A7_U1_P1_PPa: scope Test_A7_U1_P1_PPa: definition sprzedaz.kwota equals $100 - + assertion sprzedaz.podatek = $2 diff --git a/examples/polish_taxes/tests/test_a7_u1_p2.catala_en b/examples/polish_taxes/tests/test_a7_u1_p2.catala_en index 698da5fc..94c8883e 100644 --- a/examples/polish_taxes/tests/test_a7_u1_p2.catala_en +++ b/examples/polish_taxes/tests/test_a7_u1_p2.catala_en @@ -8,7 +8,7 @@ declaration scope Test_A7_U1_P2_PPa: scope Test_A7_U1_P2_PPa: definition sprzedaz.kwota equals $100 - + assertion sprzedaz.podatek = $2 diff --git a/examples/polish_taxes/tests/test_a7_u1_p3.catala_en b/examples/polish_taxes/tests/test_a7_u1_p3.catala_en index 0e883783..45d8e9af 100644 --- a/examples/polish_taxes/tests/test_a7_u1_p3.catala_en +++ b/examples/polish_taxes/tests/test_a7_u1_p3.catala_en @@ -8,6 +8,6 @@ declaration scope Test_A7_U1_P3: scope Test_A7_U1_P3: definition sprzedaz.kwota equals $100 - + assertion sprzedaz.podatek = $1 ``` \ No newline at end of file diff --git a/examples/polish_taxes/tests/test_a7_u1_p4.catala_en b/examples/polish_taxes/tests/test_a7_u1_p4.catala_en index 5555fbf6..2c4893c0 100644 --- a/examples/polish_taxes/tests/test_a7_u1_p4.catala_en +++ b/examples/polish_taxes/tests/test_a7_u1_p4.catala_en @@ -8,6 +8,6 @@ declaration scope Test_A7_U1_P4: scope Test_A7_U1_P4: definition sprzedaz.kwota equals $200 - + assertion sprzedaz.podatek = $1 ``` \ No newline at end of file From db46b1c44461a4f027ef7b81540bae69355b7cf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Sun, 9 May 2021 22:55:50 +0200 Subject: [PATCH 03/35] lexer --- CONTRIBUTING.md | 2 +- INSTALL.md | 3 +- Makefile | 15 +- examples/README.md | 2 +- examples/polish_taxes_pl/.gitignore | 14 + examples/polish_taxes_pl/Makefile | 4 + .../rozdzial_3.catala_pl | 24 + .../polish_taxes_pl/polish_taxes_pl.catala_pl | 3 + .../tests/test_a7_u1_p1.catala_pl | 23 + generate_website_assets.sh | 2 + src/catala/dcalc/print.ml | 3 +- src/catala/driver.ml | 1 + src/catala/lcalc/print.ml | 3 +- src/catala/literate/html.ml | 13 +- src/catala/literate/latex.ml | 19 +- src/catala/surface/dune | 28 +- src/catala/surface/lexer_pl.ml | 550 ++++++++++++++++++ src/catala/surface/lexer_pl.mli | 15 + src/catala/surface/parser_driver.ml | 2 + src/catala/utils/cli.ml | 9 +- src/catala/utils/cli.mli | 4 +- 21 files changed, 709 insertions(+), 30 deletions(-) create mode 100644 examples/polish_taxes_pl/.gitignore create mode 100644 examples/polish_taxes_pl/Makefile create mode 100644 examples/polish_taxes_pl/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl create mode 100644 examples/polish_taxes_pl/polish_taxes_pl.catala_pl create mode 100644 examples/polish_taxes_pl/tests/test_a7_u1_p1.catala_pl create mode 100644 src/catala/surface/lexer_pl.ml create mode 100644 src/catala/surface/lexer_pl.mli diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index be823554..bfe74e16 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -124,7 +124,7 @@ general-to-specifics statutes order. Therefore, there exists multiple versions of the Catala surface syntax, adapted to the language of the legislative text. Currently, Catala supports English and French legislative text via the -`--language=en` or `--language=fr` option. +`--language=en`, `--language=fr` or `--language=pl` option. Technically, support for new languages can be added via a new lexer. If you want to add a new language, you can start from diff --git a/INSTALL.md b/INSTALL.md index f65cb3d7..01bcbede 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -119,7 +119,8 @@ augmented with the Catala plugin, simply enter sudo make pygments This will execute the -script `syntax_highlighting/fr/pygments/set_up_pygments.sh` and +script `syntax_highlighting/fr/pygments/set_up_pygments.sh`, +`syntax_highlighting/pl/pygments/set_up_pygments.sh` and `syntax_highlighting/en/pygments/set_up_pygments.sh`. The scripts patch your `pigmentize` executable, used for instance by the `minted` LaTeX package. diff --git a/Makefile b/Makefile index c430051f..539678cf 100644 --- a/Makefile +++ b/Makefile @@ -58,6 +58,7 @@ install: SYNTAX_HIGHLIGHTING_FR=${CURDIR}/syntax_highlighting/fr SYNTAX_HIGHLIGHTING_EN=${CURDIR}/syntax_highlighting/en +SYNTAX_HIGHLIGHTING_PL=${CURDIR}/syntax_highlighting/pl pygmentize_fr: $(SYNTAX_HIGHLIGHTING_FR)/set_up_pygments.sh chmod +x $< @@ -67,6 +68,10 @@ pygmentize_en: $(SYNTAX_HIGHLIGHTING_EN)/set_up_pygments.sh chmod +x $< sudo $< +pygmentize_pl: $(SYNTAX_HIGHLIGHTING_PL)/set_up_pygments.sh + chmod +x $< + sudo $< + #> pygments : Extends your pygmentize executable with Catala lexers pygments: pygmentize_fr pygmentize_en @@ -78,6 +83,10 @@ atom_en: ${CURDIR}/syntax_highlighting/en/setup_atom.sh chmod +x $< $< +atom_pl: ${CURDIR}/syntax_highlighting/pl/setup_atom.sh + chmod +x $< + $< + atom_nv: ${CURDIR}/syntax_highlighting/nv/setup_atom.sh chmod +x $< $< @@ -93,6 +102,10 @@ vscode_en: ${CURDIR}/syntax_highlighting/en/setup_vscode.sh chmod +x $< $< +vscode_pl: ${CURDIR}/syntax_highlighting/pl/setup_vscode.sh + chmod +x $< + $< + vscode_nv: ${CURDIR}/syntax_highlighting/nv/setup_vscode.sh chmod +x $< $< @@ -222,7 +235,7 @@ clean: $(MAKE) -C $(CODE_GENERAL_IMPOTS_DIR) clean inspect: - gitinspector -f ml,mli,mly,iro,tex,catala,catala_en,catala_fr,md,fst,mld --grading + gitinspector -f ml,mli,mly,iro,tex,catala,catala_en,catala_pl,catala_fr,md,fst,mld --grading ########################################## # Special targets diff --git a/examples/README.md b/examples/README.md index d798a9b7..deb076e5 100644 --- a/examples/README.md +++ b/examples/README.md @@ -99,7 +99,7 @@ To build and run the example, create a `Makefile` in `foo/` with the following contents: ```Makefile -CATALA_LANG=en # or fr if your source code is in French +CATALA_LANG=en # or fr/pl if your source code is in French/Polish SRC=foo.catala include ../Makefile.common.mk diff --git a/examples/polish_taxes_pl/.gitignore b/examples/polish_taxes_pl/.gitignore new file mode 100644 index 00000000..5304e283 --- /dev/null +++ b/examples/polish_taxes_pl/.gitignore @@ -0,0 +1,14 @@ +*.aux +*.dvi +*.fdb_latexmk +*.fls +*.log +*.out +*.fls +*.tex +*.pdf +_minted* +*.toc +*.pyg +*.d +*.ml \ No newline at end of file diff --git a/examples/polish_taxes_pl/Makefile b/examples/polish_taxes_pl/Makefile new file mode 100644 index 00000000..15d94880 --- /dev/null +++ b/examples/polish_taxes_pl/Makefile @@ -0,0 +1,4 @@ +CATALA_LANG=pl +SRC=polish_tax_code.catala_pl + +include ../Makefile.common.mk diff --git a/examples/polish_taxes_pl/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl b/examples/polish_taxes_pl/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl new file mode 100644 index 00000000..5557b883 --- /dev/null +++ b/examples/polish_taxes_pl/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl @@ -0,0 +1,24 @@ +## Rozdzial 3 + +## Art. 7. 1. Stawki podatku wynoszą: + +### 1) od umowy sprzedaży: +#### a) nieruchomości, rzeczy ruchomych, prawa użytkowania wieczystego, własnościowego spółdzielczego prawa do lokalu mieszkalnego, spółdzielczego prawa do lokalu użytkowego oraz wynikających z przepisów prawa spółdzielczego: prawa do domu jednorodzinnego oraz prawa do lokalu w małym domu mieszkalnym – 2%, + +> Begin metadata +```catala +deklaracja zakres UmowaSprzedazy: + kontekst kwota zawartosc pieniadze + kontekst stawka zawartosc dziesietna + kontekst podatek zawartosc pieniadze + +zakres UmowaSprzedazy: + definicja podatek wynosi + kwota *$ stawka + +zakres UmowaSprzedazy: + etykieta a7_u1_p1_ppa + definicja stawka wynosi 2% +``` +> End metadata + diff --git a/examples/polish_taxes_pl/polish_taxes_pl.catala_pl b/examples/polish_taxes_pl/polish_taxes_pl.catala_pl new file mode 100644 index 00000000..5080d52d --- /dev/null +++ b/examples/polish_taxes_pl/polish_taxes_pl.catala_pl @@ -0,0 +1,3 @@ +# Master file + +> Include: podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl diff --git a/examples/polish_taxes_pl/tests/test_a7_u1_p1.catala_pl b/examples/polish_taxes_pl/tests/test_a7_u1_p1.catala_pl new file mode 100644 index 00000000..9ceedc24 --- /dev/null +++ b/examples/polish_taxes_pl/tests/test_a7_u1_p1.catala_pl @@ -0,0 +1,23 @@ +> Include: ../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_en + +## [Test - Art. 7 ustęp 1 punkt 1] + +```catala +deklaracja zakres Test_A7_U1_P1_PPa: + kontekst sprzedaz zakres UmowaSprzedazy + +zakres Test_A7_U1_P1_PPa: + definicja sprzedaz.kwota wynosi $100 + + asercja sprzedaz.podatek = $2 + + +deklaracja zakres Test_A7_U1_P1_PPb: + kontekst sprzedaz zakres UmowaSprzedazy + +zakres Test_A7_U1_P1_PPb: + definicja sprzedaz.kwota wynosi $100 + definicja sprzedaz.inne_prawa_majatkowe wynosi prawda + + asercja sprzedaz.podatek = $1 +``` \ No newline at end of file diff --git a/generate_website_assets.sh b/generate_website_assets.sh index 4f94b3f1..74bb62d5 100755 --- a/generate_website_assets.sh +++ b/generate_website_assets.sh @@ -16,6 +16,7 @@ scp grammar.html $1/ scp catala.html $1/ scp _build/default/src/catala/catala_web.bc.js $1/playground/ scp examples/tutorial_en/tutorial_en.catala_en $1/playground/ +# TODO BW: PL scp examples/tutoriel_fr/tutoriel_fr.catala_fr $1/playground/ cat examples/allocations_familiales/prologue.catala_fr > allocations_familiales.catala_fr cat examples/allocations_familiales/decrets_divers.catala_fr >> allocations_familiales.catala_fr @@ -29,5 +30,6 @@ mv -f allocations_familiales_fixed.catala_fr allocations_familiales.catala_fr scp allocations_familiales.catala_fr $1/playground/ rm allocations_familiales.catala_fr scp syntax_highlighting/en/ace/mode-catala_en.js $1/playground/ +# TODO BW: PL scp syntax_highlighting/fr/ace/mode-catala_fr.js $1/playground/ scp french_law_js/french_law.js $1/french_law.js diff --git a/src/catala/dcalc/print.ml b/src/catala/dcalc/print.ml index 0ad11025..251c123a 100644 --- a/src/catala/dcalc/print.ml +++ b/src/catala/dcalc/print.ml @@ -98,7 +98,8 @@ let format_lit (fmt : Format.formatter) (l : lit Pos.marked) : unit = | LMoney e -> ( match !Utils.Cli.locale_lang with | `En -> Format.fprintf fmt "$%s" (Runtime.money_to_string e) - | `Fr -> Format.fprintf fmt "%s €" (Runtime.money_to_string e)) + | `Fr -> Format.fprintf fmt "%s €" (Runtime.money_to_string e) + | `Pl -> Format.fprintf fmt "%s PLN" (Runtime.money_to_string e)) | LDate d -> Format.fprintf fmt "%s" (Runtime.date_to_string d) | LDuration d -> Format.fprintf fmt "%s" (Runtime.duration_to_string d) diff --git a/src/catala/driver.ml b/src/catala/driver.ml index 4a6ffe00..d651f7e5 100644 --- a/src/catala/driver.ml +++ b/src/catala/driver.ml @@ -35,6 +35,7 @@ let driver (source_file : Pos.input_file) (debug : bool) (dcalc : bool) (unstyle | Some l -> if l = "fr" then `Fr else if l = "en" then `En + else if l = "pl" then `Pl else if l = "non-verbose" then `NonVerbose else Errors.raise_error diff --git a/src/catala/lcalc/print.ml b/src/catala/lcalc/print.ml index 20aad56c..fae59f48 100644 --- a/src/catala/lcalc/print.ml +++ b/src/catala/lcalc/print.ml @@ -38,7 +38,8 @@ let format_lit (fmt : Format.formatter) (l : lit Pos.marked) : unit = | LMoney e -> ( match !Utils.Cli.locale_lang with | `En -> Format.fprintf fmt "$%s" (Runtime.money_to_string e) - | `Fr -> Format.fprintf fmt "%s €" (Runtime.money_to_string e)) + | `Fr -> Format.fprintf fmt "%s €" (Runtime.money_to_string e) + | `Pl -> Format.fprintf fmt "%s PLN" (Runtime.money_to_string e)) | LDate d -> Format.fprintf fmt "%s" (Runtime.date_to_string d) | LDuration d -> Format.fprintf fmt "%s" (Runtime.duration_to_string d) diff --git a/src/catala/literate/html.ml b/src/catala/literate/html.ml index 9d3ff845..08b997cd 100644 --- a/src/catala/literate/html.ml +++ b/src/catala/literate/html.ml @@ -71,12 +71,14 @@ let wrap_html (source_files : string list) (language : Cli.backend_lang) (fmt : css_as_string (match language with | `Fr -> "Implémentation de texte législatif" - | `En -> "Legislative text implementation") - (match language with `Fr -> "Document généré par" | `En -> "Document generated by") + | `En -> "Legislative text implementation" + | `Pl -> "Implementowanie tekstów legislacyjnych") + (match language with `Fr -> "Document généré par" | `En -> "Document generated by" | `Pl -> "Dokument wygenerowany przez") Utils.Cli.version (match language with | `Fr -> "Fichiers sources tissés dans ce document" - | `En -> "Source files weaved in this document") + | `En -> "Source files weaved in this document" + | `Pl -> "Pliki źródłowe w tym dokumencie") (String.concat "\n" (List.map (fun filename -> @@ -90,7 +92,8 @@ let wrap_html (source_files : string list) (language : Cli.backend_lang) (fmt : (pre_html (Filename.basename filename)) (match language with | `Fr -> "dernière modification le" - | `En -> "last modification") + | `En -> "last modification" + | `Pl -> "ostatnia modyfikacja") ftime) source_files)); wrapped fmt @@ -104,7 +107,7 @@ let pygmentize_code (c : string Pos.marked) (language : C.backend_lang) : string Printf.fprintf oc "%s" (Pos.unmark c); close_out oc; let pygments = "pygmentize" in - let pygments_lexer = match language with `Fr -> "catala_fr" | `En -> "catala_en" in + let pygments_lexer = match language with `Fr -> "catala_fr" | `En -> "catala_en" | `Pl -> "catala_pl" in let pygments_args = [| "-l"; diff --git a/src/catala/literate/latex.ml b/src/catala/literate/latex.ml index cf4fdff3..56a1baa8 100644 --- a/src/catala/literate/latex.ml +++ b/src/catala/literate/latex.ml @@ -80,15 +80,17 @@ let wrap_latex (source_files : string list) (language : C.backend_lang) (fmt : F %s : \n\ \\begin{itemize}%s\\end{itemize}\n\n\ \\[\\star\\star\\star\\]\\\\\n" - (match language with `Fr -> "french" | `En -> "english") + (match language with `Fr -> "french" | `En -> "english" | `Pl -> "polish") (match language with | `Fr -> "Implémentation de texte législatif" - | `En -> "Legislative text implementation") - (match language with `Fr -> "Document généré par" | `En -> "Document generated by") + | `En -> "Legislative text implementation" + | `Pl -> "Implementacja tekstów legislacyjnych") + (match language with `Fr -> "Document généré par" | `En -> "Document generated by" | `Pl -> "Dokument wygenerowany przez") Utils.Cli.version (match language with | `Fr -> "Fichiers sources tissés dans ce document" - | `En -> "Source files weaved in this document") + | `En -> "Source files weaved in this document" + | `Pl -> "Pliki źródłowe w tym dokumencie") (String.concat "," (List.map (fun filename -> @@ -102,7 +104,8 @@ let wrap_latex (source_files : string list) (language : C.backend_lang) (fmt : F (pre_latexify (Filename.basename filename)) (match language with | `Fr -> "dernière modification le" - | `En -> "last modification") + | `En -> "last modification" + | `Pl -> "ostatnia modyfikacja") ftime) source_files)); wrapped fmt; @@ -137,7 +140,7 @@ let law_article_item_to_latex (language : C.backend_lang) (fmt : Format.formatte \\end{minted}" (pre_latexify (Filename.basename (Pos.get_file (Pos.get_position c)))) (Pos.get_start_line (Pos.get_position c) - 1) - (match language with `Fr -> "catala_fr" | `En -> "catala_en") + (match language with `Fr -> "catala_fr" | `En -> "catala_en" | `Pl -> "catala_pl") (math_syms_replace (Pos.unmark c)) let rec law_structure_to_latex (language : C.backend_lang) (fmt : Format.formatter) @@ -171,7 +174,7 @@ let rec law_structure_to_latex (language : C.backend_lang) (fmt : Format.formatt (law_article_item_to_latex language) fmt children | A.MetadataBlock (_, c) -> - let metadata_title = match language with `Fr -> "Métadonnées" | `En -> "Metadata" in + let metadata_title = match language with `Fr -> "Métadonnées" | `En -> "Metadata" | `Pl -> "Metadane" in Format.fprintf fmt "\\begin{tcolorbox}[colframe=OliveGreen, breakable, \ title=\\textcolor{black}{\\texttt{%s}},title after \ @@ -183,7 +186,7 @@ let rec law_structure_to_latex (language : C.backend_lang) (fmt : Format.formatt metadata_title metadata_title (Pos.get_start_line (Pos.get_position c) - 1) (pre_latexify (Filename.basename (Pos.get_file (Pos.get_position c)))) - (match language with `Fr -> "catala_fr" | `En -> "catala_en") + (match language with `Fr -> "catala_fr" | `En -> "catala_en" | `Pl -> "catala_pl") (math_syms_replace (Pos.unmark c)) | A.IntermediateText t -> Format.fprintf fmt "%s" (pre_latexify t) diff --git a/src/catala/surface/dune b/src/catala/surface/dune index 520ce6b9..87b438a1 100644 --- a/src/catala/surface/dune +++ b/src/catala/surface/dune @@ -32,19 +32,37 @@ (rule (with-stdout-to parser.messages.new - (run menhir %{dep:tokens.mly} %{dep:parser.mly} --base parser --list-errors))) + (run + menhir + %{dep:tokens.mly} + %{dep:parser.mly} + --base + parser + --list-errors))) (rule (with-stdout-to parser_errors.ml - (run menhir %{dep:tokens.mly} %{dep:parser.mly} --base parser - --compile-errors %{dep:parser.messages}))) + (run + menhir + %{dep:tokens.mly} + %{dep:parser.mly} + --base + parser + --compile-errors + %{dep:parser.messages}))) (rule (with-stdout-to parser.messages.updated - (run menhir %{dep:tokens.mly} %{dep:parser.mly} --base parser - --update-errors %{dep:parser.messages}))) + (run + menhir + %{dep:tokens.mly} + %{dep:parser.mly} + --base + parser + --update-errors + %{dep:parser.messages}))) (rule (alias update-parser-messages) diff --git a/src/catala/surface/lexer_pl.ml b/src/catala/surface/lexer_pl.ml new file mode 100644 index 00000000..9448c7f5 --- /dev/null +++ b/src/catala/surface/lexer_pl.ml @@ -0,0 +1,550 @@ +(* This file is part of the Catala compiler, a specification language for tax and social benefits + computation rules. Copyright (C) 2020 Inria, contributor: Denis Merigoux + + + Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + in compliance with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software distributed under the License + is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing permissions and limitations under + the License. *) + +open Tokens +open Sedlexing +open Utils +open Lexer_common +module L = Lexer +module R = Re.Pcre + +(** Same as {!val: Surface.Lexer.token_list_language_agnostic}, but with tokens specialized to + Polish. *) +let token_list : (string * token) list = + [ + ("zakres", SCOPE); + ("konsekwencja", CONSEQUENCE); + ("data", DATA); + ("zalezy od", DEPENDS); + ("deklaracja", DECLARATION); + ("kontekst", CONTEXT); + ("malejacy", DECREASING); + ("rosnacy", INCREASING); + ("z", OF); + ("kolekcja", COLLECTION); + ("enumeracja", ENUM); + ("calkowita", INTEGER); + ("pieniadze", MONEY); + ("tekst", TEXT); + ("dziesietna", DECIMAL); + ("czas", DATE); + ("czas trwania", DURATION); + ("zerojedynkowy", BOOLEAN); + ("suma", SUM); + ("spelnione", FILLED); + ("definicja", DEFINITION); + ("etykieta", LABEL); + ("wyjatek", EXCEPTION); + ("wynosi", DEFINED_AS); + ("pasuje", MATCH); + ("ze wzorem", WITH); + ("pod warunkiem", UNDER_CONDITION); + ("jezeli", IF); + ("wtedy", THEN); + ("inaczej", ELSE); + ("zawartosc", CONTENT); + ("struktura", STRUCT); + ("asercja", ASSERTION); + ("rozna", VARIES); + ("with", WITH_V); + ("dla", FOR); + ("wszystkie", ALL); + ("mamy", WE_HAVE); + ("staloprzecinkowa", FIXED); + ("przez", BY); + ("zasada", RULE); + ("istnieje", EXISTS); + ("takie ze", SUCH); + ("to", THAT); + ("i", AND); + ("lub", OR); + ("xor", XOR); + ("nie", NOT); + ("maximum", MAXIMUM); + ("minimum", MINIMUM); + ("filtr", FILTER); + ("mapuj", MAP); + ("poczatkowy", INIT); + ("liczba", CARDINAL); + ("rok", YEAR); + ("miesiac", MONTH); + ("dzien", DAY); + ("prawda", TRUE); + ("falsz", FALSE); + ] + @ L.token_list_language_agnostic + +(** Localised builtin functions *) +let builtins : (string * Ast.builtin_expression) list = + [ + ("integer_to_decimal", IntToDec); + ("get_day", GetDay); + ("get_month", GetMonth); + ("get_year", GetYear); + ] + +(** Main lexing function used in code blocks *) +let rec lex_code (lexbuf : lexbuf) : token = + let prev_lexeme = Utf8.lexeme lexbuf in + let prev_pos = lexing_positions lexbuf in + match%sedlex lexbuf with + | white_space -> + (* Whitespaces *) + L.update_acc lexbuf; + lex_code lexbuf + | '#', Star (Compl '\n'), '\n' -> + (* Comments *) + L.update_acc lexbuf; + lex_code lexbuf + | "```" -> + (* End of code section *) + L.is_code := false; + END_CODE !L.code_string_acc + | "zakres" -> + L.update_acc lexbuf; + SCOPE + | "data" -> + L.update_acc lexbuf; + DATA + | "zalezy od" -> + L.update_acc lexbuf; + DEPENDS + | "deklaracja" -> + L.update_acc lexbuf; + DECLARATION + | "kontekst" -> + L.update_acc lexbuf; + CONTEXT + | "malejacy" -> + L.update_acc lexbuf; + DECREASING + | "rosnacy" -> + L.update_acc lexbuf; + INCREASING + | "z" -> + L.update_acc lexbuf; + OF + | "kolekcja" -> + L.update_acc lexbuf; + COLLECTION + | "enumeracja" -> + L.update_acc lexbuf; + ENUM + | "calkowita" -> + L.update_acc lexbuf; + INTEGER + | "pieniadze" -> + L.update_acc lexbuf; + MONEY + | "tekst" -> + L.update_acc lexbuf; + TEXT + | "dziesietna" -> + L.update_acc lexbuf; + DECIMAL + | "czas" -> + L.update_acc lexbuf; + DATE + | "czas trwania" -> + L.update_acc lexbuf; + DURATION + | "zerojedynkowy" -> + L.update_acc lexbuf; + BOOLEAN + | "suma" -> + L.update_acc lexbuf; + SUM + | "spelnione" -> + L.update_acc lexbuf; + FILLED + | "definicja" -> + L.update_acc lexbuf; + DEFINITION + | "etykieta" -> + L.update_acc lexbuf; + LABEL + | "wyjatek" -> + L.update_acc lexbuf; + EXCEPTION + | "wynosi" -> + L.update_acc lexbuf; + DEFINED_AS + | "pasuje" -> + L.update_acc lexbuf; + MATCH + | "ze wzorem" -> + L.update_acc lexbuf; + WITH + | "pod warunkiem" -> + L.update_acc lexbuf; + UNDER_CONDITION + | "jezeli" -> + L.update_acc lexbuf; + IF + | "konsekwencja" -> + L.update_acc lexbuf; + CONSEQUENCE + | "wtedy" -> + L.update_acc lexbuf; + THEN + | "inaczej" -> + L.update_acc lexbuf; + ELSE + | "condition" -> + L.update_acc lexbuf; + CONDITION + | "zawartosc" -> + L.update_acc lexbuf; + CONTENT + | "struktura" -> + L.update_acc lexbuf; + STRUCT + | "asercja" -> + L.update_acc lexbuf; + ASSERTION + | "rozna" -> + L.update_acc lexbuf; + VARIES + | "wraz z" -> + L.update_acc lexbuf; + WITH_V + | "dla" -> + L.update_acc lexbuf; + FOR + | "wszystkie" -> + L.update_acc lexbuf; + ALL + | "mamy" -> + L.update_acc lexbuf; + WE_HAVE + | "staloprzecinkowa" -> + L.update_acc lexbuf; + FIXED + | "przez" -> + L.update_acc lexbuf; + BY + | "zasada" -> + (* 0xE8 is è *) + L.update_acc lexbuf; + RULE + | "istnieje" -> + L.update_acc lexbuf; + EXISTS + | "in" -> + L.update_acc lexbuf; + IN + | "takie ze" -> + L.update_acc lexbuf; + SUCH + | "to" -> + L.update_acc lexbuf; + THAT + | "i" -> + L.update_acc lexbuf; + AND + | "lub" -> + L.update_acc lexbuf; + OR + | "xor" -> + L.update_acc lexbuf; + XOR + | "nie" -> + L.update_acc lexbuf; + NOT + | "maximum" -> + L.update_acc lexbuf; + MAXIMUM + | "minimum" -> + L.update_acc lexbuf; + MINIMUM + | "filtr" -> + L.update_acc lexbuf; + FILTER + | "mapuj" -> + L.update_acc lexbuf; + MAP + | "poczatkowy" -> + L.update_acc lexbuf; + INIT + | "liczba" -> + L.update_acc lexbuf; + CARDINAL + | "prawda" -> + L.update_acc lexbuf; + TRUE + | "falsz" -> + L.update_acc lexbuf; + FALSE + | "rok" -> + L.update_acc lexbuf; + YEAR + | "miesiac" -> + L.update_acc lexbuf; + MONTH + | "dzien" -> + L.update_acc lexbuf; + DAY + | 0x24, Star white_space, '0' .. '9', Star ('0' .. '9' | ','), Opt ('.', Rep ('0' .. '9', 0 .. 2)) + -> + let extract_parts = R.regexp "([0-9]([0-9,]*[0-9]|))(.([0-9]{0,2})|)" in + let full_str = Utf8.lexeme lexbuf in + let only_numbers_str = String.trim (String.sub full_str 1 (String.length full_str - 1)) in + let parts = R.get_substring (R.exec ~rex:extract_parts only_numbers_str) in + (* Integer literal*) + let units = parts 1 in + let remove_commas = R.regexp "," in + let units = + Runtime.integer_of_string (R.substitute ~rex:remove_commas ~subst:(fun _ -> "") units) + in + let cents = + try Runtime.integer_of_string (parts 4) with Not_found -> Runtime.integer_of_int 0 + in + L.update_acc lexbuf; + MONEY_AMOUNT (units, cents) + | Plus '0' .. '9', '.', Star '0' .. '9' -> + let extract_code_title = R.regexp "([0-9]+)\\.([0-9]*)" in + let dec_parts = R.get_substring (R.exec ~rex:extract_code_title (Utf8.lexeme lexbuf)) in + (* Integer literal*) + L.update_acc lexbuf; + DECIMAL_LITERAL + (Runtime.integer_of_string (dec_parts 1), Runtime.integer_of_string (dec_parts 2)) + | "<=@" -> + L.update_acc lexbuf; + LESSER_EQUAL_DATE + | "<@" -> + L.update_acc lexbuf; + LESSER_DATE + | ">=@" -> + L.update_acc lexbuf; + GREATER_EQUAL_DATE + | ">@" -> + L.update_acc lexbuf; + GREATER_DATE + | "-@" -> + L.update_acc lexbuf; + MINUSDATE + | "+@" -> + L.update_acc lexbuf; + PLUSDATE + | "<=^" -> + L.update_acc lexbuf; + LESSER_EQUAL_DURATION + | "<^" -> + L.update_acc lexbuf; + LESSER_DURATION + | ">=^" -> + L.update_acc lexbuf; + GREATER_EQUAL_DURATION + | ">^" -> + L.update_acc lexbuf; + GREATER_DURATION + | "+^" -> + L.update_acc lexbuf; + PLUSDURATION + | "-^" -> + L.update_acc lexbuf; + MINUSDURATION + | "<=", 0x24 -> + L.update_acc lexbuf; + LESSER_EQUAL_MONEY + | '<', 0x24 -> + L.update_acc lexbuf; + LESSER_MONEY + | ">=", 0x24 -> + L.update_acc lexbuf; + GREATER_EQUAL_MONEY + | '>', 0x24 -> + L.update_acc lexbuf; + GREATER_MONEY + | '+', 0x24 -> + L.update_acc lexbuf; + PLUSMONEY + | '-', 0x24 -> + L.update_acc lexbuf; + MINUSMONEY + | '*', 0x24 -> + L.update_acc lexbuf; + MULTMONEY + | '/', 0x24 -> + L.update_acc lexbuf; + DIVMONEY + | "<=." -> + L.update_acc lexbuf; + LESSER_EQUAL_DEC + | "<." -> + L.update_acc lexbuf; + LESSER_DEC + | ">=." -> + L.update_acc lexbuf; + GREATER_EQUAL_DEC + | ">." -> + L.update_acc lexbuf; + GREATER_DEC + | "+." -> + L.update_acc lexbuf; + PLUSDEC + | "-." -> + L.update_acc lexbuf; + MINUSDEC + | "*." -> + L.update_acc lexbuf; + MULTDEC + | "/." -> + L.update_acc lexbuf; + DIVDEC + | "<=" -> + L.update_acc lexbuf; + LESSER_EQUAL + | '<' -> + L.update_acc lexbuf; + LESSER + | ">=" -> + L.update_acc lexbuf; + GREATER_EQUAL + | '>' -> + L.update_acc lexbuf; + GREATER + | '+' -> + L.update_acc lexbuf; + PLUS + | '-' -> + L.update_acc lexbuf; + MINUS + | '*' -> + L.update_acc lexbuf; + MULT + | '/' -> + L.update_acc lexbuf; + DIV + | "!=" -> + L.update_acc lexbuf; + NOT_EQUAL + | '=' -> + L.update_acc lexbuf; + EQUAL + | '%' -> + L.update_acc lexbuf; + PERCENT + | '(' -> + L.update_acc lexbuf; + LPAREN + | ')' -> + L.update_acc lexbuf; + RPAREN + | '{' -> + L.update_acc lexbuf; + LBRACKET + | '}' -> + L.update_acc lexbuf; + RBRACKET + | '[' -> + L.update_acc lexbuf; + LSQUARE + | ']' -> + L.update_acc lexbuf; + RSQUARE + | '|' -> + L.update_acc lexbuf; + VERTICAL + | ':' -> + L.update_acc lexbuf; + COLON + | ';' -> + L.update_acc lexbuf; + SEMICOLON + | "--" -> + L.update_acc lexbuf; + ALT + | '.' -> + L.update_acc lexbuf; + DOT + | uppercase, Star (uppercase | lowercase | '0' .. '9' | '_' | '\'') -> + (* Name of constructor *) + L.update_acc lexbuf; + CONSTRUCTOR (Utf8.lexeme lexbuf) + | lowercase, Star (lowercase | uppercase | '0' .. '9' | '_' | '\'') -> + (* Name of variable *) + L.update_acc lexbuf; + IDENT (Utf8.lexeme lexbuf) + | Plus '0' .. '9' -> + (* Integer literal*) + L.update_acc lexbuf; + INT_LITERAL (Runtime.integer_of_string (Utf8.lexeme lexbuf)) + | _ -> L.raise_lexer_error (Pos.from_lpos prev_pos) prev_lexeme + +(** Main lexing function used outside code blocks *) +let lex_law (lexbuf : lexbuf) : token = + let prev_lexeme = Utf8.lexeme lexbuf in + let prev_pos = lexing_positions lexbuf in + match%sedlex lexbuf with + | "```catala" -> + L.is_code := true; + L.code_string_acc := ""; + + BEGIN_CODE + | eof -> EOF + | '#', Star white_space, "Master file" -> MASTER_FILE + | '>', Star white_space, "Begin metadata" -> BEGIN_METADATA + | '>', Star white_space, "End metadata" -> END_METADATA + | ( '>', + Star white_space, + "Include:", + Star white_space, + Plus (Compl ('@' | '\n')), + Star white_space, + Opt ('@', Star white_space, "p.", Star white_space, Plus '0' .. '9', Star white_space), + '\n' ) -> + let extract_components = + R.regexp ">\\s*Include\\:\\s*([^@\\n]+)\\s*(@\\s*p\\.\\s*([0-9]+)|)" + in + let get_component = R.get_substring (R.exec ~rex:extract_components (Utf8.lexeme lexbuf)) in + let name = get_component 1 in + let pages = try Some (int_of_string (get_component 3)) with Not_found -> None in + let pos = lexing_positions lexbuf in + if Filename.extension name = ".pdf" then + LAW_INCLUDE (Ast.PdfFile ((name, Pos.from_lpos pos), pages)) + else LAW_INCLUDE (Ast.CatalaFile (name, Pos.from_lpos pos)) + | '#', Plus '#', Star white_space, Plus (Compl ('[' | ']' | '\n')), Star white_space, '\n' -> + get_law_heading lexbuf + | ( '#', + Plus '#', + Star white_space, + '[', + Star white_space, + Plus (Compl ']'), + Star white_space, + ']', + '\n' ) -> + let extract_article_title = R.regexp "([#]+)\\s*\\[([^\\]]+)\\]" in + let get_substring = + R.get_substring (R.exec ~rex:extract_article_title (Utf8.lexeme lexbuf)) + in + let title = get_substring 2 in + let get_new_lines = R.regexp "\n" in + let new_lines_count = + try Array.length (R.extract ~rex:get_new_lines (Utf8.lexeme lexbuf)) with Not_found -> 0 + in + (* the -1 is here to compensate for Sedlex's automatic newline detection around token *) + for _i = 1 to new_lines_count - 1 do + new_line lexbuf + done; + let precedence = calc_precedence (get_substring 1) in + + LAW_ARTICLE (title, None, None, precedence) + | Plus (Compl ('/' | '#' | '`' | '>')) -> LAW_TEXT (Utf8.lexeme lexbuf) + | _ -> L.raise_lexer_error (Pos.from_lpos prev_pos) prev_lexeme + +(** Entry point of the lexer, distributes to {!val: lex_code} or {!val: lex_law} depending of {!val: + Surface.Lexer.is_code}. *) +let lexer (lexbuf : lexbuf) : token = if !L.is_code then lex_code lexbuf else lex_law lexbuf diff --git a/src/catala/surface/lexer_pl.mli b/src/catala/surface/lexer_pl.mli new file mode 100644 index 00000000..97e67565 --- /dev/null +++ b/src/catala/surface/lexer_pl.mli @@ -0,0 +1,15 @@ +(* This file is part of the Catala compiler, a specification language for tax and social benefits + computation rules. Copyright (C) 2020 Inria, contributor: Denis Merigoux + + + Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + in compliance with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software distributed under the License + is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing permissions and limitations under + the License. *) + +include Lexer.LocalisedLexer diff --git a/src/catala/surface/parser_driver.ml b/src/catala/surface/parser_driver.ml index 8d14a65f..12ed332b 100644 --- a/src/catala/surface/parser_driver.ml +++ b/src/catala/surface/parser_driver.ml @@ -226,11 +226,13 @@ end module Parser_NonVerbose = ParserAux (Lexer) module Parser_En = ParserAux (Lexer_en) module Parser_Fr = ParserAux (Lexer_fr) +module Parser_Pl = ParserAux (Lexer_pl) let localised_parser : Cli.frontend_lang -> lexbuf -> Ast.source_file_or_master = function | `NonVerbose -> Parser_NonVerbose.commands_or_includes | `En -> Parser_En.commands_or_includes | `Fr -> Parser_Fr.commands_or_includes + | `Pl -> Parser_Pl.commands_or_includes (** {1 Parsing multiple files} *) diff --git a/src/catala/utils/cli.ml b/src/catala/utils/cli.ml index 5064d78f..8720d227 100644 --- a/src/catala/utils/cli.ml +++ b/src/catala/utils/cli.ml @@ -12,12 +12,12 @@ or implied. See the License for the specific language governing permissions and limitations under the License. *) -type frontend_lang = [ `Fr | `En | `NonVerbose ] +type frontend_lang = [ `Fr | `En | `NonVerbose | `Pl] -type backend_lang = [ `Fr | `En ] +type backend_lang = [ `Fr | `En | `Pl ] let to_backend_lang (lang : frontend_lang) : backend_lang = - match lang with `En | `NonVerbose -> `En | `Fr -> `Fr + match lang with `En | `NonVerbose -> `En | `Fr -> `Fr | `Pl -> `Pl (** Source files to be compiled *) let source_files : string list ref = ref [] @@ -57,7 +57,8 @@ let unstyled = Arg.(value & flag & info [ "unstyled" ] ~doc:"Removes styling fro let optimize = Arg.(value & flag & info [ "optimize"; "O" ] ~doc:"Run compiler optimizations") let trace_opt = - Arg.(value & flag & info [ "trace"; "t" ] ~doc:"Displays a trace of the interpreter's computation") + Arg.( + value & flag & info [ "trace"; "t" ] ~doc:"Displays a trace of the interpreter's computation") let wrap_weaved_output = Arg.( diff --git a/src/catala/utils/cli.mli b/src/catala/utils/cli.mli index 0b874ef9..2ffa0b96 100644 --- a/src/catala/utils/cli.mli +++ b/src/catala/utils/cli.mli @@ -12,9 +12,9 @@ or implied. See the License for the specific language governing permissions and limitations under the License. *) -type frontend_lang = [ `En | `Fr | `NonVerbose ] +type frontend_lang = [ `En | `Fr | `NonVerbose | `Pl ] -type backend_lang = [ `En | `Fr ] +type backend_lang = [ `En | `Fr | `Pl ] val to_backend_lang : frontend_lang -> backend_lang From e4bc4c3c8fb1b09c4f974086e953db7f9c731d85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Sun, 9 May 2021 23:06:59 +0200 Subject: [PATCH 04/35] swap english -> polish --- examples/polish_taxes/Makefile | 4 +- ...dzial_3.catala_en => rozdzial_3.catala_pl} | 88 +++++++++---------- examples/polish_taxes/polish_taxes.catala_en | 4 - .../polish_taxes.catala_pl} | 0 .../tests/test_a7_u1_p1.catala_en | 23 ----- .../tests/test_a7_u1_p1.catala_pl | 0 ...1_p2.catala_en => test_a7_u1_p2.catala_pl} | 8 +- ...1_p3.catala_en => test_a7_u1_p3.catala_pl} | 4 +- ...1_p4.catala_en => test_a7_u1_p4.catala_pl} | 4 +- examples/polish_taxes_pl/.gitignore | 14 --- examples/polish_taxes_pl/Makefile | 4 - .../rozdzial_3.catala_pl | 24 ----- src/catala/literate/html.ml | 9 +- src/catala/literate/latex.ml | 9 +- src/catala/utils/cli.ml | 2 +- 15 files changed, 69 insertions(+), 128 deletions(-) rename examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/{rozdzial_3.catala_en => rozdzial_3.catala_pl} (53%) delete mode 100644 examples/polish_taxes/polish_taxes.catala_en rename examples/{polish_taxes_pl/polish_taxes_pl.catala_pl => polish_taxes/polish_taxes.catala_pl} (100%) delete mode 100644 examples/polish_taxes/tests/test_a7_u1_p1.catala_en rename examples/{polish_taxes_pl => polish_taxes}/tests/test_a7_u1_p1.catala_pl (100%) rename examples/polish_taxes/tests/{test_a7_u1_p2.catala_en => test_a7_u1_p2.catala_pl} (68%) rename examples/polish_taxes/tests/{test_a7_u1_p3.catala_en => test_a7_u1_p3.catala_pl} (73%) rename examples/polish_taxes/tests/{test_a7_u1_p4.catala_en => test_a7_u1_p4.catala_pl} (70%) delete mode 100644 examples/polish_taxes_pl/.gitignore delete mode 100644 examples/polish_taxes_pl/Makefile delete mode 100644 examples/polish_taxes_pl/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl diff --git a/examples/polish_taxes/Makefile b/examples/polish_taxes/Makefile index 426b83ea..15d94880 100644 --- a/examples/polish_taxes/Makefile +++ b/examples/polish_taxes/Makefile @@ -1,4 +1,4 @@ -CATALA_LANG=en -SRC=polish_tax_code.catala_en +CATALA_LANG=pl +SRC=polish_tax_code.catala_pl include ../Makefile.common.mk diff --git a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_en b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl similarity index 53% rename from examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_en rename to examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl index 983d5f2b..16cbcc68 100644 --- a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_en +++ b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl @@ -7,19 +7,19 @@ > Begin metadata ```catala -declaration scope UmowaSprzedazy: - context kwota content money - context stawka content decimal - context podatek content money - context inne_prawa_majatkowe condition +deklaracja zakres UmowaSprzedazy: + kontekst kwota zawartosc pieniadze + kontekst stawka zawartosc dziesietna + kontekst podatek zawartosc pieniadze + kontekst inne_prawa_majatkowe condition -scope UmowaSprzedazy: - definition podatek equals +zakres UmowaSprzedazy: + definicja podatek wynosi kwota *$ stawka -scope UmowaSprzedazy: - label a7_u1_p1_ppa - definition stawka equals 2% +zakres UmowaSprzedazy: + etykieta a7_u1_p1_ppa + definicja stawka wynosi 2% ``` > End metadata @@ -27,11 +27,11 @@ scope UmowaSprzedazy: #### b) innych praw majątkowych – 1%; > Begin metadata ```catala -scope UmowaSprzedazy: - exception a7_u1_p1_ppa - definition stawka under condition +zakres UmowaSprzedazy: + wyjatek a7_u1_p1_ppa + definicja stawka pod warunkiem inne_prawa_majatkowe - consequence equals 1% + konsekwencja wynosi 1% ``` > End metadata @@ -42,19 +42,19 @@ mieszkalnego, spółdzielczego prawa do lokalu użytkowego oraz wynikających z > Begin metadata ```catala -declaration scope UmowaZamianyLubDarowizny: - context kwota content money - context stawka content decimal - context podatek content money - context inne_prawa_majatkowe condition +deklaracja zakres UmowaZamianyLubDarowizny: + kontekst kwota zawartosc pieniadze + kontekst stawka zawartosc dziesietna + kontekst podatek zawartosc pieniadze + kontekst inne_prawa_majatkowe condition -scope UmowaZamianyLubDarowizny: - definition podatek equals +zakres UmowaZamianyLubDarowizny: + definicja podatek wynosi kwota *$ stawka -scope UmowaZamianyLubDarowizny: - label a7_u1_p2_ppa - definition stawka equals 2% +zakres UmowaZamianyLubDarowizny: + etykieta a7_u1_p2_ppa + definicja stawka wynosi 2% ``` > End metadata @@ -62,11 +62,11 @@ scope UmowaZamianyLubDarowizny: >Begin metadata ```catala -scope UmowaZamianyLubDarowizny: - exception a7_u1_p2_ppa - definition stawka under condition +zakres UmowaZamianyLubDarowizny: + wyjatek a7_u1_p2_ppa + definicja stawka pod warunkiem inne_prawa_majatkowe - consequence equals 1% + konsekwencja wynosi 1% ``` >End metadata @@ -74,17 +74,17 @@ scope UmowaZamianyLubDarowizny: > Begin metadata ```catala -declaration scope OdplatneUzytkowanie: - context kwota content money - context stawka content decimal - context podatek content money +deklaracja zakres OdplatneUzytkowanie: + kontekst kwota zawartosc pieniadze + kontekst stawka zawartosc dziesietna + kontekst podatek zawartosc pieniadze -scope OdplatneUzytkowanie: - definition podatek equals +zakres OdplatneUzytkowanie: + definicja podatek wynosi kwota *$ stawka -scope OdplatneUzytkowanie: - definition stawka equals 1% +zakres OdplatneUzytkowanie: + definicja stawka wynosi 1% ``` > End metadata @@ -92,16 +92,16 @@ scope OdplatneUzytkowanie: > Begin metadata ```catala -declaration scope PozyczkaLubDepozytNieprawidlowy: - context kwota content money - context stawka content decimal - context podatek content money +deklaracja zakres PozyczkaLubDepozytNieprawidlowy: + kontekst kwota zawartosc pieniadze + kontekst stawka zawartosc dziesietna + kontekst podatek zawartosc pieniadze -scope PozyczkaLubDepozytNieprawidlowy: - definition podatek equals +zakres PozyczkaLubDepozytNieprawidlowy: + definicja podatek wynosi kwota *$ stawka # TODO: extract somehow? -scope PozyczkaLubDepozytNieprawidlowy: - definition stawka equals 0.5% +zakres PozyczkaLubDepozytNieprawidlowy: + definicja stawka wynosi 0.5% ``` > End metadata diff --git a/examples/polish_taxes/polish_taxes.catala_en b/examples/polish_taxes/polish_taxes.catala_en deleted file mode 100644 index 869cec35..00000000 --- a/examples/polish_taxes/polish_taxes.catala_en +++ /dev/null @@ -1,4 +0,0 @@ -# Master file - -> Include: podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_en - diff --git a/examples/polish_taxes_pl/polish_taxes_pl.catala_pl b/examples/polish_taxes/polish_taxes.catala_pl similarity index 100% rename from examples/polish_taxes_pl/polish_taxes_pl.catala_pl rename to examples/polish_taxes/polish_taxes.catala_pl diff --git a/examples/polish_taxes/tests/test_a7_u1_p1.catala_en b/examples/polish_taxes/tests/test_a7_u1_p1.catala_en deleted file mode 100644 index 5f74843c..00000000 --- a/examples/polish_taxes/tests/test_a7_u1_p1.catala_en +++ /dev/null @@ -1,23 +0,0 @@ -> Include: ../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_en - -## [Test - Art. 7 ustęp 1 punkt 1] - -```catala -declaration scope Test_A7_U1_P1_PPa: - context sprzedaz scope UmowaSprzedazy - -scope Test_A7_U1_P1_PPa: - definition sprzedaz.kwota equals $100 - - assertion sprzedaz.podatek = $2 - - -declaration scope Test_A7_U1_P1_PPb: - context sprzedaz scope UmowaSprzedazy - -scope Test_A7_U1_P1_PPb: - definition sprzedaz.kwota equals $100 - definition sprzedaz.inne_prawa_majatkowe equals true - - assertion sprzedaz.podatek = $1 -``` \ No newline at end of file diff --git a/examples/polish_taxes_pl/tests/test_a7_u1_p1.catala_pl b/examples/polish_taxes/tests/test_a7_u1_p1.catala_pl similarity index 100% rename from examples/polish_taxes_pl/tests/test_a7_u1_p1.catala_pl rename to examples/polish_taxes/tests/test_a7_u1_p1.catala_pl diff --git a/examples/polish_taxes/tests/test_a7_u1_p2.catala_en b/examples/polish_taxes/tests/test_a7_u1_p2.catala_pl similarity index 68% rename from examples/polish_taxes/tests/test_a7_u1_p2.catala_en rename to examples/polish_taxes/tests/test_a7_u1_p2.catala_pl index 94c8883e..6634b9dc 100644 --- a/examples/polish_taxes/tests/test_a7_u1_p2.catala_en +++ b/examples/polish_taxes/tests/test_a7_u1_p2.catala_pl @@ -3,8 +3,8 @@ ## [Test - Art. 7 ustęp 1 punkt 2] ```catala -declaration scope Test_A7_U1_P2_PPa: - context sprzedaz scope UmowaZamianyLubDarowizny +deklaracja scope Test_A7_U1_P2_PPa: + kontekst sprzedaz scope UmowaZamianyLubDarowizny scope Test_A7_U1_P2_PPa: definition sprzedaz.kwota equals $100 @@ -12,8 +12,8 @@ scope Test_A7_U1_P2_PPa: assertion sprzedaz.podatek = $2 -declaration scope Test_A7_U1_P2_PPb: - context sprzedaz scope UmowaZamianyLubDarowizny +deklaracja scope Test_A7_U1_P2_PPb: + kontekst sprzedaz scope UmowaZamianyLubDarowizny scope Test_A7_U1_P2_PPb: definition sprzedaz.kwota equals $100 diff --git a/examples/polish_taxes/tests/test_a7_u1_p3.catala_en b/examples/polish_taxes/tests/test_a7_u1_p3.catala_pl similarity index 73% rename from examples/polish_taxes/tests/test_a7_u1_p3.catala_en rename to examples/polish_taxes/tests/test_a7_u1_p3.catala_pl index 45d8e9af..6d70272e 100644 --- a/examples/polish_taxes/tests/test_a7_u1_p3.catala_en +++ b/examples/polish_taxes/tests/test_a7_u1_p3.catala_pl @@ -3,8 +3,8 @@ ## [Test - Art. 7 ustęp 1 punkt 3] ```catala -declaration scope Test_A7_U1_P3: - context sprzedaz scope OdplatneUzytkowanie +deklaracja scope Test_A7_U1_P3: + kontekst sprzedaz scope OdplatneUzytkowanie scope Test_A7_U1_P3: definition sprzedaz.kwota equals $100 diff --git a/examples/polish_taxes/tests/test_a7_u1_p4.catala_en b/examples/polish_taxes/tests/test_a7_u1_p4.catala_pl similarity index 70% rename from examples/polish_taxes/tests/test_a7_u1_p4.catala_en rename to examples/polish_taxes/tests/test_a7_u1_p4.catala_pl index 2c4893c0..2ea9f0a9 100644 --- a/examples/polish_taxes/tests/test_a7_u1_p4.catala_en +++ b/examples/polish_taxes/tests/test_a7_u1_p4.catala_pl @@ -3,8 +3,8 @@ ## [Test - Art. 7 ustęp 1 punkt 4] ```catala -declaration scope Test_A7_U1_P4: - context sprzedaz scope PozyczkaLubDepozytNieprawidlowy +deklaracja scope Test_A7_U1_P4: + kontekst sprzedaz scope PozyczkaLubDepozytNieprawidlowy scope Test_A7_U1_P4: definition sprzedaz.kwota equals $200 diff --git a/examples/polish_taxes_pl/.gitignore b/examples/polish_taxes_pl/.gitignore deleted file mode 100644 index 5304e283..00000000 --- a/examples/polish_taxes_pl/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -*.aux -*.dvi -*.fdb_latexmk -*.fls -*.log -*.out -*.fls -*.tex -*.pdf -_minted* -*.toc -*.pyg -*.d -*.ml \ No newline at end of file diff --git a/examples/polish_taxes_pl/Makefile b/examples/polish_taxes_pl/Makefile deleted file mode 100644 index 15d94880..00000000 --- a/examples/polish_taxes_pl/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -CATALA_LANG=pl -SRC=polish_tax_code.catala_pl - -include ../Makefile.common.mk diff --git a/examples/polish_taxes_pl/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl b/examples/polish_taxes_pl/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl deleted file mode 100644 index 5557b883..00000000 --- a/examples/polish_taxes_pl/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl +++ /dev/null @@ -1,24 +0,0 @@ -## Rozdzial 3 - -## Art. 7. 1. Stawki podatku wynoszą: - -### 1) od umowy sprzedaży: -#### a) nieruchomości, rzeczy ruchomych, prawa użytkowania wieczystego, własnościowego spółdzielczego prawa do lokalu mieszkalnego, spółdzielczego prawa do lokalu użytkowego oraz wynikających z przepisów prawa spółdzielczego: prawa do domu jednorodzinnego oraz prawa do lokalu w małym domu mieszkalnym – 2%, - -> Begin metadata -```catala -deklaracja zakres UmowaSprzedazy: - kontekst kwota zawartosc pieniadze - kontekst stawka zawartosc dziesietna - kontekst podatek zawartosc pieniadze - -zakres UmowaSprzedazy: - definicja podatek wynosi - kwota *$ stawka - -zakres UmowaSprzedazy: - etykieta a7_u1_p1_ppa - definicja stawka wynosi 2% -``` -> End metadata - diff --git a/src/catala/literate/html.ml b/src/catala/literate/html.ml index 08b997cd..754d7fc8 100644 --- a/src/catala/literate/html.ml +++ b/src/catala/literate/html.ml @@ -73,7 +73,10 @@ let wrap_html (source_files : string list) (language : Cli.backend_lang) (fmt : | `Fr -> "Implémentation de texte législatif" | `En -> "Legislative text implementation" | `Pl -> "Implementowanie tekstów legislacyjnych") - (match language with `Fr -> "Document généré par" | `En -> "Document generated by" | `Pl -> "Dokument wygenerowany przez") + (match language with + | `Fr -> "Document généré par" + | `En -> "Document generated by" + | `Pl -> "Dokument wygenerowany przez") Utils.Cli.version (match language with | `Fr -> "Fichiers sources tissés dans ce document" @@ -107,7 +110,9 @@ let pygmentize_code (c : string Pos.marked) (language : C.backend_lang) : string Printf.fprintf oc "%s" (Pos.unmark c); close_out oc; let pygments = "pygmentize" in - let pygments_lexer = match language with `Fr -> "catala_fr" | `En -> "catala_en" | `Pl -> "catala_pl" in + let pygments_lexer = + match language with `Fr -> "catala_fr" | `En -> "catala_en" | `Pl -> "catala_pl" + in let pygments_args = [| "-l"; diff --git a/src/catala/literate/latex.ml b/src/catala/literate/latex.ml index 56a1baa8..8ea0dc58 100644 --- a/src/catala/literate/latex.ml +++ b/src/catala/literate/latex.ml @@ -85,7 +85,10 @@ let wrap_latex (source_files : string list) (language : C.backend_lang) (fmt : F | `Fr -> "Implémentation de texte législatif" | `En -> "Legislative text implementation" | `Pl -> "Implementacja tekstów legislacyjnych") - (match language with `Fr -> "Document généré par" | `En -> "Document generated by" | `Pl -> "Dokument wygenerowany przez") + (match language with + | `Fr -> "Document généré par" + | `En -> "Document generated by" + | `Pl -> "Dokument wygenerowany przez") Utils.Cli.version (match language with | `Fr -> "Fichiers sources tissés dans ce document" @@ -174,7 +177,9 @@ let rec law_structure_to_latex (language : C.backend_lang) (fmt : Format.formatt (law_article_item_to_latex language) fmt children | A.MetadataBlock (_, c) -> - let metadata_title = match language with `Fr -> "Métadonnées" | `En -> "Metadata" | `Pl -> "Metadane" in + let metadata_title = + match language with `Fr -> "Métadonnées" | `En -> "Metadata" | `Pl -> "Metadane" + in Format.fprintf fmt "\\begin{tcolorbox}[colframe=OliveGreen, breakable, \ title=\\textcolor{black}{\\texttt{%s}},title after \ diff --git a/src/catala/utils/cli.ml b/src/catala/utils/cli.ml index 8720d227..7b17a9cc 100644 --- a/src/catala/utils/cli.ml +++ b/src/catala/utils/cli.ml @@ -12,7 +12,7 @@ or implied. See the License for the specific language governing permissions and limitations under the License. *) -type frontend_lang = [ `Fr | `En | `NonVerbose | `Pl] +type frontend_lang = [ `Fr | `En | `NonVerbose | `Pl ] type backend_lang = [ `Fr | `En | `Pl ] From f2055d67ac9051bc00b46ab31ff67a4f7bf696b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Sun, 9 May 2021 23:15:19 +0200 Subject: [PATCH 05/35] tests --- examples/Makefile | 9 ++++++- .../tests/test_a7_u1_p1.catala_pl | 2 +- .../tests/test_a7_u1_p2.catala_pl | 24 +++++++++---------- .../tests/test_a7_u1_p3.catala_pl | 12 +++++----- .../tests/test_a7_u1_p4.catala_pl | 12 +++++----- 5 files changed, 33 insertions(+), 26 deletions(-) diff --git a/examples/Makefile b/examples/Makefile index a63c879a..3e37a376 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -44,6 +44,13 @@ TEST_FILES_SCOPES_FR=$(foreach TEST_FILE,$(TEST_FILES),\ ) \ ) -tests: $(TEST_FILES_SCOPES_EN) $(TEST_FILES_SCOPES_FR) +TEST_FILES_SCOPES_PL=$(foreach TEST_FILE,$(TEST_FILES),\ + $(foreach TEST_SCOPE,\ + $(shell grep -Po "deklaracja zakres [^:]*" $(TEST_FILE) | cut -d " " -f 3), \ + $(word 1,$(subst /, ,$(TEST_FILE))).$(word 1,$(subst ., ,$(word 3,$(subst /, ,$(TEST_FILE))))).$(TEST_SCOPE).run \ + ) \ +) + +tests: $(TEST_FILES_SCOPES_EN) $(TEST_FILES_SCOPES_FR) $(TEST_FILES_SCOPES_PL) .FORCE: diff --git a/examples/polish_taxes/tests/test_a7_u1_p1.catala_pl b/examples/polish_taxes/tests/test_a7_u1_p1.catala_pl index 9ceedc24..a5abf45e 100644 --- a/examples/polish_taxes/tests/test_a7_u1_p1.catala_pl +++ b/examples/polish_taxes/tests/test_a7_u1_p1.catala_pl @@ -1,4 +1,4 @@ -> Include: ../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_en +> Include: ../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl ## [Test - Art. 7 ustęp 1 punkt 1] diff --git a/examples/polish_taxes/tests/test_a7_u1_p2.catala_pl b/examples/polish_taxes/tests/test_a7_u1_p2.catala_pl index 6634b9dc..4d5f6ce7 100644 --- a/examples/polish_taxes/tests/test_a7_u1_p2.catala_pl +++ b/examples/polish_taxes/tests/test_a7_u1_p2.catala_pl @@ -1,23 +1,23 @@ -> Include: ../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_en +> Include: ../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl ## [Test - Art. 7 ustęp 1 punkt 2] ```catala -deklaracja scope Test_A7_U1_P2_PPa: - kontekst sprzedaz scope UmowaZamianyLubDarowizny +deklaracja zakres Test_A7_U1_P2_PPa: + kontekst sprzedaz zakres UmowaZamianyLubDarowizny -scope Test_A7_U1_P2_PPa: - definition sprzedaz.kwota equals $100 +zakres Test_A7_U1_P2_PPa: + definicja sprzedaz.kwota wynosi $100 - assertion sprzedaz.podatek = $2 + asercja sprzedaz.podatek = $2 -deklaracja scope Test_A7_U1_P2_PPb: - kontekst sprzedaz scope UmowaZamianyLubDarowizny +deklaracja zakres Test_A7_U1_P2_PPb: + kontekst sprzedaz zakres UmowaZamianyLubDarowizny -scope Test_A7_U1_P2_PPb: - definition sprzedaz.kwota equals $100 - definition sprzedaz.inne_prawa_majatkowe equals true +zakres Test_A7_U1_P2_PPb: + definicja sprzedaz.kwota wynosi $100 + definicja sprzedaz.inne_prawa_majatkowe wynosi prawda - assertion sprzedaz.podatek = $1 + asercja sprzedaz.podatek = $1 ``` \ No newline at end of file diff --git a/examples/polish_taxes/tests/test_a7_u1_p3.catala_pl b/examples/polish_taxes/tests/test_a7_u1_p3.catala_pl index 6d70272e..6fbaa57f 100644 --- a/examples/polish_taxes/tests/test_a7_u1_p3.catala_pl +++ b/examples/polish_taxes/tests/test_a7_u1_p3.catala_pl @@ -1,13 +1,13 @@ -> Include: ../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_en +> Include: ../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl ## [Test - Art. 7 ustęp 1 punkt 3] ```catala -deklaracja scope Test_A7_U1_P3: - kontekst sprzedaz scope OdplatneUzytkowanie +deklaracja zakres Test_A7_U1_P3: + kontekst sprzedaz zakres OdplatneUzytkowanie -scope Test_A7_U1_P3: - definition sprzedaz.kwota equals $100 +zakres Test_A7_U1_P3: + definicja sprzedaz.kwota wynosi $100 - assertion sprzedaz.podatek = $1 + asercja sprzedaz.podatek = $1 ``` \ No newline at end of file diff --git a/examples/polish_taxes/tests/test_a7_u1_p4.catala_pl b/examples/polish_taxes/tests/test_a7_u1_p4.catala_pl index 2ea9f0a9..6ccba019 100644 --- a/examples/polish_taxes/tests/test_a7_u1_p4.catala_pl +++ b/examples/polish_taxes/tests/test_a7_u1_p4.catala_pl @@ -1,13 +1,13 @@ -> Include: ../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_en +> Include: ../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl ## [Test - Art. 7 ustęp 1 punkt 4] ```catala -deklaracja scope Test_A7_U1_P4: - kontekst sprzedaz scope PozyczkaLubDepozytNieprawidlowy +deklaracja zakres Test_A7_U1_P4: + kontekst sprzedaz zakres PozyczkaLubDepozytNieprawidlowy -scope Test_A7_U1_P4: - definition sprzedaz.kwota equals $200 +zakres Test_A7_U1_P4: + definicja sprzedaz.kwota wynosi $200 - assertion sprzedaz.podatek = $1 + asercja sprzedaz.podatek = $1 ``` \ No newline at end of file From c9876cd077c5c857becda6879de0e3976f12dd60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Sun, 9 May 2021 23:26:24 +0200 Subject: [PATCH 06/35] cleanup --- generate_website_assets.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/generate_website_assets.sh b/generate_website_assets.sh index 74bb62d5..35089218 100755 --- a/generate_website_assets.sh +++ b/generate_website_assets.sh @@ -16,7 +16,6 @@ scp grammar.html $1/ scp catala.html $1/ scp _build/default/src/catala/catala_web.bc.js $1/playground/ scp examples/tutorial_en/tutorial_en.catala_en $1/playground/ -# TODO BW: PL scp examples/tutoriel_fr/tutoriel_fr.catala_fr $1/playground/ cat examples/allocations_familiales/prologue.catala_fr > allocations_familiales.catala_fr cat examples/allocations_familiales/decrets_divers.catala_fr >> allocations_familiales.catala_fr From 21584e6444b08cd56615fdf38e00ac18e14e2ac8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Mon, 10 May 2021 19:05:18 +0200 Subject: [PATCH 07/35] polish syntax pygments --- Makefile | 2 +- generate_website_assets.sh | 2 +- src/catala/surface/lexer_pl.ml | 2 +- syntax_highlighting/pl/catala_pl.iro | 274 ++++++++++++++++++ syntax_highlighting/pl/pygments/.gitignore | 3 + .../catala_pl_lexer.egg-info/PKG-INFO | 10 + .../catala_pl_lexer.egg-info/SOURCES.txt | 6 + .../dependency_links.txt | 1 + .../catala_pl_lexer.egg-info/entry_points.txt | 4 + .../catala_pl_lexer.egg-info/top_level.txt | 1 + .../pl/pygments/catala_pl_lexer/lexer.py | 52 ++++ syntax_highlighting/pl/pygments/setup.py | 10 + syntax_highlighting/pl/set_up_pygments.sh | 4 + 13 files changed, 368 insertions(+), 3 deletions(-) create mode 100644 syntax_highlighting/pl/catala_pl.iro create mode 100644 syntax_highlighting/pl/pygments/.gitignore create mode 100644 syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/PKG-INFO create mode 100644 syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/SOURCES.txt create mode 100644 syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/dependency_links.txt create mode 100644 syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/entry_points.txt create mode 100644 syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/top_level.txt create mode 100644 syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py create mode 100644 syntax_highlighting/pl/pygments/setup.py create mode 100755 syntax_highlighting/pl/set_up_pygments.sh diff --git a/Makefile b/Makefile index 539678cf..6097c797 100644 --- a/Makefile +++ b/Makefile @@ -73,7 +73,7 @@ pygmentize_pl: $(SYNTAX_HIGHLIGHTING_PL)/set_up_pygments.sh sudo $< #> pygments : Extends your pygmentize executable with Catala lexers -pygments: pygmentize_fr pygmentize_en +pygments: pygmentize_fr pygmentize_en pygmentize_pl atom_fr: ${CURDIR}/syntax_highlighting/fr/setup_atom.sh chmod +x $< diff --git a/generate_website_assets.sh b/generate_website_assets.sh index 35089218..bf864178 100755 --- a/generate_website_assets.sh +++ b/generate_website_assets.sh @@ -29,6 +29,6 @@ mv -f allocations_familiales_fixed.catala_fr allocations_familiales.catala_fr scp allocations_familiales.catala_fr $1/playground/ rm allocations_familiales.catala_fr scp syntax_highlighting/en/ace/mode-catala_en.js $1/playground/ -# TODO BW: PL scp syntax_highlighting/fr/ace/mode-catala_fr.js $1/playground/ +# TODO: PL scp french_law_js/french_law.js $1/french_law.js diff --git a/src/catala/surface/lexer_pl.ml b/src/catala/surface/lexer_pl.ml index 9448c7f5..80389ab6 100644 --- a/src/catala/surface/lexer_pl.ml +++ b/src/catala/surface/lexer_pl.ml @@ -57,7 +57,7 @@ let token_list : (string * token) list = ("struktura", STRUCT); ("asercja", ASSERTION); ("rozna", VARIES); - ("with", WITH_V); + ("wraz z", WITH_V); ("dla", FOR); ("wszystkie", ALL); ("mamy", WE_HAVE); diff --git a/syntax_highlighting/pl/catala_pl.iro b/syntax_highlighting/pl/catala_pl.iro new file mode 100644 index 00000000..ba9798f7 --- /dev/null +++ b/syntax_highlighting/pl/catala_pl.iro @@ -0,0 +1,274 @@ +# This file is part of the Catala compiler, a specification language for tax and social benefits +# computation rules. Copyright (C) 2020 Inria, contributor: Denis Merigoux +# +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except +# in compliance with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software distributed under the License +# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express +# or implied. See the License for the specific language governing permissions and limitations under +# the License. + + +name = catala_pl +file_extensions [] = catala_pl; + +################################################################ +## Styles +################################################################ + +styles [] { + +.comment : style { + color = light_green + italic = true + textmate_scope = comment.line + pygments_scope = Comment.Single +} + +.sc_id : style { + textmate_scope = meta.variable_id + pygments_scope = String + color = violet_red +} + +.sc_id_def : style { + textmate_scope = entity.name.function + pygments_scope = Name.Variable + color = orange +} + + +.cc_id : style { + color = light_blue + textmate_scope = entity.name.class + pygments_scope = Name.Class +} + + +.law_title : style { + color = yellow + italic = false + textmate_scope = markup.heading.title + pygments_scope = Generic.Heading +} + +.law_subtitle : style { + color = gold + italic = true + textmate_scope = markup.heading.subtitle + pygments_scope = Generic.Heading +} + +.law : style { + color = light_yellow + italic = false + textmate_scope = entity.law + pygments_scope = String +} + +.code_delimiter : style { + color = grey + italic = false + textmate_scope = comment.block.documentation + pygments_scope = String +} + +.primitive : style { + color = purple + textmate_scope = support.type + pygments_scope = Keyword.Type +} + +.whitespace : style { + textmate_scope = text + pygments_scope = String +} + +.keyword_expression : style { + color = pink + textmate_scope = keyword.control + pygments_scope = Keyword.Reserved +} + +.keyword_rule : style { + color = cyan + textmate_scope = keyword.other + pygments_scope = Keyword.Declaration +} + +.punctuation : style { + color = red_2 + ace_scope = punctuation + textmate_scope = punctuation + pygments_scope = Operator +} + +.literal : style { + color = green + textmate_scope = constant + pygments_scope = Keyword.Constant +} + +.literal_numeric : style { + color = violet + textmate_scope = constant.numeric + pygments_scope = Number.Integer +} + + +.operator : style { + color = brown + textmate_scope = keyword.operator + pygments_scope = Operator +} + +} + +################################################# +## Parse contexts +################################################# + +__LOWER_CHARS \= a-ząćęłńóśżź + +__UPPER_CHARS \= A-ZĄĆĘŁŃÓŚŻŹ + +__SC_ID \= [$${__LOWER_CHARS}][$${__LOWER_CHARS}$${__UPPER_CHARS}0-9_\']* + +__SC_ID_COMPOSED \= [$${__LOWER_CHARS}][$${__LOWER_CHARS}$${__UPPER_CHARS}0-9_\'\.]* + +__CC_ID \= [$${__UPPER_CHARS}][$${__LOWER_CHARS}$${__UPPER_CHARS}0-9_\']* + +contexts [] { + +############################################## +## Main Context - Entry point context +############################################## + +main : context { + + : inline_push { + regex \= (\#\#) + styles [] = .law_title; + : pop { + regex \= (@@[\+]*) + styles [] = .law_title; + } + : pattern { + regex \= (.) + styles [] = .law_title; + } + } + + : inline_push { + regex \= (@) + styles [] = .law_subtitle; + : pop { + regex \= (@) + styles [] = .law_subtitle; + } + : pattern { + regex \= (.) + styles [] = .law_subtitle; + } + } + + : pattern { + regex \= ([^`]) + styles [] = .law; + } + + : push { + regex \= (```catala) + styles [] = .code_delimiter; + context [] = code; + } + +} + + +code : context { + + : pop { + regex \= (```) + styles [] = .code_delimiter; + } + + : pattern { + regex \= (\s*\#.*$) + styles [] = .comment ; + } + + : pattern { + regex \= (kontekst)(\s+)($${__SC_ID}) + styles [] = .keyword_rule, .whitespace, .sc_id_def; + } + + : pattern { + regex \= \b(pasuje|ze\s+wzorem|staloprzecinkowa|przez|malejacy|rosnacy|rozna|wraz z|mamy|w|takich ze|istnieje|dla|wszystkie|z|jezeli|wtedy|inaczej|poczatkowy)\b + styles [] = .keyword_expression ; + } + + : pattern { + regex \= \b(zakres|zalezy\s+od|deklaracja|kolekcja|zawartosc|opcjonalny|struktura|enumeracja|kontekst|zasada|pod\s+warunkuem|warunek|czas|konsekwencja|spelnione|wynosi|asercja|definicja|etykieta|wyjatek)\b + styles [] = .keyword_rule ; + } + + : pattern { + regex \= (\|[0-9]+/[0-9]+/[0-9]+\|) + styles [] = .literal_numeric ; + } + + : pattern { + regex \= \b(prawda|falsz)\b + styles [] = .literal ; + } + + + : pattern { + regex \= \b([0-9]+(,[0.9]*|))\b + styles [] = .literal_numeric ; + } + + + : pattern { + regex \= (\-\-|\;|\.|\,|\:|\(|\)|\[|\]|\{|\}) + styles [] = .punctuation; + } + + : pattern { + regex \= (\-\>|\+\.|\+\@|\+\^|\+\$|\+|\-\.|\-\@|\-\^|\-\$|\-|\*\.|\*\@|\*\^|\*\$|\*|/\.|/\@|/\^|/\$|/|\!|>\.|>=\.|<=\.|<\.|>\@|>=\@|<=\@|<\@|>\$|>=\$|<=\$|<\$|>\^|>=\^|<=\^|<\^|>|>=|<=|<|=|nie|lub|xor|i|\$|%|rok|miesiac|dzien) + styles [] = .operator; + } + + : pattern { + regex \= \b(calkowita|zerojedynkowy|czas|czas trwania|pieniadze|tekst|dziesietna|suma)\b + styles [] = .primitive; + } + + : pattern { + regex \= \b($${__CC_ID})(\.)($${__SC_ID})\b + styles [] = .cc_id, .punctuation, .sc_id_def ; + } + + : pattern { + regex \= \b($${__SC_ID})(\.)($${__SC_ID_COMPOSED})\b + styles [] = .sc_id_def, .punctuation, .sc_id ; + } + + : pattern { + regex \= \b($${__SC_ID})\b + styles [] = .sc_id_def ; + } + + : pattern { + regex \= \b($${__CC_ID})\b + styles [] = .cc_id ; + } + +} + +} diff --git a/syntax_highlighting/pl/pygments/.gitignore b/syntax_highlighting/pl/pygments/.gitignore new file mode 100644 index 00000000..e80b0c44 --- /dev/null +++ b/syntax_highlighting/pl/pygments/.gitignore @@ -0,0 +1,3 @@ +catala_nv_lexer.egg-info +__pycache__ + diff --git a/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/PKG-INFO b/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/PKG-INFO new file mode 100644 index 00000000..f8f83c94 --- /dev/null +++ b/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/PKG-INFO @@ -0,0 +1,10 @@ +Metadata-Version: 1.0 +Name: catala-pl-lexer +Version: 0.0.0 +Summary: UNKNOWN +Home-page: UNKNOWN +Author: UNKNOWN +Author-email: UNKNOWN +License: UNKNOWN +Description: UNKNOWN +Platform: UNKNOWN diff --git a/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/SOURCES.txt b/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/SOURCES.txt new file mode 100644 index 00000000..0c2f00aa --- /dev/null +++ b/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/SOURCES.txt @@ -0,0 +1,6 @@ +setup.py +catala_pl_lexer.egg-info/PKG-INFO +catala_pl_lexer.egg-info/SOURCES.txt +catala_pl_lexer.egg-info/dependency_links.txt +catala_pl_lexer.egg-info/entry_points.txt +catala_pl_lexer.egg-info/top_level.txt \ No newline at end of file diff --git a/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/dependency_links.txt b/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/dependency_links.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/entry_points.txt b/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/entry_points.txt new file mode 100644 index 00000000..c376dc19 --- /dev/null +++ b/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/entry_points.txt @@ -0,0 +1,4 @@ + + [pygments.lexers] + catala_pl_lexer = catala_pl_lexer.lexer:CatalaNvLexer + \ No newline at end of file diff --git a/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/top_level.txt b/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/top_level.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/top_level.txt @@ -0,0 +1 @@ + diff --git a/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py b/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py new file mode 100644 index 00000000..d5b47b52 --- /dev/null +++ b/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py @@ -0,0 +1,52 @@ +from pygments.lexer import RegexLexer, bygroups +from pygments.token import * + +import re + +__all__=['CatalaPlLexer'] + +class CatalaPlLexer(RegexLexer): + name = 'CatalaPl' + aliases = ['catala_pl'] + filenames = ['*.catala_pl'] + flags = re.MULTILINE | re.UNICODE + + tokens = { + 'root' : [ + (u'(\\#\\#)', bygroups(Generic.Heading), 'main__1'), + (u'(@)', bygroups(Generic.Heading), 'main__2'), + (u'([^`\\n\\r])', bygroups(String)), + (u'(```catala)', bygroups(String), 'code'), + ('(\n|\r|\r\n)', String), + ('.', String), + ], + 'code' : [ + (u'(\\s*\\#.*$)', bygroups(Comment.Single)), + (u'(kontekst)(\\s+)([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)', bygroups(Keyword.Declaration, String, Name.Variable)), + (u'\\b(pasuje|ze\\s+wzorem|staloprzecinkowa|przez|malejacy|rosnacy|rozna|wraz z|mamy|w|takich ze|istnieje|dla|wszystkie|z|jezeli|wtedy|inaczej|poczatkowy)\\b', bygroups(Keyword.Reserved)), + (u'\\b(zakres|zalezy\\s+od|deklaracja|kolekcja|zawartosc|opcjonalny|struktura|enumeracja|kontekst|zasada|pod\\s+warunkuem|warunek|czas|konsekwencja|spelnione|wynosi|asercja|definicja|etykieta|wyjatek)\\b', bygroups(Keyword.Declaration)), + (u'(\\|[0-9]+/[0-9]+/[0-9]+\\|)', bygroups(Number.Integer)), + (u'\\b(prawda|falsz)\\b', bygroups(Keyword.Constant)), + (u'\\b([0-9]+(,[0.9]*|))\\b', bygroups(Number.Integer)), + (u'(\\-\\-|\\;|\\.|\\,|\\:|\\(|\\)|\\[|\\]|\\{|\\})', bygroups(Operator)), + (u'(\\-\\>|\\+\\.|\\+\\@|\\+\\^|\\+\\$|\\+|\\-\\.|\\-\\@|\\-\\^|\\-\\$|\\-|\\*\\.|\\*\\@|\\*\\^|\\*\\$|\\*|/\\.|/\\@|/\\^|/\\$|/|\\!|>\\.|>=\\.|<=\\.|<\\.|>\\@|>=\\@|<=\\@|<\\@|>\\$|>=\\$|<=\\$|<\\$|>\\^|>=\\^|<=\\^|<\\^|>|>=|<=|<|=|nie|lub|xor|i|\\$|%|rok|miesiac|dzien)', bygroups(Operator)), + (u'\\b(calkowita|zerojedynkowy|czas|czas trwania|pieniadze|tekst|dziesietna|suma)\\b', bygroups(Keyword.Type)), + (u'\\b([A-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u0179][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)(\\.)([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)\\b', bygroups(Name.Class, Operator, Name.Variable)), + (u'\\b([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)(\\.)([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\'\\.]*)\\b', bygroups(Name.Variable, Operator, String)), + (u'\\b([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)\\b', bygroups(Name.Variable)), + (u'\\b([A-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u0179][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)\\b', bygroups(Name.Class)), + ('(\n|\r|\r\n)', String), + ('.', String), + ], + 'main__1' : [ + (u'(.)', bygroups(Generic.Heading)), + ('(\n|\r|\r\n)', String), + ('.', String), + ], + 'main__2' : [ + (u'(.)', bygroups(Generic.Heading)), + ('(\n|\r|\r\n)', String), + ('.', String), + ] + } + diff --git a/syntax_highlighting/pl/pygments/setup.py b/syntax_highlighting/pl/pygments/setup.py new file mode 100644 index 00000000..1cf8752e --- /dev/null +++ b/syntax_highlighting/pl/pygments/setup.py @@ -0,0 +1,10 @@ +from setuptools import setup, find_packages + +setup( + name='catala_pl_lexer', + packages=find_packages(), + entry_points=""" + [pygments.lexers] + catala_pl_lexer = catala_pl_lexer.lexer:CatalaNvLexer + """, +) diff --git a/syntax_highlighting/pl/set_up_pygments.sh b/syntax_highlighting/pl/set_up_pygments.sh new file mode 100755 index 00000000..19e7eed6 --- /dev/null +++ b/syntax_highlighting/pl/set_up_pygments.sh @@ -0,0 +1,4 @@ +#! /usr/bin/env bash + +cd "$(dirname "$0")" +cd pygments && python3 setup.py develop From 962d5d2f822f1eb7dee1a49ac264dd9dbf3bfbd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Tue, 11 May 2021 20:24:34 +0200 Subject: [PATCH 08/35] compilation fixes --- src/catala/literate/latex.ml | 2 +- .../pl/pygments/catala_pl_lexer.egg-info/entry_points.txt | 2 +- syntax_highlighting/pl/pygments/setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/catala/literate/latex.ml b/src/catala/literate/latex.ml index 8ea0dc58..94cb324b 100644 --- a/src/catala/literate/latex.ml +++ b/src/catala/literate/latex.ml @@ -43,10 +43,10 @@ let wrap_latex (source_files : string list) (language : C.backend_lang) (fmt : F "\\documentclass[11pt, a4paper]{article}\n\n\ \\usepackage[T1]{fontenc}\n\ \\usepackage[utf8]{inputenc}\n\ + \\usepackage{amssymb}\n\ \\usepackage[%s]{babel}\n\ \\usepackage{lmodern}\n\ \\usepackage{minted}\n\ - \\usepackage{amssymb}\n\ \\usepackage{newunicodechar}\n\ \\usepackage{textcomp}\n\ \\usepackage[hidelinks]{hyperref}\n\ diff --git a/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/entry_points.txt b/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/entry_points.txt index c376dc19..fc2e4082 100644 --- a/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/entry_points.txt +++ b/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/entry_points.txt @@ -1,4 +1,4 @@ [pygments.lexers] - catala_pl_lexer = catala_pl_lexer.lexer:CatalaNvLexer + catala_pl_lexer = catala_pl_lexer.lexer:CatalaPlLexer \ No newline at end of file diff --git a/syntax_highlighting/pl/pygments/setup.py b/syntax_highlighting/pl/pygments/setup.py index 1cf8752e..c596b013 100644 --- a/syntax_highlighting/pl/pygments/setup.py +++ b/syntax_highlighting/pl/pygments/setup.py @@ -5,6 +5,6 @@ setup( packages=find_packages(), entry_points=""" [pygments.lexers] - catala_pl_lexer = catala_pl_lexer.lexer:CatalaNvLexer + catala_pl_lexer = catala_pl_lexer.lexer:CatalaPlLexer """, ) From f5234c6bdfeb268ac93e761d5ab21b46bbc53179 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Tue, 11 May 2021 20:35:35 +0200 Subject: [PATCH 09/35] convert metadata stuff --- .../rozdzial_3.catala_pl | 24 +++++++++---------- examples/polish_taxes/polish_taxes.catala_pl | 2 +- src/catala/surface/lexer_pl.ml | 6 ++--- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl index 16cbcc68..3ed171a1 100644 --- a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl +++ b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl @@ -5,7 +5,7 @@ ### 1) od umowy sprzedaży: #### a) nieruchomości, rzeczy ruchomych, prawa użytkowania wieczystego, własnościowego spółdzielczego prawa do lokalu mieszkalnego, spółdzielczego prawa do lokalu użytkowego oraz wynikających z przepisów prawa spółdzielczego: prawa do domu jednorodzinnego oraz prawa do lokalu w małym domu mieszkalnym – 2%, -> Begin metadata +> Poczatek metadanych ```catala deklaracja zakres UmowaSprzedazy: kontekst kwota zawartosc pieniadze @@ -21,11 +21,11 @@ zakres UmowaSprzedazy: etykieta a7_u1_p1_ppa definicja stawka wynosi 2% ``` -> End metadata +> Koniec metadanych #### b) innych praw majątkowych – 1%; -> Begin metadata +> Poczatek metadanych ```catala zakres UmowaSprzedazy: wyjatek a7_u1_p1_ppa @@ -33,13 +33,13 @@ zakres UmowaSprzedazy: inne_prawa_majatkowe konsekwencja wynosi 1% ``` -> End metadata +> Koniec metadanych ### 2) od umów zamiany, dożywocia, o dział spadku, o zniesienie współwłasności oraz darowizny: #### a) przy przeniesieniu własności nieruchomości, rzeczy ruchomych, prawa użytkowania wieczystego, własnościowego spółdzielczego prawa do lokalu mieszkalnego, spółdzielczego prawa do lokalu użytkowego oraz wynikających z przepisów prawa spółdzielczego: prawa do domu jednorodzinnego oraz prawa do lokalu w małym domu mieszkalnym – 2%, -> Begin metadata +> Poczatek metadanych ```catala deklaracja zakres UmowaZamianyLubDarowizny: @@ -56,11 +56,11 @@ zakres UmowaZamianyLubDarowizny: etykieta a7_u1_p2_ppa definicja stawka wynosi 2% ``` -> End metadata +> Koniec metadanych #### b) przy przeniesieniu własności innych praw majątkowych – 1%; ->Begin metadata +>Poczatek metadanych ```catala zakres UmowaZamianyLubDarowizny: wyjatek a7_u1_p2_ppa @@ -68,11 +68,11 @@ zakres UmowaZamianyLubDarowizny: inne_prawa_majatkowe konsekwencja wynosi 1% ``` ->End metadata +>Koniec metadanych ### 3) od umowy ustanowienia odpłatnego użytkowania, w tym nieprawidłowego, oraz odpłatnej służebności – 1%, z zastrzeżeniem ust. 5; -> Begin metadata +> Poczatek metadanych ```catala deklaracja zakres OdplatneUzytkowanie: kontekst kwota zawartosc pieniadze @@ -86,11 +86,11 @@ zakres OdplatneUzytkowanie: zakres OdplatneUzytkowanie: definicja stawka wynosi 1% ``` -> End metadata +> Koniec metadanych ### 4) od umowy pożyczki oraz depozytu nieprawidłowego – 0,5%, z zastrzeżeniem ust. 5; -> Begin metadata +> Poczatek metadanych ```catala deklaracja zakres PozyczkaLubDepozytNieprawidlowy: kontekst kwota zawartosc pieniadze @@ -104,4 +104,4 @@ zakres PozyczkaLubDepozytNieprawidlowy: zakres PozyczkaLubDepozytNieprawidlowy: definicja stawka wynosi 0.5% ``` -> End metadata +> Koniec metadanych diff --git a/examples/polish_taxes/polish_taxes.catala_pl b/examples/polish_taxes/polish_taxes.catala_pl index 5080d52d..3e7724cb 100644 --- a/examples/polish_taxes/polish_taxes.catala_pl +++ b/examples/polish_taxes/polish_taxes.catala_pl @@ -1,3 +1,3 @@ -# Master file +# Plik glowny > Include: podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl diff --git a/src/catala/surface/lexer_pl.ml b/src/catala/surface/lexer_pl.ml index 80389ab6..a2cc42a7 100644 --- a/src/catala/surface/lexer_pl.ml +++ b/src/catala/surface/lexer_pl.ml @@ -494,9 +494,9 @@ let lex_law (lexbuf : lexbuf) : token = BEGIN_CODE | eof -> EOF - | '#', Star white_space, "Master file" -> MASTER_FILE - | '>', Star white_space, "Begin metadata" -> BEGIN_METADATA - | '>', Star white_space, "End metadata" -> END_METADATA + | '#', Star white_space, "Plik glowny" -> MASTER_FILE + | '>', Star white_space, "Poczatek metadanych" -> BEGIN_METADATA + | '>', Star white_space, "Koniec metadanych" -> END_METADATA | ( '>', Star white_space, "Include:", From d61926c51b909c22ec04798f27aac9537145b9d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Tue, 11 May 2021 20:37:35 +0200 Subject: [PATCH 10/35] cleanup --- syntax_highlighting/pl/pygments/.gitignore | 2 +- .../pl/pygments/catala_pl_lexer.egg-info/PKG-INFO | 10 ---------- .../pl/pygments/catala_pl_lexer.egg-info/SOURCES.txt | 6 ------ .../catala_pl_lexer.egg-info/dependency_links.txt | 1 - .../pygments/catala_pl_lexer.egg-info/entry_points.txt | 4 ---- .../pl/pygments/catala_pl_lexer.egg-info/top_level.txt | 1 - 6 files changed, 1 insertion(+), 23 deletions(-) delete mode 100644 syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/PKG-INFO delete mode 100644 syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/SOURCES.txt delete mode 100644 syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/dependency_links.txt delete mode 100644 syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/entry_points.txt delete mode 100644 syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/top_level.txt diff --git a/syntax_highlighting/pl/pygments/.gitignore b/syntax_highlighting/pl/pygments/.gitignore index e80b0c44..0591cc25 100644 --- a/syntax_highlighting/pl/pygments/.gitignore +++ b/syntax_highlighting/pl/pygments/.gitignore @@ -1,3 +1,3 @@ -catala_nv_lexer.egg-info +catala_pl_lexer.egg-info __pycache__ diff --git a/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/PKG-INFO b/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/PKG-INFO deleted file mode 100644 index f8f83c94..00000000 --- a/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/PKG-INFO +++ /dev/null @@ -1,10 +0,0 @@ -Metadata-Version: 1.0 -Name: catala-pl-lexer -Version: 0.0.0 -Summary: UNKNOWN -Home-page: UNKNOWN -Author: UNKNOWN -Author-email: UNKNOWN -License: UNKNOWN -Description: UNKNOWN -Platform: UNKNOWN diff --git a/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/SOURCES.txt b/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/SOURCES.txt deleted file mode 100644 index 0c2f00aa..00000000 --- a/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/SOURCES.txt +++ /dev/null @@ -1,6 +0,0 @@ -setup.py -catala_pl_lexer.egg-info/PKG-INFO -catala_pl_lexer.egg-info/SOURCES.txt -catala_pl_lexer.egg-info/dependency_links.txt -catala_pl_lexer.egg-info/entry_points.txt -catala_pl_lexer.egg-info/top_level.txt \ No newline at end of file diff --git a/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/dependency_links.txt b/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/dependency_links.txt deleted file mode 100644 index 8b137891..00000000 --- a/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/entry_points.txt b/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/entry_points.txt deleted file mode 100644 index fc2e4082..00000000 --- a/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/entry_points.txt +++ /dev/null @@ -1,4 +0,0 @@ - - [pygments.lexers] - catala_pl_lexer = catala_pl_lexer.lexer:CatalaPlLexer - \ No newline at end of file diff --git a/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/top_level.txt b/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/top_level.txt deleted file mode 100644 index 8b137891..00000000 --- a/syntax_highlighting/pl/pygments/catala_pl_lexer.egg-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ - From 4f9b0d63fd61587bf18634f15ff3242e7a289d81 Mon Sep 17 00:00:00 2001 From: Denis Merigoux Date: Wed, 12 May 2021 10:43:42 +0200 Subject: [PATCH 11/35] Fix PL pygmentz lexer and document formatting --- .../rozdzial_3.catala_pl | 31 ++++++---------- syntax_highlighting/en/catala_en.iro | 6 ++-- syntax_highlighting/fr/catala_fr.iro | 4 +-- .../fr/pygments/catala_fr_lexer/lexer.py | 2 +- syntax_highlighting/pl/catala_pl.iro | 8 ++--- .../pl/pygments/catala_pl_lexer/lexer.py | 35 ++++++++++--------- 6 files changed, 39 insertions(+), 47 deletions(-) diff --git a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl index 3ed171a1..76f73dd2 100644 --- a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl +++ b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl @@ -1,11 +1,11 @@ ## Rozdzial 3 -## Art. 7. 1. Stawki podatku wynoszą: +## [Art. 7. 1. Stawki podatku wynoszą:] -### 1) od umowy sprzedaży: -#### a) nieruchomości, rzeczy ruchomych, prawa użytkowania wieczystego, własnościowego spółdzielczego prawa do lokalu mieszkalnego, spółdzielczego prawa do lokalu użytkowego oraz wynikających z przepisów prawa spółdzielczego: prawa do domu jednorodzinnego oraz prawa do lokalu w małym domu mieszkalnym – 2%, +1) od umowy sprzedaży: + +a) nieruchomości, rzeczy ruchomych, prawa użytkowania wieczystego, własnościowego spółdzielczego prawa do lokalu mieszkalnego, spółdzielczego prawa do lokalu użytkowego oraz wynikających z przepisów prawa spółdzielczego: prawa do domu jednorodzinnego oraz prawa do lokalu w małym domu mieszkalnym – 2%, -> Poczatek metadanych ```catala deklaracja zakres UmowaSprzedazy: kontekst kwota zawartosc pieniadze @@ -21,11 +21,9 @@ zakres UmowaSprzedazy: etykieta a7_u1_p1_ppa definicja stawka wynosi 2% ``` -> Koniec metadanych -#### b) innych praw majątkowych – 1%; -> Poczatek metadanych +b) innych praw majątkowych – 1%; ```catala zakres UmowaSprzedazy: wyjatek a7_u1_p1_ppa @@ -33,13 +31,11 @@ zakres UmowaSprzedazy: inne_prawa_majatkowe konsekwencja wynosi 1% ``` -> Koniec metadanych -### 2) od umów zamiany, dożywocia, o dział spadku, o zniesienie współwłasności oraz darowizny: +2) od umów zamiany, dożywocia, o dział spadku, o zniesienie współwłasności oraz darowizny: -#### a) przy przeniesieniu własności nieruchomości, rzeczy ruchomych, prawa użytkowania wieczystego, własnościowego spółdzielczego prawa do lokalu +a) przy przeniesieniu własności nieruchomości, rzeczy ruchomych, prawa użytkowania wieczystego, własnościowego spółdzielczego prawa do lokalu mieszkalnego, spółdzielczego prawa do lokalu użytkowego oraz wynikających z przepisów prawa spółdzielczego: prawa do domu jednorodzinnego oraz prawa do lokalu w małym domu mieszkalnym – 2%, -> Poczatek metadanych ```catala deklaracja zakres UmowaZamianyLubDarowizny: @@ -56,11 +52,9 @@ zakres UmowaZamianyLubDarowizny: etykieta a7_u1_p2_ppa definicja stawka wynosi 2% ``` -> Koniec metadanych -#### b) przy przeniesieniu własności innych praw majątkowych – 1%; +b) przy przeniesieniu własności innych praw majątkowych – 1%; ->Poczatek metadanych ```catala zakres UmowaZamianyLubDarowizny: wyjatek a7_u1_p2_ppa @@ -68,11 +62,9 @@ zakres UmowaZamianyLubDarowizny: inne_prawa_majatkowe konsekwencja wynosi 1% ``` ->Koniec metadanych -### 3) od umowy ustanowienia odpłatnego użytkowania, w tym nieprawidłowego, oraz odpłatnej służebności – 1%, z zastrzeżeniem ust. 5; +3) od umowy ustanowienia odpłatnego użytkowania, w tym nieprawidłowego, oraz odpłatnej służebności – 1%, z zastrzeżeniem ust. 5; -> Poczatek metadanych ```catala deklaracja zakres OdplatneUzytkowanie: kontekst kwota zawartosc pieniadze @@ -86,11 +78,9 @@ zakres OdplatneUzytkowanie: zakres OdplatneUzytkowanie: definicja stawka wynosi 1% ``` -> Koniec metadanych -### 4) od umowy pożyczki oraz depozytu nieprawidłowego – 0,5%, z zastrzeżeniem ust. 5; +4) od umowy pożyczki oraz depozytu nieprawidłowego – 0,5%, z zastrzeżeniem ust. 5; -> Poczatek metadanych ```catala deklaracja zakres PozyczkaLubDepozytNieprawidlowy: kontekst kwota zawartosc pieniadze @@ -104,4 +94,3 @@ zakres PozyczkaLubDepozytNieprawidlowy: zakres PozyczkaLubDepozytNieprawidlowy: definicja stawka wynosi 0.5% ``` -> Koniec metadanych diff --git a/syntax_highlighting/en/catala_en.iro b/syntax_highlighting/en/catala_en.iro index f4906703..a6274d50 100644 --- a/syntax_highlighting/en/catala_en.iro +++ b/syntax_highlighting/en/catala_en.iro @@ -154,7 +154,7 @@ main : context { regex \= (\#\#) styles [] = .law_title; : pop { - regex \= (@@[\+]*) + regex \= (\n) styles [] = .law_title; } : pattern { @@ -164,10 +164,10 @@ main : context { } : inline_push { - regex \= (@) + regex \= ([\#]+\s*\[[^\]]\s*]) styles [] = .law_subtitle; : pop { - regex \= (@) + regex \= (\n) styles [] = .law_subtitle; } : pattern { diff --git a/syntax_highlighting/fr/catala_fr.iro b/syntax_highlighting/fr/catala_fr.iro index 1bc9b691..d1e88e6c 100644 --- a/syntax_highlighting/fr/catala_fr.iro +++ b/syntax_highlighting/fr/catala_fr.iro @@ -164,10 +164,10 @@ main : context { } : inline_push { - regex \= (@) + regex \= ([\#]+\s*\[[^\]]\s*]) styles [] = .law_subtitle; : pop { - regex \= (@) + regex \= (\n) styles [] = .law_subtitle; } : pattern { diff --git a/syntax_highlighting/fr/pygments/catala_fr_lexer/lexer.py b/syntax_highlighting/fr/pygments/catala_fr_lexer/lexer.py index 58d23ba7..e09531cd 100644 --- a/syntax_highlighting/fr/pygments/catala_fr_lexer/lexer.py +++ b/syntax_highlighting/fr/pygments/catala_fr_lexer/lexer.py @@ -25,7 +25,7 @@ class CatalaFrLexer(RegexLexer): (u'(```)', bygroups(Text), 'root'), (u'(\\s*\\#.*$)', bygroups(Comment.Single)), (u'(contexte)(\\s+)([a-z\xe9\xe8\xe0\xe2\xf9\xee\xf4\xea\u0153\xe7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xf4\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xd4\xca\u0152\xc70-9_\\\']*)', - bygroups(Keyword.Declaration, String, Name.Variable)), + 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|initial)\\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|\xe9tiquette|exception)\\b', bygroups(Keyword.Declaration)), (u'(\\|[0-9]+/[0-9]+/[0-9]+\\|)', bygroups(Number.Integer)), diff --git a/syntax_highlighting/pl/catala_pl.iro b/syntax_highlighting/pl/catala_pl.iro index ba9798f7..27dd843b 100644 --- a/syntax_highlighting/pl/catala_pl.iro +++ b/syntax_highlighting/pl/catala_pl.iro @@ -154,7 +154,7 @@ main : context { regex \= (\#\#) styles [] = .law_title; : pop { - regex \= (@@[\+]*) + regex \= (\n) styles [] = .law_title; } : pattern { @@ -164,10 +164,10 @@ main : context { } : inline_push { - regex \= (@) + regex \= ([\#]+\s*\[[^\]]\s*]) styles [] = .law_subtitle; : pop { - regex \= (@) + regex \= (\n) styles [] = .law_subtitle; } : pattern { @@ -211,7 +211,7 @@ code : context { regex \= \b(pasuje|ze\s+wzorem|staloprzecinkowa|przez|malejacy|rosnacy|rozna|wraz z|mamy|w|takich ze|istnieje|dla|wszystkie|z|jezeli|wtedy|inaczej|poczatkowy)\b styles [] = .keyword_expression ; } - + : pattern { regex \= \b(zakres|zalezy\s+od|deklaracja|kolekcja|zawartosc|opcjonalny|struktura|enumeracja|kontekst|zasada|pod\s+warunkuem|warunek|czas|konsekwencja|spelnione|wynosi|asercja|definicja|etykieta|wyjatek)\b styles [] = .keyword_rule ; diff --git a/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py b/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py index d5b47b52..517fa59b 100644 --- a/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py +++ b/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py @@ -14,15 +14,16 @@ class CatalaPlLexer(RegexLexer): tokens = { 'root' : [ (u'(\\#\\#)', bygroups(Generic.Heading), 'main__1'), - (u'(@)', bygroups(Generic.Heading), 'main__2'), - (u'([^`\\n\\r])', bygroups(String)), - (u'(```catala)', bygroups(String), 'code'), - ('(\n|\r|\r\n)', String), - ('.', String), + (u'([\#]+\s*\[[^\]]\s*])', bygroups(Generic.Heading), 'main__2'), + (u'([^`\\n\\r])', bygroups(Text)), + (u'(```catala)', bygroups(Text), 'code'), + ('(\n|\r|\r\n)', Text), + ('.', Text), ], 'code' : [ + (u'(```)', bygroups(Text), 'root'), (u'(\\s*\\#.*$)', bygroups(Comment.Single)), - (u'(kontekst)(\\s+)([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)', bygroups(Keyword.Declaration, String, Name.Variable)), + (u'(kontekst)(\\s+)([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)', bygroups(Keyword.Declaration, Text, Name.Variable)), (u'\\b(pasuje|ze\\s+wzorem|staloprzecinkowa|przez|malejacy|rosnacy|rozna|wraz z|mamy|w|takich ze|istnieje|dla|wszystkie|z|jezeli|wtedy|inaczej|poczatkowy)\\b', bygroups(Keyword.Reserved)), (u'\\b(zakres|zalezy\\s+od|deklaracja|kolekcja|zawartosc|opcjonalny|struktura|enumeracja|kontekst|zasada|pod\\s+warunkuem|warunek|czas|konsekwencja|spelnione|wynosi|asercja|definicja|etykieta|wyjatek)\\b', bygroups(Keyword.Declaration)), (u'(\\|[0-9]+/[0-9]+/[0-9]+\\|)', bygroups(Number.Integer)), @@ -32,21 +33,23 @@ class CatalaPlLexer(RegexLexer): (u'(\\-\\>|\\+\\.|\\+\\@|\\+\\^|\\+\\$|\\+|\\-\\.|\\-\\@|\\-\\^|\\-\\$|\\-|\\*\\.|\\*\\@|\\*\\^|\\*\\$|\\*|/\\.|/\\@|/\\^|/\\$|/|\\!|>\\.|>=\\.|<=\\.|<\\.|>\\@|>=\\@|<=\\@|<\\@|>\\$|>=\\$|<=\\$|<\\$|>\\^|>=\\^|<=\\^|<\\^|>|>=|<=|<|=|nie|lub|xor|i|\\$|%|rok|miesiac|dzien)', bygroups(Operator)), (u'\\b(calkowita|zerojedynkowy|czas|czas trwania|pieniadze|tekst|dziesietna|suma)\\b', bygroups(Keyword.Type)), (u'\\b([A-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u0179][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)(\\.)([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)\\b', bygroups(Name.Class, Operator, Name.Variable)), - (u'\\b([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)(\\.)([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\'\\.]*)\\b', bygroups(Name.Variable, Operator, String)), + (u'\\b([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)(\\.)([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\'\\.]*)\\b', bygroups(Name.Variable, Operator, Text)), (u'\\b([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)\\b', bygroups(Name.Variable)), (u'\\b([A-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u0179][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)\\b', bygroups(Name.Class)), - ('(\n|\r|\r\n)', String), - ('.', String), + ('(\n|\r|\r\n)', Text), + ('.', Text), ], - 'main__1' : [ + 'main__1': [ + (u'(\n)', bygroups(Generic.Heading), 'root'), (u'(.)', bygroups(Generic.Heading)), - ('(\n|\r|\r\n)', String), - ('.', String), - ], - 'main__2' : [ + ('(\n|\r|\r\n)', Text), + ('.', Text), + ], + 'main__2': [ + (u'(\n)', bygroups(Generic.Heading), 'root'), (u'(.)', bygroups(Generic.Heading)), - ('(\n|\r|\r\n)', String), - ('.', String), + ('(\n|\r|\r\n)', Text), + ('.', Text), ] } From 219293baa791bb36e6fc4d1dd1d553ca6214a7c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Wed, 12 May 2021 18:54:09 +0200 Subject: [PATCH 12/35] ## headers, eng->pl fix --- .../rozdzial_3.catala_pl | 8 +++++--- src/catala/surface/lexer_pl.ml | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl index 76f73dd2..3b75180a 100644 --- a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl +++ b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl @@ -1,6 +1,8 @@ ## Rozdzial 3 -## [Art. 7. 1. Stawki podatku wynoszą:] +### [Art. 7.] + +1. Stawki podatku wynoszą: 1) od umowy sprzedaży: @@ -11,7 +13,7 @@ deklaracja zakres UmowaSprzedazy: kontekst kwota zawartosc pieniadze kontekst stawka zawartosc dziesietna kontekst podatek zawartosc pieniadze - kontekst inne_prawa_majatkowe condition + kontekst inne_prawa_majatkowe warunek zakres UmowaSprzedazy: definicja podatek wynosi @@ -42,7 +44,7 @@ deklaracja zakres UmowaZamianyLubDarowizny: kontekst kwota zawartosc pieniadze kontekst stawka zawartosc dziesietna kontekst podatek zawartosc pieniadze - kontekst inne_prawa_majatkowe condition + kontekst inne_prawa_majatkowe warunek zakres UmowaZamianyLubDarowizny: definicja podatek wynosi diff --git a/src/catala/surface/lexer_pl.ml b/src/catala/surface/lexer_pl.ml index a2cc42a7..e34a3db4 100644 --- a/src/catala/surface/lexer_pl.ml +++ b/src/catala/surface/lexer_pl.ml @@ -201,7 +201,7 @@ let rec lex_code (lexbuf : lexbuf) : token = | "inaczej" -> L.update_acc lexbuf; ELSE - | "condition" -> + | "warunek" -> L.update_acc lexbuf; CONDITION | "zawartosc" -> From 03f6e412d99058773b5db6457af416bfa9fd9cb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Wed, 12 May 2021 18:56:14 +0200 Subject: [PATCH 13/35] add text's whole title - https://isap.sejm.gov.pl/isap.nsf/download.xsp/WDU20000860959/U/D20000959Lj.pdf --- .../rozdzial_3.catala_pl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl index 3b75180a..5ae81034 100644 --- a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl +++ b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl @@ -1,6 +1,8 @@ -## Rozdzial 3 +## Ustawa z dnia 9 września 2000 r. o podatku od czynności cywilnoprawnych -### [Art. 7.] +### Rozdział 3 + +#### [Art. 7.] 1. Stawki podatku wynoszą: From c4e39f159f2a249f87adb97f45beaf9ba5ca3425 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Wed, 12 May 2021 19:40:19 +0200 Subject: [PATCH 14/35] change condition ('warunek' - boolean) from green to red in pdf --- syntax_highlighting/pl/catala_pl.iro | 4 ++-- syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/syntax_highlighting/pl/catala_pl.iro b/syntax_highlighting/pl/catala_pl.iro index 27dd843b..803b9c7a 100644 --- a/syntax_highlighting/pl/catala_pl.iro +++ b/syntax_highlighting/pl/catala_pl.iro @@ -213,7 +213,7 @@ code : context { } : pattern { - regex \= \b(zakres|zalezy\s+od|deklaracja|kolekcja|zawartosc|opcjonalny|struktura|enumeracja|kontekst|zasada|pod\s+warunkuem|warunek|czas|konsekwencja|spelnione|wynosi|asercja|definicja|etykieta|wyjatek)\b + regex \= \b(zakres|zalezy\s+od|deklaracja|kolekcja|zawartosc|opcjonalny|struktura|enumeracja|kontekst|zasada|pod\s+warunkuem|czas|konsekwencja|spelnione|wynosi|asercja|definicja|etykieta|wyjatek)\b styles [] = .keyword_rule ; } @@ -245,7 +245,7 @@ code : context { } : pattern { - regex \= \b(calkowita|zerojedynkowy|czas|czas trwania|pieniadze|tekst|dziesietna|suma)\b + regex \= \b(calkowita|zerojedynkowy|czas|czas trwania|pieniadze|warunek|tekst|dziesietna|suma)\b styles [] = .primitive; } diff --git a/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py b/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py index 517fa59b..3e27a284 100644 --- a/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py +++ b/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py @@ -25,13 +25,13 @@ class CatalaPlLexer(RegexLexer): (u'(\\s*\\#.*$)', bygroups(Comment.Single)), (u'(kontekst)(\\s+)([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)', bygroups(Keyword.Declaration, Text, Name.Variable)), (u'\\b(pasuje|ze\\s+wzorem|staloprzecinkowa|przez|malejacy|rosnacy|rozna|wraz z|mamy|w|takich ze|istnieje|dla|wszystkie|z|jezeli|wtedy|inaczej|poczatkowy)\\b', bygroups(Keyword.Reserved)), - (u'\\b(zakres|zalezy\\s+od|deklaracja|kolekcja|zawartosc|opcjonalny|struktura|enumeracja|kontekst|zasada|pod\\s+warunkuem|warunek|czas|konsekwencja|spelnione|wynosi|asercja|definicja|etykieta|wyjatek)\\b', bygroups(Keyword.Declaration)), + (u'\\b(zakres|zalezy\\s+od|deklaracja|kolekcja|zawartosc|opcjonalny|struktura|enumeracja|kontekst|zasada|pod\\s+warunkuem|czas|konsekwencja|spelnione|wynosi|asercja|definicja|etykieta|wyjatek)\\b', bygroups(Keyword.Declaration)), (u'(\\|[0-9]+/[0-9]+/[0-9]+\\|)', bygroups(Number.Integer)), (u'\\b(prawda|falsz)\\b', bygroups(Keyword.Constant)), (u'\\b([0-9]+(,[0.9]*|))\\b', bygroups(Number.Integer)), (u'(\\-\\-|\\;|\\.|\\,|\\:|\\(|\\)|\\[|\\]|\\{|\\})', bygroups(Operator)), (u'(\\-\\>|\\+\\.|\\+\\@|\\+\\^|\\+\\$|\\+|\\-\\.|\\-\\@|\\-\\^|\\-\\$|\\-|\\*\\.|\\*\\@|\\*\\^|\\*\\$|\\*|/\\.|/\\@|/\\^|/\\$|/|\\!|>\\.|>=\\.|<=\\.|<\\.|>\\@|>=\\@|<=\\@|<\\@|>\\$|>=\\$|<=\\$|<\\$|>\\^|>=\\^|<=\\^|<\\^|>|>=|<=|<|=|nie|lub|xor|i|\\$|%|rok|miesiac|dzien)', bygroups(Operator)), - (u'\\b(calkowita|zerojedynkowy|czas|czas trwania|pieniadze|tekst|dziesietna|suma)\\b', bygroups(Keyword.Type)), + (u'\\b(calkowita|zerojedynkowy|czas|czas trwania|pieniadze|warunek|tekst|dziesietna|suma)\\b', bygroups(Keyword.Type)), (u'\\b([A-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u0179][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)(\\.)([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)\\b', bygroups(Name.Class, Operator, Name.Variable)), (u'\\b([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)(\\.)([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\'\\.]*)\\b', bygroups(Name.Variable, Operator, Text)), (u'\\b([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)\\b', bygroups(Name.Variable)), From f70e3e42967452cf11adbbd984844b6fd470af3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Wed, 12 May 2021 19:42:40 +0200 Subject: [PATCH 15/35] change 'zawartosc' which means 'content' to 'typu' which means 'of the type..' --- .../rozdzial_3.catala_pl | 24 +++++++++---------- src/catala/surface/lexer_pl.ml | 4 ++-- syntax_highlighting/pl/catala_pl.iro | 2 +- .../pl/pygments/catala_pl_lexer/lexer.py | 2 +- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl index 5ae81034..9036d120 100644 --- a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl +++ b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl @@ -12,9 +12,9 @@ a) nieruchomości, rzeczy ruchomych, prawa użytkowania wieczystego, własności ```catala deklaracja zakres UmowaSprzedazy: - kontekst kwota zawartosc pieniadze - kontekst stawka zawartosc dziesietna - kontekst podatek zawartosc pieniadze + kontekst kwota typu pieniadze + kontekst stawka typu dziesietna + kontekst podatek typu pieniadze kontekst inne_prawa_majatkowe warunek zakres UmowaSprzedazy: @@ -43,9 +43,9 @@ mieszkalnego, spółdzielczego prawa do lokalu użytkowego oraz wynikających z ```catala deklaracja zakres UmowaZamianyLubDarowizny: - kontekst kwota zawartosc pieniadze - kontekst stawka zawartosc dziesietna - kontekst podatek zawartosc pieniadze + kontekst kwota typu pieniadze + kontekst stawka typu dziesietna + kontekst podatek typu pieniadze kontekst inne_prawa_majatkowe warunek zakres UmowaZamianyLubDarowizny: @@ -71,9 +71,9 @@ zakres UmowaZamianyLubDarowizny: ```catala deklaracja zakres OdplatneUzytkowanie: - kontekst kwota zawartosc pieniadze - kontekst stawka zawartosc dziesietna - kontekst podatek zawartosc pieniadze + kontekst kwota typu pieniadze + kontekst stawka typu dziesietna + kontekst podatek typu pieniadze zakres OdplatneUzytkowanie: definicja podatek wynosi @@ -87,9 +87,9 @@ zakres OdplatneUzytkowanie: ```catala deklaracja zakres PozyczkaLubDepozytNieprawidlowy: - kontekst kwota zawartosc pieniadze - kontekst stawka zawartosc dziesietna - kontekst podatek zawartosc pieniadze + kontekst kwota typu pieniadze + kontekst stawka typu dziesietna + kontekst podatek typu pieniadze zakres PozyczkaLubDepozytNieprawidlowy: definicja podatek wynosi diff --git a/src/catala/surface/lexer_pl.ml b/src/catala/surface/lexer_pl.ml index e34a3db4..0e4ddeae 100644 --- a/src/catala/surface/lexer_pl.ml +++ b/src/catala/surface/lexer_pl.ml @@ -53,7 +53,7 @@ let token_list : (string * token) list = ("jezeli", IF); ("wtedy", THEN); ("inaczej", ELSE); - ("zawartosc", CONTENT); + ("typu", CONTENT); ("struktura", STRUCT); ("asercja", ASSERTION); ("rozna", VARIES); @@ -204,7 +204,7 @@ let rec lex_code (lexbuf : lexbuf) : token = | "warunek" -> L.update_acc lexbuf; CONDITION - | "zawartosc" -> + | "typu" -> L.update_acc lexbuf; CONTENT | "struktura" -> diff --git a/syntax_highlighting/pl/catala_pl.iro b/syntax_highlighting/pl/catala_pl.iro index 803b9c7a..16404194 100644 --- a/syntax_highlighting/pl/catala_pl.iro +++ b/syntax_highlighting/pl/catala_pl.iro @@ -213,7 +213,7 @@ code : context { } : pattern { - regex \= \b(zakres|zalezy\s+od|deklaracja|kolekcja|zawartosc|opcjonalny|struktura|enumeracja|kontekst|zasada|pod\s+warunkuem|czas|konsekwencja|spelnione|wynosi|asercja|definicja|etykieta|wyjatek)\b + regex \= \b(zakres|zalezy\s+od|deklaracja|kolekcja|typu|opcjonalny|struktura|enumeracja|kontekst|zasada|pod\s+warunkuem|czas|konsekwencja|spelnione|wynosi|asercja|definicja|etykieta|wyjatek)\b styles [] = .keyword_rule ; } diff --git a/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py b/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py index 3e27a284..20f72879 100644 --- a/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py +++ b/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py @@ -25,7 +25,7 @@ class CatalaPlLexer(RegexLexer): (u'(\\s*\\#.*$)', bygroups(Comment.Single)), (u'(kontekst)(\\s+)([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)', bygroups(Keyword.Declaration, Text, Name.Variable)), (u'\\b(pasuje|ze\\s+wzorem|staloprzecinkowa|przez|malejacy|rosnacy|rozna|wraz z|mamy|w|takich ze|istnieje|dla|wszystkie|z|jezeli|wtedy|inaczej|poczatkowy)\\b', bygroups(Keyword.Reserved)), - (u'\\b(zakres|zalezy\\s+od|deklaracja|kolekcja|zawartosc|opcjonalny|struktura|enumeracja|kontekst|zasada|pod\\s+warunkuem|czas|konsekwencja|spelnione|wynosi|asercja|definicja|etykieta|wyjatek)\\b', bygroups(Keyword.Declaration)), + (u'\\b(zakres|zalezy\\s+od|deklaracja|kolekcja|typu|opcjonalny|struktura|enumeracja|kontekst|zasada|pod\\s+warunkuem|czas|konsekwencja|spelnione|wynosi|asercja|definicja|etykieta|wyjatek)\\b', bygroups(Keyword.Declaration)), (u'(\\|[0-9]+/[0-9]+/[0-9]+\\|)', bygroups(Number.Integer)), (u'\\b(prawda|falsz)\\b', bygroups(Keyword.Constant)), (u'\\b([0-9]+(,[0.9]*|))\\b', bygroups(Number.Integer)), From f66fdf2a5cd62f531f052be2c59ec705362cb1ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Wed, 12 May 2021 19:43:31 +0200 Subject: [PATCH 16/35] extend comment --- .../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl index 9036d120..e15f4fd1 100644 --- a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl +++ b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl @@ -93,7 +93,7 @@ deklaracja zakres PozyczkaLubDepozytNieprawidlowy: zakres PozyczkaLubDepozytNieprawidlowy: definicja podatek wynosi - kwota *$ stawka # TODO: extract somehow? + kwota *$ stawka # TODO: extract somehow? this exists in every declaration zakres PozyczkaLubDepozytNieprawidlowy: definicja stawka wynosi 0.5% From cc2ec3d6130c2101e1396e1b20bd2b78964f8966 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Wed, 12 May 2021 19:50:47 +0200 Subject: [PATCH 17/35] change currency --- examples/polish_taxes/tests/test_a7_u1_p1.catala_pl | 8 ++++---- examples/polish_taxes/tests/test_a7_u1_p2.catala_pl | 8 ++++---- examples/polish_taxes/tests/test_a7_u1_p3.catala_pl | 4 ++-- examples/polish_taxes/tests/test_a7_u1_p4.catala_pl | 4 ++-- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/examples/polish_taxes/tests/test_a7_u1_p1.catala_pl b/examples/polish_taxes/tests/test_a7_u1_p1.catala_pl index a5abf45e..f99ce62f 100644 --- a/examples/polish_taxes/tests/test_a7_u1_p1.catala_pl +++ b/examples/polish_taxes/tests/test_a7_u1_p1.catala_pl @@ -7,17 +7,17 @@ deklaracja zakres Test_A7_U1_P1_PPa: kontekst sprzedaz zakres UmowaSprzedazy zakres Test_A7_U1_P1_PPa: - definicja sprzedaz.kwota wynosi $100 + definicja sprzedaz.kwota wynosi 100 PLN - asercja sprzedaz.podatek = $2 + asercja sprzedaz.podatek = 2 PLN deklaracja zakres Test_A7_U1_P1_PPb: kontekst sprzedaz zakres UmowaSprzedazy zakres Test_A7_U1_P1_PPb: - definicja sprzedaz.kwota wynosi $100 + definicja sprzedaz.kwota wynosi 100 PLN definicja sprzedaz.inne_prawa_majatkowe wynosi prawda - asercja sprzedaz.podatek = $1 + asercja sprzedaz.podatek = 1 PLN ``` \ No newline at end of file diff --git a/examples/polish_taxes/tests/test_a7_u1_p2.catala_pl b/examples/polish_taxes/tests/test_a7_u1_p2.catala_pl index 4d5f6ce7..a16407f0 100644 --- a/examples/polish_taxes/tests/test_a7_u1_p2.catala_pl +++ b/examples/polish_taxes/tests/test_a7_u1_p2.catala_pl @@ -7,17 +7,17 @@ deklaracja zakres Test_A7_U1_P2_PPa: kontekst sprzedaz zakres UmowaZamianyLubDarowizny zakres Test_A7_U1_P2_PPa: - definicja sprzedaz.kwota wynosi $100 + definicja sprzedaz.kwota wynosi 100 PLN - asercja sprzedaz.podatek = $2 + asercja sprzedaz.podatek = 2 PLN deklaracja zakres Test_A7_U1_P2_PPb: kontekst sprzedaz zakres UmowaZamianyLubDarowizny zakres Test_A7_U1_P2_PPb: - definicja sprzedaz.kwota wynosi $100 + definicja sprzedaz.kwota wynosi 100 PLN definicja sprzedaz.inne_prawa_majatkowe wynosi prawda - asercja sprzedaz.podatek = $1 + asercja sprzedaz.podatek = 1 PLN ``` \ No newline at end of file diff --git a/examples/polish_taxes/tests/test_a7_u1_p3.catala_pl b/examples/polish_taxes/tests/test_a7_u1_p3.catala_pl index 6fbaa57f..3c90473b 100644 --- a/examples/polish_taxes/tests/test_a7_u1_p3.catala_pl +++ b/examples/polish_taxes/tests/test_a7_u1_p3.catala_pl @@ -7,7 +7,7 @@ deklaracja zakres Test_A7_U1_P3: kontekst sprzedaz zakres OdplatneUzytkowanie zakres Test_A7_U1_P3: - definicja sprzedaz.kwota wynosi $100 + definicja sprzedaz.kwota wynosi 100 PLN - asercja sprzedaz.podatek = $1 + asercja sprzedaz.podatek = 1 PLN ``` \ No newline at end of file diff --git a/examples/polish_taxes/tests/test_a7_u1_p4.catala_pl b/examples/polish_taxes/tests/test_a7_u1_p4.catala_pl index 6ccba019..a06efa99 100644 --- a/examples/polish_taxes/tests/test_a7_u1_p4.catala_pl +++ b/examples/polish_taxes/tests/test_a7_u1_p4.catala_pl @@ -7,7 +7,7 @@ deklaracja zakres Test_A7_U1_P4: kontekst sprzedaz zakres PozyczkaLubDepozytNieprawidlowy zakres Test_A7_U1_P4: - definicja sprzedaz.kwota wynosi $200 + definicja sprzedaz.kwota wynosi 200 PLN - asercja sprzedaz.podatek = $1 + asercja sprzedaz.podatek = 1 PLN ``` \ No newline at end of file From 702b2c013445f06b1e3b41fa9f7430753654f9be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Wed, 12 May 2021 20:56:07 +0200 Subject: [PATCH 18/35] rephrasing --- src/catala/literate/html.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/catala/literate/html.ml b/src/catala/literate/html.ml index 754d7fc8..691b4777 100644 --- a/src/catala/literate/html.ml +++ b/src/catala/literate/html.ml @@ -72,7 +72,7 @@ let wrap_html (source_files : string list) (language : Cli.backend_lang) (fmt : (match language with | `Fr -> "Implémentation de texte législatif" | `En -> "Legislative text implementation" - | `Pl -> "Implementowanie tekstów legislacyjnych") + | `Pl -> "Implementacja tekstu legislacyjnego") (match language with | `Fr -> "Document généré par" | `En -> "Document generated by" From da363d8e7556b2afe38960f41a1e44f7260d4db6 Mon Sep 17 00:00:00 2001 From: Denis Merigoux Date: Thu, 13 May 2021 10:12:00 +0200 Subject: [PATCH 19/35] Fixed Iro files --- syntax_highlighting/en/catala_en.iro | 28 ++++++---------------------- syntax_highlighting/fr/catala_fr.iro | 28 ++++++---------------------- syntax_highlighting/nv/catala_nv.iro | 28 ++++++---------------------- syntax_highlighting/pl/catala_pl.iro | 28 ++++++---------------------- 4 files changed, 24 insertions(+), 88 deletions(-) diff --git a/syntax_highlighting/en/catala_en.iro b/syntax_highlighting/en/catala_en.iro index a6274d50..90d0269f 100644 --- a/syntax_highlighting/en/catala_en.iro +++ b/syntax_highlighting/en/catala_en.iro @@ -150,30 +150,14 @@ contexts [] { main : context { - : inline_push { - regex \= (\#\#) - styles [] = .law_title; - : pop { - regex \= (\n) - styles [] = .law_title; - } - : pattern { - regex \= (.) - styles [] = .law_title; - } + : pattern { + regex \= ([\#]+.*) + styles [] = .law_title; } - : inline_push { - regex \= ([\#]+\s*\[[^\]]\s*]) - styles [] = .law_subtitle; - : pop { - regex \= (\n) - styles [] = .law_subtitle; - } - : pattern { - regex \= (.) - styles [] = .law_subtitle; - } + : pattern { + regex \= ([\#]+\s*\[[^\]]\s*].*) + styles [] = .law_subtitle; } : pattern { diff --git a/syntax_highlighting/fr/catala_fr.iro b/syntax_highlighting/fr/catala_fr.iro index d1e88e6c..e6c2cd63 100644 --- a/syntax_highlighting/fr/catala_fr.iro +++ b/syntax_highlighting/fr/catala_fr.iro @@ -150,30 +150,14 @@ contexts [] { main : context { - : inline_push { - regex \= (\#\#) - styles [] = .law_title; - : pop { - regex \= (\n) - styles [] = .law_title; - } - : pattern { - regex \= (.) - styles [] = .law_title; - } + : pattern { + regex \= ([\#]+.*) + styles [] = .law_title; } - : inline_push { - regex \= ([\#]+\s*\[[^\]]\s*]) - styles [] = .law_subtitle; - : pop { - regex \= (\n) - styles [] = .law_subtitle; - } - : pattern { - regex \= (.) - styles [] = .law_subtitle; - } + : pattern { + regex \= ([\#]+\s*\[[^\]]\s*].*) + styles [] = .law_subtitle; } : pattern { diff --git a/syntax_highlighting/nv/catala_nv.iro b/syntax_highlighting/nv/catala_nv.iro index 3172055b..12685dfd 100644 --- a/syntax_highlighting/nv/catala_nv.iro +++ b/syntax_highlighting/nv/catala_nv.iro @@ -150,30 +150,14 @@ contexts [] { main : context { - : inline_push { - regex \= ([\#]+) - styles [] = .law_title; - : pop { - regex \= (\n) - styles [] = .law_title; - } - : pattern { - regex \= (.) - styles [] = .law_title; - } + : pattern { + regex \= ([\#]+.*) + styles [] = .law_title; } - : inline_push { - regex \= ([\#]+\s*\[[^\]]\s*]) - styles [] = .law_subtitle; - : pop { - regex \= (\n) - styles [] = .law_subtitle; - } - : pattern { - regex \= (.) - styles [] = .law_subtitle; - } + : pattern { + regex \= ([\#]+\s*\[[^\]]\s*].*) + styles [] = .law_subtitle; } : pattern { diff --git a/syntax_highlighting/pl/catala_pl.iro b/syntax_highlighting/pl/catala_pl.iro index 16404194..8749ea9c 100644 --- a/syntax_highlighting/pl/catala_pl.iro +++ b/syntax_highlighting/pl/catala_pl.iro @@ -150,30 +150,14 @@ contexts [] { main : context { - : inline_push { - regex \= (\#\#) - styles [] = .law_title; - : pop { - regex \= (\n) - styles [] = .law_title; - } - : pattern { - regex \= (.) - styles [] = .law_title; - } + : pattern { + regex \= ([\#]+.*) + styles [] = .law_title; } - : inline_push { - regex \= ([\#]+\s*\[[^\]]\s*]) - styles [] = .law_subtitle; - : pop { - regex \= (\n) - styles [] = .law_subtitle; - } - : pattern { - regex \= (.) - styles [] = .law_subtitle; - } + : pattern { + regex \= ([\#]+\s*\[[^\]]\s*].*) + styles [] = .law_subtitle; } : pattern { From 6bdf4243bca7a8f7e6284011244eca20519e14a5 Mon Sep 17 00:00:00 2001 From: Denis Merigoux Date: Thu, 13 May 2021 10:22:21 +0200 Subject: [PATCH 20/35] Correct lexing of Polish money amounts --- src/catala/surface/lexer_pl.ml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/catala/surface/lexer_pl.ml b/src/catala/surface/lexer_pl.ml index 0e4ddeae..b6a0c740 100644 --- a/src/catala/surface/lexer_pl.ml +++ b/src/catala/surface/lexer_pl.ml @@ -295,8 +295,12 @@ let rec lex_code (lexbuf : lexbuf) : token = | "dzien" -> L.update_acc lexbuf; DAY - | 0x24, Star white_space, '0' .. '9', Star ('0' .. '9' | ','), Opt ('.', Rep ('0' .. '9', 0 .. 2)) - -> + | ( Star white_space, + '0' .. '9', + Star ('0' .. '9' | ','), + Opt ('.', Rep ('0' .. '9', 0 .. 2)), + Star white_space, + "PLN" ) -> let extract_parts = R.regexp "([0-9]([0-9,]*[0-9]|))(.([0-9]{0,2})|)" in let full_str = Utf8.lexeme lexbuf in let only_numbers_str = String.trim (String.sub full_str 1 (String.length full_str - 1)) in From 95cd634bd8384fbbf807f9c5b274246a5ddd7b21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Thu, 13 May 2021 14:01:34 +0200 Subject: [PATCH 21/35] add makefile targets --- Makefile | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 6097c797..fe95feff 100644 --- a/Makefile +++ b/Makefile @@ -123,6 +123,7 @@ CODE_GENERAL_IMPOTS_DIR=$(EXAMPLES_DIR)/code_general_impots US_TAX_CODE_DIR=$(EXAMPLES_DIR)/us_tax_code TUTORIAL_EN_DIR=$(EXAMPLES_DIR)/tutorial_en TUTORIEL_FR_DIR=$(EXAMPLES_DIR)/tutoriel_fr +POLISH_TAXES_DIR=$(EXAMPLES_DIR)/polish_taxes literate_allocations_familiales: build @@ -145,9 +146,13 @@ literate_tutoriel_fr: build $(MAKE) -C $(TUTORIEL_FR_DIR) tutoriel_fr.tex $(MAKE) -C $(TUTORIEL_FR_DIR) tutoriel_fr.html +literate_polish_taxes: build + $(MAKE) -C $(POLISH_TAXES_DIR) polish_taxes.tex + $(MAKE) -C $(POLISH_TAXES_DIR) polish_taxes.html + #> literate_examples : Builds the .tex and .html versions of the examples code. Needs pygments to be installed and patched with Catala. literate_examples: literate_allocations_familiales literate_code_general_impots \ - literate_us_tax_code literate_tutorial_en literate_tutoriel_fr + literate_us_tax_code literate_tutorial_en literate_tutoriel_fr literate_polish_taxes ########################################## # Execute test suite @@ -232,6 +237,7 @@ clean: $(MAKE) -C $(US_TAX_CODE_DIR) clean $(MAKE) -C $(TUTORIEL_FR_DIR) clean $(MAKE) -C $(TUTORIAL_EN_DIR) clean + $(MAKE) -C $(POLISH_TAXES_DIR) clean $(MAKE) -C $(CODE_GENERAL_IMPOTS_DIR) clean inspect: From 8f4b4a0462bff1b62aae47dac12765aacc9d5b05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Thu, 13 May 2021 14:08:23 +0200 Subject: [PATCH 22/35] extract intro --- .../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl | 2 -- .../podatek_od_czynnosci_cywilnoprawnych/wstep.catala_pl | 1 + examples/polish_taxes/polish_taxes.catala_pl | 2 ++ 3 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/wstep.catala_pl diff --git a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl index e15f4fd1..b1ca51c6 100644 --- a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl +++ b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl @@ -1,5 +1,3 @@ -## Ustawa z dnia 9 września 2000 r. o podatku od czynności cywilnoprawnych - ### Rozdział 3 #### [Art. 7.] diff --git a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/wstep.catala_pl b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/wstep.catala_pl new file mode 100644 index 00000000..011f5b76 --- /dev/null +++ b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/wstep.catala_pl @@ -0,0 +1 @@ +## Ustawa z dnia 9 września 2000 r. o podatku od czynności cywilnoprawnych diff --git a/examples/polish_taxes/polish_taxes.catala_pl b/examples/polish_taxes/polish_taxes.catala_pl index 3e7724cb..4cedcaaf 100644 --- a/examples/polish_taxes/polish_taxes.catala_pl +++ b/examples/polish_taxes/polish_taxes.catala_pl @@ -1,3 +1,5 @@ # Plik glowny +> Include: podatek_od_czynnosci_cywilnoprawnych/wstep.catala_pl + > Include: podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl From 6afdca09b88e953c7bab2d40dac30589db988749 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Thu, 13 May 2021 22:02:52 +0200 Subject: [PATCH 23/35] rename var --- .../rozdzial_3.catala_pl | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl index b1ca51c6..7d41e5e1 100644 --- a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl +++ b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl @@ -11,17 +11,17 @@ a) nieruchomości, rzeczy ruchomych, prawa użytkowania wieczystego, własności ```catala deklaracja zakres UmowaSprzedazy: kontekst kwota typu pieniadze - kontekst stawka typu dziesietna + kontekst stawka_podatku typu dziesietna kontekst podatek typu pieniadze kontekst inne_prawa_majatkowe warunek zakres UmowaSprzedazy: definicja podatek wynosi - kwota *$ stawka + kwota *$ stawka_podatku zakres UmowaSprzedazy: etykieta a7_u1_p1_ppa - definicja stawka wynosi 2% + definicja stawka_podatku wynosi 2% ``` @@ -29,7 +29,7 @@ b) innych praw majątkowych – 1%; ```catala zakres UmowaSprzedazy: wyjatek a7_u1_p1_ppa - definicja stawka pod warunkiem + definicja stawka_podatku pod warunkiem inne_prawa_majatkowe konsekwencja wynosi 1% ``` @@ -42,17 +42,17 @@ mieszkalnego, spółdzielczego prawa do lokalu użytkowego oraz wynikających z ```catala deklaracja zakres UmowaZamianyLubDarowizny: kontekst kwota typu pieniadze - kontekst stawka typu dziesietna + kontekst stawka_podatku typu dziesietna kontekst podatek typu pieniadze kontekst inne_prawa_majatkowe warunek zakres UmowaZamianyLubDarowizny: definicja podatek wynosi - kwota *$ stawka + kwota *$ stawka_podatku zakres UmowaZamianyLubDarowizny: etykieta a7_u1_p2_ppa - definicja stawka wynosi 2% + definicja stawka_podatku wynosi 2% ``` b) przy przeniesieniu własności innych praw majątkowych – 1%; @@ -60,7 +60,7 @@ b) przy przeniesieniu własności innych praw majątkowych – 1%; ```catala zakres UmowaZamianyLubDarowizny: wyjatek a7_u1_p2_ppa - definicja stawka pod warunkiem + definicja stawka_podatku pod warunkiem inne_prawa_majatkowe konsekwencja wynosi 1% ``` @@ -70,15 +70,15 @@ zakres UmowaZamianyLubDarowizny: ```catala deklaracja zakres OdplatneUzytkowanie: kontekst kwota typu pieniadze - kontekst stawka typu dziesietna + kontekst stawka_podatku typu dziesietna kontekst podatek typu pieniadze zakres OdplatneUzytkowanie: definicja podatek wynosi - kwota *$ stawka + kwota *$ stawka_podatku zakres OdplatneUzytkowanie: - definicja stawka wynosi 1% + definicja stawka_podatku wynosi 1% ``` 4) od umowy pożyczki oraz depozytu nieprawidłowego – 0,5%, z zastrzeżeniem ust. 5; @@ -86,13 +86,13 @@ zakres OdplatneUzytkowanie: ```catala deklaracja zakres PozyczkaLubDepozytNieprawidlowy: kontekst kwota typu pieniadze - kontekst stawka typu dziesietna + kontekst stawka_podatku typu dziesietna kontekst podatek typu pieniadze zakres PozyczkaLubDepozytNieprawidlowy: definicja podatek wynosi - kwota *$ stawka # TODO: extract somehow? this exists in every declaration + kwota *$ stawka_podatku # TODO: extract somehow? this exists in every declaration zakres PozyczkaLubDepozytNieprawidlowy: - definicja stawka wynosi 0.5% + definicja stawka_podatku wynosi 0.5% ``` From f5a070f5a36e48a5e2989d5547ba434ab77a1f17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Thu, 13 May 2021 22:16:48 +0200 Subject: [PATCH 24/35] add p.7 --- .../rozdzial_3.catala_pl | 30 +++++++++++++++++++ .../tests/test_a7_u1_p7.catala_pl | 13 ++++++++ 2 files changed, 43 insertions(+) create mode 100644 examples/polish_taxes/tests/test_a7_u1_p7.catala_pl diff --git a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl index 7d41e5e1..acbef9e9 100644 --- a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl +++ b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl @@ -96,3 +96,33 @@ zakres PozyczkaLubDepozytNieprawidlowy: zakres PozyczkaLubDepozytNieprawidlowy: definicja stawka_podatku wynosi 0.5% ``` + +7) od ustanowienia hipoteki: + +a) na zabezpieczenie wierzytelności istniejących – od kwoty zabezpieczonej wierzytelności – 0,1%, + +```catala +deklaracja zakres Hipoteka: + kontekst kwota typu pieniadze + kontekst stawka_podatku typu dziesietna + kontekst podatek typu pieniadze + kontekst wysokosc_nieustalona warunek + +zakres Hipoteka: + etykieta a7_u1_p7_ppa + definicja podatek wynosi + kwota *$ stawka_podatku + +zakres Hipoteka: + definicja stawka_podatku wynosi 0.1% +``` + +b) na zabezpieczenie wierzytelności o wysokości nieustalonej – 19 zł; + +```catala +zakres Hipoteka: + wyjatek a7_u1_p7_ppa + definicja podatek pod warunkiem + wysokosc_nieustalona + konsekwencja wynosi 19 PLN +``` \ No newline at end of file diff --git a/examples/polish_taxes/tests/test_a7_u1_p7.catala_pl b/examples/polish_taxes/tests/test_a7_u1_p7.catala_pl new file mode 100644 index 00000000..93746af6 --- /dev/null +++ b/examples/polish_taxes/tests/test_a7_u1_p7.catala_pl @@ -0,0 +1,13 @@ +> Include: ../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl + +## [Test - Art. 7 ustęp 1 punkt 7] + +```catala +deklaracja zakres Test_A7_U1_P7: + kontekst sprzedaz zakres PozyczkaLubDepozytNieprawidlowy + +zakres Test_A7_U1_P7: + definicja sprzedaz.kwota wynosi 200 PLN + + asercja sprzedaz.podatek = 1 PLN +``` \ No newline at end of file From 7e31b230d0aae5c3540dcedbbf8ef003844bbb2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Thu, 13 May 2021 22:22:49 +0200 Subject: [PATCH 25/35] add p. 9 but why is the test failing? 0.1% * 1000 == 1, not 10 --- .../rozdzial_3.catala_pl | 20 +++++++++++++++++-- .../tests/test_a7_u1_p9.catala_pl | 13 ++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 examples/polish_taxes/tests/test_a7_u1_p9.catala_pl diff --git a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl index acbef9e9..d0f4e2f9 100644 --- a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl +++ b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl @@ -102,7 +102,7 @@ zakres PozyczkaLubDepozytNieprawidlowy: a) na zabezpieczenie wierzytelności istniejących – od kwoty zabezpieczonej wierzytelności – 0,1%, ```catala -deklaracja zakres Hipoteka: +deklaracja zakres Hipoteka: kontekst kwota typu pieniadze kontekst stawka_podatku typu dziesietna kontekst podatek typu pieniadze @@ -125,4 +125,20 @@ zakres Hipoteka: definicja podatek pod warunkiem wysokosc_nieustalona konsekwencja wynosi 19 PLN -``` \ No newline at end of file +``` + +9) od umowy spółki – 0,5%. + +```catala +deklaracja zakres UmowaSpolki: + kontekst kwota typu pieniadze + kontekst stawka_podatku typu dziesietna + kontekst podatek typu pieniadze + +zakres UmowaSpolki: + definicja podatek wynosi + kwota *$ stawka_podatku + +zakres UmowaSpolki: + definicja stawka_podatku wynosi 0.1% +``` diff --git a/examples/polish_taxes/tests/test_a7_u1_p9.catala_pl b/examples/polish_taxes/tests/test_a7_u1_p9.catala_pl new file mode 100644 index 00000000..eb431b2b --- /dev/null +++ b/examples/polish_taxes/tests/test_a7_u1_p9.catala_pl @@ -0,0 +1,13 @@ +> Include: ../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl + +## [Test - Art. 7 ustęp 1 punkt 9] + +```catala +deklaracja zakres Test_A7_U1_P9: + kontekst sprzedaz zakres UmowaSpolki + +zakres Test_A7_U1_P9: + definicja sprzedaz.kwota wynosi 1000 PLN + + asercja sprzedaz.podatek = 1 PLN +``` \ No newline at end of file From fec6c2b145f6410305a71dfa99dec3f96b8d3186 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Thu, 13 May 2021 22:25:17 +0200 Subject: [PATCH 26/35] fix typo, issue with 0.something% still exists --- .../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl | 2 +- examples/polish_taxes/tests/test_a7_u1_p9.catala_pl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl index d0f4e2f9..221d13ee 100644 --- a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl +++ b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl @@ -140,5 +140,5 @@ zakres UmowaSpolki: kwota *$ stawka_podatku zakres UmowaSpolki: - definicja stawka_podatku wynosi 0.1% + definicja stawka_podatku wynosi 0.5% ``` diff --git a/examples/polish_taxes/tests/test_a7_u1_p9.catala_pl b/examples/polish_taxes/tests/test_a7_u1_p9.catala_pl index eb431b2b..c9c7d728 100644 --- a/examples/polish_taxes/tests/test_a7_u1_p9.catala_pl +++ b/examples/polish_taxes/tests/test_a7_u1_p9.catala_pl @@ -9,5 +9,5 @@ deklaracja zakres Test_A7_U1_P9: zakres Test_A7_U1_P9: definicja sprzedaz.kwota wynosi 1000 PLN - asercja sprzedaz.podatek = 1 PLN + asercja sprzedaz.podatek = 5 PLN ``` \ No newline at end of file From f14408375a35e58fcccfda5eedcdb24fcb6f1dc5 Mon Sep 17 00:00:00 2001 From: Denis Merigoux Date: Sat, 15 May 2021 16:28:14 +0200 Subject: [PATCH 27/35] Update to new syntax --- .../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl | 2 +- examples/polish_taxes/polish_taxes.catala_pl | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl index 221d13ee..2ca01747 100644 --- a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl +++ b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl @@ -1,6 +1,6 @@ ### Rozdział 3 -#### [Art. 7.] +#### Art. 7. 1. Stawki podatku wynoszą: diff --git a/examples/polish_taxes/polish_taxes.catala_pl b/examples/polish_taxes/polish_taxes.catala_pl index 4cedcaaf..e4556439 100644 --- a/examples/polish_taxes/polish_taxes.catala_pl +++ b/examples/polish_taxes/polish_taxes.catala_pl @@ -1,5 +1,3 @@ -# Plik glowny - > Include: podatek_od_czynnosci_cywilnoprawnych/wstep.catala_pl > Include: podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl From 2b5a54e315accd47bac6952c08d772d36e3ffca6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Sun, 16 May 2021 20:13:03 +0200 Subject: [PATCH 28/35] atom stuff --- .../pl/atom/grammars/catala_pl.cson | 138 ++++++++++++++++++ syntax_highlighting/pl/atom/package.json | 18 +++ syntax_highlighting/pl/setup_atom.sh | 10 ++ 3 files changed, 166 insertions(+) create mode 100644 syntax_highlighting/pl/atom/grammars/catala_pl.cson create mode 100644 syntax_highlighting/pl/atom/package.json create mode 100755 syntax_highlighting/pl/setup_atom.sh diff --git a/syntax_highlighting/pl/atom/grammars/catala_pl.cson b/syntax_highlighting/pl/atom/grammars/catala_pl.cson new file mode 100644 index 00000000..7e90f266 --- /dev/null +++ b/syntax_highlighting/pl/atom/grammars/catala_pl.cson @@ -0,0 +1,138 @@ +'fileTypes' : [ + 'catala_pl' +] +'name' : 'catala_pl' +'patterns' : [ + { + 'include' : '#main' + } +] +'scopeName' : 'source.catala_pl' +'uuid' : '' +'repository' : { + 'main' : { + 'patterns' : [ + { + 'match' : '([\\#]+.*)' + 'name' : 'markup.heading.title.catala_pl' + } + { + 'match' : '([\\#]+\\s*\\[[^\\]]\\s*].*)' + 'name' : 'markup.heading.subtitle.catala_pl' + } + { + 'match' : '([^\\x{0060}])' + 'name' : 'entity.law.catala_pl' + } + { + 'begin' : '(```catala)' + 'beginCaptures' : { + '1' : { + 'name' : 'comment.block.documentation.catala_pl' + } + } + 'patterns' : [ + { + 'include' : '#code' + } + ] + 'end' : '(```)' + 'endCaptures' : { + '1' : { + 'name' : 'comment.block.documentation.catala_pl' + } + } + } + ] + } + 'code' : { + 'patterns' : [ + { + 'match' : '(\\s*\\#.*$)' + 'name' : 'comment.line.catala_pl' + } + { + 'match' : '(kontekst)(\\s+)([a-z\\x{0105}\\x{0107}\\x{0119}\\x{0142}\\x{0144}\\x{00f3}\\x{015b}\\x{017c}\\x{017a}][a-z\\x{0105}\\x{0107}\\x{0119}\\x{0142}\\x{0144}\\x{00f3}\\x{015b}\\x{017c}\\x{017a}A-Z\\x{0104}\\x{0106}\\x{0118}\\x{0141}\\x{0143}\\x{00d3}\\x{015a}\\x{017b}\\x{0179}0-9_\\\']*)' + 'captures' : { + '1' : { + 'name' : 'keyword.other.catala_pl' + } + '2' : { + 'name' : 'text.catala_pl' + } + '3' : { + 'name' : 'entity.name.function.catala_pl' + } + } + } + { + 'match' : '\\b(pasuje|ze\\s+wzorem|staloprzecinkowa|przez|malejacy|rosnacy|rozna|wraz z|mamy|w|takich ze|istnieje|dla|wszystkie|z|jezeli|wtedy|inaczej|poczatkowy)\\b' + 'name' : 'keyword.control.catala_pl' + } + { + 'match' : '\\b(zakres|zalezy\\s+od|deklaracja|kolekcja|typu|opcjonalny|struktura|enumeracja|kontekst|zasada|pod\\s+warunkuem|czas|konsekwencja|spelnione|wynosi|asercja|definicja|etykieta|wyjatek)\\b' + 'name' : 'keyword.other.catala_pl' + } + { + 'match' : '(\\|[0-9]+/[0-9]+/[0-9]+\\|)' + 'name' : 'constant.numeric.catala_pl' + } + { + 'match' : '\\b(prawda|falsz)\\b' + 'name' : 'constant.catala_pl' + } + { + 'match' : '\\b([0-9]+(,[0.9]*|))\\b' + 'name' : 'constant.numeric.catala_pl' + } + { + 'match' : '(\\-\\-|\\;|\\.|\\,|\\:|\\(|\\)|\\[|\\]|\\{|\\})' + 'name' : 'punctuation.catala_pl' + } + { + 'match' : '(\\-\\>|\\+\\.|\\+\\@|\\+\\^|\\+\\$|\\+|\\-\\.|\\-\\@|\\-\\^|\\-\\$|\\-|\\*\\.|\\*\\@|\\*\\^|\\*\\$|\\*|/\\.|/\\@|/\\^|/\\$|/|\\!|>\\.|>=\\.|<=\\.|<\\.|>\\@|>=\\@|<=\\@|<\\@|>\\$|>=\\$|<=\\$|<\\$|>\\^|>=\\^|<=\\^|<\\^|>|>=|<=|<|=|nie|lub|xor|i|\\$|%|rok|miesiac|dzien)' + 'name' : 'keyword.operator.catala_pl' + } + { + 'match' : '\\b(calkowita|zerojedynkowy|czas|czas trwania|pieniadze|warunek|tekst|dziesietna|suma)\\b' + 'name' : 'support.type.catala_pl' + } + { + 'match' : '\\b([A-Z\\x{0104}\\x{0106}\\x{0118}\\x{0141}\\x{0143}\\x{00d3}\\x{015a}\\x{017b}\\x{0179}][a-z\\x{0105}\\x{0107}\\x{0119}\\x{0142}\\x{0144}\\x{00f3}\\x{015b}\\x{017c}\\x{017a}A-Z\\x{0104}\\x{0106}\\x{0118}\\x{0141}\\x{0143}\\x{00d3}\\x{015a}\\x{017b}\\x{0179}0-9_\\\']*)(\\.)([a-z\\x{0105}\\x{0107}\\x{0119}\\x{0142}\\x{0144}\\x{00f3}\\x{015b}\\x{017c}\\x{017a}][a-z\\x{0105}\\x{0107}\\x{0119}\\x{0142}\\x{0144}\\x{00f3}\\x{015b}\\x{017c}\\x{017a}A-Z\\x{0104}\\x{0106}\\x{0118}\\x{0141}\\x{0143}\\x{00d3}\\x{015a}\\x{017b}\\x{0179}0-9_\\\']*)\\b' + 'captures' : { + '1' : { + 'name' : 'entity.name.class.catala_pl' + } + '2' : { + 'name' : 'punctuation.catala_pl' + } + '3' : { + 'name' : 'entity.name.function.catala_pl' + } + } + } + { + 'match' : '\\b([a-z\\x{0105}\\x{0107}\\x{0119}\\x{0142}\\x{0144}\\x{00f3}\\x{015b}\\x{017c}\\x{017a}][a-z\\x{0105}\\x{0107}\\x{0119}\\x{0142}\\x{0144}\\x{00f3}\\x{015b}\\x{017c}\\x{017a}A-Z\\x{0104}\\x{0106}\\x{0118}\\x{0141}\\x{0143}\\x{00d3}\\x{015a}\\x{017b}\\x{0179}0-9_\\\']*)(\\.)([a-z\\x{0105}\\x{0107}\\x{0119}\\x{0142}\\x{0144}\\x{00f3}\\x{015b}\\x{017c}\\x{017a}][a-z\\x{0105}\\x{0107}\\x{0119}\\x{0142}\\x{0144}\\x{00f3}\\x{015b}\\x{017c}\\x{017a}A-Z\\x{0104}\\x{0106}\\x{0118}\\x{0141}\\x{0143}\\x{00d3}\\x{015a}\\x{017b}\\x{0179}0-9_\\\'\\.]*)\\b' + 'captures' : { + '1' : { + 'name' : 'entity.name.function.catala_pl' + } + '2' : { + 'name' : 'punctuation.catala_pl' + } + '3' : { + 'name' : 'meta.variable_id.catala_pl' + } + } + } + { + 'match' : '\\b([a-z\\x{0105}\\x{0107}\\x{0119}\\x{0142}\\x{0144}\\x{00f3}\\x{015b}\\x{017c}\\x{017a}][a-z\\x{0105}\\x{0107}\\x{0119}\\x{0142}\\x{0144}\\x{00f3}\\x{015b}\\x{017c}\\x{017a}A-Z\\x{0104}\\x{0106}\\x{0118}\\x{0141}\\x{0143}\\x{00d3}\\x{015a}\\x{017b}\\x{0179}0-9_\\\']*)\\b' + 'name' : 'entity.name.function.catala_pl' + } + { + 'match' : '\\b([A-Z\\x{0104}\\x{0106}\\x{0118}\\x{0141}\\x{0143}\\x{00d3}\\x{015a}\\x{017b}\\x{0179}][a-z\\x{0105}\\x{0107}\\x{0119}\\x{0142}\\x{0144}\\x{00f3}\\x{015b}\\x{017c}\\x{017a}A-Z\\x{0104}\\x{0106}\\x{0118}\\x{0141}\\x{0143}\\x{00d3}\\x{015a}\\x{017b}\\x{0179}0-9_\\\']*)\\b' + 'name' : 'entity.name.class.catala_pl' + } + ] + } +} diff --git a/syntax_highlighting/pl/atom/package.json b/syntax_highlighting/pl/atom/package.json new file mode 100644 index 00000000..6cd971cd --- /dev/null +++ b/syntax_highlighting/pl/atom/package.json @@ -0,0 +1,18 @@ +{ + "name": "language-catala-pl", + "version": "1.0.0", + "description": "Polish syntax highlighting for the Catala language", + "engines": { + "atom": "*" + }, + "repository": { + "type": "git", + "url": "https://gitlab.inria.fr/verifisc/catala.git" + }, + "bugs": { + "url": "https://gitlab.inria.fr/verifisc/catala/issues" + }, + "dependencies": {}, + "license": "Apache" + } + \ No newline at end of file diff --git a/syntax_highlighting/pl/setup_atom.sh b/syntax_highlighting/pl/setup_atom.sh new file mode 100755 index 00000000..4ab816f5 --- /dev/null +++ b/syntax_highlighting/pl/setup_atom.sh @@ -0,0 +1,10 @@ +#! /usr/bin/env bash + +FILE=~/.atom/packages/catala_pl +SCRIPT=`realpath $0` +SCRIPTPATH=`dirname $SCRIPT` + +if [ ! -L "$FILE" ]; then + echo "Creating link" + ln -s -f $SCRIPTPATH/atom "$FILE" +fi From f50781cd676bc297a82c2f7b5ebfb219f6677171 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Sun, 16 May 2021 20:14:35 +0200 Subject: [PATCH 29/35] mark vscode as todo --- Makefile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index fe95feff..774c3fc3 100644 --- a/Makefile +++ b/Makefile @@ -102,9 +102,10 @@ vscode_en: ${CURDIR}/syntax_highlighting/en/setup_vscode.sh chmod +x $< $< -vscode_pl: ${CURDIR}/syntax_highlighting/pl/setup_vscode.sh - chmod +x $< - $< +# TODO +# vscode_pl: ${CURDIR}/syntax_highlighting/pl/setup_vscode.sh +# chmod +x $< +# $< vscode_nv: ${CURDIR}/syntax_highlighting/nv/setup_vscode.sh chmod +x $< From 68e2d5c541eba0c90ad40d39654a1aec3428e65f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Sun, 16 May 2021 20:22:53 +0200 Subject: [PATCH 30/35] change form of noun for consistency --- .../rozdzial_3.catala_pl | 12 ++++++------ src/catala/surface/lexer_pl.ml | 4 ++-- syntax_highlighting/pl/atom/grammars/catala_pl.cson | 2 +- syntax_highlighting/pl/catala_pl.iro | 2 +- .../pl/pygments/catala_pl_lexer/lexer.py | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl index 2ca01747..ddac7f88 100644 --- a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl +++ b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl @@ -11,7 +11,7 @@ a) nieruchomości, rzeczy ruchomych, prawa użytkowania wieczystego, własności ```catala deklaracja zakres UmowaSprzedazy: kontekst kwota typu pieniadze - kontekst stawka_podatku typu dziesietna + kontekst stawka_podatku typu dziesietny kontekst podatek typu pieniadze kontekst inne_prawa_majatkowe warunek @@ -42,7 +42,7 @@ mieszkalnego, spółdzielczego prawa do lokalu użytkowego oraz wynikających z ```catala deklaracja zakres UmowaZamianyLubDarowizny: kontekst kwota typu pieniadze - kontekst stawka_podatku typu dziesietna + kontekst stawka_podatku typu dziesietny kontekst podatek typu pieniadze kontekst inne_prawa_majatkowe warunek @@ -70,7 +70,7 @@ zakres UmowaZamianyLubDarowizny: ```catala deklaracja zakres OdplatneUzytkowanie: kontekst kwota typu pieniadze - kontekst stawka_podatku typu dziesietna + kontekst stawka_podatku typu dziesietny kontekst podatek typu pieniadze zakres OdplatneUzytkowanie: @@ -86,7 +86,7 @@ zakres OdplatneUzytkowanie: ```catala deklaracja zakres PozyczkaLubDepozytNieprawidlowy: kontekst kwota typu pieniadze - kontekst stawka_podatku typu dziesietna + kontekst stawka_podatku typu dziesietny kontekst podatek typu pieniadze zakres PozyczkaLubDepozytNieprawidlowy: @@ -104,7 +104,7 @@ a) na zabezpieczenie wierzytelności istniejących – od kwoty zabezpieczonej w ```catala deklaracja zakres Hipoteka: kontekst kwota typu pieniadze - kontekst stawka_podatku typu dziesietna + kontekst stawka_podatku typu dziesietny kontekst podatek typu pieniadze kontekst wysokosc_nieustalona warunek @@ -132,7 +132,7 @@ zakres Hipoteka: ```catala deklaracja zakres UmowaSpolki: kontekst kwota typu pieniadze - kontekst stawka_podatku typu dziesietna + kontekst stawka_podatku typu dziesietny kontekst podatek typu pieniadze zakres UmowaSpolki: diff --git a/src/catala/surface/lexer_pl.ml b/src/catala/surface/lexer_pl.ml index fde8586f..2ca56e45 100644 --- a/src/catala/surface/lexer_pl.ml +++ b/src/catala/surface/lexer_pl.ml @@ -37,7 +37,7 @@ let token_list : (string * token) list = ("calkowita", INTEGER); ("pieniadze", MONEY); ("tekst", TEXT); - ("dziesietna", DECIMAL); + ("dziesietny", DECIMAL); ("czas", DATE); ("czas trwania", DURATION); ("zerojedynkowy", BOOLEAN); @@ -150,7 +150,7 @@ let rec lex_code (lexbuf : lexbuf) : token = | "tekst" -> L.update_acc lexbuf; TEXT - | "dziesietna" -> + | "dziesietny" -> L.update_acc lexbuf; DECIMAL | "czas" -> diff --git a/syntax_highlighting/pl/atom/grammars/catala_pl.cson b/syntax_highlighting/pl/atom/grammars/catala_pl.cson index 7e90f266..d0feba71 100644 --- a/syntax_highlighting/pl/atom/grammars/catala_pl.cson +++ b/syntax_highlighting/pl/atom/grammars/catala_pl.cson @@ -94,7 +94,7 @@ 'name' : 'keyword.operator.catala_pl' } { - 'match' : '\\b(calkowita|zerojedynkowy|czas|czas trwania|pieniadze|warunek|tekst|dziesietna|suma)\\b' + 'match' : '\\b(calkowita|zerojedynkowy|czas|czas trwania|pieniadze|warunek|tekst|dziesietny|suma)\\b' 'name' : 'support.type.catala_pl' } { diff --git a/syntax_highlighting/pl/catala_pl.iro b/syntax_highlighting/pl/catala_pl.iro index 8749ea9c..6980629c 100644 --- a/syntax_highlighting/pl/catala_pl.iro +++ b/syntax_highlighting/pl/catala_pl.iro @@ -229,7 +229,7 @@ code : context { } : pattern { - regex \= \b(calkowita|zerojedynkowy|czas|czas trwania|pieniadze|warunek|tekst|dziesietna|suma)\b + regex \= \b(calkowita|zerojedynkowy|czas|czas trwania|pieniadze|warunek|tekst|dziesietny|suma)\b styles [] = .primitive; } diff --git a/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py b/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py index 20f72879..ac9b01ab 100644 --- a/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py +++ b/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py @@ -31,7 +31,7 @@ class CatalaPlLexer(RegexLexer): (u'\\b([0-9]+(,[0.9]*|))\\b', bygroups(Number.Integer)), (u'(\\-\\-|\\;|\\.|\\,|\\:|\\(|\\)|\\[|\\]|\\{|\\})', bygroups(Operator)), (u'(\\-\\>|\\+\\.|\\+\\@|\\+\\^|\\+\\$|\\+|\\-\\.|\\-\\@|\\-\\^|\\-\\$|\\-|\\*\\.|\\*\\@|\\*\\^|\\*\\$|\\*|/\\.|/\\@|/\\^|/\\$|/|\\!|>\\.|>=\\.|<=\\.|<\\.|>\\@|>=\\@|<=\\@|<\\@|>\\$|>=\\$|<=\\$|<\\$|>\\^|>=\\^|<=\\^|<\\^|>|>=|<=|<|=|nie|lub|xor|i|\\$|%|rok|miesiac|dzien)', bygroups(Operator)), - (u'\\b(calkowita|zerojedynkowy|czas|czas trwania|pieniadze|warunek|tekst|dziesietna|suma)\\b', bygroups(Keyword.Type)), + (u'\\b(calkowita|zerojedynkowy|czas|czas trwania|pieniadze|warunek|tekst|dziesietny|suma)\\b', bygroups(Keyword.Type)), (u'\\b([A-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u0179][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)(\\.)([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)\\b', bygroups(Name.Class, Operator, Name.Variable)), (u'\\b([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)(\\.)([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\'\\.]*)\\b', bygroups(Name.Variable, Operator, Text)), (u'\\b([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)\\b', bygroups(Name.Variable)), From b1ecf5abc9f6bfd0c252a4fdd0d659ed42aa9f9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Thu, 13 May 2021 19:00:33 +0200 Subject: [PATCH 31/35] begin diacritics --- .../rozdzial_3.catala_pl | 32 +++++++++---------- src/catala/surface/lexer_pl.ml | 4 +-- .../pl/atom/grammars/catala_pl.cson | 2 +- syntax_highlighting/pl/catala_pl.iro | 2 +- .../pl/pygments/catala_pl_lexer/lexer.py | 2 +- 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl index ddac7f88..39f86283 100644 --- a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl +++ b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl @@ -10,9 +10,9 @@ a) nieruchomości, rzeczy ruchomych, prawa użytkowania wieczystego, własności ```catala deklaracja zakres UmowaSprzedazy: - kontekst kwota typu pieniadze - kontekst stawka_podatku typu dziesietny - kontekst podatek typu pieniadze + kontekst kwota typu pieniądze + kontekst stawka typu dziesietny + kontekst podatek typu pieniądze kontekst inne_prawa_majatkowe warunek zakres UmowaSprzedazy: @@ -41,9 +41,9 @@ mieszkalnego, spółdzielczego prawa do lokalu użytkowego oraz wynikających z ```catala deklaracja zakres UmowaZamianyLubDarowizny: - kontekst kwota typu pieniadze - kontekst stawka_podatku typu dziesietny - kontekst podatek typu pieniadze + kontekst kwota typu pieniądze + kontekst stawka typu dziesietny + kontekst podatek typu pieniądze kontekst inne_prawa_majatkowe warunek zakres UmowaZamianyLubDarowizny: @@ -69,9 +69,9 @@ zakres UmowaZamianyLubDarowizny: ```catala deklaracja zakres OdplatneUzytkowanie: - kontekst kwota typu pieniadze - kontekst stawka_podatku typu dziesietny - kontekst podatek typu pieniadze + kontekst kwota typu pieniądze + kontekst stawka typu dziesietny + kontekst podatek typu pieniądze zakres OdplatneUzytkowanie: definicja podatek wynosi @@ -85,9 +85,9 @@ zakres OdplatneUzytkowanie: ```catala deklaracja zakres PozyczkaLubDepozytNieprawidlowy: - kontekst kwota typu pieniadze - kontekst stawka_podatku typu dziesietny - kontekst podatek typu pieniadze + kontekst kwota typu pieniądze + kontekst stawka typu dziesietny + kontekst podatek typu pieniądze zakres PozyczkaLubDepozytNieprawidlowy: definicja podatek wynosi @@ -103,9 +103,9 @@ a) na zabezpieczenie wierzytelności istniejących – od kwoty zabezpieczonej w ```catala deklaracja zakres Hipoteka: - kontekst kwota typu pieniadze + kontekst kwota typu pieniądze kontekst stawka_podatku typu dziesietny - kontekst podatek typu pieniadze + kontekst podatek typu pieniądze kontekst wysokosc_nieustalona warunek zakres Hipoteka: @@ -131,9 +131,9 @@ zakres Hipoteka: ```catala deklaracja zakres UmowaSpolki: - kontekst kwota typu pieniadze + kontekst kwota typu pieniądze kontekst stawka_podatku typu dziesietny - kontekst podatek typu pieniadze + kontekst podatek typu pieniądze zakres UmowaSpolki: definicja podatek wynosi diff --git a/src/catala/surface/lexer_pl.ml b/src/catala/surface/lexer_pl.ml index 2ca56e45..031674f4 100644 --- a/src/catala/surface/lexer_pl.ml +++ b/src/catala/surface/lexer_pl.ml @@ -35,7 +35,7 @@ let token_list : (string * token) list = ("kolekcja", COLLECTION); ("enumeracja", ENUM); ("calkowita", INTEGER); - ("pieniadze", MONEY); + ("pieniądze", MONEY); ("tekst", TEXT); ("dziesietny", DECIMAL); ("czas", DATE); @@ -144,7 +144,7 @@ let rec lex_code (lexbuf : lexbuf) : token = | "calkowita" -> L.update_acc lexbuf; INTEGER - | "pieniadze" -> + | "pieni", 0x0105, "dze" -> L.update_acc lexbuf; MONEY | "tekst" -> diff --git a/syntax_highlighting/pl/atom/grammars/catala_pl.cson b/syntax_highlighting/pl/atom/grammars/catala_pl.cson index d0feba71..bdaffc86 100644 --- a/syntax_highlighting/pl/atom/grammars/catala_pl.cson +++ b/syntax_highlighting/pl/atom/grammars/catala_pl.cson @@ -94,7 +94,7 @@ 'name' : 'keyword.operator.catala_pl' } { - 'match' : '\\b(calkowita|zerojedynkowy|czas|czas trwania|pieniadze|warunek|tekst|dziesietny|suma)\\b' + 'match' : '\\b(calkowita|zerojedynkowy|czas|czas trwania|pieni\\x{0105}dze|warunek|tekst|dziesietny|suma)\\b' 'name' : 'support.type.catala_pl' } { diff --git a/syntax_highlighting/pl/catala_pl.iro b/syntax_highlighting/pl/catala_pl.iro index 6980629c..afa83c90 100644 --- a/syntax_highlighting/pl/catala_pl.iro +++ b/syntax_highlighting/pl/catala_pl.iro @@ -229,7 +229,7 @@ code : context { } : pattern { - regex \= \b(calkowita|zerojedynkowy|czas|czas trwania|pieniadze|warunek|tekst|dziesietny|suma)\b + regex \= \b(calkowita|zerojedynkowy|czas|czas trwania|pieniądze|warunek|tekst|dziesietny|suma)\b styles [] = .primitive; } diff --git a/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py b/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py index ac9b01ab..f8265703 100644 --- a/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py +++ b/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py @@ -31,7 +31,7 @@ class CatalaPlLexer(RegexLexer): (u'\\b([0-9]+(,[0.9]*|))\\b', bygroups(Number.Integer)), (u'(\\-\\-|\\;|\\.|\\,|\\:|\\(|\\)|\\[|\\]|\\{|\\})', bygroups(Operator)), (u'(\\-\\>|\\+\\.|\\+\\@|\\+\\^|\\+\\$|\\+|\\-\\.|\\-\\@|\\-\\^|\\-\\$|\\-|\\*\\.|\\*\\@|\\*\\^|\\*\\$|\\*|/\\.|/\\@|/\\^|/\\$|/|\\!|>\\.|>=\\.|<=\\.|<\\.|>\\@|>=\\@|<=\\@|<\\@|>\\$|>=\\$|<=\\$|<\\$|>\\^|>=\\^|<=\\^|<\\^|>|>=|<=|<|=|nie|lub|xor|i|\\$|%|rok|miesiac|dzien)', bygroups(Operator)), - (u'\\b(calkowita|zerojedynkowy|czas|czas trwania|pieniadze|warunek|tekst|dziesietny|suma)\\b', bygroups(Keyword.Type)), + (u'\\b(calkowita|zerojedynkowy|czas|czas trwania|pieniądze|warunek|tekst|dziesietny|suma)\\b', bygroups(Keyword.Type)), (u'\\b([A-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u0179][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)(\\.)([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)\\b', bygroups(Name.Class, Operator, Name.Variable)), (u'\\b([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)(\\.)([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\'\\.]*)\\b', bygroups(Name.Variable, Operator, Text)), (u'\\b([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)\\b', bygroups(Name.Variable)), From 831f4c75ae1a23a8ad60d863a39de1a3d67ce12d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Sun, 16 May 2021 20:38:38 +0200 Subject: [PATCH 32/35] =?UTF-8?q?diacritics=20=C4=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rozdzial_3.catala_pl | 12 ++++++------ src/catala/surface/lexer_pl.ml | 4 ++-- syntax_highlighting/pl/atom/grammars/catala_pl.cson | 2 +- syntax_highlighting/pl/catala_pl.iro | 2 +- .../pl/pygments/catala_pl_lexer/lexer.py | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl index 39f86283..e04ae323 100644 --- a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl +++ b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl @@ -11,7 +11,7 @@ a) nieruchomości, rzeczy ruchomych, prawa użytkowania wieczystego, własności ```catala deklaracja zakres UmowaSprzedazy: kontekst kwota typu pieniądze - kontekst stawka typu dziesietny + kontekst stawka typu dziesiętny kontekst podatek typu pieniądze kontekst inne_prawa_majatkowe warunek @@ -42,7 +42,7 @@ mieszkalnego, spółdzielczego prawa do lokalu użytkowego oraz wynikających z ```catala deklaracja zakres UmowaZamianyLubDarowizny: kontekst kwota typu pieniądze - kontekst stawka typu dziesietny + kontekst stawka typu dziesiętny kontekst podatek typu pieniądze kontekst inne_prawa_majatkowe warunek @@ -70,7 +70,7 @@ zakres UmowaZamianyLubDarowizny: ```catala deklaracja zakres OdplatneUzytkowanie: kontekst kwota typu pieniądze - kontekst stawka typu dziesietny + kontekst stawka typu dziesiętny kontekst podatek typu pieniądze zakres OdplatneUzytkowanie: @@ -86,7 +86,7 @@ zakres OdplatneUzytkowanie: ```catala deklaracja zakres PozyczkaLubDepozytNieprawidlowy: kontekst kwota typu pieniądze - kontekst stawka typu dziesietny + kontekst stawka typu dziesiętny kontekst podatek typu pieniądze zakres PozyczkaLubDepozytNieprawidlowy: @@ -104,7 +104,7 @@ a) na zabezpieczenie wierzytelności istniejących – od kwoty zabezpieczonej w ```catala deklaracja zakres Hipoteka: kontekst kwota typu pieniądze - kontekst stawka_podatku typu dziesietny + kontekst stawka_podatku typu dziesiętny kontekst podatek typu pieniądze kontekst wysokosc_nieustalona warunek @@ -132,7 +132,7 @@ zakres Hipoteka: ```catala deklaracja zakres UmowaSpolki: kontekst kwota typu pieniądze - kontekst stawka_podatku typu dziesietny + kontekst stawka_podatku typu dziesiętny kontekst podatek typu pieniądze zakres UmowaSpolki: diff --git a/src/catala/surface/lexer_pl.ml b/src/catala/surface/lexer_pl.ml index 031674f4..930f17f9 100644 --- a/src/catala/surface/lexer_pl.ml +++ b/src/catala/surface/lexer_pl.ml @@ -37,7 +37,7 @@ let token_list : (string * token) list = ("calkowita", INTEGER); ("pieniądze", MONEY); ("tekst", TEXT); - ("dziesietny", DECIMAL); + ("dziesiętny", DECIMAL); ("czas", DATE); ("czas trwania", DURATION); ("zerojedynkowy", BOOLEAN); @@ -150,7 +150,7 @@ let rec lex_code (lexbuf : lexbuf) : token = | "tekst" -> L.update_acc lexbuf; TEXT - | "dziesietny" -> + | "dziesi", 0x0119, "tny" -> L.update_acc lexbuf; DECIMAL | "czas" -> diff --git a/syntax_highlighting/pl/atom/grammars/catala_pl.cson b/syntax_highlighting/pl/atom/grammars/catala_pl.cson index bdaffc86..fa733302 100644 --- a/syntax_highlighting/pl/atom/grammars/catala_pl.cson +++ b/syntax_highlighting/pl/atom/grammars/catala_pl.cson @@ -94,7 +94,7 @@ 'name' : 'keyword.operator.catala_pl' } { - 'match' : '\\b(calkowita|zerojedynkowy|czas|czas trwania|pieni\\x{0105}dze|warunek|tekst|dziesietny|suma)\\b' + 'match' : '\\b(calkowita|zerojedynkowy|czas|czas trwania|pieni\\x{0105}dze|warunek|tekst|dziesi\\x{0119}tny|suma)\\b' 'name' : 'support.type.catala_pl' } { diff --git a/syntax_highlighting/pl/catala_pl.iro b/syntax_highlighting/pl/catala_pl.iro index afa83c90..c2634d0d 100644 --- a/syntax_highlighting/pl/catala_pl.iro +++ b/syntax_highlighting/pl/catala_pl.iro @@ -229,7 +229,7 @@ code : context { } : pattern { - regex \= \b(calkowita|zerojedynkowy|czas|czas trwania|pieniądze|warunek|tekst|dziesietny|suma)\b + regex \= \b(calkowita|zerojedynkowy|czas|czas trwania|pieniądze|warunek|tekst|dziesiętny|suma)\b styles [] = .primitive; } diff --git a/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py b/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py index f8265703..1d6996e0 100644 --- a/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py +++ b/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py @@ -31,7 +31,7 @@ class CatalaPlLexer(RegexLexer): (u'\\b([0-9]+(,[0.9]*|))\\b', bygroups(Number.Integer)), (u'(\\-\\-|\\;|\\.|\\,|\\:|\\(|\\)|\\[|\\]|\\{|\\})', bygroups(Operator)), (u'(\\-\\>|\\+\\.|\\+\\@|\\+\\^|\\+\\$|\\+|\\-\\.|\\-\\@|\\-\\^|\\-\\$|\\-|\\*\\.|\\*\\@|\\*\\^|\\*\\$|\\*|/\\.|/\\@|/\\^|/\\$|/|\\!|>\\.|>=\\.|<=\\.|<\\.|>\\@|>=\\@|<=\\@|<\\@|>\\$|>=\\$|<=\\$|<\\$|>\\^|>=\\^|<=\\^|<\\^|>|>=|<=|<|=|nie|lub|xor|i|\\$|%|rok|miesiac|dzien)', bygroups(Operator)), - (u'\\b(calkowita|zerojedynkowy|czas|czas trwania|pieniądze|warunek|tekst|dziesietny|suma)\\b', bygroups(Keyword.Type)), + (u'\\b(calkowita|zerojedynkowy|czas|czas trwania|pieniądze|warunek|tekst|dziesi\u0119tny|suma)\\b', bygroups(Keyword.Type)), (u'\\b([A-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u0179][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)(\\.)([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)\\b', bygroups(Name.Class, Operator, Name.Variable)), (u'\\b([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)(\\.)([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\'\\.]*)\\b', bygroups(Name.Variable, Operator, Text)), (u'\\b([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)\\b', bygroups(Name.Variable)), From 44af0acdb3ebb5e2304091dee0736a56cc62ab09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Sun, 16 May 2021 21:07:14 +0200 Subject: [PATCH 33/35] visible diacritics done --- .../rozdzial_3.catala_pl | 6 +++--- src/catala/surface/lexer_pl.ml | 4 ++-- syntax_highlighting/pl/atom/grammars/catala_pl.cson | 2 +- syntax_highlighting/pl/catala_pl.iro | 2 +- syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl index e04ae323..caaa415e 100644 --- a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl +++ b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl @@ -28,7 +28,7 @@ zakres UmowaSprzedazy: b) innych praw majątkowych – 1%; ```catala zakres UmowaSprzedazy: - wyjatek a7_u1_p1_ppa + wyjątek a7_u1_p1_ppa definicja stawka_podatku pod warunkiem inne_prawa_majatkowe konsekwencja wynosi 1% @@ -59,7 +59,7 @@ b) przy przeniesieniu własności innych praw majątkowych – 1%; ```catala zakres UmowaZamianyLubDarowizny: - wyjatek a7_u1_p2_ppa + wyjątek a7_u1_p2_ppa definicja stawka_podatku pod warunkiem inne_prawa_majatkowe konsekwencja wynosi 1% @@ -121,7 +121,7 @@ b) na zabezpieczenie wierzytelności o wysokości nieustalonej – 19 zł; ```catala zakres Hipoteka: - wyjatek a7_u1_p7_ppa + wyjątek a7_u1_p7_ppa definicja podatek pod warunkiem wysokosc_nieustalona konsekwencja wynosi 19 PLN diff --git a/src/catala/surface/lexer_pl.ml b/src/catala/surface/lexer_pl.ml index 930f17f9..6f30dc8a 100644 --- a/src/catala/surface/lexer_pl.ml +++ b/src/catala/surface/lexer_pl.ml @@ -45,7 +45,7 @@ let token_list : (string * token) list = ("spelnione", FILLED); ("definicja", DEFINITION); ("etykieta", LABEL); - ("wyjatek", EXCEPTION); + ("wyjątek", EXCEPTION); ("wynosi", DEFINED_AS); ("pasuje", MATCH); ("ze wzorem", WITH); @@ -174,7 +174,7 @@ let rec lex_code (lexbuf : lexbuf) : token = | "etykieta" -> L.update_acc lexbuf; LABEL - | "wyjatek" -> + | "wyj", 0x0105, "tek" -> L.update_acc lexbuf; EXCEPTION | "wynosi" -> diff --git a/syntax_highlighting/pl/atom/grammars/catala_pl.cson b/syntax_highlighting/pl/atom/grammars/catala_pl.cson index fa733302..0bbe10d1 100644 --- a/syntax_highlighting/pl/atom/grammars/catala_pl.cson +++ b/syntax_highlighting/pl/atom/grammars/catala_pl.cson @@ -70,7 +70,7 @@ 'name' : 'keyword.control.catala_pl' } { - 'match' : '\\b(zakres|zalezy\\s+od|deklaracja|kolekcja|typu|opcjonalny|struktura|enumeracja|kontekst|zasada|pod\\s+warunkuem|czas|konsekwencja|spelnione|wynosi|asercja|definicja|etykieta|wyjatek)\\b' + 'match' : '\\b(zakres|zalezy\\s+od|deklaracja|kolekcja|typu|opcjonalny|struktura|enumeracja|kontekst|zasada|pod\\s+warunkuem|czas|konsekwencja|spelnione|wynosi|asercja|definicja|etykieta|wyj\x{0105}tek)\\b' 'name' : 'keyword.other.catala_pl' } { diff --git a/syntax_highlighting/pl/catala_pl.iro b/syntax_highlighting/pl/catala_pl.iro index c2634d0d..3ac8e796 100644 --- a/syntax_highlighting/pl/catala_pl.iro +++ b/syntax_highlighting/pl/catala_pl.iro @@ -197,7 +197,7 @@ code : context { } : pattern { - regex \= \b(zakres|zalezy\s+od|deklaracja|kolekcja|typu|opcjonalny|struktura|enumeracja|kontekst|zasada|pod\s+warunkuem|czas|konsekwencja|spelnione|wynosi|asercja|definicja|etykieta|wyjatek)\b + regex \= \b(zakres|zalezy\s+od|deklaracja|kolekcja|typu|opcjonalny|struktura|enumeracja|kontekst|zasada|pod\s+warunkuem|czas|konsekwencja|spelnione|wynosi|asercja|definicja|etykieta|wyjątek)\b styles [] = .keyword_rule ; } diff --git a/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py b/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py index 1d6996e0..76e804a9 100644 --- a/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py +++ b/syntax_highlighting/pl/pygments/catala_pl_lexer/lexer.py @@ -25,7 +25,7 @@ class CatalaPlLexer(RegexLexer): (u'(\\s*\\#.*$)', bygroups(Comment.Single)), (u'(kontekst)(\\s+)([a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017a][a-z\u0105\u0107\u0119\u0142\u0144\xf3\u015b\u017c\u017aA-Z\u0104\u0106\u0118\u0141\u0143\xd3\u015a\u017b\u01790-9_\\\']*)', bygroups(Keyword.Declaration, Text, Name.Variable)), (u'\\b(pasuje|ze\\s+wzorem|staloprzecinkowa|przez|malejacy|rosnacy|rozna|wraz z|mamy|w|takich ze|istnieje|dla|wszystkie|z|jezeli|wtedy|inaczej|poczatkowy)\\b', bygroups(Keyword.Reserved)), - (u'\\b(zakres|zalezy\\s+od|deklaracja|kolekcja|typu|opcjonalny|struktura|enumeracja|kontekst|zasada|pod\\s+warunkuem|czas|konsekwencja|spelnione|wynosi|asercja|definicja|etykieta|wyjatek)\\b', bygroups(Keyword.Declaration)), + (u'\\b(zakres|zalezy\\s+od|deklaracja|kolekcja|typu|opcjonalny|struktura|enumeracja|kontekst|zasada|pod\\s+warunkuem|czas|konsekwencja|spelnione|wynosi|asercja|definicja|etykieta|wyj\u0105tek)\\b', bygroups(Keyword.Declaration)), (u'(\\|[0-9]+/[0-9]+/[0-9]+\\|)', bygroups(Number.Integer)), (u'\\b(prawda|falsz)\\b', bygroups(Keyword.Constant)), (u'\\b([0-9]+(,[0.9]*|))\\b', bygroups(Number.Integer)), From 36093c885b202a521c4634c28cdfc8d10d548885 Mon Sep 17 00:00:00 2001 From: Denis Merigoux Date: Mon, 17 May 2021 10:49:05 +0200 Subject: [PATCH 34/35] Added context variable declaration --- .../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl index caaa415e..4a8a13b2 100644 --- a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl +++ b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl @@ -14,6 +14,7 @@ deklaracja zakres UmowaSprzedazy: kontekst stawka typu dziesiętny kontekst podatek typu pieniądze kontekst inne_prawa_majatkowe warunek + kontekst stawka_podatku typu dziesiętny zakres UmowaSprzedazy: definicja podatek wynosi @@ -45,6 +46,7 @@ deklaracja zakres UmowaZamianyLubDarowizny: kontekst stawka typu dziesiętny kontekst podatek typu pieniądze kontekst inne_prawa_majatkowe warunek + kontekst stawka_podatku typu dziesiętny zakres UmowaZamianyLubDarowizny: definicja podatek wynosi @@ -72,6 +74,7 @@ deklaracja zakres OdplatneUzytkowanie: kontekst kwota typu pieniądze kontekst stawka typu dziesiętny kontekst podatek typu pieniądze + kontekst stawka_podatku typu dziesiętny zakres OdplatneUzytkowanie: definicja podatek wynosi @@ -88,6 +91,7 @@ deklaracja zakres PozyczkaLubDepozytNieprawidlowy: kontekst kwota typu pieniądze kontekst stawka typu dziesiętny kontekst podatek typu pieniądze + kontekst stawka_podatku typu dziesiętny zakres PozyczkaLubDepozytNieprawidlowy: definicja podatek wynosi From 7d05d7682524e3baad11d1caf9b58a7f5c27861e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartosz=20Wo=C5=BAniak?= Date: Mon, 17 May 2021 18:14:00 +0200 Subject: [PATCH 35/35] cleanup --- .../rozdzial_3.catala_pl | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl index 4a8a13b2..c3b13e4a 100644 --- a/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl +++ b/examples/polish_taxes/podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl @@ -11,10 +11,9 @@ a) nieruchomości, rzeczy ruchomych, prawa użytkowania wieczystego, własności ```catala deklaracja zakres UmowaSprzedazy: kontekst kwota typu pieniądze - kontekst stawka typu dziesiętny - kontekst podatek typu pieniądze kontekst inne_prawa_majatkowe warunek kontekst stawka_podatku typu dziesiętny + kontekst podatek typu pieniądze zakres UmowaSprzedazy: definicja podatek wynosi @@ -43,10 +42,9 @@ mieszkalnego, spółdzielczego prawa do lokalu użytkowego oraz wynikających z ```catala deklaracja zakres UmowaZamianyLubDarowizny: kontekst kwota typu pieniądze - kontekst stawka typu dziesiętny - kontekst podatek typu pieniądze kontekst inne_prawa_majatkowe warunek kontekst stawka_podatku typu dziesiętny + kontekst podatek typu pieniądze zakres UmowaZamianyLubDarowizny: definicja podatek wynosi @@ -72,9 +70,8 @@ zakres UmowaZamianyLubDarowizny: ```catala deklaracja zakres OdplatneUzytkowanie: kontekst kwota typu pieniądze - kontekst stawka typu dziesiętny - kontekst podatek typu pieniądze kontekst stawka_podatku typu dziesiętny + kontekst podatek typu pieniądze zakres OdplatneUzytkowanie: definicja podatek wynosi @@ -89,9 +86,8 @@ zakres OdplatneUzytkowanie: ```catala deklaracja zakres PozyczkaLubDepozytNieprawidlowy: kontekst kwota typu pieniądze - kontekst stawka typu dziesiętny - kontekst podatek typu pieniądze kontekst stawka_podatku typu dziesiętny + kontekst podatek typu pieniądze zakres PozyczkaLubDepozytNieprawidlowy: definicja podatek wynosi @@ -108,9 +104,9 @@ a) na zabezpieczenie wierzytelności istniejących – od kwoty zabezpieczonej w ```catala deklaracja zakres Hipoteka: kontekst kwota typu pieniądze + kontekst wysokosc_nieustalona warunek kontekst stawka_podatku typu dziesiętny kontekst podatek typu pieniądze - kontekst wysokosc_nieustalona warunek zakres Hipoteka: etykieta a7_u1_p7_ppa