parser.go: improved terminal symbols thanks to new symbol-map.go functions

This commit is contained in:
Celestino Amoroso 2024-10-13 08:42:55 +02:00
parent 523349a204
commit a28d24ba68

View File

@ -336,6 +336,7 @@ func (parser *parser) parseItem(scanner *scanner, allowVarRef bool, termSymbols
} }
func (parser *parser) Parse(scanner *scanner, termSymbols ...Symbol) (tree *ast, err error) { func (parser *parser) Parse(scanner *scanner, termSymbols ...Symbol) (tree *ast, err error) {
termSymbols = append(termSymbols, SymEos)
return parser.parseGeneral(scanner, true, false, termSymbols...) return parser.parseGeneral(scanner, true, false, termSymbols...)
} }
@ -487,6 +488,10 @@ func (parser *parser) parseGeneral(scanner *scanner, allowForest bool, allowVarR
// lastSym = tk.Sym // lastSym = tk.Sym
} }
if err == nil && !tk.IsOneOf(termSymbols) {
err = tk.ErrorExpectedGotStringWithPrefix("expected one of", SymListToString(termSymbols, false), SymToString(tk.Sym))
}
if err == nil { if err == nil {
err = tk.Error() err = tk.Error()
} }