mirror of
https://github.com/hanzoai/expr.git
synced 2026-09-24 16:58:58 +00:00
Better ecc
This commit is contained in:
@@ -93,6 +93,9 @@ func (v *visitor) NilNode(node *ast.NilNode) reflect.Type {
|
||||
}
|
||||
|
||||
func (v *visitor) IdentifierNode(node *ast.IdentifierNode) reflect.Type {
|
||||
if v.types == nil {
|
||||
return interfaceType
|
||||
}
|
||||
if t, ok := v.types[node.Value]; ok {
|
||||
return t.Type
|
||||
}
|
||||
|
||||
+15
-2
@@ -4,6 +4,7 @@ import (
|
||||
"bufio"
|
||||
"flag"
|
||||
"fmt"
|
||||
"github.com/antonmedv/expr/checker"
|
||||
"github.com/antonmedv/expr/compiler"
|
||||
"github.com/antonmedv/expr/parser"
|
||||
"github.com/antonmedv/expr/vm"
|
||||
@@ -85,10 +86,13 @@ func printAst() {
|
||||
}
|
||||
|
||||
func printDisassemble() {
|
||||
node, err := parser.Parse(input())
|
||||
tree, err := parser.Parse(input())
|
||||
check(err)
|
||||
|
||||
program, err := compiler.Compile(node)
|
||||
_, err = checker.Check(tree, nil)
|
||||
check(err)
|
||||
|
||||
program, err := compiler.Compile(tree)
|
||||
check(err)
|
||||
|
||||
_, _ = fmt.Fprintf(os.Stdout, program.Disassemble())
|
||||
@@ -98,6 +102,9 @@ func runProgram() {
|
||||
tree, err := parser.Parse(input())
|
||||
check(err)
|
||||
|
||||
_, err = checker.Check(tree, nil)
|
||||
check(err)
|
||||
|
||||
program, err := compiler.Compile(tree)
|
||||
check(err)
|
||||
|
||||
@@ -127,6 +134,12 @@ func startRepl() {
|
||||
goto prompt
|
||||
}
|
||||
|
||||
_, err = checker.Check(tree, nil)
|
||||
if err != nil {
|
||||
fmt.Printf("%v\n", err)
|
||||
goto prompt
|
||||
}
|
||||
|
||||
program, err = compiler.Compile(tree)
|
||||
if err != nil {
|
||||
fmt.Printf("%v\n", err)
|
||||
|
||||
Reference in New Issue
Block a user