@@ -5,21 +5,23 @@ import (
5
5
"fmt"
6
6
"io"
7
7
8
+ "fortio.org/log"
9
+ "github.com/ldemailly/gorpl/eval"
8
10
"github.com/ldemailly/gorpl/lexer"
9
11
"github.com/ldemailly/gorpl/parser"
10
12
)
11
13
12
14
const PROMPT = "$ "
13
15
14
- func printParserErrors ( out io. Writer , p * parser.Parser ) bool {
16
+ func logParserErrors ( p * parser.Parser ) bool {
15
17
errors := p .Errors ()
16
18
if len (errors ) == 0 {
17
19
return false
18
20
}
19
21
20
- fmt . Fprintf ( out , "parser has %d error(s)\n " , len (errors ))
22
+ log . Critf ( "parser has %d error(s)" , len (errors ))
21
23
for _ , msg := range errors {
22
- fmt . Fprintf ( out , "parser error: %s\n " , msg )
24
+ log . Errf ( "parser error: %s" , msg )
23
25
}
24
26
return true
25
27
}
@@ -39,9 +41,13 @@ func Start(in io.Reader, out io.Writer) {
39
41
40
42
p := parser .New (l )
41
43
program := p .ParseProgram ()
42
- if printParserErrors ( out , p ) {
44
+ if logParserErrors ( p ) {
43
45
continue
44
46
}
47
+ fmt .Print ("== Parse ==> " )
45
48
fmt .Println (program .String ())
49
+ fmt .Print ("== Eval ==> " )
50
+ obj := eval .Eval (program )
51
+ fmt .Println (obj .Inspect ())
46
52
}
47
53
}
0 commit comments