Here's the updated picture. The recent fixes have made significant progress:
Current results: 10/16 transpile, 10/16 pass go vet
| File | Transpile | go vet |
Status |
|---|---|---|---|
hello_world.occ |
OK | OK | |
hello_seq_world.occ |
OK | OK | |
hello_raw_world.occ |
OK | OK | |
echoing.occ |
OK | OK | |
double_echo.occ |
OK | OK | |
commstime.occ |
OK | OK | |
cast.occ |
OK | OK | Fixed by #56 (boolVars scoping) + #53 + #54 |
casting.occ |
OK | OK | Fixed by #56 + #53 + #54 |
sort_pump.occ |
OK | OK | Fixed by #55 (typed abbrev) + #57 (chan array dir) |
sort_pump_2.occ |
OK | OK | Fixed by #55 + #57 |
bar.occ |
FAIL | — | PRI ALT, SHARED/CLAIM, dotted protocol tags, AFTER, guarded ALT, multi-dim arrays |
demo.occ |
FAIL | — | tim ? AFTER, MOBILE |
sort_inside.occ |
FAIL | — | Expression-sized arrays ([expr]TYPE) |
sort_inside_2.occ |
FAIL | — | SIZE monitor?, tim ? AFTER |
test_bell.occ |
FAIL | — | Multi-value CASE labels |
test_utils.occ |
FAIL | — | Multi-dim arrays ([][n]TYPE), *" string escape |
Summary of progress since the issue was opened
- Originally: 5/16 transpile, 5/16 pass
go vet - After #44, #45, #46: 10/16 transpile, 6/16 pass
go vet - After #53, #54, #55, #56, #57/current branch: 10/16 transpile, 10/16 pass
go vet
All 4 files that were transpiling but failing go vet are now clean. The remaining 6 files all fail at parse time due to unimplemented language features.
Remaining blockers for the final 6 files
| Feature | Files blocked | Difficulty |
|---|---|---|
tim ? AFTER expr |
demo.occ, sort_inside_2.occ, bar.occ |
Medium — needs parser + codegen for timer AFTER input |
Multi-value CASE labels ('*n', '*c') |
test_bell.occ |
Easy — extend CASE label parsing to accept comma-separated values |
Expression-sized arrays ([expr]TYPE) |
sort_inside.occ |
Medium — parser currently expects literal size |
SIZE monitor? (SIZE of direction-annotated name) |
sort_inside_2.occ |
Easy — strip direction suffix in SIZE expression |
Multi-dim arrays ([][n]TYPE) |
test_utils.occ, bar.occ |
Medium |
*" string escape |
test_utils.occ |
Easy — add escape sequence to lexer |
| PRI ALT / guarded ALT / SHARED/CLAIM / dotted protocol tags | bar.occ only |
Hard — bar.occ needs many features |
The easiest wins to unblock more files would be multi-value CASE labels (unblocks test_bell.occ) and tim ? AFTER (unblocks demo.occ and sort_inside_2.occ, partially unblocks bar.occ).