summaryrefslogtreecommitdiff
path: root/parser/compiler.go
diff options
context:
space:
mode:
authorMarc Vertes <mvertes@free.fr>2023-11-20 15:54:52 +0100
committerMarc Vertes <mvertes@free.fr>2023-11-20 15:54:52 +0100
commit6a0490257bf235d011004bc303306f617ac6ea31 (patch)
treee04160a26f78afaa60c4b18b3b16662d35106d97 /parser/compiler.go
parent001ca51323a1a54c9b3db377f0783c330666c480 (diff)
parser: add support for unary operators
Diffstat (limited to 'parser/compiler.go')
-rw-r--r--parser/compiler.go10
1 files changed, 10 insertions, 0 deletions
diff --git a/parser/compiler.go b/parser/compiler.go
index 41448b7..bdf801b 100644
--- a/parser/compiler.go
+++ b/parser/compiler.go
@@ -77,6 +77,16 @@ func (c *Compiler) Codegen(tokens Tokens) (err error) {
push(&symbol{Type: arithmeticOpType(pop(), pop())})
emit(int64(t.Pos), vm.Sub)
+ case lang.Minus:
+ emit(int64(t.Pos), vm.Push, 0)
+ emit(int64(t.Pos), vm.Sub)
+
+ case lang.Not:
+ emit(int64(t.Pos), vm.Not)
+
+ case lang.Plus:
+ // Nothing to do.
+
case lang.Index:
emit(int64(t.Pos), vm.Index)