Update grammar to use @fn instead of @func

This commit is contained in:
Michael Netshipise 2026-01-19 21:54:38 +02:00
parent f1bb3540ad
commit 5a49f3dd77
5 changed files with 23321 additions and 35729 deletions

View File

@ -12,7 +12,7 @@
"@import" @keyword "@import" @keyword
"@struct" @keyword "@struct" @keyword
"@enum" @keyword "@enum" @keyword
"@func" @keyword "@fn" @keyword
"@let" @keyword "@let" @keyword
"@if" @keyword "@if" @keyword
"@for" @keyword "@for" @keyword

File diff suppressed because it is too large Load Diff

View File

@ -399,110 +399,6 @@
] ]
} }
}, },
{
"type": "css_code",
"named": true,
"fields": {}
},
{
"type": "css_content",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "css_element",
"named": true
}
]
}
},
{
"type": "css_control_flow",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "css_for_loop",
"named": true
},
{
"type": "css_if_statement",
"named": true
}
]
}
},
{
"type": "css_element",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "css_code",
"named": true
},
{
"type": "css_control_flow",
"named": true
},
{
"type": "template_expression",
"named": true
}
]
}
},
{
"type": "css_for_loop",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "css_content",
"named": true
},
{
"type": "expression",
"named": true
},
{
"type": "simple_pattern",
"named": true
}
]
}
},
{
"type": "css_if_statement",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "css_content",
"named": true
},
{
"type": "expression",
"named": true
}
]
}
},
{ {
"type": "default_value", "type": "default_value",
"named": true, "named": true,
@ -562,22 +458,10 @@
"fields": {}, "fields": {},
"children": { "children": {
"multiple": false, "multiple": false,
"required": false, "required": true,
"types": [ "types": [
{ {
"type": "css_content", "type": "language_name",
"named": true
},
{
"type": "embedded_content_simple",
"named": true
},
{
"type": "js_content",
"named": true
},
{
"type": "json_content",
"named": true "named": true
} }
] ]
@ -886,21 +770,6 @@
] ]
} }
}, },
{
"type": "html_comment",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "html_comment_content",
"named": true
}
]
}
},
{ {
"type": "html_element", "type": "html_element",
"named": true, "named": true,
@ -982,6 +851,10 @@
"type": "identifier", "type": "identifier",
"named": true "named": true
}, },
{
"type": "import_path",
"named": true
},
{ {
"type": "string_literal", "type": "string_literal",
"named": true "named": true
@ -1014,444 +887,10 @@
"fields": {} "fields": {}
}, },
{ {
"type": "js_code", "type": "language_name",
"named": true, "named": true,
"fields": {} "fields": {}
}, },
{
"type": "js_content",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "js_element",
"named": true
}
]
}
},
{
"type": "js_control_flow",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "js_for_loop",
"named": true
},
{
"type": "js_if_statement",
"named": true
}
]
}
},
{
"type": "js_element",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "js_code",
"named": true
},
{
"type": "js_control_flow",
"named": true
},
{
"type": "template_expression",
"named": true
}
]
}
},
{
"type": "js_for_loop",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "js_content",
"named": true
},
{
"type": "simple_pattern",
"named": true
}
]
}
},
{
"type": "js_if_statement",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "js_content",
"named": true
}
]
}
},
{
"type": "json_array",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "json_array_content",
"named": true
}
]
}
},
{
"type": "json_array_content",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "json_array_element",
"named": true
}
]
}
},
{
"type": "json_array_element",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "json_control_flow",
"named": true
},
{
"type": "json_value",
"named": true
}
]
}
},
{
"type": "json_content",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "json_array",
"named": true
},
{
"type": "json_object",
"named": true
}
]
}
},
{
"type": "json_control_flow",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "json_for_loop",
"named": true
},
{
"type": "json_if_statement",
"named": true
}
]
}
},
{
"type": "json_for_loop",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "json_if_body",
"named": true
},
{
"type": "simple_pattern",
"named": true
}
]
}
},
{
"type": "json_if_body",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "json_if_element",
"named": true
}
]
}
},
{
"type": "json_if_element",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "json_control_flow",
"named": true
},
{
"type": "json_member",
"named": true
},
{
"type": "json_value",
"named": true
}
]
}
},
{
"type": "json_if_statement",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "json_if_body",
"named": true
}
]
}
},
{
"type": "json_key",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "string_literal",
"named": true
}
]
}
},
{
"type": "json_member",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "json_key",
"named": true
},
{
"type": "json_value",
"named": true
},
{
"type": "template_expression",
"named": true
}
]
}
},
{
"type": "json_member_or_control",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "json_control_flow",
"named": true
},
{
"type": "json_member",
"named": true
}
]
}
},
{
"type": "json_method",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "js_content",
"named": true
},
{
"type": "json_method_params",
"named": true
}
]
}
},
{
"type": "json_method_params",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
}
},
{
"type": "json_object",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "json_object_content",
"named": true
}
]
}
},
{
"type": "json_object_content",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "json_member_or_control",
"named": true
}
]
}
},
{
"type": "json_value",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "boolean_literal",
"named": true
},
{
"type": "json_array",
"named": true
},
{
"type": "json_method",
"named": true
},
{
"type": "json_object",
"named": true
},
{
"type": "number_literal",
"named": true
},
{
"type": "string_literal",
"named": true
},
{
"type": "template_expression",
"named": true
}
]
}
},
{ {
"type": "let_statement", "type": "let_statement",
"named": true, "named": true,
@ -1998,74 +1437,6 @@
] ]
} }
}, },
{
"type": "template_comment",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "template_comment_1",
"named": true
},
{
"type": "template_comment_2",
"named": true
},
{
"type": "template_comment_3",
"named": true
}
]
}
},
{
"type": "template_comment_1",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "comment_content_1",
"named": true
}
]
}
},
{
"type": "template_comment_2",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "comment_content_2",
"named": true
}
]
}
},
{
"type": "template_comment_3",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "comment_content_3",
"named": true
}
]
}
},
{ {
"type": "template_control_flow", "type": "template_control_flow",
"named": true, "named": true,
@ -2187,6 +1558,10 @@
"type": "html_element", "type": "html_element",
"named": true "named": true
}, },
{
"type": "raw_block",
"named": true
},
{ {
"type": "template_control_flow", "type": "template_control_flow",
"named": true "named": true
@ -2330,18 +1705,6 @@
"type": "*", "type": "*",
"named": false "named": false
}, },
{
"type": "***@",
"named": false
},
{
"type": "**@",
"named": false
},
{
"type": "*@",
"named": false
},
{ {
"type": "+", "type": "+",
"named": false "named": false
@ -2354,10 +1717,6 @@
"type": "-", "type": "-",
"named": false "named": false
}, },
{
"type": "-->",
"named": false
},
{ {
"type": ".", "type": ".",
"named": false "named": false
@ -2382,10 +1741,6 @@
"type": "<", "type": "<",
"named": false "named": false
}, },
{
"type": "<!--",
"named": false
},
{ {
"type": "</", "type": "</",
"named": false "named": false
@ -2434,18 +1789,6 @@
"type": "@", "type": "@",
"named": false "named": false
}, },
{
"type": "@*",
"named": false
},
{
"type": "@**",
"named": false
},
{
"type": "@***",
"named": false
},
{ {
"type": "@```", "type": "@```",
"named": false "named": false
@ -2463,11 +1806,11 @@
"named": false "named": false
}, },
{ {
"type": "@for", "type": "@fn",
"named": false "named": false
}, },
{ {
"type": "@func", "type": "@for",
"named": false "named": false
}, },
{ {
@ -2538,18 +1881,6 @@
"type": "char", "type": "char",
"named": false "named": false
}, },
{
"type": "comment_content_1",
"named": true
},
{
"type": "comment_content_2",
"named": true
},
{
"type": "comment_content_3",
"named": true
},
{ {
"type": "css", "type": "css",
"named": false "named": false
@ -2558,10 +1889,6 @@
"type": "else", "type": "else",
"named": false "named": false
}, },
{
"type": "embedded_content_simple",
"named": true
},
{ {
"type": "escape_at", "type": "escape_at",
"named": true "named": true
@ -2591,7 +1918,7 @@
"named": false "named": false
}, },
{ {
"type": "html_comment_content", "type": "html_comment",
"named": true "named": true
}, },
{ {
@ -2622,6 +1949,10 @@
"type": "if", "type": "if",
"named": false "named": false
}, },
{
"type": "import_path",
"named": true
},
{ {
"type": "in", "type": "in",
"named": false "named": false
@ -2651,8 +1982,8 @@
"named": false "named": false
}, },
{ {
"type": "null", "type": "raw_block",
"named": false "named": true
}, },
{ {
"type": "safe", "type": "safe",
@ -2670,6 +2001,10 @@
"type": "tag_name", "type": "tag_name",
"named": true "named": true
}, },
{
"type": "template_comment",
"named": true
},
{ {
"type": "text_content", "type": "text_content",
"named": true "named": true

57011
src/parser.c

File diff suppressed because it is too large Load Diff

View File

@ -18,6 +18,12 @@ typedef uint16_t TSStateId;
typedef uint16_t TSSymbol; typedef uint16_t TSSymbol;
typedef uint16_t TSFieldId; typedef uint16_t TSFieldId;
typedef struct TSLanguage TSLanguage; typedef struct TSLanguage TSLanguage;
typedef struct TSLanguageMetadata TSLanguageMetadata;
typedef struct TSLanguageMetadata {
uint8_t major_version;
uint8_t minor_version;
uint8_t patch_version;
} TSLanguageMetadata;
#endif #endif
typedef struct { typedef struct {
@ -26,10 +32,11 @@ typedef struct {
bool inherited; bool inherited;
} TSFieldMapEntry; } TSFieldMapEntry;
// Used to index the field and supertype maps.
typedef struct { typedef struct {
uint16_t index; uint16_t index;
uint16_t length; uint16_t length;
} TSFieldMapSlice; } TSMapSlice;
typedef struct { typedef struct {
bool visible; bool visible;
@ -79,6 +86,12 @@ typedef struct {
uint16_t external_lex_state; uint16_t external_lex_state;
} TSLexMode; } TSLexMode;
typedef struct {
uint16_t lex_state;
uint16_t external_lex_state;
uint16_t reserved_word_set_id;
} TSLexerMode;
typedef union { typedef union {
TSParseAction action; TSParseAction action;
struct { struct {
@ -93,7 +106,7 @@ typedef struct {
} TSCharacterRange; } TSCharacterRange;
struct TSLanguage { struct TSLanguage {
uint32_t version; uint32_t abi_version;
uint32_t symbol_count; uint32_t symbol_count;
uint32_t alias_count; uint32_t alias_count;
uint32_t token_count; uint32_t token_count;
@ -109,13 +122,13 @@ struct TSLanguage {
const TSParseActionEntry *parse_actions; const TSParseActionEntry *parse_actions;
const char * const *symbol_names; const char * const *symbol_names;
const char * const *field_names; const char * const *field_names;
const TSFieldMapSlice *field_map_slices; const TSMapSlice *field_map_slices;
const TSFieldMapEntry *field_map_entries; const TSFieldMapEntry *field_map_entries;
const TSSymbolMetadata *symbol_metadata; const TSSymbolMetadata *symbol_metadata;
const TSSymbol *public_symbol_map; const TSSymbol *public_symbol_map;
const uint16_t *alias_map; const uint16_t *alias_map;
const TSSymbol *alias_sequences; const TSSymbol *alias_sequences;
const TSLexMode *lex_modes; const TSLexerMode *lex_modes;
bool (*lex_fn)(TSLexer *, TSStateId); bool (*lex_fn)(TSLexer *, TSStateId);
bool (*keyword_lex_fn)(TSLexer *, TSStateId); bool (*keyword_lex_fn)(TSLexer *, TSStateId);
TSSymbol keyword_capture_token; TSSymbol keyword_capture_token;
@ -129,15 +142,23 @@ struct TSLanguage {
void (*deserialize)(void *, const char *, unsigned); void (*deserialize)(void *, const char *, unsigned);
} external_scanner; } external_scanner;
const TSStateId *primary_state_ids; const TSStateId *primary_state_ids;
const char *name;
const TSSymbol *reserved_words;
uint16_t max_reserved_word_set_size;
uint32_t supertype_count;
const TSSymbol *supertype_symbols;
const TSMapSlice *supertype_map_slices;
const TSSymbol *supertype_map_entries;
TSLanguageMetadata metadata;
}; };
static inline bool set_contains(TSCharacterRange *ranges, uint32_t len, int32_t lookahead) { static inline bool set_contains(const TSCharacterRange *ranges, uint32_t len, int32_t lookahead) {
uint32_t index = 0; uint32_t index = 0;
uint32_t size = len - index; uint32_t size = len - index;
while (size > 1) { while (size > 1) {
uint32_t half_size = size / 2; uint32_t half_size = size / 2;
uint32_t mid_index = index + half_size; uint32_t mid_index = index + half_size;
TSCharacterRange *range = &ranges[mid_index]; const TSCharacterRange *range = &ranges[mid_index];
if (lookahead >= range->start && lookahead <= range->end) { if (lookahead >= range->start && lookahead <= range->end) {
return true; return true;
} else if (lookahead > range->end) { } else if (lookahead > range->end) {
@ -145,7 +166,7 @@ static inline bool set_contains(TSCharacterRange *ranges, uint32_t len, int32_t
} }
size -= half_size; size -= half_size;
} }
TSCharacterRange *range = &ranges[index]; const TSCharacterRange *range = &ranges[index];
return (lookahead >= range->start && lookahead <= range->end); return (lookahead >= range->start && lookahead <= range->end);
} }