Compare commits
No commits in common. "43e631f2e82b44ee698d01f209ad9226f340a937" and "ed6af6603af99a0b0be2d6c6961c74f6c061e6a6" have entirely different histories.
43e631f2e8
...
ed6af6603a
@ -24,11 +24,11 @@ func TestExpr(t *testing.T) {
|
|||||||
succeeded := 0
|
succeeded := 0
|
||||||
failed := 0
|
failed := 0
|
||||||
|
|
||||||
inputs1 := []inputType{
|
// inputs1 := []inputType{
|
||||||
{`f = func(op){op()}; f(func(){2})`, int64(2), nil},
|
// {`1 ? {"a"} : {"b"} ? ["a"] {"A"} :["b"] {"B"}`, "B", nil},
|
||||||
}
|
// }
|
||||||
|
|
||||||
for i, input := range inputs1 {
|
for i, input := range inputs {
|
||||||
var expr Expr
|
var expr Expr
|
||||||
var gotResult any
|
var gotResult any
|
||||||
var gotErr error
|
var gotErr error
|
||||||
|
@ -89,12 +89,7 @@ type funcDefFunctor struct {
|
|||||||
func (functor *funcDefFunctor) Invoke(ctx ExprContext, name string, args []any) (result any, err error) {
|
func (functor *funcDefFunctor) Invoke(ctx ExprContext, name string, args []any) (result any, err error) {
|
||||||
for i, p := range functor.params {
|
for i, p := range functor.params {
|
||||||
if i < len(args) {
|
if i < len(args) {
|
||||||
arg := args[i]
|
ctx.setVar(p, args[i])
|
||||||
if functor, ok := arg.(Functor); ok {
|
|
||||||
ctx.RegisterFunc(p, functor, 0, -1)
|
|
||||||
} else {
|
|
||||||
ctx.setVar(p, arg)
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
ctx.setVar(p, nil)
|
ctx.setVar(p, nil)
|
||||||
}
|
}
|
||||||
|
@ -176,6 +176,8 @@ func (self *parser) parseSelector(scanner *scanner, tree *ast, allowVarRef bool)
|
|||||||
|
|
||||||
if caseTerm, err = self.parseSelectorCase(scanner, allowVarRef, false); err == nil {
|
if caseTerm, err = self.parseSelectorCase(scanner, allowVarRef, false); err == nil {
|
||||||
addSelectorCase(selectorTerm, caseTerm)
|
addSelectorCase(selectorTerm, caseTerm)
|
||||||
|
// selectorTerm.children = append(selectorTerm.children, caseTerm)
|
||||||
|
// caseTerm.parent = selectorTerm
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -198,6 +200,7 @@ func (self *parser) parseGeneral(scanner *scanner, allowForest bool, allowVarRef
|
|||||||
if tk.Sym == SymComment {
|
if tk.Sym == SymComment {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
//resetSelector := true
|
||||||
|
|
||||||
if tk.Sym == SymSemiColon {
|
if tk.Sym == SymSemiColon {
|
||||||
if allowForest {
|
if allowForest {
|
||||||
@ -265,12 +268,15 @@ func (self *parser) parseGeneral(scanner *scanner, allowForest bool, allowVarRef
|
|||||||
if selectorTerm == nil {
|
if selectorTerm == nil {
|
||||||
err = tk.Errorf("selector-case outside of a selector context")
|
err = tk.Errorf("selector-case outside of a selector context")
|
||||||
} else if caseTerm, err = self.parseSelectorCase(scanner, allowVarRef, tk.Sym == SymDoubleColon); err == nil {
|
} else if caseTerm, err = self.parseSelectorCase(scanner, allowVarRef, tk.Sym == SymDoubleColon); err == nil {
|
||||||
|
// selectorTerm.children = append(selectorTerm.children, caseTerm)
|
||||||
|
// caseTerm.parent = selectorTerm
|
||||||
addSelectorCase(selectorTerm, caseTerm)
|
addSelectorCase(selectorTerm, caseTerm)
|
||||||
currentTerm = caseTerm
|
currentTerm = caseTerm
|
||||||
if tk.Sym == SymDoubleColon {
|
if tk.Sym == SymDoubleColon {
|
||||||
selectorTerm = nil
|
selectorTerm = nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//resetSelector = tk.Sym == SymDoubleColon
|
||||||
default:
|
default:
|
||||||
currentTerm, err = tree.addToken2(tk)
|
currentTerm, err = tree.addToken2(tk)
|
||||||
}
|
}
|
||||||
@ -279,6 +285,9 @@ func (self *parser) parseGeneral(scanner *scanner, allowForest bool, allowVarRef
|
|||||||
selectorTerm = nil
|
selectorTerm = nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
// if resetSelector {
|
||||||
|
// selectorTree = nil
|
||||||
|
// }
|
||||||
lastSym = tk.Sym
|
lastSym = tk.Sym
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
Loading…
Reference in New Issue
Block a user