Add example for if expressions

main
trivernis 2 months ago
parent f30d053de2
commit d3e9feaaf4
Signed by: Trivernis
GPG Key ID: 7E6D18B61C8D2F4B

@ -43,6 +43,13 @@ add2 4
// nested function calls // nested function calls
add2 (sub4 (mul2 4)) add2 (sub4 (mul2 4))
// if is an expression that can return a value
let value =
if a == b then
a
else
b
``` ```
### Declarations ### Declarations

@ -3,7 +3,7 @@ file = {
} }
statement = { (decl | type_decl | expr) ~ TERMINATE } statement = { (decl | type_decl | expr) ~ TERMINATE }
decl = { "let" ~ #name = ident ~ #args = (ident)* ~ #type = type_annot? ~ "=" ~ expr } decl = { "let" ~ #name = ident ~ #args = (ident)* ~ #type = type_annot? ~ "=" ~ MLF ~ expr }
block = { "{" ~ MLF ~ block_line ~ MLF ~ "}" } block = { "{" ~ MLF ~ block_line ~ MLF ~ "}" }
block_line = _{ expr | (statement ~ MLF)* } block_line = _{ expr | (statement ~ MLF)* }

@ -12,6 +12,12 @@ if 1 != 1 then {
a + 1 a + 1
} }
let value =
if a == b then
a
else
b
====== ======
(file (file
@ -88,5 +94,27 @@ if 1 != 1 then {
) )
) )
) )
(statement
(decl
(ident: "value")
(expr
(if
(expr
(infix_expr
(ident: "a")
(operator: "==")
(ident: "b")
)
)
(expr
(ident: "a")
)
(expr
(ident: "b")
)
)
)
)
)
(EOI: "") (EOI: "")
) )

Loading…
Cancel
Save