From ba0ffe00d0c62c8ac8e0f98596193b69975c9fe9 Mon Sep 17 00:00:00 2001
From: Kyle Gunger <kgunger12@gmail.com>
Date: Sat, 20 May 2023 20:47:47 -0400
Subject: Initial boolean and/or

---
 tnslc/tnslc.tnsl | 23 ++++++++++++++++-------
 1 file changed, 16 insertions(+), 7 deletions(-)

(limited to 'tnslc')

diff --git a/tnslc/tnslc.tnsl b/tnslc/tnslc.tnsl
index adc27a8..c642216 100644
--- a/tnslc/tnslc.tnsl
+++ b/tnslc/tnslc.tnsl
@@ -3181,7 +3181,7 @@
     /; if (pr == 7)
         ;wk.set(s1, out)
         ;wk.cmp(s2, out)
-        ;wk.data_type = {1, "bool", "_bool", {}, {}}
+        ;wk.data_type = {1, "bool", {}, {}, 0}
 
         ;wk.set(literal_variable("true", "", out), out)
         ;{}uint8 l = scope`.next_const()
@@ -3197,6 +3197,18 @@
         }, "")
 
         ;return wk
+    ;; else if (pr == 8)
+        # TODO: First convert non-boolean values to boolean
+        /; if (tok`{first}.cmp("&&"))
+            ;wk.set(s1, out)
+            ;wk.and(s2, out)
+        ;; else if (tok`{first}.cmp("||"))
+            ;wk.set(s1, out)
+            ;wk.or(s2, out)
+        ;; else if (tok`{first}.cmp("^^"))
+            ;wk.set(s1, out)
+            ;wk.xor(s2, out)
+        ;/
     ;/
 
     /; if (tok`{first}.cmp("+"))
@@ -3211,16 +3223,13 @@
         ;wk.sub(s2, out)
     ;; else if (tok`{first}.cmp("|"))
         ;wk.set(s1, out)
-        ;wk.mul(s2, out)
+        ;wk.or(s2, out)
     ;; else if (tok`{first}.cmp("&"))
         ;wk.set(s1, out)
-        ;wk.mul(s2, out)
+        ;wk.and(s2, out)
     ;; else if (tok`{first}.cmp("^"))
         ;wk.set(s1, out)
-        ;wk.mul(s2, out)
-    ;; else if (tok`{first}.cmp("*"))
-        ;wk.set(s1, out)
-        ;wk.mul(s2, out)
+        ;wk.xor(s2, out)
     ;; else if (tok`{first}.cmp("*"))
         ;wk.set(s1, out)
         ;wk.mul(s2, out)
-- 
cgit v1.2.3