Finally figured out unified condition syntax
This commit is contained in:
parent
2d052d34f7
commit
ba319a7bc3
17
TODO.md
17
TODO.md
@ -24,9 +24,22 @@ pattern matching w/ if-let:
|
|||||||
`if <half-expr> \n <rest-expr1> then <result1-expr> \n <rest-expr2> then <result-expr2> else <result3-expr>`
|
`if <half-expr> \n <rest-expr1> then <result1-expr> \n <rest-expr2> then <result-expr2> else <result3-expr>`
|
||||||
-and rest-exprs (or "targets") can have 'is' for pattern-matching, actually so can a full cond-expr
|
-and rest-exprs (or "targets") can have 'is' for pattern-matching, actually so can a full cond-expr
|
||||||
|
|
||||||
Grammar:
|
UNIFIED IF EXPRESSIONS FINAL WORK:
|
||||||
|
|
||||||
|
basic syntax:
|
||||||
|
|
||||||
|
`if_expr := if discriminator '{' (guard_expr)* '}'`
|
||||||
|
`guard_expr := pattern 'then' block_or_expr'`
|
||||||
|
`pattern := rhs | is_pattern`
|
||||||
|
`is_pattern := 'is' ???`
|
||||||
|
`rhs := expression | ???`
|
||||||
|
|
||||||
|
|
||||||
|
if the only two guard patterns are true and false, then the abbreviated syntax:
|
||||||
|
`'if' discriminator 'then' block_or_expr 'else' block_or_expr`
|
||||||
|
can replace `'if' discriminator '{' 'true' 'then' block_or_expr; 'false' 'then' block_or_expr '}'`
|
||||||
|
|
||||||
|
|
||||||
conditional := 'if' discriminator
|
|
||||||
|
|
||||||
|
|
||||||
- Next priorities: - get ADTs working, get matches working
|
- Next priorities: - get ADTs working, get matches working
|
||||||
|
Loading…
Reference in New Issue
Block a user