31 lines
641 B
Go
31 lines
641 B
Go
package ast
|
|
|
|
import (
|
|
"bytes"
|
|
"strings"
|
|
|
|
"code.jmug.me/jmug/compiler-in-go/pkg/token"
|
|
)
|
|
|
|
type CallExpression struct {
|
|
Token token.Token // The ( token
|
|
Function Expression
|
|
Arguments []Expression
|
|
}
|
|
|
|
func (ce *CallExpression) expressionNode() {}
|
|
func (ce *CallExpression) TokenLiteral() string {
|
|
return ce.Token.Literal
|
|
}
|
|
func (ce *CallExpression) String() string {
|
|
var out bytes.Buffer
|
|
out.WriteString(ce.Function.String())
|
|
out.WriteString("(")
|
|
args := []string{}
|
|
for _, arg := range ce.Arguments {
|
|
args = append(args, arg.String())
|
|
}
|
|
out.WriteString(strings.Join(args, ", "))
|
|
out.WriteString(")")
|
|
return out.String()
|
|
}
|