From 43451328a5ae74ffa34356259ee02e3786f070c3 Mon Sep 17 00:00:00 2001 From: _ov4 Date: Sat, 17 Oct 2026 06:10:05 +0000 Subject: fix(parser): accept optional DO after WHILE condition Co-Authored-By: Claude Opus 5.5 --- tests/i/while-do/case.json | 1 + tests/i/while-do/expected.txt | 1 + tests/i/while-do/notes.md | 3 +++ tests/i/while-do/program.cps | 6 ++++++ 4 files changed, 11 insertions(+) create mode 100644 tests/i/while-do/case.json create mode 100644 tests/i/while-do/expected.txt create mode 100644 tests/i/while-do/notes.md create mode 100644 tests/i/while-do/program.cps (limited to 'tests/i') diff --git a/tests/i/while-do/case.json b/tests/i/while-do/case.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/tests/i/while-do/case.json @@ -0,0 +1 @@ +{} diff --git a/tests/i/while-do/expected.txt b/tests/i/while-do/expected.txt new file mode 100644 index 0000000..0cfbf08 --- /dev/null +++ b/tests/i/while-do/expected.txt @@ -0,0 +1 @@ +2 diff --git a/tests/i/while-do/notes.md b/tests/i/while-do/notes.md new file mode 100644 index 0000000..01e389c --- /dev/null +++ b/tests/i/while-do/notes.md @@ -0,0 +1,3 @@ +# while-do + +The legacy WHILE DO spelling and the standard WHILE spelling are both accepted. X advances from 0 through 1 to 2, then the loop stops. diff --git a/tests/i/while-do/program.cps b/tests/i/while-do/program.cps new file mode 100644 index 0000000..58d6319 --- /dev/null +++ b/tests/i/while-do/program.cps @@ -0,0 +1,6 @@ +DECLARE X : INTEGER +X <- 0 +WHILE X < 2 DO + X <- X + 1 +ENDWHILE +OUTPUT X -- cgit v1.3.1-4-g156e