From ce1a1ef4ba773de1e8dbce44db3f60cf9149acfa Mon Sep 17 00:00:00 2001
From: Jari Vetoniemi <mailroxas@gmail.com>
Date: Fri, 28 Sep 2018 14:11:27 +0300
Subject: expr: fix || and && operations

---
 src/compiler/expr.lm | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/compiler/expr.lm b/src/compiler/expr.lm
index b17cc39..89223d6 100644
--- a/src/compiler/expr.lm
+++ b/src/compiler/expr.lm
@@ -116,7 +116,7 @@ context collapser
    next_is_unary:bool
 
    literal `+ `-
-   literal `( `) `+# `-# `! `~ `* `/ `% `#+ `#- `<< `>> `< `> `<= `>= `== `!= `& `^ `| `&& `|| `? `:
+   literal `( `) `+# `-# `! `~ `* `/ `% `#+ `#- `<< `>> `< `> `<= `>= `== `!= `&& `& `^ `|| `| `? `:
    literal `. `[ `]
    literal `sizeof
 
@@ -124,7 +124,7 @@ context collapser
       [`!] | [`~]
 
    def binary_unambi
-      [`.] | [`*] | [`/] | [`%] | [`<<] | [`>>] | [`<] | [`>] | [`<=] | [`>=] | [`==] | [`!=] | [`&] | [`^] | [`|] | [`&&] | [`||]
+      [`.] | [`*] | [`/] | [`%] | [`<<] | [`>>] | [`<] | [`>] | [`<=] | [`>=] | [`==] | [`!=] | [`^] | [`&&] | [`&] | [`||] | [`|]
 
    def ternary
       [`:]
@@ -178,11 +178,11 @@ context collapser
       |  [number::type WS number::type WS `>=] { r:int = 0 if (r1.value >= r3.value) r = 1 lhs.value = parse value[$r] }
       |  [number::type WS number::type WS `==] { r:int = 0 if (r1.value == r3.value) r = 1 lhs.value = parse value[$r] }
       |  [number::type WS number::type WS `!=] { r:int = 0 if (r1.value != r3.value) r = 1 lhs.value = parse value[$r] }
+      |  [number::type WS number::type WS `&&] { r:int = 0 if (r1.value && r3.value) r = 1 lhs.value = parse value[$r] }
       |  [number::type WS number::type WS `&] { lhs.value = parse value[$bitand(r1.value, r3.value)] }
       |  [number::type WS number::type WS `^] { lhs.value = parse value[$bitxor(r1.value, r3.value)] }
-      |  [number::type WS number::type WS `|] { lhs.value = parse value[$bitor(r1.value, r3.value)] }
-      |  [number::type WS number::type WS `&&] { r:int = 0 if (r1.value && r3.value) r = 1 lhs.value = parse value[$r] }
       |  [number::type WS number::type WS `||] { r:int = 0 if (r1.value || r3.value) r = 1 lhs.value = parse value[$r] }
+      |  [number::type WS number::type WS `|] { lhs.value = parse value[$bitor(r1.value, r3.value)] }
       |  [number::type WS number::type WS number::type WS `:] { if (r1.value) lhs.value = parse value[$r3] else lhs.value = parse value[$r5] }
       |  [number::type WS value WS `]] commit { reject }
 
@@ -380,7 +380,7 @@ context collapser
       [number::unsigned::type] | [string::type]
 
    def tok#en
-      [value WS+ value] commit { reject }
+      [value WS* value] commit { reject }
    |  [binary WS* binary] commit { reject }
    |  [constant WS* `(] commit { reject }
    |  [`) WS* value] commit { reject }
-- 
cgit v1.2.3-70-g09d2