diff options
| author | Marc Vertes <mvertes@free.fr> | 2023-11-20 15:54:52 +0100 |
|---|---|---|
| committer | Marc Vertes <mvertes@free.fr> | 2023-11-20 15:54:52 +0100 |
| commit | 6a0490257bf235d011004bc303306f617ac6ea31 (patch) | |
| tree | e04160a26f78afaa60c4b18b3b16662d35106d97 /parser/compiler.go | |
| parent | 001ca51323a1a54c9b3db377f0783c330666c480 (diff) | |
parser: add support for unary operators
Diffstat (limited to 'parser/compiler.go')
| -rw-r--r-- | parser/compiler.go | 10 |
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) |
