From 75a3f220dfaebbf129960ffe1c66f6de6aa0bcbf Mon Sep 17 00:00:00 2001 From: Celestino Amoroso Date: Thu, 30 Apr 2026 07:03:28 +0200 Subject: [PATCH] parser: token '()' returns error --- parser.go | 22 +++++++--------------- t_parser_test.go | 12 ++++++++++++ 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/parser.go b/parser.go index f0bf6d9..0c7d5a5 100644 --- a/parser.go +++ b/parser.go @@ -455,15 +455,6 @@ func (parser *parser) parseGeneral(scanner *scanner, ctx parserContext, termSymb //fmt.Println("Token:", tk) if firstToken { 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 } @@ -471,12 +462,13 @@ func (parser *parser) parseGeneral(scanner *scanner, ctx parserContext, termSymb case SymOpenRound: var subTree *ast if subTree, err = parser.parseGeneral(scanner, ctx, SymClosedRound); err == nil { - exprTerm := newExprTerm(subTree.root) - err = tree.addTerm(exprTerm) - currentTerm = exprTerm - // subTree.root.priority = priValue - // err = tree.addTerm(newExprTerm(subTree.root)) - // currentTerm = subTree.root + if subTree.root == nil { + err = tk.ErrorExpectedGotString("expression", "()") + } else { + exprTerm := newExprTerm(subTree.root) + err = tree.addTerm(exprTerm) + currentTerm = exprTerm + } } case SymFuncCall: var funcCallTerm *term diff --git a/t_parser_test.go b/t_parser_test.go index d56fac1..b959c80 100644 --- a/t_parser_test.go +++ b/t_parser_test.go @@ -147,3 +147,15 @@ func TestGeneralParser(t *testing.T) { // runTestSuiteSpec(t, section, inputs, 114) 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) +}