parseAdditiveExpression parses expressions with + and - operators
()
| 144 | |
| 145 | // parseAdditiveExpression parses expressions with + and - operators |
| 146 | func (p *Parser) parseAdditiveExpression() (ast.Expression, error) { |
| 147 | // Parse the left side using multiplicative expression |
| 148 | left, err := p.parseMultiplicativeExpression() |
| 149 | if err != nil { |
| 150 | return nil, err |
| 151 | } |
| 152 | |
| 153 | // Handle + and - operators (left-associative) |
| 154 | for p.isType(models.TokenTypePlus) || p.isType(models.TokenTypeMinus) { |
| 155 | opPos := p.currentLocation() |
| 156 | operator := p.currentToken.Token.Value |
| 157 | p.advance() // Consume operator |
| 158 | |
| 159 | right, err := p.parseMultiplicativeExpression() |
| 160 | if err != nil { |
| 161 | return nil, err |
| 162 | } |
| 163 | |
| 164 | left = &ast.BinaryExpression{ |
| 165 | Left: left, |
| 166 | Operator: operator, |
| 167 | Right: right, |
| 168 | Pos: opPos, |
| 169 | } |
| 170 | } |
| 171 | |
| 172 | return left, nil |
| 173 | } |
| 174 | |
| 175 | // parseMultiplicativeExpression parses expressions with *, /, and % operators |
| 176 | func (p *Parser) parseMultiplicativeExpression() (ast.Expression, error) { |
no test coverage detected