Statements

This commit is contained in:
2026-04-14 04:38:56 +02:00
parent 6c46c1f0bb
commit 3223a8c854
4 changed files with 221 additions and 10 deletions
+47 -1
View File
@@ -36,10 +36,56 @@ block = { "{" ~ statement_list ~ "}" }
statement_list = { statement* }
statement = _{ expr_stmt }
statement = _{
expr_stmt
| var_decl
| if_stmt
| while_stmt
| for_stmt
| return_stmt
| break_stmt
| continue_stmt
| block
}
// --- basic statements ---
expr_stmt = { expr ~ ";" }
return_stmt = { "return" ~ expr? ~ ";" }
break_stmt = { "break" ~ ";" }
continue_stmt = { "continue" ~ ";" }
// --- variable declarations ---
var_decl = {
("let" | "const" | "var") ~ identifier ~ ("=" ~ expr)? ~ ";"
}
// --- control flow ---
if_stmt = {
"if" ~ "(" ~ expr ~ ")" ~ statement ~ ("else" ~ statement)?
}
while_stmt = {
"while" ~ "(" ~ expr ~ ")" ~ statement
}
for_stmt = {
"for" ~ "(" ~ (var_decl_no_semicolon | expr_stmt | ";")
~ expr? ~ ";"
~ expr? ~ ")"
~ statement
}
// helper (same as var_decl but no trailing ;)
var_decl_no_semicolon = {
("let" | "const" | "var") ~ identifier ~ ("=" ~ expr)?
}
// ================= EXPRESSIONS =================
type_expr = { identifier }