From ce1a1ef4ba773de1e8dbce44db3f60cf9149acfa Mon Sep 17 00:00:00 2001 From: Jari Vetoniemi 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