.
This commit is contained in:
parent
34f5ccafb3
commit
831aefb112
7 changed files with 282 additions and 231 deletions
13
grammar.js
13
grammar.js
|
@ -14,14 +14,15 @@ module.exports = grammar({
|
|||
source_file: ($) => $.morphbase,
|
||||
|
||||
morphbase: ($) => seq($.include, repeat($.stmnt)),
|
||||
include: ($) => seq("```", /(.*)/, "```"),
|
||||
include: ($) => seq("```", /([^\`]*)/, "```"),
|
||||
stmnt: ($) => choice($.comment, $.def),
|
||||
comment: (_) => seq("/*", /(.*)/, "*/"),
|
||||
comment: ($) => prec.right(seq("/*", /([^\*]*)/, "*/")),
|
||||
def: ($) => choice($.typedef, $.morphdef),
|
||||
typedef: ($) => seq("type", $.ident, "=", $.type, ";"),
|
||||
morphdef: ($) => seq("morph", $.ident, ":", $.type, "=", $.impl, ";"),
|
||||
typedef: ($) => prec.right(seq("type", $.ident, "=", $.type, ";")),
|
||||
morphdef: ($) => prec.right(seq("morph", $.ident, ":", $.type, "=", $.impl, ";")),
|
||||
ident: ($) => /([a-zA-Z$][0-9a-zA-Z_\-]*)/,
|
||||
type: ($) => /([^=]*)/,
|
||||
impl: ($) => seq("```", /([^\`])/, "```"),
|
||||
type: ($) => /([^\`\=]*)/,
|
||||
impl: ($) => seq("```", $.impl_c_code, "```"),
|
||||
impl_c_code: (_) => /([^\`]*)/,
|
||||
},
|
||||
});
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
(include) @string
|
||||
(ident) @identifier
|
||||
(def) @keyword
|
||||
(impl) @string
|
||||
(type) @type
|
||||
|
|
3
query/injections.scm
Normal file
3
query/injections.scm
Normal file
|
@ -0,0 +1,3 @@
|
|||
((impl_c_code @injection.content)
|
||||
(#set! injection.language "c"))
|
||||
|
162
src/grammar.json
generated
162
src/grammar.json
generated
|
@ -31,7 +31,7 @@
|
|||
},
|
||||
{
|
||||
"type": "PATTERN",
|
||||
"value": "(.*)"
|
||||
"value": "([^\\`]*)"
|
||||
},
|
||||
{
|
||||
"type": "STRING",
|
||||
|
@ -53,21 +53,25 @@
|
|||
]
|
||||
},
|
||||
"comment": {
|
||||
"type": "SEQ",
|
||||
"members": [
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": "/*"
|
||||
},
|
||||
{
|
||||
"type": "PATTERN",
|
||||
"value": "(.*)"
|
||||
},
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": "*/"
|
||||
}
|
||||
]
|
||||
"type": "PREC_RIGHT",
|
||||
"value": 0,
|
||||
"content": {
|
||||
"type": "SEQ",
|
||||
"members": [
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": "/*"
|
||||
},
|
||||
{
|
||||
"type": "PATTERN",
|
||||
"value": "([^\\*]*)"
|
||||
},
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": "*/"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"def": {
|
||||
"type": "CHOICE",
|
||||
|
@ -83,62 +87,70 @@
|
|||
]
|
||||
},
|
||||
"typedef": {
|
||||
"type": "SEQ",
|
||||
"members": [
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": "type"
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "ident"
|
||||
},
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": "="
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "type"
|
||||
},
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": ";"
|
||||
}
|
||||
]
|
||||
"type": "PREC_RIGHT",
|
||||
"value": 0,
|
||||
"content": {
|
||||
"type": "SEQ",
|
||||
"members": [
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": "type"
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "ident"
|
||||
},
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": "="
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "type"
|
||||
},
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": ";"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"morphdef": {
|
||||
"type": "SEQ",
|
||||
"members": [
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": "morph"
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "ident"
|
||||
},
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": ":"
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "type"
|
||||
},
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": "="
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "impl"
|
||||
},
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": ";"
|
||||
}
|
||||
]
|
||||
"type": "PREC_RIGHT",
|
||||
"value": 0,
|
||||
"content": {
|
||||
"type": "SEQ",
|
||||
"members": [
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": "morph"
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "ident"
|
||||
},
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": ":"
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "type"
|
||||
},
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": "="
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "impl"
|
||||
},
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": ";"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"ident": {
|
||||
"type": "PATTERN",
|
||||
|
@ -146,7 +158,7 @@
|
|||
},
|
||||
"type": {
|
||||
"type": "PATTERN",
|
||||
"value": "([^=]*)"
|
||||
"value": "([^\\`\\=]*)"
|
||||
},
|
||||
"impl": {
|
||||
"type": "SEQ",
|
||||
|
@ -156,14 +168,18 @@
|
|||
"value": "```"
|
||||
},
|
||||
{
|
||||
"type": "PATTERN",
|
||||
"value": "([^\\`])"
|
||||
"type": "SYMBOL",
|
||||
"name": "impl_c_code"
|
||||
},
|
||||
{
|
||||
"type": "STRING",
|
||||
"value": "```"
|
||||
}
|
||||
]
|
||||
},
|
||||
"impl_c_code": {
|
||||
"type": "PATTERN",
|
||||
"value": "([^\\`]*)"
|
||||
}
|
||||
},
|
||||
"extras": [
|
||||
|
|
15
src/node-types.json
generated
15
src/node-types.json
generated
|
@ -26,6 +26,21 @@
|
|||
{
|
||||
"type": "impl",
|
||||
"named": true,
|
||||
"fields": {},
|
||||
"children": {
|
||||
"multiple": false,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "impl_c_code",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "impl_c_code",
|
||||
"named": true,
|
||||
"fields": {}
|
||||
},
|
||||
{
|
||||
|
|
309
src/parser.c
generated
309
src/parser.c
generated
|
@ -7,9 +7,9 @@
|
|||
#endif
|
||||
|
||||
#define LANGUAGE_VERSION 15
|
||||
#define STATE_COUNT 30
|
||||
#define STATE_COUNT 31
|
||||
#define LARGE_STATE_COUNT 2
|
||||
#define SYMBOL_COUNT 23
|
||||
#define SYMBOL_COUNT 24
|
||||
#define ALIAS_COUNT 0
|
||||
#define TOKEN_COUNT 13
|
||||
#define EXTERNAL_TOKEN_COUNT 0
|
||||
|
@ -23,15 +23,15 @@ enum ts_symbol_identifiers {
|
|||
anon_sym_BQUOTE_BQUOTE_BQUOTE = 1,
|
||||
aux_sym_include_token1 = 2,
|
||||
anon_sym_SLASH_STAR = 3,
|
||||
anon_sym_STAR_SLASH = 4,
|
||||
anon_sym_type = 5,
|
||||
anon_sym_EQ = 6,
|
||||
anon_sym_SEMI = 7,
|
||||
anon_sym_morph = 8,
|
||||
anon_sym_COLON = 9,
|
||||
sym_ident = 10,
|
||||
sym_type = 11,
|
||||
aux_sym_impl_token1 = 12,
|
||||
aux_sym_comment_token1 = 4,
|
||||
anon_sym_STAR_SLASH = 5,
|
||||
anon_sym_type = 6,
|
||||
anon_sym_EQ = 7,
|
||||
anon_sym_SEMI = 8,
|
||||
anon_sym_morph = 9,
|
||||
anon_sym_COLON = 10,
|
||||
sym_ident = 11,
|
||||
sym_type = 12,
|
||||
sym_source_file = 13,
|
||||
sym_morphbase = 14,
|
||||
sym_include = 15,
|
||||
|
@ -41,7 +41,8 @@ enum ts_symbol_identifiers {
|
|||
sym_typedef = 19,
|
||||
sym_morphdef = 20,
|
||||
sym_impl = 21,
|
||||
aux_sym_morphbase_repeat1 = 22,
|
||||
sym_impl_c_code = 22,
|
||||
aux_sym_morphbase_repeat1 = 23,
|
||||
};
|
||||
|
||||
static const char * const ts_symbol_names[] = {
|
||||
|
@ -49,6 +50,7 @@ static const char * const ts_symbol_names[] = {
|
|||
[anon_sym_BQUOTE_BQUOTE_BQUOTE] = "```",
|
||||
[aux_sym_include_token1] = "include_token1",
|
||||
[anon_sym_SLASH_STAR] = "/*",
|
||||
[aux_sym_comment_token1] = "comment_token1",
|
||||
[anon_sym_STAR_SLASH] = "*/",
|
||||
[anon_sym_type] = "type",
|
||||
[anon_sym_EQ] = "=",
|
||||
|
@ -57,7 +59,6 @@ static const char * const ts_symbol_names[] = {
|
|||
[anon_sym_COLON] = ":",
|
||||
[sym_ident] = "ident",
|
||||
[sym_type] = "type",
|
||||
[aux_sym_impl_token1] = "impl_token1",
|
||||
[sym_source_file] = "source_file",
|
||||
[sym_morphbase] = "morphbase",
|
||||
[sym_include] = "include",
|
||||
|
@ -67,6 +68,7 @@ static const char * const ts_symbol_names[] = {
|
|||
[sym_typedef] = "typedef",
|
||||
[sym_morphdef] = "morphdef",
|
||||
[sym_impl] = "impl",
|
||||
[sym_impl_c_code] = "impl_c_code",
|
||||
[aux_sym_morphbase_repeat1] = "morphbase_repeat1",
|
||||
};
|
||||
|
||||
|
@ -75,6 +77,7 @@ static const TSSymbol ts_symbol_map[] = {
|
|||
[anon_sym_BQUOTE_BQUOTE_BQUOTE] = anon_sym_BQUOTE_BQUOTE_BQUOTE,
|
||||
[aux_sym_include_token1] = aux_sym_include_token1,
|
||||
[anon_sym_SLASH_STAR] = anon_sym_SLASH_STAR,
|
||||
[aux_sym_comment_token1] = aux_sym_comment_token1,
|
||||
[anon_sym_STAR_SLASH] = anon_sym_STAR_SLASH,
|
||||
[anon_sym_type] = anon_sym_type,
|
||||
[anon_sym_EQ] = anon_sym_EQ,
|
||||
|
@ -83,7 +86,6 @@ static const TSSymbol ts_symbol_map[] = {
|
|||
[anon_sym_COLON] = anon_sym_COLON,
|
||||
[sym_ident] = sym_ident,
|
||||
[sym_type] = sym_type,
|
||||
[aux_sym_impl_token1] = aux_sym_impl_token1,
|
||||
[sym_source_file] = sym_source_file,
|
||||
[sym_morphbase] = sym_morphbase,
|
||||
[sym_include] = sym_include,
|
||||
|
@ -93,6 +95,7 @@ static const TSSymbol ts_symbol_map[] = {
|
|||
[sym_typedef] = sym_typedef,
|
||||
[sym_morphdef] = sym_morphdef,
|
||||
[sym_impl] = sym_impl,
|
||||
[sym_impl_c_code] = sym_impl_c_code,
|
||||
[aux_sym_morphbase_repeat1] = aux_sym_morphbase_repeat1,
|
||||
};
|
||||
|
||||
|
@ -113,6 +116,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = {
|
|||
.visible = true,
|
||||
.named = false,
|
||||
},
|
||||
[aux_sym_comment_token1] = {
|
||||
.visible = false,
|
||||
.named = false,
|
||||
},
|
||||
[anon_sym_STAR_SLASH] = {
|
||||
.visible = true,
|
||||
.named = false,
|
||||
|
@ -145,10 +152,6 @@ static const TSSymbolMetadata ts_symbol_metadata[] = {
|
|||
.visible = true,
|
||||
.named = true,
|
||||
},
|
||||
[aux_sym_impl_token1] = {
|
||||
.visible = false,
|
||||
.named = false,
|
||||
},
|
||||
[sym_source_file] = {
|
||||
.visible = true,
|
||||
.named = true,
|
||||
|
@ -185,6 +188,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = {
|
|||
.visible = true,
|
||||
.named = true,
|
||||
},
|
||||
[sym_impl_c_code] = {
|
||||
.visible = true,
|
||||
.named = true,
|
||||
},
|
||||
[aux_sym_morphbase_repeat1] = {
|
||||
.visible = false,
|
||||
.named = false,
|
||||
|
@ -230,6 +237,7 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = {
|
|||
[27] = 27,
|
||||
[28] = 28,
|
||||
[29] = 29,
|
||||
[30] = 30,
|
||||
};
|
||||
|
||||
static bool ts_lex(TSLexer *lexer, TSStateId state) {
|
||||
|
@ -237,13 +245,13 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
|
|||
eof = lexer->eof(lexer);
|
||||
switch (state) {
|
||||
case 0:
|
||||
if (eof) ADVANCE(14);
|
||||
if (eof) ADVANCE(13);
|
||||
ADVANCE_MAP(
|
||||
'*', 2,
|
||||
'/', 1,
|
||||
':', 24,
|
||||
';', 22,
|
||||
'=', 21,
|
||||
':', 25,
|
||||
';', 23,
|
||||
'=', 22,
|
||||
'`', 4,
|
||||
'm', 7,
|
||||
't', 11,
|
||||
|
@ -252,22 +260,22 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
|
|||
lookahead == ' ') SKIP(0);
|
||||
END_STATE();
|
||||
case 1:
|
||||
if (lookahead == '*') ADVANCE(18);
|
||||
if (lookahead == '*') ADVANCE(17);
|
||||
END_STATE();
|
||||
case 2:
|
||||
if (lookahead == '/') ADVANCE(19);
|
||||
if (lookahead == '/') ADVANCE(20);
|
||||
END_STATE();
|
||||
case 3:
|
||||
if (lookahead == '`') ADVANCE(15);
|
||||
if (lookahead == '`') ADVANCE(14);
|
||||
END_STATE();
|
||||
case 4:
|
||||
if (lookahead == '`') ADVANCE(3);
|
||||
END_STATE();
|
||||
case 5:
|
||||
if (lookahead == 'e') ADVANCE(20);
|
||||
if (lookahead == 'e') ADVANCE(21);
|
||||
END_STATE();
|
||||
case 6:
|
||||
if (lookahead == 'h') ADVANCE(23);
|
||||
if (lookahead == 'h') ADVANCE(24);
|
||||
END_STATE();
|
||||
case 7:
|
||||
if (lookahead == 'o') ADVANCE(10);
|
||||
|
@ -289,82 +297,79 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
|
|||
lookahead == ' ') SKIP(12);
|
||||
if (lookahead == '$' ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(25);
|
||||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(26);
|
||||
END_STATE();
|
||||
case 13:
|
||||
if (('\t' <= lookahead && lookahead <= '\r') ||
|
||||
lookahead == ' ') ADVANCE(29);
|
||||
if (lookahead != 0 &&
|
||||
lookahead != '`') ADVANCE(28);
|
||||
END_STATE();
|
||||
case 14:
|
||||
ACCEPT_TOKEN(ts_builtin_sym_end);
|
||||
END_STATE();
|
||||
case 15:
|
||||
case 14:
|
||||
ACCEPT_TOKEN(anon_sym_BQUOTE_BQUOTE_BQUOTE);
|
||||
END_STATE();
|
||||
case 15:
|
||||
ACCEPT_TOKEN(aux_sym_include_token1);
|
||||
if (('\t' <= lookahead && lookahead <= '\r') ||
|
||||
lookahead == ' ') ADVANCE(15);
|
||||
if (lookahead != 0 &&
|
||||
lookahead != '`') ADVANCE(16);
|
||||
END_STATE();
|
||||
case 16:
|
||||
ACCEPT_TOKEN(aux_sym_include_token1);
|
||||
if (lookahead == '\t' ||
|
||||
(0x0b <= lookahead && lookahead <= '\r') ||
|
||||
lookahead == ' ') ADVANCE(16);
|
||||
if (lookahead != 0 &&
|
||||
(lookahead < '\t' || '\r' < lookahead)) ADVANCE(17);
|
||||
lookahead != '`') ADVANCE(16);
|
||||
END_STATE();
|
||||
case 17:
|
||||
ACCEPT_TOKEN(aux_sym_include_token1);
|
||||
if (lookahead != 0 &&
|
||||
lookahead != '\n') ADVANCE(17);
|
||||
END_STATE();
|
||||
case 18:
|
||||
ACCEPT_TOKEN(anon_sym_SLASH_STAR);
|
||||
END_STATE();
|
||||
case 18:
|
||||
ACCEPT_TOKEN(aux_sym_comment_token1);
|
||||
if (('\t' <= lookahead && lookahead <= '\r') ||
|
||||
lookahead == ' ') ADVANCE(18);
|
||||
if (lookahead != 0 &&
|
||||
lookahead != '*') ADVANCE(19);
|
||||
END_STATE();
|
||||
case 19:
|
||||
ACCEPT_TOKEN(anon_sym_STAR_SLASH);
|
||||
ACCEPT_TOKEN(aux_sym_comment_token1);
|
||||
if (lookahead != 0 &&
|
||||
lookahead != '*') ADVANCE(19);
|
||||
END_STATE();
|
||||
case 20:
|
||||
ACCEPT_TOKEN(anon_sym_type);
|
||||
ACCEPT_TOKEN(anon_sym_STAR_SLASH);
|
||||
END_STATE();
|
||||
case 21:
|
||||
ACCEPT_TOKEN(anon_sym_EQ);
|
||||
ACCEPT_TOKEN(anon_sym_type);
|
||||
END_STATE();
|
||||
case 22:
|
||||
ACCEPT_TOKEN(anon_sym_SEMI);
|
||||
ACCEPT_TOKEN(anon_sym_EQ);
|
||||
END_STATE();
|
||||
case 23:
|
||||
ACCEPT_TOKEN(anon_sym_morph);
|
||||
ACCEPT_TOKEN(anon_sym_SEMI);
|
||||
END_STATE();
|
||||
case 24:
|
||||
ACCEPT_TOKEN(anon_sym_COLON);
|
||||
ACCEPT_TOKEN(anon_sym_morph);
|
||||
END_STATE();
|
||||
case 25:
|
||||
ACCEPT_TOKEN(anon_sym_COLON);
|
||||
END_STATE();
|
||||
case 26:
|
||||
ACCEPT_TOKEN(sym_ident);
|
||||
if (lookahead == '-' ||
|
||||
('0' <= lookahead && lookahead <= '9') ||
|
||||
('A' <= lookahead && lookahead <= 'Z') ||
|
||||
lookahead == '_' ||
|
||||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(25);
|
||||
END_STATE();
|
||||
case 26:
|
||||
ACCEPT_TOKEN(sym_type);
|
||||
if (('\t' <= lookahead && lookahead <= '\r') ||
|
||||
lookahead == ' ') ADVANCE(26);
|
||||
if (lookahead != 0 &&
|
||||
lookahead != '=') ADVANCE(27);
|
||||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(26);
|
||||
END_STATE();
|
||||
case 27:
|
||||
ACCEPT_TOKEN(sym_type);
|
||||
if (('\t' <= lookahead && lookahead <= '\r') ||
|
||||
lookahead == ' ') ADVANCE(27);
|
||||
if (lookahead != 0 &&
|
||||
lookahead != '=') ADVANCE(27);
|
||||
lookahead != '=' &&
|
||||
lookahead != '`') ADVANCE(28);
|
||||
END_STATE();
|
||||
case 28:
|
||||
ACCEPT_TOKEN(aux_sym_impl_token1);
|
||||
END_STATE();
|
||||
case 29:
|
||||
ACCEPT_TOKEN(aux_sym_impl_token1);
|
||||
if (('\t' <= lookahead && lookahead <= '\r') ||
|
||||
lookahead == ' ') ADVANCE(29);
|
||||
ACCEPT_TOKEN(sym_type);
|
||||
if (lookahead != 0 &&
|
||||
lookahead != '=' &&
|
||||
lookahead != '`') ADVANCE(28);
|
||||
END_STATE();
|
||||
default:
|
||||
|
@ -384,25 +389,26 @@ static const TSLexerMode ts_lex_modes[STATE_COUNT] = {
|
|||
[8] = {.lex_state = 0},
|
||||
[9] = {.lex_state = 0},
|
||||
[10] = {.lex_state = 0},
|
||||
[11] = {.lex_state = 0},
|
||||
[11] = {.lex_state = 15},
|
||||
[12] = {.lex_state = 0},
|
||||
[13] = {.lex_state = 16},
|
||||
[14] = {.lex_state = 0},
|
||||
[15] = {.lex_state = 12},
|
||||
[13] = {.lex_state = 0},
|
||||
[14] = {.lex_state = 15},
|
||||
[15] = {.lex_state = 0},
|
||||
[16] = {.lex_state = 12},
|
||||
[17] = {.lex_state = 16},
|
||||
[18] = {.lex_state = 0},
|
||||
[17] = {.lex_state = 12},
|
||||
[18] = {.lex_state = 18},
|
||||
[19] = {.lex_state = 0},
|
||||
[20] = {.lex_state = 0},
|
||||
[21] = {.lex_state = 26},
|
||||
[22] = {.lex_state = 0},
|
||||
[23] = {.lex_state = 26},
|
||||
[21] = {.lex_state = 0},
|
||||
[22] = {.lex_state = 27},
|
||||
[23] = {.lex_state = 27},
|
||||
[24] = {.lex_state = 0},
|
||||
[25] = {.lex_state = 0},
|
||||
[26] = {.lex_state = 13},
|
||||
[26] = {.lex_state = 0},
|
||||
[27] = {.lex_state = 0},
|
||||
[28] = {.lex_state = 0},
|
||||
[29] = {.lex_state = 0},
|
||||
[30] = {.lex_state = 0},
|
||||
};
|
||||
|
||||
static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
|
||||
|
@ -418,8 +424,8 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
|
|||
[anon_sym_COLON] = ACTIONS(1),
|
||||
},
|
||||
[STATE(1)] = {
|
||||
[sym_source_file] = STATE(14),
|
||||
[sym_morphbase] = STATE(18),
|
||||
[sym_source_file] = STATE(15),
|
||||
[sym_morphbase] = STATE(19),
|
||||
[sym_include] = STATE(2),
|
||||
[anon_sym_BQUOTE_BQUOTE_BQUOTE] = ACTIONS(3),
|
||||
},
|
||||
|
@ -518,62 +524,67 @@ static const uint16_t ts_small_parse_table[] = {
|
|||
anon_sym_morph,
|
||||
[117] = 2,
|
||||
ACTIONS(38), 1,
|
||||
aux_sym_include_token1,
|
||||
STATE(29), 1,
|
||||
sym_impl_c_code,
|
||||
[124] = 2,
|
||||
ACTIONS(40), 1,
|
||||
anon_sym_BQUOTE_BQUOTE_BQUOTE,
|
||||
STATE(27), 1,
|
||||
sym_impl,
|
||||
[124] = 1,
|
||||
ACTIONS(40), 1,
|
||||
anon_sym_BQUOTE_BQUOTE_BQUOTE,
|
||||
[128] = 1,
|
||||
[131] = 1,
|
||||
ACTIONS(42), 1,
|
||||
aux_sym_include_token1,
|
||||
[132] = 1,
|
||||
anon_sym_BQUOTE_BQUOTE_BQUOTE,
|
||||
[135] = 1,
|
||||
ACTIONS(44), 1,
|
||||
ts_builtin_sym_end,
|
||||
[136] = 1,
|
||||
aux_sym_include_token1,
|
||||
[139] = 1,
|
||||
ACTIONS(46), 1,
|
||||
sym_ident,
|
||||
[140] = 1,
|
||||
ts_builtin_sym_end,
|
||||
[143] = 1,
|
||||
ACTIONS(48), 1,
|
||||
sym_ident,
|
||||
[144] = 1,
|
||||
[147] = 1,
|
||||
ACTIONS(50), 1,
|
||||
aux_sym_include_token1,
|
||||
[148] = 1,
|
||||
sym_ident,
|
||||
[151] = 1,
|
||||
ACTIONS(52), 1,
|
||||
ts_builtin_sym_end,
|
||||
[152] = 1,
|
||||
aux_sym_comment_token1,
|
||||
[155] = 1,
|
||||
ACTIONS(54), 1,
|
||||
anon_sym_STAR_SLASH,
|
||||
[156] = 1,
|
||||
ts_builtin_sym_end,
|
||||
[159] = 1,
|
||||
ACTIONS(56), 1,
|
||||
anon_sym_EQ,
|
||||
[160] = 1,
|
||||
anon_sym_STAR_SLASH,
|
||||
[163] = 1,
|
||||
ACTIONS(58), 1,
|
||||
sym_type,
|
||||
[164] = 1,
|
||||
anon_sym_EQ,
|
||||
[167] = 1,
|
||||
ACTIONS(60), 1,
|
||||
anon_sym_COLON,
|
||||
[168] = 1,
|
||||
sym_type,
|
||||
[171] = 1,
|
||||
ACTIONS(62), 1,
|
||||
sym_type,
|
||||
[172] = 1,
|
||||
[175] = 1,
|
||||
ACTIONS(64), 1,
|
||||
anon_sym_SEMI,
|
||||
[176] = 1,
|
||||
[179] = 1,
|
||||
ACTIONS(66), 1,
|
||||
anon_sym_EQ,
|
||||
[180] = 1,
|
||||
[183] = 1,
|
||||
ACTIONS(68), 1,
|
||||
aux_sym_impl_token1,
|
||||
[184] = 1,
|
||||
anon_sym_COLON,
|
||||
[187] = 1,
|
||||
ACTIONS(70), 1,
|
||||
anon_sym_SEMI,
|
||||
[188] = 1,
|
||||
[191] = 1,
|
||||
ACTIONS(72), 1,
|
||||
anon_sym_BQUOTE_BQUOTE_BQUOTE,
|
||||
[192] = 1,
|
||||
[195] = 1,
|
||||
ACTIONS(74), 1,
|
||||
anon_sym_BQUOTE_BQUOTE_BQUOTE,
|
||||
[199] = 1,
|
||||
ACTIONS(76), 1,
|
||||
anon_sym_SEMI,
|
||||
};
|
||||
|
||||
|
@ -589,63 +600,65 @@ static const uint32_t ts_small_parse_table_map[] = {
|
|||
[SMALL_STATE(10)] = 110,
|
||||
[SMALL_STATE(11)] = 117,
|
||||
[SMALL_STATE(12)] = 124,
|
||||
[SMALL_STATE(13)] = 128,
|
||||
[SMALL_STATE(14)] = 132,
|
||||
[SMALL_STATE(15)] = 136,
|
||||
[SMALL_STATE(16)] = 140,
|
||||
[SMALL_STATE(17)] = 144,
|
||||
[SMALL_STATE(18)] = 148,
|
||||
[SMALL_STATE(19)] = 152,
|
||||
[SMALL_STATE(20)] = 156,
|
||||
[SMALL_STATE(21)] = 160,
|
||||
[SMALL_STATE(22)] = 164,
|
||||
[SMALL_STATE(23)] = 168,
|
||||
[SMALL_STATE(24)] = 172,
|
||||
[SMALL_STATE(25)] = 176,
|
||||
[SMALL_STATE(26)] = 180,
|
||||
[SMALL_STATE(27)] = 184,
|
||||
[SMALL_STATE(28)] = 188,
|
||||
[SMALL_STATE(29)] = 192,
|
||||
[SMALL_STATE(13)] = 131,
|
||||
[SMALL_STATE(14)] = 135,
|
||||
[SMALL_STATE(15)] = 139,
|
||||
[SMALL_STATE(16)] = 143,
|
||||
[SMALL_STATE(17)] = 147,
|
||||
[SMALL_STATE(18)] = 151,
|
||||
[SMALL_STATE(19)] = 155,
|
||||
[SMALL_STATE(20)] = 159,
|
||||
[SMALL_STATE(21)] = 163,
|
||||
[SMALL_STATE(22)] = 167,
|
||||
[SMALL_STATE(23)] = 171,
|
||||
[SMALL_STATE(24)] = 175,
|
||||
[SMALL_STATE(25)] = 179,
|
||||
[SMALL_STATE(26)] = 183,
|
||||
[SMALL_STATE(27)] = 187,
|
||||
[SMALL_STATE(28)] = 191,
|
||||
[SMALL_STATE(29)] = 195,
|
||||
[SMALL_STATE(30)] = 199,
|
||||
};
|
||||
|
||||
static const TSParseActionEntry ts_parse_actions[] = {
|
||||
[0] = {.entry = {.count = 0, .reusable = false}},
|
||||
[1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(),
|
||||
[3] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13),
|
||||
[3] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14),
|
||||
[5] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_morphbase, 1, 0, 0),
|
||||
[7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17),
|
||||
[9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16),
|
||||
[11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15),
|
||||
[7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18),
|
||||
[9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17),
|
||||
[11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16),
|
||||
[13] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_morphbase, 2, 0, 0),
|
||||
[15] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_morphbase_repeat1, 2, 0, 0),
|
||||
[17] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_morphbase_repeat1, 2, 0, 0), SHIFT_REPEAT(17),
|
||||
[20] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_morphbase_repeat1, 2, 0, 0), SHIFT_REPEAT(16),
|
||||
[23] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_morphbase_repeat1, 2, 0, 0), SHIFT_REPEAT(15),
|
||||
[17] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_morphbase_repeat1, 2, 0, 0), SHIFT_REPEAT(18),
|
||||
[20] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_morphbase_repeat1, 2, 0, 0), SHIFT_REPEAT(17),
|
||||
[23] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_morphbase_repeat1, 2, 0, 0), SHIFT_REPEAT(16),
|
||||
[26] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_def, 1, 0, 0),
|
||||
[28] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmnt, 1, 0, 0),
|
||||
[30] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_include, 3, 0, 0),
|
||||
[32] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 3, 0, 0),
|
||||
[34] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_typedef, 5, 0, 0),
|
||||
[36] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_morphdef, 7, 0, 0),
|
||||
[38] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26),
|
||||
[40] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7),
|
||||
[42] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12),
|
||||
[44] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(),
|
||||
[46] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22),
|
||||
[48] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20),
|
||||
[50] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19),
|
||||
[52] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1, 0, 0),
|
||||
[54] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8),
|
||||
[56] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23),
|
||||
[58] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25),
|
||||
[60] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21),
|
||||
[62] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24),
|
||||
[38] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28),
|
||||
[40] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11),
|
||||
[42] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7),
|
||||
[44] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13),
|
||||
[46] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(),
|
||||
[48] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26),
|
||||
[50] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21),
|
||||
[52] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20),
|
||||
[54] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1, 0, 0),
|
||||
[56] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8),
|
||||
[58] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22),
|
||||
[60] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24),
|
||||
[62] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25),
|
||||
[64] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9),
|
||||
[66] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11),
|
||||
[68] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28),
|
||||
[66] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12),
|
||||
[68] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23),
|
||||
[70] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10),
|
||||
[72] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29),
|
||||
[74] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_impl, 3, 0, 0),
|
||||
[72] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_impl_c_code, 1, 0, 0),
|
||||
[74] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30),
|
||||
[76] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_impl, 3, 0, 0),
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -2,9 +2,12 @@
|
|||
#include <stdio.h>
|
||||
```
|
||||
|
||||
/* das ist ein test
|
||||
type PosInt (Radix:ℤ) = <PosInt Radix BigEndian> ~ [ <Digit Radix> ] ;
|
||||
*/
|
||||
|
||||
/* das ist ein test */
|
||||
/* type PosInt (Radix:ℤ) = <PosInt Radix BigEndian> ~ [ <Digit Radix> ]; */
|
||||
/* das ist ein test */
|
||||
morph name : ty = ```
|
||||
morph name : ladder~type~here =
|
||||
```
|
||||
// hello
|
||||
```;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue