Eric Streit 259f259ba8 Pascal + TurboPascal3 validator pilots (grammars, builds, tests) 4 dagen geleden
..
tests 259f259ba8 Pascal + TurboPascal3 validator pilots (grammars, builds, tests) 4 dagen geleden
README.md 259f259ba8 Pascal + TurboPascal3 validator pilots (grammars, builds, tests) 4 dagen geleden
build.sh 259f259ba8 Pascal + TurboPascal3 validator pilots (grammars, builds, tests) 4 dagen geleden
turbo_pascal3.atg 259f259ba8 Pascal + TurboPascal3 validator pilots (grammars, builds, tests) 4 dagen geleden

README.md

Turbo Pascal 3 validator pilot

turbo_pascal3.atg is byte-identical to the standard-Pascal grammar apart from its tag line, so it starts from the same base plus three Turbo extensions (all diagnosed against fpc -Mtp as oracle):

  1. IGNORE CASE moved right after COMPILER (same toolchain requirement as the standard grammar).
  2. $ hexadecimal literals ($FF): new hexDigit set plus a "$" hexDigit { hexDigit } integer alternative.
  3. ELSE in CASE: CaseList gains [ "ELSE" Statement ] (standard Pascal has none; Turbo and fpc -Mtp accept it).

Two benign LL(1) warnings remain (dangling-ELSE family).

Build

./build.sh        # -> build/TP3 (build/ is git-ignored)

Needs CR (Coco/R), gm2 -fiso, the parser.frm/scanner.frm frames and FileIO.def/.mod — all resolved from the environment with sensible defaults (CRFRAMES, M2LIB, CR, GM2). Note: link via the two-step module list (-fgen-module-list then -fuse-list); a single-step link trips over pre-existing errors in this gm2 build's own ISO library .def files.

Differential results (TP3 vs fpc -Mtp)

Accept battery + tests/deep.pas (adds STRING, + concat, $ hex, CASE..ELSE over the standard set): 0 false positives. Broken mutants: 0 missed, positions close.