aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--grammar/grammar.go5
1 files changed, 4 insertions, 1 deletions
diff --git a/grammar/grammar.go b/grammar/grammar.go
index 05ba836..d0ae2f4 100644
--- a/grammar/grammar.go
+++ b/grammar/grammar.go
@@ -113,6 +113,7 @@ func NewGrammar(root *spec.RootNode) (*Grammar, error) {
}
}
+ var anonEntries []*mlspec.LexEntry
for i, p := range anonPats {
kind := fmt.Sprintf("__%v__", i+1)
@@ -122,11 +123,13 @@ func NewGrammar(root *spec.RootNode) (*Grammar, error) {
}
anonPat2Sym[p] = sym
- entries = append(entries, &mlspec.LexEntry{
+ anonEntries = append(anonEntries, &mlspec.LexEntry{
Kind: mlspec.LexKind(kind),
Pattern: mlspec.LexPattern(p),
})
}
+ // Anonymous patterns take precedence over explicitly defined lexical specifications.
+ entries = append(anonEntries, entries...)
for _, fragment := range root.Fragments {
entries = append(entries, &mlspec.LexEntry{