This commit is contained in:
uan
2026-02-04 22:35:26 +01:00
parent 6c9679ff57
commit 3eaeefcd4c
3 changed files with 19 additions and 14 deletions

View File

@@ -120,7 +120,6 @@ struct BoolLiteral {
struct Variable {
name string
scope_depth int
}
struct TypeExpr {
@@ -158,7 +157,7 @@ struct VarDecl {
name string
type string
value Expr
scope_depth int
const bool
}
struct FuncDecl {
@@ -270,7 +269,7 @@ fn (mut p Parser) parse_ident(ident string) Expr {
return match p.peek().type {
.increment, .decrement {UnaryExpr {ident: ident, op: p.next().text}}
.lparen {p.parse_call(ident)}
else {Variable{ident, p.symbols.variable_scopes.len}}
else {Variable{ident}}
}
}
@@ -404,7 +403,8 @@ fn (mut p Parser) get_return_stmts_recursive(block Block) []ReturnStmt {
fn (mut p Parser) parse_statement() Stmt {
match p.peek().type {
.kw_let {return p.parse_var_decl()}
.kw_let {return p.parse_var_decl(false)}
.kw_const {return p.parse_var_decl(true)}
.kw_return {return p.parse_return_stmt()}
.kw_fn {return p.parse_func_decl()}
.lbracket {return p.parse_block(false)}
@@ -414,8 +414,8 @@ fn (mut p Parser) parse_statement() Stmt {
fn (mut p Parser) parse_var_decl() VarDecl {
p.expect(.kw_let)
fn (mut p Parser) parse_var_decl(is_const bool) VarDecl {
p.next()
name_tok := p.next()
if name_tok.type != .identifier {
@@ -444,7 +444,7 @@ fn (mut p Parser) parse_var_decl() VarDecl {
name: name_tok.text
value: val
type: type_tok.text
scope_depth: p.symbols.variable_scopes.len
const: is_const
}
}