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
"@struct" @keyword
"@enum" @keyword
"@func" @keyword
"@fn" @keyword
"@let" @keyword
"@if" @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",
"named": true,
@ -562,22 +458,10 @@
"fields": {},
"children": {
"multiple": false,
"required": false,
"required": true,
"types": [
{
"type": "css_content",
"named": true
},
{
"type": "embedded_content_simple",
"named": true
},
{
"type": "js_content",
"named": true
},
{
"type": "json_content",
"type": "language_name",
"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",
"named": true,
@ -982,6 +851,10 @@
"type": "identifier",
"named": true
},
{
"type": "import_path",
"named": true
},
{
"type": "string_literal",
"named": true
@ -1014,444 +887,10 @@
"fields": {}
},
{
"type": "js_code",
"type": "language_name",
"named": true,
"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",
"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",
"named": true,
@ -2187,6 +1558,10 @@
"type": "html_element",
"named": true
},
{
"type": "raw_block",
"named": true
},
{
"type": "template_control_flow",
"named": true
@ -2330,18 +1705,6 @@
"type": "*",
"named": false
},
{
"type": "***@",
"named": false
},
{
"type": "**@",
"named": false
},
{
"type": "*@",
"named": false
},
{
"type": "+",
"named": false
@ -2354,10 +1717,6 @@
"type": "-",
"named": false
},
{
"type": "-->",
"named": false
},
{
"type": ".",
"named": false
@ -2382,10 +1741,6 @@
"type": "<",
"named": false
},
{
"type": "<!--",
"named": false
},
{
"type": "</",
"named": false
@ -2434,18 +1789,6 @@
"type": "@",
"named": false
},
{
"type": "@*",
"named": false
},
{
"type": "@**",
"named": false
},
{
"type": "@***",
"named": false
},
{
"type": "@```",
"named": false
@ -2463,11 +1806,11 @@
"named": false
},
{
"type": "@for",
"type": "@fn",
"named": false
},
{
"type": "@func",
"type": "@for",
"named": false
},
{
@ -2538,18 +1881,6 @@
"type": "char",
"named": false
},
{
"type": "comment_content_1",
"named": true
},
{
"type": "comment_content_2",
"named": true
},
{
"type": "comment_content_3",
"named": true
},
{
"type": "css",
"named": false
@ -2558,10 +1889,6 @@
"type": "else",
"named": false
},
{
"type": "embedded_content_simple",
"named": true
},
{
"type": "escape_at",
"named": true
@ -2591,7 +1918,7 @@
"named": false
},
{
"type": "html_comment_content",
"type": "html_comment",
"named": true
},
{
@ -2622,6 +1949,10 @@
"type": "if",
"named": false
},
{
"type": "import_path",
"named": true
},
{
"type": "in",
"named": false
@ -2651,8 +1982,8 @@
"named": false
},
{
"type": "null",
"named": false
"type": "raw_block",
"named": true
},
{
"type": "safe",
@ -2670,6 +2001,10 @@
"type": "tag_name",
"named": true
},
{
"type": "template_comment",
"named": true
},
{
"type": "text_content",
"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 TSFieldId;
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
typedef struct {
@ -26,10 +32,11 @@ typedef struct {
bool inherited;
} TSFieldMapEntry;
// Used to index the field and supertype maps.
typedef struct {
uint16_t index;
uint16_t length;
} TSFieldMapSlice;
} TSMapSlice;
typedef struct {
bool visible;
@ -79,6 +86,12 @@ typedef struct {
uint16_t external_lex_state;
} TSLexMode;
typedef struct {
uint16_t lex_state;
uint16_t external_lex_state;
uint16_t reserved_word_set_id;
} TSLexerMode;
typedef union {
TSParseAction action;
struct {
@ -93,7 +106,7 @@ typedef struct {
} TSCharacterRange;
struct TSLanguage {
uint32_t version;
uint32_t abi_version;
uint32_t symbol_count;
uint32_t alias_count;
uint32_t token_count;
@ -109,13 +122,13 @@ struct TSLanguage {
const TSParseActionEntry *parse_actions;
const char * const *symbol_names;
const char * const *field_names;
const TSFieldMapSlice *field_map_slices;
const TSMapSlice *field_map_slices;
const TSFieldMapEntry *field_map_entries;
const TSSymbolMetadata *symbol_metadata;
const TSSymbol *public_symbol_map;
const uint16_t *alias_map;
const TSSymbol *alias_sequences;
const TSLexMode *lex_modes;
const TSLexerMode *lex_modes;
bool (*lex_fn)(TSLexer *, TSStateId);
bool (*keyword_lex_fn)(TSLexer *, TSStateId);
TSSymbol keyword_capture_token;
@ -129,15 +142,23 @@ struct TSLanguage {
void (*deserialize)(void *, const char *, unsigned);
} external_scanner;
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 size = len - index;
while (size > 1) {
uint32_t half_size = size / 2;
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) {
return true;
} else if (lookahead > range->end) {
@ -145,7 +166,7 @@ static inline bool set_contains(TSCharacterRange *ranges, uint32_t len, int32_t
}
size -= half_size;
}
TSCharacterRange *range = &ranges[index];
const TSCharacterRange *range = &ranges[index];
return (lookahead >= range->start && lookahead <= range->end);
}