diff options
| author | Marc Vertes <mvertes@free.fr> | 2023-11-20 11:00:51 +0100 |
|---|---|---|
| committer | Marc Vertes <mvertes@free.fr> | 2023-11-20 11:00:51 +0100 |
| commit | 001ca51323a1a54c9b3db377f0783c330666c480 (patch) | |
| tree | 7779e6b0c453f9f38bd5a24201011475f2b1f53a /parser/compiler.go | |
| parent | ee21c324ce8c41b589e5a39e5715223ffd154315 (diff) | |
parser: add support for slices and arrays, parse index expressions
Diffstat (limited to 'parser/compiler.go')
| -rw-r--r-- | parser/compiler.go | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/parser/compiler.go b/parser/compiler.go index 36fc9d4..41448b7 100644 --- a/parser/compiler.go +++ b/parser/compiler.go @@ -77,6 +77,9 @@ func (c *Compiler) Codegen(tokens Tokens) (err error) { push(&symbol{Type: arithmeticOpType(pop(), pop())}) emit(int64(t.Pos), vm.Sub) + case lang.Index: + emit(int64(t.Pos), vm.Index) + case lang.Greater: emit(int64(t.Pos), vm.Greater) @@ -103,7 +106,7 @@ func (c *Compiler) Codegen(tokens Tokens) (err error) { case lang.Assign: st := tokens[i-1] - if st.Id == lang.Period { + if st.Id == lang.Period || st.Id == lang.Index { emit(int64(t.Pos), vm.Vassign) break } |
