|
|
il y a 1 semaine | |
|---|---|---|
| .. | ||
| README.md | il y a 1 semaine | |
| corpus.sh | il y a 1 semaine | |
Runs the V3 compiler (compiler/M2) over a corpus of standard
Modula-2 sources and reports compile coverage — unlike
tools/topspeed-grammar, which runs the sidecar grammar.
./corpus.sh [corpus-dir ...]
# default: gm2 testsuite pim/pass + iso/run/pass
Each source is copied into a scratch tree (so its .LST listing never
touches the corpus) and compiled on its own. A file with 0 errors
is a pass. Failures are split into:
M2 died (rc ≥ 128): a real compiler bug;StrIO/NumberIO/STextIO/…), so the undeclared
identifiers are expected, not a language gap;A "pass" is syntactic+semantic cleanup, not a linkable image (many
testsuite files are DEFINITION/IMPLEMENTATION modules with no program;
V3 reports those as Incorrect source but with 0 errors).
An IMPLEMENTATION file is compiled together with its sibling
DEFINITION (same basename, .def/.DEF) when present, and with the
DEFINITION of every module it imports, searched in the source directory
and in the colon-separated $V3_LIBS directories — so cross-module
imports resolve. E.g.:
G=$HOME/bin/Modula2/Gm2/lib/gcc/x86_64-pc-linux-gnu/16.0.1/m2
V3_LIBS="$G/m2pim:$G/m2iso:$G/m2log:$G/m2cor:$G/m2min" ./corpus.sh
Corpora used:
pim/pass + iso/run/pass;$HOME/bin/Modula2/Gm2/lib/gcc/x86_64-pc-linux-gnu/16.0.1/m2/{m2pim,m2iso,m2log,m2cor,m2min}.Current baseline: docs/summary_v3-corpus.md.