From 49e1bf204f66ec584e921acca1c6a0ee2890d259 Mon Sep 17 00:00:00 2001 From: "Johan B.W. de Vries" Date: Sun, 25 Jan 2026 13:14:21 +0100 Subject: [PATCH] Adds backslash as a build in constant --- 0-lang0py/lang0py.py | 2 ++ 1-lang0py/lang0py.lang0 | 2 ++ 2-lang0c/lang0c.lang0 | 2 ++ README.md | 4 ++++ tests/test_stdlib_constants/test_backslash.exp.stdout | 1 + tests/test_stdlib_constants/test_backslash.lang0 | 3 +++ 6 files changed, 14 insertions(+) create mode 100644 tests/test_stdlib_constants/test_backslash.exp.stdout create mode 100644 tests/test_stdlib_constants/test_backslash.lang0 diff --git a/0-lang0py/lang0py.py b/0-lang0py/lang0py.py index 97cb13b..e148d3d 100644 --- a/0-lang0py/lang0py.py +++ b/0-lang0py/lang0py.py @@ -409,6 +409,7 @@ def emitheader(): emitln(" if os.environ.get('TRACE'):") emitln(" sys.stderr.write(f'{header}={value!r}\\n')") emitln("") + emitln("__BACKSLASH = chr(0x5C)") emitln("__EOF = chr(0xFF)") emitln("__EOL = chr(10)") emitln("__QUOTE = chr(34)") @@ -495,6 +496,7 @@ def main(): emitheader() # Standard library constants + mapsetkey("REGISTERID", "backslash", "__BACKSLASH") mapsetkey("REGISTERID", "eof", "__EOF") mapsetkey("REGISTERID", "eol", "__EOL") mapsetkey("REGISTERID", "quote", "__QUOTE") diff --git a/1-lang0py/lang0py.lang0 b/1-lang0py/lang0py.lang0 index 3435074..ba57c7a 100644 --- a/1-lang0py/lang0py.lang0 +++ b/1-lang0py/lang0py.lang0 @@ -472,6 +472,7 @@ emitheader: emitln " if os.environ.get('TRACE'):" emitln " sys.stderr.write(f'{header}={value!r}\\n')" emitln "" + emitln "__BACKSLASH = chr(0x5C)" emitln "__EOF = chr(0xFF)" emitln "__EOL = chr(10)" emitln "__QUOTE = chr(34)" @@ -557,6 +558,7 @@ emitfooter: main: emitheader + mapsetkey "REGISTERID" "backslash" "__BACKSLASH" mapsetkey "REGISTERID" "eof" "__EOF" mapsetkey "REGISTERID" "eol" "__EOL" mapsetkey "REGISTERID" "quote" "__QUOTE" diff --git a/2-lang0c/lang0c.lang0 b/2-lang0c/lang0c.lang0 index 39082bb..7f42938 100644 --- a/2-lang0c/lang0c.lang0 +++ b/2-lang0c/lang0c.lang0 @@ -574,6 +574,7 @@ emitheader: emitln "#include " emitln "" emitln "" + emitln "char __BACKSLASH[2] = {0x5C, 0};" emitln "char __EOF[2] = {0xFF, 0};" emitln "char __EOL[2] = {10, 0};" emitln "char __QUOTE[2] = {34, 0};" @@ -849,6 +850,7 @@ main: emitheader + mapsetkey "REGISTERID" "backslash" "__BACKSLASH" mapsetkey "REGISTERID" "eof" "__EOF" mapsetkey "REGISTERID" "eol" "__EOL" mapsetkey "REGISTERID" "quote" "__QUOTE" diff --git a/README.md b/README.md index 5098cf5..ad809bc 100644 --- a/README.md +++ b/README.md @@ -123,6 +123,10 @@ Writes the name and value of the variable passed to stderr if the TRACE environm ### Standard library constants +#### backslash + +Backslash character. + #### eof End of file character, zero byte. diff --git a/tests/test_stdlib_constants/test_backslash.exp.stdout b/tests/test_stdlib_constants/test_backslash.exp.stdout new file mode 100644 index 0000000..b7d5379 --- /dev/null +++ b/tests/test_stdlib_constants/test_backslash.exp.stdout @@ -0,0 +1 @@ +\ \ No newline at end of file diff --git a/tests/test_stdlib_constants/test_backslash.lang0 b/tests/test_stdlib_constants/test_backslash.lang0 new file mode 100644 index 0000000..19c2d50 --- /dev/null +++ b/tests/test_stdlib_constants/test_backslash.lang0 @@ -0,0 +1,3 @@ +main: + emit backslash +/