aboutsummaryrefslogtreecommitdiff
path: root/driver
diff options
context:
space:
mode:
Diffstat (limited to 'driver')
-rw-r--r--driver/parser.go2
-rw-r--r--driver/parser_test.go24
-rw-r--r--driver/semantic_action.go4
-rw-r--r--driver/semantic_action_test.go5
4 files changed, 18 insertions, 17 deletions
diff --git a/driver/parser.go b/driver/parser.go
index c9b6229..6a62554 100644
--- a/driver/parser.go
+++ b/driver/parser.go
@@ -45,7 +45,7 @@ type Parser struct {
}
func NewParser(gram *spec.CompiledGrammar, src io.Reader, opts ...ParserOption) (*Parser, error) {
- lex, err := mldriver.NewLexer(gram.LexicalSpecification.Maleeni.Spec, src)
+ lex, err := mldriver.NewLexer(mldriver.NewLexSpec(gram.LexicalSpecification.Maleeni.Spec), src)
if err != nil {
return nil, err
}
diff --git a/driver/parser_test.go b/driver/parser_test.go
index 0fad19f..af3e9a1 100644
--- a/driver/parser_test.go
+++ b/driver/parser_test.go
@@ -55,7 +55,7 @@ id: "[A-Za-z_][0-9A-Za-z_]*";
nonTermNode("term",
nonTermNode("term",
nonTermNode("factor",
- termNode("__3__", "("),
+ termNode("x_3", "("),
nonTermNode("expr",
nonTermNode("expr",
nonTermNode("term",
@@ -64,10 +64,10 @@ id: "[A-Za-z_][0-9A-Za-z_]*";
),
),
),
- termNode("__1__", "+"),
+ termNode("x_1", "+"),
nonTermNode("term",
nonTermNode("factor",
- termNode("__3__", "("),
+ termNode("x_3", "("),
nonTermNode("expr",
nonTermNode("expr",
nonTermNode("term",
@@ -76,27 +76,27 @@ id: "[A-Za-z_][0-9A-Za-z_]*";
),
),
),
- termNode("__1__", "+"),
+ termNode("x_1", "+"),
nonTermNode("term",
nonTermNode("factor",
termNode("id", "c"),
),
),
),
- termNode("__4__", ")"),
+ termNode("x_4", ")"),
),
),
),
- termNode("__4__", ")"),
+ termNode("x_4", ")"),
),
),
- termNode("__2__", "*"),
+ termNode("x_2", "*"),
nonTermNode("factor",
termNode("id", "d"),
),
),
),
- termNode("__1__", "+"),
+ termNode("x_1", "+"),
nonTermNode("term",
nonTermNode("factor",
termNode("id", "e"),
@@ -272,19 +272,19 @@ id: "[A-Za-z]+";
`,
src: `[Byers, Frohike, Langly]`,
cst: nonTermNode("list",
- termNode("__1__", "["),
+ termNode("x_1", "["),
nonTermNode("elems",
nonTermNode("elems",
nonTermNode("elems",
termNode("id", "Byers"),
),
- termNode("__3__", ","),
+ termNode("x_3", ","),
termNode("id", "Frohike"),
),
- termNode("__3__", ","),
+ termNode("x_3", ","),
termNode("id", "Langly"),
),
- termNode("__2__", "]"),
+ termNode("x_2", "]"),
),
ast: nonTermNode("list",
termNode("id", "Byers"),
diff --git a/driver/semantic_action.go b/driver/semantic_action.go
index 1db703b..8bcbd22 100644
--- a/driver/semantic_action.go
+++ b/driver/semantic_action.go
@@ -103,7 +103,7 @@ func (a *SyntaxTreeActionSet) Shift(tok *mldriver.Token, recovered bool) {
if a.makeAST {
ast = &Node{
KindName: a.gram.ParsingTable.Terminals[term],
- Text: tok.Text(),
+ Text: string(tok.Lexeme),
Row: tok.Row,
Col: tok.Col,
}
@@ -111,7 +111,7 @@ func (a *SyntaxTreeActionSet) Shift(tok *mldriver.Token, recovered bool) {
if a.makeCST {
cst = &Node{
KindName: a.gram.ParsingTable.Terminals[term],
- Text: tok.Text(),
+ Text: string(tok.Lexeme),
Row: tok.Row,
Col: tok.Col,
}
diff --git a/driver/semantic_action_test.go b/driver/semantic_action_test.go
index 1d785e4..889016b 100644
--- a/driver/semantic_action_test.go
+++ b/driver/semantic_action_test.go
@@ -16,10 +16,11 @@ type testSemAct struct {
}
func (a *testSemAct) Shift(tok *mldriver.Token, recovered bool) {
+ k := a.gram.LexicalSpecification.Maleeni.Spec.KindNames[tok.KindID]
if recovered {
- a.actLog = append(a.actLog, fmt.Sprintf("shift/%v/recovered", tok.KindName))
+ a.actLog = append(a.actLog, fmt.Sprintf("shift/%v/recovered", k))
} else {
- a.actLog = append(a.actLog, fmt.Sprintf("shift/%v", tok.KindName))
+ a.actLog = append(a.actLog, fmt.Sprintf("shift/%v", k))
}
}