Change assignment into expressions
This commit is contained in:
20
ast/ast.go
20
ast/ast.go
@@ -389,29 +389,27 @@ func (we *WhileExpression) String() string {
|
||||
return out.String()
|
||||
}
|
||||
|
||||
// AssignmentStatement the `=` statement represents the AST node that rebinds
|
||||
// an expression to an identifier (assigning a new value).
|
||||
type AssignmentStatement struct {
|
||||
// AssignmentExpression represents an assignment expression of the form:
|
||||
// x = 1 or xs[1] = 2
|
||||
type AssignmentExpression struct {
|
||||
Token token.Token // the token.ASSIGN token
|
||||
Name *Identifier
|
||||
Left Expression
|
||||
Value Expression
|
||||
}
|
||||
|
||||
func (as AssignmentStatement) TokenLiteral() string {
|
||||
func (as AssignmentExpression) TokenLiteral() string {
|
||||
return as.Token.Literal
|
||||
}
|
||||
func (as AssignmentStatement) String() string {
|
||||
func (as AssignmentExpression) String() string {
|
||||
var out bytes.Buffer
|
||||
|
||||
out.WriteString(as.Name.String())
|
||||
out.WriteString(as.TokenLiteral() + " ")
|
||||
out.WriteString(as.Left.String())
|
||||
out.WriteString(as.TokenLiteral())
|
||||
out.WriteString(as.Value.String())
|
||||
|
||||
out.WriteString(";")
|
||||
|
||||
return out.String()
|
||||
}
|
||||
func (as AssignmentStatement) statementNode() {}
|
||||
func (as AssignmentExpression) expressionNode() {}
|
||||
|
||||
// Comment a comment
|
||||
type Comment struct {
|
||||
|
||||
Reference in New Issue
Block a user