trailing commas
This commit is contained in:
16
specs.md
16
specs.md
@@ -92,7 +92,7 @@ GLSL;
|
||||
| `:` | type annotation |
|
||||
| `=` | assignment (in typed var decl) |
|
||||
| `;` | statement terminator |
|
||||
| `,` | separator |
|
||||
| `,` | separator (trailing commas allowed) |
|
||||
| `.` | field access / enum literal prefix |
|
||||
| `->` | return type annotation |
|
||||
| `=>` | lambda arrow |
|
||||
@@ -244,6 +244,14 @@ v3 := Vec4.{ w=0, x=2, y=3, z=4 };
|
||||
z := 5.0;
|
||||
w := 6.0;
|
||||
v4 := Vec4.{ y=3, x=9, w, z };
|
||||
|
||||
// Trailing commas are allowed in all comma-separated lists
|
||||
v5 := Vec4.{
|
||||
x = 1.0,
|
||||
y = 2.0,
|
||||
z = 3.0,
|
||||
w = 4.0,
|
||||
};
|
||||
```
|
||||
|
||||
#### Field Access and Assignment
|
||||
@@ -1779,7 +1787,7 @@ enum_decl = IDENT '::' 'enum' '{' (IDENT ';')* '}'
|
||||
struct_decl = IDENT '::' 'struct' '{' struct_member* '}'
|
||||
struct_member = field_group | '#using' IDENT ';'
|
||||
field_group = IDENT (',' IDENT)* ':' type ('=' expr)? ';'
|
||||
params = param (',' param)*
|
||||
params = param (',' param)* ','?
|
||||
param = IDENT ':' type
|
||||
block = '{' stmt* '}'
|
||||
stmt = decl | assignment ';' | multi_assign ';' | return_stmt | defer_stmt | insert_stmt
|
||||
@@ -1803,7 +1811,7 @@ postfix = primary ('(' args? ')' | '.' IDENT | '.{' field_init_list '}')
|
||||
primary = INT | HEX_INT | BIN_INT | FLOAT | STRING | BOOL | IDENT | '---'
|
||||
| '.' IDENT | '.' '{' field_init_list '}'
|
||||
| '(' expr ')' | block | '#run' expr
|
||||
field_init_list = field_init (',' field_init)*
|
||||
field_init_list = field_init (',' field_init)* ','?
|
||||
field_init = IDENT '=' expr | IDENT | expr
|
||||
if_expr = 'if' expr 'then' expr ('else' expr)?
|
||||
| 'if' expr block ('else' block)?
|
||||
@@ -1812,7 +1820,7 @@ case_arm = 'case' pattern ':' (stmt* | 'break' ';')
|
||||
else_arm = 'else' ':' stmt*
|
||||
pattern = '.' IDENT | INT | BOOL | IDENT
|
||||
lambda = '(' params? ')' ('->' type)? '=>' expr
|
||||
args = expr (',' expr)*
|
||||
args = expr (',' expr)* ','?
|
||||
type = '$' IDENT | 's32' | 'f32' | 'f64' | 'bool' | 'string'
|
||||
| 'Any' | 'Type' | '..' type | '[' expr ']' type | IDENT
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user