diff --git a/doc/tokens.txt b/doc/tokens.txt index 6379a82..9b93e30 100644 --- a/doc/tokens.txt +++ b/doc/tokens.txt @@ -1,137 +1,149 @@ -21 : e -22 : π -23 : : -25 : ? -2C : ; -2D : ×10 -2E : , -30 : 0 -31 : 1 -32 : 2 -33 : 3 -34 : 4 -35 : 5 -36 : 6 -37 : 7 -38 : 8 -39 : 9 -40 : M -41 : Rép (Ans) -42 : A -43 : B -44 : C -45 : D -46 : E -47 : F -48 : x -49 : y -4A : Pré-Rép -4C : θ -60 : ( -68 : Abs( -69 : Rnd( -6C : sinh( -6D : cosh( -6E : tanh( -6F : sinh⁻¹( -70 : cosh⁻¹( -71 : tanh⁻¹( -72 : e^ -73 : 10^ -74 : √( -75 : ln( -76 : ³√( -77 : sin( -78 : cos( -79 : tan( -7A : Arcsin( -7B : Arccos( -7C : Arctan( -7D : log( -7E : Pol -7F : Rec -83 : Ent( -84 : EntEx( -87 : RanInt#( -88 : PGCD( -89 : PPCM( -8A : Arond( -A5 : = -A6 : + -A7 : - -A8 : × -A9 : ÷ -AA : ⊢ -AD : P -AE : C -C0 : - -C8 : ⌋ -C9 : ^( -CA : [x]√( -D0 : ) -D4 : ⁻¹ -D5 : ² -D6 : ³ -D7 : % -D8 : ! -D9 : ° -DA : ʳ -DB : ᵍ -DC : ° -DD : E -DE : P -DF : T -E0 : G -E1 : M -E2 : k -E3 : m -E4 : μ -E5 : n -E6 : p -E7 : f -E9 : ▶Simp -F901 : end of line -F902 : end of program -F903 : nop / empty line -F905 ... 00 : Avancer de ... -F906 ... 00 : Tourner de ↺ ... -F907 ... 00 : S'orienter à ... -F908 ... 00 ... 00 : Aller à x=... ; y=... -F909 : Stylo écrit -F90A : Stylo relevé -F90B ... 00 ... 00 : ... → ... (mettre var à) -F90C ... 00 : ? → ... (Demander valeur) -F90D3100 : "Oui" -F90D3200 : "Non" -F90D3300 : "Nombre?" -F90D3400 : "Résultat:" -F90E ... 00 : Afficher résult ... -F90F3100 : Style Flèche -F90F3200 : Style Croix -F910 : Attendre -F911 ... 00 : Répéter ... -F912 : ⤴ (end of Répéter) -F913 ... 00 : Répéter jusqu'à ... -F914 : ⤴ (end of Répéter jusqu'à) -F915 ... 00 : Si ... Alors [... Fin] -F916 : Fin (end of Si/Alors) -F917 ... 00 : Si ... Alors [... Sinon ... Fin] -F918 : Sinon -F919 : Fin (end of Si/Alors/Sinon) -FB01 : < -FB02 : > -FB03 : ≠ -FB04 : ≤ -FB05 : ≥ -FB10 : →M -FB12 : →A -FB13 : →B -FB14 : →C -FB15 : →D -FB16 : →E -FB17 : →F -FB18 : →x -FB19 : →y -FB1A : M+ -FB1B : M- -FD18 : Ran# +Supported tokens: + +Legend: + Hexadecimal -- Internal code, also visible in QR code URL + Description -- On-calc notation associated with token + Interpreter -- Whether interpreter supports the feature + BitcodeLexer -- Whether the URL lexer supports the token + TextLexer -- Whether the text lexer supports the token + +Hexadecimal Description Feature BitcodeLexer TextLexer +------------------------------------------------------------------------------ +00 End of parameter Yes Yes Yes +21 e Yes Yes - +22 π Yes Yes - +23 : - - - +25 ? - - - +2C ; - - - +2D ×10 Yes Yes Yes +2E , Yes Yes Yes +30 0 Yes Yes Yes +31 1 Yes Yes Yes +32 2 Yes Yes Yes +33 3 Yes Yes Yes +34 4 Yes Yes Yes +35 5 Yes Yes Yes +36 6 Yes Yes Yes +37 7 Yes Yes Yes +38 8 Yes Yes Yes +39 9 Yes Yes Yes +40 M Yes Yes Yes +41 Rép (Ans) - - - +42 A Yes Yes Yes +43 B Yes Yes Yes +44 C Yes Yes Yes +45 D Yes Yes Yes +46 E Yes Yes Yes +47 F Yes Yes Yes +48 x Yes Yes Yes +49 y Yes Yes Yes +4A Pré-Rép - - - +4C θ Yes - - +60 ( Yes Yes Yes +68 Abs( Yes Yes - +69 Rnd( Yes Yes - +6C sinh( Yes Yes - +6D cosh( Yes Yes - +6E tanh( Yes Yes - +6F sinh⁻¹( Yes Yes - +70 cosh⁻¹( Yes Yes - +71 tanh⁻¹( Yes Yes - +72 e^ Yes - - +73 10^ Yes - - +74 √( Yes Yes - +75 ln( Yes Yes - +76 ³√( Yes Yes - +77 sin( Yes Yes - +78 cos( Yes Yes - +79 tan( Yes Yes - +7A Arcsin( Yes Yes - +7B Arccos( Yes Yes - +7C Arctan( Yes Yes - +7D log( Yes Yes - +7E Pol - - - +7F Rec - - - +83 Ent( Yes Yes - +84 EntEx( Yes Yes - +87 RanInt#( Yes Yes - +88 PGCD( - - - +89 PPCM( - - - +8A Arond( Yes Yes - +A5 = Yes Yes Yes +A6 + Yes Yes Yes +A7 - Yes Yes Yes +A8 × Yes Yes Yes +A9 ÷ Yes Yes Yes +AA ⊢ - - - +AD P - - - +AE C - - - +C0 - Yes Yes Yes +C8 ⌋ - - - +C9 ^( - - - +CA [x]√( - - - +D0 ) Yes Yes Yes +D4 ⁻¹ - - - +D5 ² - - - +D6 ³ - - - +D7 % Yes Yes Yes +D8 ! - - - +D9 ° - - - +DA ʳ - - - +DB ᵍ - - - +DC ° - - - +DD E - - - +DE P - - - +DF T - - - +E0 G - - - +E1 M - - - +E2 k - - - +E3 m - - - +E4 μ - - - +E5 n - - - +E6 p - - - +E7 f - - - +E9 ▶Simp - - - +F901 end of line Yes Yes Yes +F902 end of program Yes Yes Yes +F903 empty line - - - +F905...00 Avancer de ... Yes Yes Yes +F906...00 Tourner de ↺ ... Yes Yes Yes +F907...00 S'orienter à ... Yes Yes Yes +F908...00...00 Aller à x=...; y=... Yes Yes Yes +F909 Stylo écrit Yes Yes Yes +F90A Stylo relevé Yes Yes Yes +F90B...00...00 ...→... (Mettre var à) Yes Yes Yes +F90C...00 : ?→... (Demander valeur) - - - +F90D3100 "Oui" - - - +F90D3200 "Non" - - - +F90D3300 "Nombre?" - - - +F90D3400 "Résultat:" - - - +F90E...00 Afficher résult ... Yes Yes Yes +F90F3100 Style Flèche - - - +F90F3200 Style Croix - - - +F910 Attendre Yes Yes Yes +F911...00 Répéter ... Yes Yes Yes +F912 (end of Répéter) Yes Yes Yes +F913...00 Répéter jusqu'à ... Yes Yes Yes +F914 (end of Répéter jusqu'à) Yes Yes Yes +F915...00 Si ... Alors Yes Yes Yes +F916 (end of Si/Alors) Yes Yes Yes +F917...00 Si ... Alors ... Sinon Yes Yes Yes +F918 Sinon Yes Yes Yes +F919 (end of Si/Alors/Sinon) Yes Yes Yes +FB01 < Yes Yes Yes +FB02 > Yes Yes Yes +FB03 ≠ Yes Yes Yes +FB04 ≤ Yes Yes Yes +FB05 ≥ Yes Yes Yes +FB10 →M - - - +FB12 →A - - - +FB13 →B - - - +FB14 →C - - - +FB15 →D - - - +FB16 →E - - - +FB17 →F - - - +FB18 →x - - - +FB19 →y - - - +FB1A M+ - - - +FB1B M- - - - +FD18 Ran# - - - diff --git a/fx92.py b/fx92.py index 344e162..0618ea1 100755 --- a/fx92.py +++ b/fx92.py @@ -3,11 +3,11 @@ import sys import getopt -from parser import Parser -from lexer import UrlLexer, TextLexer -from printer import print_ast -from drawing import Window, InterruptException -from interpreter import Context +from fx92.parser import Parser +from fx92.lexer import UrlLexer, TextLexer +from fx92.printer import print_ast +from fx92.drawing import Window, InterruptException +from fx92.interpreter import Context #--- # Main program diff --git a/fx92/__init__.py b/fx92/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ast.py b/fx92/ast.py similarity index 100% rename from ast.py rename to fx92/ast.py diff --git a/drawing.py b/fx92/drawing.py similarity index 100% rename from drawing.py rename to fx92/drawing.py diff --git a/interpreter.py b/fx92/interpreter.py similarity index 99% rename from interpreter.py rename to fx92/interpreter.py index df4ea01..59e8080 100644 --- a/interpreter.py +++ b/fx92/interpreter.py @@ -1,6 +1,6 @@ # fx-92 Scientifique Collège+ language interpreter: AST interpreter -from ast import N, Node +from fx92.ast import N, Node import math class Context: diff --git a/lexer.py b/fx92/lexer.py similarity index 100% rename from lexer.py rename to fx92/lexer.py diff --git a/parser.py b/fx92/parser.py similarity index 99% rename from parser.py rename to fx92/parser.py index 400c996..9438c59 100644 --- a/parser.py +++ b/fx92/parser.py @@ -1,8 +1,8 @@ # fx-92 Scientifique Collège+ language interpreter: Syntactic analysis import re -from lexer import T, Token, BitcodeLexer -from ast import N, Node +from fx92.lexer import T, Token, BitcodeLexer +from fx92.ast import N, Node #--- # LL(1) parser diff --git a/printer.py b/fx92/printer.py similarity index 98% rename from printer.py rename to fx92/printer.py index 0929d0c..768b9b9 100644 --- a/printer.py +++ b/fx92/printer.py @@ -1,6 +1,6 @@ # fx-92 Scientifique Collège+ language interpreter: AST printer -from ast import N, Node +from fx92.ast import N, Node #--- # Message definitions