diff options
| author | Baitinq <[email protected]> | 2025-06-11 00:16:17 +0200 |
|---|---|---|
| committer | Baitinq <[email protected]> | 2025-06-11 00:16:17 +0200 |
| commit | fa92a157746ae17f295d31b7a047dfeb99624a13 (patch) | |
| tree | 71e469e67a70df15542d873ebe223654def6111b /std/stdlib.pry | |
| parent | stdlib: Remove println (diff) | |
| download | interpreter-fa92a157746ae17f295d31b7a047dfeb99624a13.tar.gz interpreter-fa92a157746ae17f295d31b7a047dfeb99624a13.tar.bz2 interpreter-fa92a157746ae17f295d31b7a047dfeb99624a13.zip | |
Diffstat (limited to 'std/stdlib.pry')
| -rw-r--r-- | std/stdlib.pry | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/std/stdlib.pry b/std/stdlib.pry new file mode 100644 index 0000000..aecd4df --- /dev/null +++ b/std/stdlib.pry @@ -0,0 +1,83 @@ +extern printf = (*i8, varargs) => void; +extern exit = (i64) => void; + +let strcmp = (stra: *i8, strb: *i8) => bool { + let i = 0; + while true { + let ca = (*(stra + cast(*i8, i))); + let cb = (*(strb + cast(*i8, i))); + + if ca == '\0' { + return cb == '\0'; + }; + + if cb == '\0' { + return ca == '\0'; + }; + + if !(ca == cb) { + return false; + }; + + i = i + 1; + }; + + return true; +}; + +let isdigit = (c: i8) => bool { + if c >= '0' { + if c <= '9' { + return true; + }; + }; + return false; +}; + +let isalpha = (c: i8) => bool { + if c >= 'a' { + if c <= 'z' { + return true; + }; + }; + if c >= 'A' { + if c <= 'Z' { + return true; + }; + }; + return false; +}; + +let isalphanum = (c: i8) => bool { + if isalpha(c) { + return true; + }; + if isdigit(c) { + return true; + }; + + return false; +}; + +let iswhitespace = (c: i8) => bool { + if c == ' ' { + return true; + }; + + if c >= '\t' { + if c <= '\r' { + return true; + }; + }; + + return false; +}; + +let assert = (cond: bool) => void { + if !cond { + printf("ASSERTION FAILED\n"); + exit(1); + }; + + return; +}; |