infix parsing and cleanup

This commit is contained in:
Chuck Smith
2024-01-16 21:02:07 -05:00
parent 307e01703e
commit 3d0247a7bb
4 changed files with 515 additions and 107 deletions

View File

@@ -74,6 +74,13 @@ type PrefixExpression struct {
Right Expression
}
type InfixExpression struct {
Token token.Token
Left Expression
Operator string
Right Expression
}
func (ls *LetStatement) statementNode() {
}
func (ls *LetStatement) TokenLiteral() string {
@@ -157,3 +164,19 @@ func (pe *PrefixExpression) String() string {
return out.String()
}
func (ie *InfixExpression) expressionNode() {}
func (ie *InfixExpression) TokenLiteral() string {
return ie.Token.Literal
}
func (ie *InfixExpression) String() string {
var out bytes.Buffer
out.WriteString("(")
out.WriteString(ie.Left.String())
out.WriteString(" " + ie.Operator + " ")
out.WriteString(ie.Right.String())
out.WriteString(")")
return out.String()
}