An fx-92 Scientifique Collège+ algorithmic interpreter for PC.
Go to file
Lephe ff6013b603
parser: allow semicolons to finish arguments early
Similarly to how parentheses are omitted at the end of commands, this
change allows them to be omitted at the end of function arguments.
Notice however than this omission is *ambiguous* when the parser does
not know in advance the number of arguments.

  GCD(Ent(x;y -> GCD(Ent(x;y))
              -> GCD(Ent(x);y)

The fx-92 SC+ parser knows the number of arguments for each function,
and will use the second interpretation, because Ent() has one argument
and GCD() has two. This interpreter, however, uses a generic extensible
construction for function calls and cannot decide on this ground. The
current interpretation is the first.
2019-10-26 09:55:59 +02:00
doc update atomically (like a bomb) 2019-10-25 13:38:10 +02:00
fx92 parser: allow semicolons to finish arguments early 2019-10-26 09:55:59 +02:00
tests update atomically (like a bomb) 2019-10-25 13:38:10 +02:00
.gitignore initial commit: most of the lexing and parsing work 2019-09-30 11:29:05 +02:00
README.md add a README file 2019-10-09 07:09:35 +02:00
fx92.py update atomically (like a bomb) 2019-10-25 13:38:10 +02:00
tests.py allow <sign><function> atoms 2019-10-06 10:57:58 +02:00

README.md

Python-based fx-92 Scientifique Collège+ interpreter

This is an alternate imlementation of the fx-92 SC+ Algorithmic application. It interprets programs read from QR code URLs or text files, and renders images using the SDL.

Requirements:

  • Python ≥ 3.5 (may work with older versions)
  • PySDL2 (pip3 install --user PySDL2)

Running programs

To run programs, execute fx92.py and specify an input file:

./fx92.py [-s|-u] <input file> [options...]
  • If the input file contains text instructions (for example goto 12,35), specify -s (this is the default).
  • If the input file contains a QR code URL (for example https://...F908313200333500), specify -u.

The input can also be set to -, in which case the interpreter reads from standard input. Typical use case is for URLs:

echo -n "F908313200333500" | ./fx92.py -u -

Output options

  • --scale <n> lets you set the (integer) scaling ratio of the output.
  • --save <bmp> will save a screenshot of the output to the designated file.
  • --quiet will "hide" the window while executing. (At the moment the window is still shown, but closed immediately, due to SDL subtleties.)

Tests

A few units tests are provided. Run tests.py to execute them.