aboutsummaryrefslogtreecommitdiff
path: root/tests/library/exp-string
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-10-20 11:57:16 +0000
committer_ov4 <ov4@ov4.org>2026-10-20 11:57:16 +0000
commit62b605c6c0ea13e9763c0a0115464007b13a8831 (patch)
tree53c27965f5a365682e0d79fd96e25b228ecb9dca /tests/library/exp-string
parentbfe2e75d7e3b372e55369677028429990c49bc54 (diff)
refactor(strings): replace compiler builtins with the STRING library
Construct literals as STRING values and route string operations through ordinary library functions and operators. Preserve value ownership in records, arrays, constants and file I/O. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'tests/library/exp-string')
-rw-r--r--tests/library/exp-string/case.json2
-rw-r--r--tests/library/exp-string/program.cps168
2 files changed, 85 insertions, 85 deletions
diff --git a/tests/library/exp-string/case.json b/tests/library/exp-string/case.json
index e1ed21a..4e37b1c 100644
--- a/tests/library/exp-string/case.json
+++ b/tests/library/exp-string/case.json
@@ -1 +1 @@
-{"sources":["program.cps","../../../pseudocode-lib/_exp_string.cps"],"compiler_args":["-no-std"]}
+{"sources":["program.cps","../../../pseudocode-lib/string.cps"],"compiler_args":["-no-std"]}
diff --git a/tests/library/exp-string/program.cps b/tests/library/exp-string/program.cps
index 0adf86c..2e45dc3 100644
--- a/tests/library/exp-string/program.cps
+++ b/tests/library/exp-string/program.cps
@@ -1,43 +1,43 @@
-INCLUDE "../../../pseudocode-lib/_exp_string.cps"
-FUNCTION Echo(S : _EXP_STRING) RETURNS _EXP_STRING
+INCLUDE "../../../pseudocode-lib/string.cps"
+FUNCTION Echo(S : STRING) RETURNS STRING
RETURN S
ENDFUNCTION
-DECLARE A : _EXP_STRING((C_STRING)"hello")
-DECLARE B : _EXP_STRING(A)
+DECLARE A : STRING((C_STRING)"hello")
+DECLARE B : STRING(A)
B <- (C_STRING)"world"
B <- B
-CALL _EXP_STRING_OUTPUT(A & B)
-DECLARE Empty : _EXP_STRING
-OUTPUT _EXP_STRING_LENGTH(Empty)
-DECLARE Nuls : _EXP_STRING(3, (C_CHAR)'\0')
-OUTPUT _EXP_STRING_LENGTH(Nuls)
-DECLARE Long : _EXP_STRING(20000, (C_CHAR)'x')
+OUTPUT (A & B)
+DECLARE Empty : STRING
+OUTPUT LENGTH(Empty)
+DECLARE Nuls : STRING(3, (C_CHAR)'\0')
+OUTPUT LENGTH(Nuls)
+DECLARE Long : STRING(20000, (C_CHAR)'x')
DECLARE I : INTEGER
FOR I <- 1 TO 100
Long <- Long & A
NEXT I
-OUTPUT _EXP_STRING_LENGTH(Long)
+OUTPUT LENGTH(Long)
Long <- Echo(Long)
-OUTPUT _EXP_STRING_LENGTH(Long)
-CALL _EXP_STRING_OUTPUT(_EXP_STRING_NUM_TO_STR(42) & _EXP_STRING_NUM_TO_STR(1.25))
-DECLARE Number : _EXP_STRING((C_STRING)"12.5")
-OUTPUT _EXP_STRING_STR_TO_NUM(Number) = 12.5
+OUTPUT LENGTH(Long)
+OUTPUT (NUM_TO_STR(42) & NUM_TO_STR(1.25))
+DECLARE Number : STRING((C_STRING)"12.5")
+OUTPUT STR_TO_NUM(Number) = 12.5
TRY
Number <- (C_STRING)"12x"
- OUTPUT _EXP_STRING_STR_TO_NUM(Number)
+ OUTPUT STR_TO_NUM(Number)
CATCH
OUTPUT "conversion caught"
ENDTRY
TRY
- DECLARE Invalid : _EXP_STRING(-1, (C_CHAR)'x')
+ DECLARE Invalid : STRING(-1, (C_CHAR)'x')
CATCH
OUTPUT "length caught"
ENDTRY
-CALL _EXP_STRING_NUM_TO_STR(99)
+CALL NUM_TO_STR(99)
CALL Echo(Long)
-DECLARE Heap : _EXP_STRING
-Heap <- NEW _EXP_STRING((C_STRING)"heap")
-CALL _EXP_STRING_OUTPUT(Heap)
+DECLARE Heap : STRING
+Heap <- NEW STRING((C_STRING)"heap")
+OUTPUT (Heap)
DELETE Heap
CALL CheckLeft()
CALL CheckRight()
@@ -49,90 +49,90 @@ CALL CheckChr()
CALL CheckIsNum()
PROCEDURE CheckLeft()
- DECLARE Letters : _EXP_STRING((C_STRING)"ABCDEFGH")
- DECLARE Empty : _EXP_STRING
- DECLARE Nuls : _EXP_STRING(3, (C_CHAR)'\0')
- DECLARE A : _EXP_STRING((C_STRING)"hello")
- CALL _EXP_STRING_OUTPUT(_EXP_STRING_LEFT(Letters, 3))
- OUTPUT _EXP_STRING_LENGTH(_EXP_STRING_LEFT(Empty, 2)), ":", _EXP_STRING_LENGTH(_EXP_STRING_LEFT(Letters, 0)), ":", _EXP_STRING_LENGTH(_EXP_STRING_LEFT(Letters, -1))
- CALL _EXP_STRING_OUTPUT(_EXP_STRING_LEFT(Letters, 20))
- OUTPUT _EXP_STRING_LENGTH(_EXP_STRING_LEFT(Nuls & A, 4))
+ DECLARE Letters : STRING((C_STRING)"ABCDEFGH")
+ DECLARE Empty : STRING
+ DECLARE Nuls : STRING(3, (C_CHAR)'\0')
+ DECLARE A : STRING((C_STRING)"hello")
+ OUTPUT (LEFT(Letters, 3))
+ OUTPUT LENGTH(LEFT(Empty, 2)), ":", LENGTH(LEFT(Letters, 0)), ":", LENGTH(LEFT(Letters, -1))
+ OUTPUT (LEFT(Letters, 20))
+ OUTPUT LENGTH(LEFT(Nuls & A, 4))
ENDPROCEDURE
PROCEDURE CheckRight()
- DECLARE Letters : _EXP_STRING((C_STRING)"ABCDEFGH")
- DECLARE Empty : _EXP_STRING
- DECLARE Nuls : _EXP_STRING(3, (C_CHAR)'\0')
- DECLARE A : _EXP_STRING((C_STRING)"hello")
- CALL _EXP_STRING_OUTPUT(_EXP_STRING_RIGHT(Letters, 3))
- OUTPUT _EXP_STRING_LENGTH(_EXP_STRING_RIGHT(Empty, 2)), ":", _EXP_STRING_LENGTH(_EXP_STRING_RIGHT(Letters, 0)), ":", _EXP_STRING_LENGTH(_EXP_STRING_RIGHT(Letters, -1))
- CALL _EXP_STRING_OUTPUT(_EXP_STRING_RIGHT(Letters, 20))
- OUTPUT _EXP_STRING_LENGTH(_EXP_STRING_RIGHT(A & Nuls, 4))
+ DECLARE Letters : STRING((C_STRING)"ABCDEFGH")
+ DECLARE Empty : STRING
+ DECLARE Nuls : STRING(3, (C_CHAR)'\0')
+ DECLARE A : STRING((C_STRING)"hello")
+ OUTPUT (RIGHT(Letters, 3))
+ OUTPUT LENGTH(RIGHT(Empty, 2)), ":", LENGTH(RIGHT(Letters, 0)), ":", LENGTH(RIGHT(Letters, -1))
+ OUTPUT (RIGHT(Letters, 20))
+ OUTPUT LENGTH(RIGHT(A & Nuls, 4))
ENDPROCEDURE
PROCEDURE CheckMid()
- DECLARE Letters : _EXP_STRING((C_STRING)"ABCDEFGH")
- DECLARE Empty : _EXP_STRING
- DECLARE Nuls : _EXP_STRING(3, (C_CHAR)'\0')
- CALL _EXP_STRING_OUTPUT(_EXP_STRING_MID(Letters, 2, 3))
- CALL _EXP_STRING_OUTPUT(_EXP_STRING_MID(Letters, -9223372036854775808, 2))
- CALL _EXP_STRING_OUTPUT(_EXP_STRING_MID(Letters, 7, 9223372036854775807))
- OUTPUT _EXP_STRING_LENGTH(_EXP_STRING_MID(Empty, 1, 2)), ":", _EXP_STRING_LENGTH(_EXP_STRING_MID(Letters, 9223372036854775807, 2))
- OUTPUT _EXP_STRING_LENGTH(_EXP_STRING_MID(Letters, 2, 0)), ":", _EXP_STRING_LENGTH(_EXP_STRING_MID(Letters, 2, -1))
- OUTPUT _EXP_STRING_LENGTH(_EXP_STRING_MID(Nuls & Letters, 2, 4))
+ DECLARE Letters : STRING((C_STRING)"ABCDEFGH")
+ DECLARE Empty : STRING
+ DECLARE Nuls : STRING(3, (C_CHAR)'\0')
+ OUTPUT (MID(Letters, 2, 3))
+ OUTPUT (MID(Letters, -9223372036854775808, 2))
+ OUTPUT (MID(Letters, 7, 9223372036854775807))
+ OUTPUT LENGTH(MID(Empty, 1, 2)), ":", LENGTH(MID(Letters, 9223372036854775807, 2))
+ OUTPUT LENGTH(MID(Letters, 2, 0)), ":", LENGTH(MID(Letters, 2, -1))
+ OUTPUT LENGTH(MID(Nuls & Letters, 2, 4))
ENDPROCEDURE
PROCEDURE CheckLCase()
- DECLARE Mixed : _EXP_STRING((C_STRING)"AbC@19")
- DECLARE Empty : _EXP_STRING
- DECLARE Nuls : _EXP_STRING(2, (C_CHAR)'\0')
- CALL _EXP_STRING_OUTPUT(_EXP_STRING_LCASE(Mixed))
- CALL _EXP_STRING_OUTPUT(Mixed)
+ DECLARE Mixed : STRING((C_STRING)"AbC@19")
+ DECLARE Empty : STRING
+ DECLARE Nuls : STRING(2, (C_CHAR)'\0')
+ OUTPUT (LCASE(Mixed))
+ OUTPUT (Mixed)
DECLARE Lower : CHAR
- Lower <- _EXP_STRING_LCASE('W')
- OUTPUT Lower, ":", _EXP_STRING_LCASE('w'), ":", _EXP_STRING_LCASE('@')
- OUTPUT _EXP_STRING_LENGTH(_EXP_STRING_LCASE(Empty)), ":", _EXP_STRING_LENGTH(_EXP_STRING_LCASE(Nuls & Mixed))
- CALL _EXP_STRING_OUTPUT(_EXP_STRING_MID(_EXP_STRING_LCASE(Nuls & Mixed), 3, 3))
+ Lower <- LCASE('W')
+ OUTPUT Lower, ":", LCASE('w'), ":", LCASE('@')
+ OUTPUT LENGTH(LCASE(Empty)), ":", LENGTH(LCASE(Nuls & Mixed))
+ OUTPUT (MID(LCASE(Nuls & Mixed), 3, 3))
ENDPROCEDURE
PROCEDURE CheckUCase()
- DECLARE Mixed : _EXP_STRING((C_STRING)"AbC@19")
- DECLARE Empty : _EXP_STRING
- DECLARE Nuls : _EXP_STRING(2, (C_CHAR)'\0')
- CALL _EXP_STRING_OUTPUT(_EXP_STRING_UCASE(Mixed))
- CALL _EXP_STRING_OUTPUT(Mixed)
+ DECLARE Mixed : STRING((C_STRING)"AbC@19")
+ DECLARE Empty : STRING
+ DECLARE Nuls : STRING(2, (C_CHAR)'\0')
+ OUTPUT (UCASE(Mixed))
+ OUTPUT (Mixed)
DECLARE Upper : CHAR
- Upper <- _EXP_STRING_UCASE('h')
- OUTPUT Upper, ":", _EXP_STRING_UCASE('H'), ":", _EXP_STRING_UCASE('@')
- OUTPUT _EXP_STRING_LENGTH(_EXP_STRING_UCASE(Empty)), ":", _EXP_STRING_LENGTH(_EXP_STRING_UCASE(Nuls & Mixed))
- CALL _EXP_STRING_OUTPUT(_EXP_STRING_MID(_EXP_STRING_UCASE(Nuls & Mixed), 3, 3))
+ Upper <- UCASE('h')
+ OUTPUT Upper, ":", UCASE('H'), ":", UCASE('@')
+ OUTPUT LENGTH(UCASE(Empty)), ":", LENGTH(UCASE(Nuls & Mixed))
+ OUTPUT (MID(UCASE(Nuls & Mixed), 3, 3))
ENDPROCEDURE
PROCEDURE CheckAsc()
- DECLARE Letters : _EXP_STRING((C_STRING)"ABCDEFGH")
- DECLARE Empty : _EXP_STRING
- DECLARE Nuls : _EXP_STRING(2, (C_CHAR)'\0')
- DECLARE High : _EXP_STRING(1, (C_CHAR)255)
- OUTPUT _EXP_STRING_ASC('A'), ":", _EXP_STRING_ASC(Letters)
- OUTPUT _EXP_STRING_ASC(Empty), ":", _EXP_STRING_ASC(Nuls), ":", _EXP_STRING_ASC('\0')
- OUTPUT _EXP_STRING_ASC(High)
+ DECLARE Letters : STRING((C_STRING)"ABCDEFGH")
+ DECLARE Empty : STRING
+ DECLARE Nuls : STRING(2, (C_CHAR)'\0')
+ DECLARE High : STRING(1, (C_CHAR)255)
+ OUTPUT ASC('A'), ":", ASC(Letters)
+ OUTPUT ASC(Empty), ":", ASC(Nuls), ":", ASC('\0')
+ OUTPUT ASC(High)
ENDPROCEDURE
PROCEDURE CheckChr()
- CALL _EXP_STRING_OUTPUT(_EXP_STRING_CHR(65) & _EXP_STRING_CHR(90))
- OUTPUT _EXP_STRING_ASC(_EXP_STRING_CHR(_EXP_STRING_ASC('A')))
- OUTPUT _EXP_STRING_LENGTH(_EXP_STRING_CHR(0)), ":", _EXP_STRING_ASC(_EXP_STRING_CHR(0))
- OUTPUT _EXP_STRING_ASC(_EXP_STRING_CHR(321)), ":", _EXP_STRING_ASC(_EXP_STRING_CHR(-1))
+ OUTPUT (CHR(65) & CHR(90))
+ OUTPUT ASC(CHR(ASC('A')))
+ OUTPUT LENGTH(CHR(0)), ":", ASC(CHR(0))
+ OUTPUT ASC(CHR(321)), ":", ASC(CHR(-1))
ENDPROCEDURE
PROCEDURE CheckIsNum()
- DECLARE Number : _EXP_STRING((C_STRING)"12.5")
- DECLARE Junk : _EXP_STRING((C_STRING)"12x")
- DECLARE Empty : _EXP_STRING
- DECLARE Leading : _EXP_STRING((C_STRING)" 12.5")
- DECLARE Trailing : _EXP_STRING((C_STRING)"12.5 ")
- DECLARE Whitespace : _EXP_STRING((C_STRING)" ")
- OUTPUT _EXP_STRING_IS_NUM(Number), ":", _EXP_STRING_IS_NUM(Junk), ":", _EXP_STRING_IS_NUM(Empty)
- OUTPUT _EXP_STRING_IS_NUM(Leading), ":", _EXP_STRING_IS_NUM(Trailing), ":", _EXP_STRING_IS_NUM(Whitespace)
- OUTPUT _EXP_STRING_IS_NUM(Number & _EXP_STRING_CHR(0)), ":", _EXP_STRING_IS_NUM(_EXP_STRING_CHR(0) & Number)
+ DECLARE Number : STRING((C_STRING)"12.5")
+ DECLARE Junk : STRING((C_STRING)"12x")
+ DECLARE Empty : STRING
+ DECLARE Leading : STRING((C_STRING)" 12.5")
+ DECLARE Trailing : STRING((C_STRING)"12.5 ")
+ DECLARE Whitespace : STRING((C_STRING)" ")
+ OUTPUT IS_NUM(Number), ":", IS_NUM(Junk), ":", IS_NUM(Empty)
+ OUTPUT IS_NUM(Leading), ":", IS_NUM(Trailing), ":", IS_NUM(Whitespace)
+ OUTPUT IS_NUM(Number & CHR(0)), ":", IS_NUM(CHR(0) & Number)
ENDPROCEDURE