aboutsummaryrefslogtreecommitdiff
path: root/expression.go
diff options
context:
space:
mode:
authorHimbeer <himbeer@disroot.org>2024-08-30 18:53:44 +0200
committerHimbeer <himbeer@disroot.org>2024-08-30 18:53:44 +0200
commitfa461715a9a4fbca6bd012c0f2b8e35631ec12e8 (patch)
tree8982bb98b0737a8424cf9012ba9a6031f9754dd0 /expression.go
parent22786e52f6ed94424491660e33effd7173fd9279 (diff)
Add support for local constant and variable declarations
Diffstat (limited to 'expression.go')
-rw-r--r--expression.go33
1 files changed, 33 insertions, 0 deletions
diff --git a/expression.go b/expression.go
index c62918c..7693f79 100644
--- a/expression.go
+++ b/expression.go
@@ -101,6 +101,39 @@ func (r *returnStmt) markStmt() {}
func (r *returnStmt) line() int { return r.ln }
+type declStmt interface {
+ statementExpr
+ markDecl()
+}
+
+type constStmt struct {
+ name string
+ initial exprExpr
+ ln int
+}
+
+func (c *constStmt) markExpr() {}
+
+func (c *constStmt) markStmt() {}
+
+func (c *constStmt) markDecl() {}
+
+func (c *constStmt) line() int { return c.ln }
+
+type mutStmt struct {
+ name string
+ initial exprExpr
+ ln int
+}
+
+func (m *mutStmt) markExpr() {}
+
+func (m *mutStmt) markStmt() {}
+
+func (m *mutStmt) markDecl() {}
+
+func (m *mutStmt) line() int { return m.ln }
+
type exprExpr interface {
expression
markExprExpr()