struct type construction

This commit is contained in:
2026-07-19 21:35:48 +02:00
parent 944648fce6
commit 59bbb197e0
15 changed files with 331415 additions and 253804 deletions
+453 -21
View File
@@ -1149,6 +1149,10 @@
"type": "SYMBOL",
"name": "builtin_type"
},
{
"type": "SYMBOL",
"name": "intrinsic_type"
},
{
"type": "SYMBOL",
"name": "named_type"
@@ -1231,6 +1235,36 @@
]
}
},
"intrinsic_type": {
"type": "PREC",
"value": 11,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "function",
"content": {
"type": "ALIAS",
"content": {
"type": "STRING",
"value": "struct_type!"
},
"named": true,
"value": "identifier"
}
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "SYMBOL",
"name": "argument_list"
}
}
]
}
},
"optional_type": {
"type": "SEQ",
"members": [
@@ -3105,6 +3139,10 @@
"type": "SYMBOL",
"name": "struct_literal"
},
{
"type": "SYMBOL",
"name": "anonymous_record_literal"
},
{
"type": "SYMBOL",
"name": "tuple_literal"
@@ -4268,7 +4306,7 @@
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
"name": "_field_name"
}
},
{
@@ -4305,6 +4343,95 @@
}
]
},
"anonymous_record_literal": {
"type": "PREC",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "SYMBOL",
"name": "keyed_field_initializer"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "STRING",
"value": ","
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "SYMBOL",
"name": "keyed_field_initializer"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "STRING",
"value": ","
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "STRING",
"value": "}"
}
]
}
},
"tuple_literal": {
"type": "PREC",
"value": 1,
@@ -4349,25 +4476,17 @@
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": ","
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "STRING",
@@ -4379,6 +4498,10 @@
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
@@ -4387,8 +4510,20 @@
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "STRING",
"value": ","
}
]
},
{
"type": "BLANK"
@@ -4564,7 +4699,7 @@
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
"name": "_field_name"
}
},
{
@@ -4876,6 +5011,305 @@
"type": "STRING",
"value": "_"
},
"_field_name": {
"type": "PREC",
"value": 2,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "ALIAS",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "test"
},
{
"type": "STRING",
"value": "func"
},
{
"type": "STRING",
"value": "c_func"
},
{
"type": "STRING",
"value": "struct"
},
{
"type": "STRING",
"value": "c_struct"
},
{
"type": "STRING",
"value": "opaque"
},
{
"type": "STRING",
"value": "union"
},
{
"type": "STRING",
"value": "enum"
},
{
"type": "STRING",
"value": "distinct"
},
{
"type": "STRING",
"value": "alias"
},
{
"type": "STRING",
"value": "import"
},
{
"type": "STRING",
"value": "hide"
},
{
"type": "STRING",
"value": "return"
},
{
"type": "STRING",
"value": "try"
},
{
"type": "STRING",
"value": "catch"
},
{
"type": "STRING",
"value": "mut"
},
{
"type": "STRING",
"value": "none"
},
{
"type": "STRING",
"value": "undefined"
},
{
"type": "STRING",
"value": "orelse"
},
{
"type": "STRING",
"value": "and"
},
{
"type": "STRING",
"value": "or"
},
{
"type": "STRING",
"value": "xor"
},
{
"type": "STRING",
"value": "if"
},
{
"type": "STRING",
"value": "while"
},
{
"type": "STRING",
"value": "for"
},
{
"type": "STRING",
"value": "expand"
},
{
"type": "STRING",
"value": "break"
},
{
"type": "STRING",
"value": "continue"
},
{
"type": "STRING",
"value": "defer"
},
{
"type": "STRING",
"value": "errdefer"
},
{
"type": "STRING",
"value": "yield"
},
{
"type": "STRING",
"value": "match"
},
{
"type": "STRING",
"value": "else"
},
{
"type": "STRING",
"value": "true"
},
{
"type": "STRING",
"value": "false"
},
{
"type": "STRING",
"value": "void"
},
{
"type": "STRING",
"value": "type"
},
{
"type": "STRING",
"value": "anyopaque"
},
{
"type": "STRING",
"value": "bool"
},
{
"type": "STRING",
"value": "int"
},
{
"type": "STRING",
"value": "uint"
},
{
"type": "STRING",
"value": "float"
},
{
"type": "STRING",
"value": "range"
},
{
"type": "STRING",
"value": "i8"
},
{
"type": "STRING",
"value": "i16"
},
{
"type": "STRING",
"value": "i32"
},
{
"type": "STRING",
"value": "i64"
},
{
"type": "STRING",
"value": "u8"
},
{
"type": "STRING",
"value": "u16"
},
{
"type": "STRING",
"value": "u32"
},
{
"type": "STRING",
"value": "u64"
},
{
"type": "STRING",
"value": "isize"
},
{
"type": "STRING",
"value": "usize"
},
{
"type": "STRING",
"value": "f32"
},
{
"type": "STRING",
"value": "f64"
},
{
"type": "STRING",
"value": "c_char"
},
{
"type": "STRING",
"value": "c_schar"
},
{
"type": "STRING",
"value": "c_uchar"
},
{
"type": "STRING",
"value": "c_short"
},
{
"type": "STRING",
"value": "c_ushort"
},
{
"type": "STRING",
"value": "c_int"
},
{
"type": "STRING",
"value": "c_uint"
},
{
"type": "STRING",
"value": "c_long"
},
{
"type": "STRING",
"value": "c_ulong"
},
{
"type": "STRING",
"value": "c_longlong"
},
{
"type": "STRING",
"value": "c_ulonglong"
},
{
"type": "STRING",
"value": "c_float"
},
{
"type": "STRING",
"value": "c_double"
},
{
"type": "STRING",
"value": "c_longdouble"
}
]
},
"named": true,
"value": "identifier"
}
]
}
},
"identifier": {
"type": "PATTERN",
"value": "[A-Za-z_][A-Za-z0-9_]*"
@@ -5029,15 +5463,13 @@
],
[
"block",
"tuple_literal"
"tuple_literal",
"anonymous_record_literal"
],
[
"field_initializer",
"expression"
],
[
"tuple_literal"
],
[
"capture_list",
"expression"