ast.go, pasrse.go: fixed the recover routine
This commit is contained in:
parent
f2d1f23774
commit
75ed88915d
9
ast.go
9
ast.go
@ -111,11 +111,10 @@ func (ast *ast) Eval(ctx kern.ExprContext) (result any, err error) {
|
|||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
if errVal, ok := r.(error); ok {
|
if errVal, ok := r.(error); ok {
|
||||||
err = errVal
|
err = errVal
|
||||||
}
|
} else {
|
||||||
}
|
|
||||||
if err == nil {
|
|
||||||
err = errors.New("unexpected error while evaluating the expression")
|
err = errors.New("unexpected error while evaluating the expression")
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
ast.Finish()
|
ast.Finish()
|
||||||
@ -123,8 +122,8 @@ func (ast *ast) Eval(ctx kern.ExprContext) (result any, err error) {
|
|||||||
if ast.root != nil {
|
if ast.root != nil {
|
||||||
// initDefaultVars(ctx)
|
// initDefaultVars(ctx)
|
||||||
if ast.forest != nil {
|
if ast.forest != nil {
|
||||||
for _, root := range ast.forest {
|
for _, tree := range ast.forest {
|
||||||
if result, err = root.Compute(ctx); err == nil {
|
if result, err = tree.Compute(ctx); err == nil {
|
||||||
ctx.UnsafeSetVar(kern.ControlLastResult, result)
|
ctx.UnsafeSetVar(kern.ControlLastResult, result)
|
||||||
} else {
|
} else {
|
||||||
//err = fmt.Errorf("error in expression nr %d: %v", i+1, err)
|
//err = fmt.Errorf("error in expression nr %d: %v", i+1, err)
|
||||||
|
|||||||
@ -386,11 +386,10 @@ func (parser *parser) Parse(scanner *scanner, termSymbols ...Symbol) (tree *ast,
|
|||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
if errVal, ok := r.(error); ok {
|
if errVal, ok := r.(error); ok {
|
||||||
err = errVal
|
err = errVal
|
||||||
}
|
} else {
|
||||||
}
|
|
||||||
if err == nil {
|
|
||||||
err = errors.New("unexpected error while parsing the expression")
|
err = errors.New("unexpected error while parsing the expression")
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}()
|
}()
|
||||||
termSymbols = append(termSymbols, SymEos)
|
termSymbols = append(termSymbols, SymEos)
|
||||||
return parser.parseGeneral(scanner, allowMultiExpr, termSymbols...)
|
return parser.parseGeneral(scanner, allowMultiExpr, termSymbols...)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user