From ee283aba92757f3661e6bb1cc746e8bb5efff884 Mon Sep 17 00:00:00 2001 From: Antonio Navarro Perez Date: Tue, 12 Mar 2024 15:23:18 +0100 Subject: Fix: small README fixes and throw an error if expression not supported. Signed-off-by: Antonio Navarro Perez --- parser/README.md | 2 +- parser/expr.go | 3 +++ vm/README.md | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/parser/README.md b/parser/README.md index 118d9aa..b233248 100644 --- a/parser/README.md +++ b/parser/README.md @@ -13,7 +13,7 @@ The input of parser is a list of tokens produced by the scanner. Multiple tokens are processed at once. The minimal set to get meaningful results (not an error or nil) is a complete statement. -The output of parser is also a list of tokens, to be consummed by +The output of parser is also a list of tokens, to be consumed by the compiler to produce bytecode. The output tokens set is identical to the bytecode instructions set except that: diff --git a/parser/expr.go b/parser/expr.go index 806fd75..45eb880 100644 --- a/parser/expr.go +++ b/parser/expr.go @@ -1,6 +1,7 @@ package parser import ( + "fmt" "log" "strconv" @@ -86,6 +87,8 @@ func (p *Parser) ParseExpr(in Tokens) (out Tokens, err error) { out = append(out, t) vl++ ops = append(ops, scanner.Token{Str: "index", Id: lang.Index, Pos: t.Pos}) + default: + return nil, fmt.Errorf("expression not supported yet: %q", t.Str) } if len(selectors) > 0 { out = append(out, selectors...) diff --git a/vm/README.md b/vm/README.md index 92b1ac8..ee550a2 100644 --- a/vm/README.md +++ b/vm/README.md @@ -28,7 +28,7 @@ Structurally, the vm implements logical and arithmetic operators, condional jumps for `if`, `for` and `switch` control flow, and function call, return and frame management. -the memory state of the vm is a slice of Go interfaces (`[]any`). +the memory state of the vm is a slice of (`[]reflect.Value`). The whole vm is coded in a single function of 80 lines with no dependencies. The size will grow as we add missing instructions, but the -- cgit v1.2.3 From a7f99d19978e5bf337be3e778f5376f346f69c4a Mon Sep 17 00:00:00 2001 From: Antonio Navarro Perez Date: Wed, 13 Mar 2024 15:56:08 +0100 Subject: Update vm/README.md Co-authored-by: Marc Vertes --- vm/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vm/README.md b/vm/README.md index ee550a2..127da45 100644 --- a/vm/README.md +++ b/vm/README.md @@ -28,7 +28,7 @@ Structurally, the vm implements logical and arithmetic operators, condional jumps for `if`, `for` and `switch` control flow, and function call, return and frame management. -the memory state of the vm is a slice of (`[]reflect.Value`). +the memory state of the vm is a slice of (`[]Value`), where `Value` is similar to a `reflect.Value`, containing pointers to value data and type. The whole vm is coded in a single function of 80 lines with no dependencies. The size will grow as we add missing instructions, but the -- cgit v1.2.3