Better ecc

This commit is contained in:
Anton Medvedev
2019-06-14 14:11:11 +03:00
parent fad76b558b
commit aecbbeb28d
2 changed files with 18 additions and 2 deletions
+3
View File
@@ -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
View File
@@ -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)