aboutsummaryrefslogtreecommitdiff
path: root/grammar
diff options
context:
space:
mode:
Diffstat (limited to 'grammar')
-rw-r--r--grammar/grammar.go12
1 files changed, 7 insertions, 5 deletions
diff --git a/grammar/grammar.go b/grammar/grammar.go
index 65d232d..80846d9 100644
--- a/grammar/grammar.go
+++ b/grammar/grammar.go
@@ -1317,12 +1317,10 @@ func Compile(gram *Grammar, opts ...CompileOption) (*spec.CompiledGrammar, *spec
}
kind2Term := make([]int, len(lexSpec.KindNames))
- term2Kind := make([]int, gram.symbolTable.termNum.Int())
skip := make([]int, len(lexSpec.KindNames))
for i, k := range lexSpec.KindNames {
if k == mlspec.LexKindNameNil {
kind2Term[mlspec.LexKindIDNil] = symbolNil.num().Int()
- term2Kind[symbolNil.num()] = mlspec.LexKindIDNil.Int()
continue
}
@@ -1331,7 +1329,6 @@ func Compile(gram *Grammar, opts ...CompileOption) (*spec.CompiledGrammar, *spec
return nil, nil, fmt.Errorf("terminal symbol '%v' was not found in a symbol table", k)
}
kind2Term[i] = sym.num().Int()
- term2Kind[sym.num()] = i
for _, sk := range gram.skipLexKinds {
if k != sk {
@@ -1342,10 +1339,16 @@ func Compile(gram *Grammar, opts ...CompileOption) (*spec.CompiledGrammar, *spec
}
}
- terms, err := gram.symbolTable.terminalTexts()
+ termTexts, err := gram.symbolTable.terminalTexts()
if err != nil {
return nil, nil, err
}
+ terms := make([]string, len(termTexts))
+ for i, t := range termTexts {
+ if !strings.HasPrefix(t, "x_") {
+ terms[i] = t
+ }
+ }
kindAliases := make([]string, gram.symbolTable.termNum.Int())
for _, sym := range gram.symbolTable.terminalSymbols() {
@@ -1440,7 +1443,6 @@ func Compile(gram *Grammar, opts ...CompileOption) (*spec.CompiledGrammar, *spec
Maleeni: &spec.Maleeni{
Spec: lexSpec,
KindToTerminal: kind2Term,
- TerminalToKind: term2Kind,
Skip: skip,
KindAliases: kindAliases,
},