interpreter-in-go/pkg/ast/if_expression.go
jmug 9e9324bb56 Parse if and if else expressions.
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
2025-01-05 15:35:00 -08:00

31 lines
674 B
Go

package ast
import (
"bytes"
"code.jmug.me/jmug/interpreter-in-go/pkg/token"
)
type IfExpression struct {
Token token.Token // The `if` token.
Condition Expression
Consequence *BlockStatement
Alternative *BlockStatement
}
func (ie *IfExpression) expressionNode() {}
func (ie *IfExpression) TokenLiteral() string {
return ie.Token.Literal
}
func (ie *IfExpression) String() string {
var out bytes.Buffer
out.WriteString("if")
out.WriteString(ie.Condition.String())
out.WriteString(" ")
out.WriteString(ie.Consequence.String())
if ie.Alternative != nil {
out.WriteString("else ")
out.WriteString(ie.Alternative.String())
}
return out.String()
}