Eric Streit 901e1e4366 Blaise validator pilot (grammar, build, tests) 1 týždeň pred
..
tests 901e1e4366 Blaise validator pilot (grammar, build, tests) 1 týždeň pred
README.md 901e1e4366 Blaise validator pilot (grammar, build, tests) 1 týždeň pred
blaise_pascal.atg 901e1e4366 Blaise validator pilot (grammar, build, tests) 1 týždeň pred
build.sh 901e1e4366 Blaise validator pilot (grammar, build, tests) 1 týždeň pred

README.md

Blaise validator pilot

blaise_pascal.atg is byte-identical to the classic-Oberon grammar (Grammars/Oberon-grammar/original_oberon.atg) apart from its tag line — despite the name, it describes Oberon, not Pascal. It needed the same 4 fixes as the Oberon-07 pilot to build with Coco/R V1.53 (CR) and GNU Modula-2 (gm2 -fiso), all diagnosed against ulmo (Ulm Oberon) as oracle:

  1. statement: assignment | ProcedureCall factored into AssignmentOrProcedureCall (duplicate CASE labels — uncompilable).
  2. designator: dropped "(" qualident ")" (hijacked call parens).
  3. qualident: [ ident "." ] ident rewritten as ident { "." ident } (optional-prefix lookahead trap).
  4. real requires post-dot digits + CONTEXT ("..") on integers (the 2..3 lexer trap).

(No FOR production added: like Oberon-07, ulmo rejects FOR, so grammar and oracle agree.)

Two benign LL(1) warnings remain. Note: ulmo's backend aborts with an OberonAMD64.Pass2 assertion on every successful parse in this environment, so it serves as a frontend-only oracle (its ** error lines); voc independently compiles tests/deep.Mod clean.

Build

./build.sh        # -> build/Blaise (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).

Differential results (Blaise vs ulmo)

19 accept probes + tests/deep.Mod (records, pointers, nested recursion, CASE ranges, hex/reals/strings): 0 false positives. 9 broken mutants: 0 missed, positions close. voc quirks do not apply here (ulmo is the oracle); the one systematic divergence is WITH bare fields, which ulmo rejects while the validator accepts (lenient direction, same as the Oberon-07 pilot).