aboutsummaryrefslogtreecommitdiff
path: root/doc/language
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-10-16 13:21:05 +0000
committer_ov4 <ov4@ov4.org>2026-10-16 13:21:05 +0000
commite44bdc6a2a0cf624b08046ecc7e5c5d5d9d2d66c (patch)
treef5276cc0dd2f34e4d30a58f80223912265a1c5a0 /doc/language
parente1e789ac0249149a4aa1671f5f9260d488cb617a (diff)
fix(compiler): correct CIE semantics and diagnostic locations
Use standard WHILE headers and default-public class fields, resolve pseudocode identifiers without case sensitivity, and check signed i64 literal boundaries before conversion. Preserve source locations across recursive emission and function diagnostics. Add 22 regression cases and update compiler examples and documentation. Validated all 69 CTest entries with the original Linux Actions seed and verified the release package's embedded, native and IR output paths.
Diffstat (limited to 'doc/language')
-rw-r--r--doc/language/cpsc-language-overview.7.md4
-rw-r--r--doc/language/function/cpsc-function-eof.7.md2
-rw-r--r--doc/language/keyword/cpsc-keyword-class.7.md4
-rw-r--r--doc/language/keyword/cpsc-keyword-readfile.7.md2
-rw-r--r--doc/language/keyword/cpsc-keyword-while.7.md6
5 files changed, 9 insertions, 9 deletions
diff --git a/doc/language/cpsc-language-overview.7.md b/doc/language/cpsc-language-overview.7.md
index 328fd70..233e9ef 100644
--- a/doc/language/cpsc-language-overview.7.md
+++ b/doc/language/cpsc-language-overview.7.md
@@ -6,7 +6,7 @@ cpsc-language-overview - supported cpsc pseudocode syntax
# DESCRIPTION
-Keywords and built-in function names are uppercase and case-sensitive. Indentation is for readability; blocks use explicit closing keywords. Identifiers begin with a letter and continue with letters, digits, or underscores.
+Keywords are uppercase and case-sensitive. Identifiers, including built-in function names, are case insensitive. Indentation is for readability; blocks use explicit closing keywords. Identifiers begin with a letter and continue with letters, digits, or underscores.
Assign with ASCII `<-`: `Count <- Count + 1`. Compare with `=`, `<>`, `<`, `>`, `<=`, and `>=`. STRING comparisons compare contents, case-sensitively. Use `+`, `-`, `*`, and `/` for arithmetic; `/` always returns REAL. Use `&` to join strings.
@@ -48,7 +48,7 @@ The compiler extensions TRY/CATCH/ENDTRY and THROW support anonymous exceptions
- [cpsc-keyword-div(7)](keyword/cpsc-keyword-div.7.md): perform integer division.
- [cpsc-keyword-mod(7)](keyword/cpsc-keyword-mod.7.md): find the integer division remainder.
-Closing and auxiliary keywords are documented with their main constructs: THEN/ELSE/ENDIF with IF; OF/OTHERWISE/ENDCASE with CASE; CATCH/ENDTRY/THROW with TRY; DO/ENDWHILE with WHILE; UNTIL with REPEAT; TO/STEP/NEXT with FOR; RETURN/RETURNS/BYVAL/BYREF and function/procedure closing keywords with FUNCTION/PROCEDURE; READ/WRITE/APPEND with OPENFILE; ARRAY/OF and INTEGER/REAL/BOOLEAN/CHAR/STRING with DECLARE; ENDTYPE with TYPE; PUBLIC/PRIVATE/ENDCLASS with CLASS. TRUE/FALSE are BOOLEAN literals.
+Closing and auxiliary keywords are documented with their main constructs: THEN/ELSE/ENDIF with IF; OF/OTHERWISE/ENDCASE with CASE; CATCH/ENDTRY/THROW with TRY; ENDWHILE with WHILE; UNTIL with REPEAT; TO/STEP/NEXT with FOR; RETURN/RETURNS/BYVAL/BYREF and function/procedure closing keywords with FUNCTION/PROCEDURE; READ/WRITE/APPEND with OPENFILE; ARRAY/OF and INTEGER/REAL/BOOLEAN/CHAR/STRING with DECLARE; ENDTYPE with TYPE; PUBLIC/PRIVATE/ENDCLASS with CLASS. TRUE/FALSE are BOOLEAN literals.
# BUILT-IN FUNCTIONS
diff --git a/doc/language/function/cpsc-function-eof.7.md b/doc/language/function/cpsc-function-eof.7.md
index 2f7e271..18497cb 100644
--- a/doc/language/function/cpsc-function-eof.7.md
+++ b/doc/language/function/cpsc-function-eof.7.md
@@ -19,7 +19,7 @@ Return true when no further characters remain in a file opened FOR READ. The tes
```text
DECLARE Line : STRING
OPENFILE "notes.txt" FOR READ
-WHILE NOT EOF("notes.txt") DO
+WHILE NOT EOF("notes.txt")
READFILE "notes.txt", Line
OUTPUT Line
ENDWHILE
diff --git a/doc/language/keyword/cpsc-keyword-class.7.md b/doc/language/keyword/cpsc-keyword-class.7.md
index 7e8f6e3..2d14387 100644
--- a/doc/language/keyword/cpsc-keyword-class.7.md
+++ b/doc/language/keyword/cpsc-keyword-class.7.md
@@ -15,9 +15,9 @@ ENDCLASS
# DESCRIPTION
-Declare a class at top level with at least one field. Every field explicitly requires PUBLIC or PRIVATE, without DECLARE. This differs from guide section 10's default-public rule. ENDCLASS closes the declaration.
+Declare a class at top level with at least one field. Fields are public by default; PUBLIC or PRIVATE may be specified explicitly, without DECLARE. ENDCLASS closes the declaration.
-Classes use record value semantics: zero initialization, whole-value copying, arrays, pointers, and ordinary function/procedure parameters. Only PUBLIC fields can be accessed externally. PRIVATE fields still initialize and copy with the whole value. Methods, constructors, destructors, NEW, INHERITS, and array fields are unsupported.
+Classes use record value semantics: zero initialization, whole-value copying, arrays, pointers, and ordinary function/procedure parameters. Only public fields can be accessed externally. PRIVATE fields still initialize and copy with the whole value. Methods, constructors, destructors, NEW, INHERITS, and array fields are unsupported.
# EXAMPLE
diff --git a/doc/language/keyword/cpsc-keyword-readfile.7.md b/doc/language/keyword/cpsc-keyword-readfile.7.md
index 200fc68..cdf96c5 100644
--- a/doc/language/keyword/cpsc-keyword-readfile.7.md
+++ b/doc/language/keyword/cpsc-keyword-readfile.7.md
@@ -19,7 +19,7 @@ Read one line from a file opened FOR READ, removing the line ending. The target
```text
DECLARE Line : STRING
OPENFILE "notes.txt" FOR READ
-WHILE NOT EOF("notes.txt") DO
+WHILE NOT EOF("notes.txt")
READFILE "notes.txt", Line
OUTPUT Line
ENDWHILE
diff --git a/doc/language/keyword/cpsc-keyword-while.7.md b/doc/language/keyword/cpsc-keyword-while.7.md
index 5e6656f..1100b38 100644
--- a/doc/language/keyword/cpsc-keyword-while.7.md
+++ b/doc/language/keyword/cpsc-keyword-while.7.md
@@ -7,21 +7,21 @@ cpsc-keyword-while - repeat while a condition is true
# SYNOPSIS
```text
-WHILE condition DO
+WHILE condition
statements
ENDWHILE
```
# DESCRIPTION
-Test before each iteration; the body may run zero times. DO and ENDWHILE belong to this syntax.
+Test before each iteration; the body may run zero times. ENDWHILE closes the loop. The WHILE header has no DO keyword.
# EXAMPLE
```text
DECLARE Count : INTEGER
Count <- 1
-WHILE Count <= 3 DO
+WHILE Count <= 3
OUTPUT Count
Count <- Count + 1
ENDWHILE