trailing commas

This commit is contained in:
agra
2026-03-03 09:42:01 +02:00
parent 03074472e5
commit 6c5672c7df
4 changed files with 49 additions and 4 deletions

View File

@@ -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
```