26 lines
587 B
Go
26 lines
587 B
Go
package ast
|
|
|
|
import (
|
|
"bytes"
|
|
|
|
"code.jmug.me/jmug/compiler-in-go/pkg/token"
|
|
)
|
|
|
|
type ReturnStatement struct {
|
|
Token token.Token // TODO: This is a little redundant, figure out if I can get rid of it.
|
|
ReturnValue Expression
|
|
}
|
|
|
|
func (rs *ReturnStatement) statementNode() {}
|
|
func (rs *ReturnStatement) TokenLiteral() string {
|
|
return rs.Token.Literal
|
|
}
|
|
func (rs *ReturnStatement) String() string {
|
|
var out bytes.Buffer
|
|
out.WriteString(rs.TokenLiteral())
|
|
if rs.ReturnValue != nil {
|
|
out.WriteString(" " + rs.ReturnValue.String())
|
|
}
|
|
out.WriteString(";")
|
|
return out.String()
|
|
}
|