Change assignment into expressions
Some checks failed
Test / build (push) Waiting to run
Build / build (push) Has been cancelled

This commit is contained in:
Chuck Smith
2024-03-19 20:30:30 -04:00
parent aa0582ed72
commit be81b9a6d6
12 changed files with 478 additions and 153 deletions

View File

@@ -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 {