|
|
1 týždeň pred | |
|---|---|---|
| .. | ||
| tests | 1 týždeň pred | |
| README.md | 1 týždeň pred | |
| blaise_pascal.atg | 1 týždeň pred | |
| build.sh | 1 týždeň pred | |
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:
statement: assignment | ProcedureCall factored into
AssignmentOrProcedureCall (duplicate CASE labels — uncompilable).designator: dropped "(" qualident ")" (hijacked call parens).qualident: [ ident "." ] ident rewritten as
ident { "." ident } (optional-prefix lookahead trap).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.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).
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).