parser: token '()' returns error

This commit is contained in:
Celestino Amoroso 2026-04-30 07:03:28 +02:00
parent 116b54836f
commit 75a3f220df
2 changed files with 19 additions and 15 deletions

View File

@ -455,15 +455,6 @@ func (parser *parser) parseGeneral(scanner *scanner, ctx parserContext, termSymb
//fmt.Println("Token:", tk) //fmt.Println("Token:", tk)
if firstToken { if firstToken {
changePrefix(tk) changePrefix(tk)
// if tk.Sym == SymMinus {
// tk.Sym = SymChangeSign
// } else if tk.Sym == SymPlus {
// tk.Sym = SymUnchangeSign
// } else if tk.IsSymbol(SymStar) {
// tk.SetSymbol(SymDereference)
// } else if tk.IsSymbol(SymExclamation) {
// tk.SetSymbol(SymNot)
// }
firstToken = false firstToken = false
} }
@ -471,12 +462,13 @@ func (parser *parser) parseGeneral(scanner *scanner, ctx parserContext, termSymb
case SymOpenRound: case SymOpenRound:
var subTree *ast var subTree *ast
if subTree, err = parser.parseGeneral(scanner, ctx, SymClosedRound); err == nil { if subTree, err = parser.parseGeneral(scanner, ctx, SymClosedRound); err == nil {
exprTerm := newExprTerm(subTree.root) if subTree.root == nil {
err = tree.addTerm(exprTerm) err = tk.ErrorExpectedGotString("expression", "()")
currentTerm = exprTerm } else {
// subTree.root.priority = priValue exprTerm := newExprTerm(subTree.root)
// err = tree.addTerm(newExprTerm(subTree.root)) err = tree.addTerm(exprTerm)
// currentTerm = subTree.root currentTerm = exprTerm
}
} }
case SymFuncCall: case SymFuncCall:
var funcCallTerm *term var funcCallTerm *term

View File

@ -147,3 +147,15 @@ func TestGeneralParser(t *testing.T) {
// runTestSuiteSpec(t, section, inputs, 114) // runTestSuiteSpec(t, section, inputs, 114)
runTestSuite(t, section, inputs) runTestSuite(t, section, inputs)
} }
func TestSpecialParser(t *testing.T) {
section := "Parser"
inputs := []inputType{
/* 1 */ {`()`, nil, `[1:2] expected expression, got "()"`},
}
// t.Setenv("EXPR_PATH", ".")
// runTestSuiteSpec(t, section, inputs, 114)
runTestSuite(t, section, inputs)
}