INCLUDE "../../../pseudocode-lib/_exp_string.cps" FUNCTION Echo(S : _EXP_STRING) RETURNS _EXP_STRING RETURN S ENDFUNCTION DECLARE A : _EXP_STRING((C_STRING)"hello") DECLARE B : _EXP_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') DECLARE I : INTEGER FOR I <- 1 TO 100 Long <- Long & A NEXT I OUTPUT _EXP_STRING_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 TRY Number <- (C_STRING)"12x" OUTPUT _EXP_STRING_STR_TO_NUM(Number) CATCH OUTPUT "conversion caught" ENDTRY TRY DECLARE Invalid : _EXP_STRING(-1, (C_CHAR)'x') CATCH OUTPUT "length caught" ENDTRY CALL _EXP_STRING_NUM_TO_STR(99) CALL Echo(Long) DECLARE Heap : _EXP_STRING Heap <- NEW _EXP_STRING((C_STRING)"heap") CALL _EXP_STRING_OUTPUT(Heap) DELETE Heap