|
@@ -596,23 +596,23 @@ func (parser *Parser) ParseChain() *Ast {
|
|
// for easy composition
|
|
// for easy composition
|
|
var chain *Ast
|
|
var chain *Ast
|
|
|
|
|
|
- for i, j := len(expressions) - 1, len(operators) - 1 ; i >= 0 && j >= 0 ; i, j = i - 1 , j - 1 {
|
|
|
|
|
|
+ for i, j := 0, 0 ; i < len(expressions) && j < len(operators) ; i, j = i + 1 , j + 1 {
|
|
expression := expressions[i]
|
|
expression := expressions[i]
|
|
oper := operators[j]
|
|
oper := operators[j]
|
|
if chain == nil {
|
|
if chain == nil {
|
|
- expression2 := expressions[i-1]
|
|
|
|
- subst2 := NewAstWithToken(AstKindParenthesis, oper)
|
|
|
|
- subst2.AppendChildren(expression)
|
|
|
|
|
|
+ expression2 := expressions[i+1]
|
|
subst1 := NewAstWithToken(AstKindParenthesis, oper)
|
|
subst1 := NewAstWithToken(AstKindParenthesis, oper)
|
|
- subst1.AppendChildren(expression2)
|
|
|
|
|
|
+ subst1.AppendChildren(expression)
|
|
|
|
+ subst2 := NewAstWithToken(AstKindParenthesis, oper)
|
|
|
|
+ subst2.AppendChildren(expression2)
|
|
chain = NewAstWithToken(AstKindOperation, oper)
|
|
chain = NewAstWithToken(AstKindOperation, oper)
|
|
chain.AppendChildren(subst1, subst2)
|
|
chain.AppendChildren(subst1, subst2)
|
|
- i--
|
|
|
|
|
|
+ i++
|
|
} else {
|
|
} else {
|
|
subst := NewAstWithToken(AstKindParenthesis, oper)
|
|
subst := NewAstWithToken(AstKindParenthesis, oper)
|
|
subst.AppendChildren(expression)
|
|
subst.AppendChildren(expression)
|
|
newChain := NewAstWithToken(AstKindOperation, oper)
|
|
newChain := NewAstWithToken(AstKindOperation, oper)
|
|
- newChain.AppendChildren(subst, chain)
|
|
|
|
|
|
+ newChain.AppendChildren(chain, subst)
|
|
chain = newChain
|
|
chain = newChain
|
|
}
|
|
}
|
|
}
|
|
}
|