diff options
author | Himbeer <himbeer@disroot.org> | 2024-09-01 11:45:51 +0200 |
---|---|---|
committer | Himbeer <himbeer@disroot.org> | 2024-09-01 11:45:51 +0200 |
commit | a7a15e1193b09414316fea40d6999f47bc0f57d4 (patch) | |
tree | c3d468f43642540c5182ecad5d95a3e90a7c2462 /expression.go | |
parent | bb80a9c772b077bdc7173055e88c3e9f8bb1c35b (diff) |
Add support for arithmetic assignment statements
Diffstat (limited to 'expression.go')
-rw-r--r-- | expression.go | 63 |
1 files changed, 62 insertions, 1 deletions
diff --git a/expression.go b/expression.go index 9752730..27f4ddb 100644 --- a/expression.go +++ b/expression.go @@ -134,6 +134,11 @@ func (m *mutStmt) markDecl() {} func (m *mutStmt) line() int { return m.ln } +type assignmentStmt interface { + statementExpr + markAssign() +} + type assignStmt struct { name string value exprExpr @@ -144,10 +149,66 @@ func (a *assignStmt) markExpr() {} func (a *assignStmt) markStmt() {} -func (a *assignStmt) markDecl() {} +func (a *assignStmt) markAssign() {} func (a *assignStmt) line() int { return a.ln } +type addAssignStmt struct { + name string + value exprExpr + ln int +} + +func (a *addAssignStmt) markExpr() {} + +func (a *addAssignStmt) markStmt() {} + +func (a *addAssignStmt) markAssign() {} + +func (a *addAssignStmt) line() int { return a.ln } + +type subAssignStmt struct { + name string + value exprExpr + ln int +} + +func (s *subAssignStmt) markExpr() {} + +func (s *subAssignStmt) markStmt() {} + +func (s *subAssignStmt) markAssign() {} + +func (s *subAssignStmt) line() int { return s.ln } + +type mulAssignStmt struct { + name string + value exprExpr + ln int +} + +func (m *mulAssignStmt) markExpr() {} + +func (m *mulAssignStmt) markStmt() {} + +func (m *mulAssignStmt) markAssign() {} + +func (m *mulAssignStmt) line() int { return m.ln } + +type divAssignStmt struct { + name string + value exprExpr + ln int +} + +func (d *divAssignStmt) markExpr() {} + +func (d *divAssignStmt) markStmt() {} + +func (d *divAssignStmt) markAssign() {} + +func (d *divAssignStmt) line() int { return d.ln } + type exprExpr interface { expression markExprExpr() |