A few more fixes to EBNF
This commit is contained in:
parent
dfbd951aaf
commit
e9fd20bfe5
2
TODO.md
2
TODO.md
@ -15,8 +15,6 @@ print the generated type variable for every subexpression in an expression
|
|||||||
|
|
||||||
-idea: the `type` declaration should have some kind of GADT-like syntax
|
-idea: the `type` declaration should have some kind of GADT-like syntax
|
||||||
|
|
||||||
-idea: I should make the BNF grammar part of the documentation...
|
|
||||||
|
|
||||||
- Idea: if you have a pattern-match where one variant has a variable and the other lacks it
|
- Idea: if you have a pattern-match where one variant has a variable and the other lacks it
|
||||||
instead of treating this as a type error, promote the bound variable to an option type
|
instead of treating this as a type error, promote the bound variable to an option type
|
||||||
|
|
||||||
|
@ -80,9 +80,9 @@
|
|||||||
//!
|
//!
|
||||||
//! ```
|
//! ```
|
||||||
//! list_expr := "[" (expression, ",")* "]"
|
//! list_expr := "[" (expression, ",")* "]"
|
||||||
//! lambda_expr := "\" lambda_param_list type_anno+ nonempty_func_body
|
//! lambda_expr := "\\" lambda_param_list type_anno+ nonempty_func_body
|
||||||
//! lambda_param_list := formal_param_list | formal_param
|
//! lambda_param_list := formal_param_list | formal_param
|
||||||
//! paren_expr := LParen paren_inner RParen
|
//! paren_expr := "(" paren_inner ")"
|
||||||
//! paren_inner := (expression ",")*
|
//! paren_inner := (expression ",")*
|
||||||
//! identifier_expr := named_struct | IDENTIFIER
|
//! identifier_expr := named_struct | IDENTIFIER
|
||||||
//! ```
|
//! ```
|
||||||
@ -94,14 +94,11 @@
|
|||||||
//! record_block := "{" (record_entry, ",")* | "}" //TODO support anonymus structs, update syntax
|
//! record_block := "{" (record_entry, ",")* | "}" //TODO support anonymus structs, update syntax
|
||||||
//! record_entry := IDENTIFIER ":" expression
|
//! record_entry := IDENTIFIER ":" expression
|
||||||
//! anonymous_struct := TODO
|
//! anonymous_struct := TODO
|
||||||
//! ```
|
|
||||||
//!
|
|
||||||
//! A `float_literal` can still be assigned to an int in type-checking
|
|
||||||
//! ```
|
|
||||||
//! number_literal := int_literal | float_literal
|
//! number_literal := int_literal | float_literal
|
||||||
//! int_literal = ("0x" | "0b") digits
|
//! int_literal = ("0x" | "0b") digits
|
||||||
//! float_literal := digits ("." digits)
|
//! float_literal := digits ("." digits)
|
||||||
//! digits := (DIGIT_GROUP underscore)+
|
//! digits := (digit_group underscore*)+
|
||||||
|
//! digit_group := DIGIT+
|
||||||
//! ```
|
//! ```
|
||||||
//!
|
//!
|
||||||
//! ### Patterns
|
//! ### Patterns
|
||||||
|
Loading…
Reference in New Issue
Block a user