add support for import statements
This commit is contained in:
parent
51def200ab
commit
bd6ecaee2c
@ -20,9 +20,10 @@ module.exports = grammar({
|
|||||||
),
|
),
|
||||||
optional($.script_part)
|
optional($.script_part)
|
||||||
),
|
),
|
||||||
|
static_modifier: $ => 'static',
|
||||||
import_statement: $ => seq(
|
import_statement: $ => seq(
|
||||||
'import',
|
'import',
|
||||||
optional('static'),
|
optional($.static_modifier),
|
||||||
field('name',
|
field('name',
|
||||||
seq(
|
seq(
|
||||||
$.identifier,
|
$.identifier,
|
||||||
|
|||||||
@ -94,6 +94,10 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"static_modifier": {
|
||||||
|
"type": "STRING",
|
||||||
|
"value": "static"
|
||||||
|
},
|
||||||
"import_statement": {
|
"import_statement": {
|
||||||
"type": "SEQ",
|
"type": "SEQ",
|
||||||
"members": [
|
"members": [
|
||||||
@ -105,8 +109,8 @@
|
|||||||
"type": "CHOICE",
|
"type": "CHOICE",
|
||||||
"members": [
|
"members": [
|
||||||
{
|
{
|
||||||
"type": "STRING",
|
"type": "SYMBOL",
|
||||||
"value": "static"
|
"name": "static_modifier"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "BLANK"
|
"type": "BLANK"
|
||||||
|
|||||||
@ -36,6 +36,16 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"children": {
|
||||||
|
"multiple": false,
|
||||||
|
"required": false,
|
||||||
|
"types": [
|
||||||
|
{
|
||||||
|
"type": "static_modifier",
|
||||||
|
"named": true
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -179,7 +189,7 @@
|
|||||||
"named": false
|
"named": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "static",
|
"type": "static_modifier",
|
||||||
"named": false
|
"named": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
26
src/parser.c
26
src/parser.c
@ -17,8 +17,8 @@
|
|||||||
#define PRODUCTION_ID_COUNT 9
|
#define PRODUCTION_ID_COUNT 9
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
anon_sym_import = 1,
|
sym_static_modifier = 1,
|
||||||
anon_sym_static = 2,
|
anon_sym_import = 2,
|
||||||
anon_sym_DOT = 3,
|
anon_sym_DOT = 3,
|
||||||
anon_sym_STAR = 4,
|
anon_sym_STAR = 4,
|
||||||
sym__shebang_comment = 5,
|
sym__shebang_comment = 5,
|
||||||
@ -44,8 +44,8 @@ enum {
|
|||||||
|
|
||||||
static const char * const ts_symbol_names[] = {
|
static const char * const ts_symbol_names[] = {
|
||||||
[ts_builtin_sym_end] = "end",
|
[ts_builtin_sym_end] = "end",
|
||||||
|
[sym_static_modifier] = "static_modifier",
|
||||||
[anon_sym_import] = "import",
|
[anon_sym_import] = "import",
|
||||||
[anon_sym_static] = "static",
|
|
||||||
[anon_sym_DOT] = ".",
|
[anon_sym_DOT] = ".",
|
||||||
[anon_sym_STAR] = "*",
|
[anon_sym_STAR] = "*",
|
||||||
[sym__shebang_comment] = "_shebang_comment",
|
[sym__shebang_comment] = "_shebang_comment",
|
||||||
@ -71,8 +71,8 @@ static const char * const ts_symbol_names[] = {
|
|||||||
|
|
||||||
static const TSSymbol ts_symbol_map[] = {
|
static const TSSymbol ts_symbol_map[] = {
|
||||||
[ts_builtin_sym_end] = ts_builtin_sym_end,
|
[ts_builtin_sym_end] = ts_builtin_sym_end,
|
||||||
|
[sym_static_modifier] = sym_static_modifier,
|
||||||
[anon_sym_import] = anon_sym_import,
|
[anon_sym_import] = anon_sym_import,
|
||||||
[anon_sym_static] = anon_sym_static,
|
|
||||||
[anon_sym_DOT] = anon_sym_DOT,
|
[anon_sym_DOT] = anon_sym_DOT,
|
||||||
[anon_sym_STAR] = anon_sym_STAR,
|
[anon_sym_STAR] = anon_sym_STAR,
|
||||||
[sym__shebang_comment] = sym__shebang_comment,
|
[sym__shebang_comment] = sym__shebang_comment,
|
||||||
@ -101,11 +101,11 @@ static const TSSymbolMetadata ts_symbol_metadata[] = {
|
|||||||
.visible = false,
|
.visible = false,
|
||||||
.named = true,
|
.named = true,
|
||||||
},
|
},
|
||||||
[anon_sym_import] = {
|
[sym_static_modifier] = {
|
||||||
.visible = true,
|
.visible = true,
|
||||||
.named = false,
|
.named = true,
|
||||||
},
|
},
|
||||||
[anon_sym_static] = {
|
[anon_sym_import] = {
|
||||||
.visible = true,
|
.visible = true,
|
||||||
.named = false,
|
.named = false,
|
||||||
},
|
},
|
||||||
@ -432,14 +432,14 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
|
|||||||
ACCEPT_TOKEN(ts_builtin_sym_end);
|
ACCEPT_TOKEN(ts_builtin_sym_end);
|
||||||
END_STATE();
|
END_STATE();
|
||||||
case 11:
|
case 11:
|
||||||
ACCEPT_TOKEN(anon_sym_import);
|
ACCEPT_TOKEN(sym_static_modifier);
|
||||||
if (('0' <= lookahead && lookahead <= '9') ||
|
if (('0' <= lookahead && lookahead <= '9') ||
|
||||||
('A' <= lookahead && lookahead <= 'Z') ||
|
('A' <= lookahead && lookahead <= 'Z') ||
|
||||||
lookahead == '_' ||
|
lookahead == '_' ||
|
||||||
('a' <= lookahead && lookahead <= 'z')) ADVANCE(35);
|
('a' <= lookahead && lookahead <= 'z')) ADVANCE(35);
|
||||||
END_STATE();
|
END_STATE();
|
||||||
case 12:
|
case 12:
|
||||||
ACCEPT_TOKEN(anon_sym_static);
|
ACCEPT_TOKEN(anon_sym_import);
|
||||||
if (('0' <= lookahead && lookahead <= '9') ||
|
if (('0' <= lookahead && lookahead <= '9') ||
|
||||||
('A' <= lookahead && lookahead <= 'Z') ||
|
('A' <= lookahead && lookahead <= 'Z') ||
|
||||||
lookahead == '_' ||
|
lookahead == '_' ||
|
||||||
@ -495,7 +495,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
|
|||||||
END_STATE();
|
END_STATE();
|
||||||
case 21:
|
case 21:
|
||||||
ACCEPT_TOKEN(sym_identifier);
|
ACCEPT_TOKEN(sym_identifier);
|
||||||
if (lookahead == 'c') ADVANCE(12);
|
if (lookahead == 'c') ADVANCE(11);
|
||||||
if (('0' <= lookahead && lookahead <= '9') ||
|
if (('0' <= lookahead && lookahead <= '9') ||
|
||||||
('A' <= lookahead && lookahead <= 'Z') ||
|
('A' <= lookahead && lookahead <= 'Z') ||
|
||||||
lookahead == '_' ||
|
lookahead == '_' ||
|
||||||
@ -591,7 +591,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
|
|||||||
END_STATE();
|
END_STATE();
|
||||||
case 33:
|
case 33:
|
||||||
ACCEPT_TOKEN(sym_identifier);
|
ACCEPT_TOKEN(sym_identifier);
|
||||||
if (lookahead == 't') ADVANCE(11);
|
if (lookahead == 't') ADVANCE(12);
|
||||||
if (('0' <= lookahead && lookahead <= '9') ||
|
if (('0' <= lookahead && lookahead <= '9') ||
|
||||||
('A' <= lookahead && lookahead <= 'Z') ||
|
('A' <= lookahead && lookahead <= 'Z') ||
|
||||||
lookahead == '_' ||
|
lookahead == '_' ||
|
||||||
@ -689,8 +689,8 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = {
|
|||||||
static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
|
static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
|
||||||
[0] = {
|
[0] = {
|
||||||
[ts_builtin_sym_end] = ACTIONS(1),
|
[ts_builtin_sym_end] = ACTIONS(1),
|
||||||
|
[sym_static_modifier] = ACTIONS(1),
|
||||||
[anon_sym_import] = ACTIONS(1),
|
[anon_sym_import] = ACTIONS(1),
|
||||||
[anon_sym_static] = ACTIONS(1),
|
|
||||||
[anon_sym_DOT] = ACTIONS(1),
|
[anon_sym_DOT] = ACTIONS(1),
|
||||||
[anon_sym_STAR] = ACTIONS(1),
|
[anon_sym_STAR] = ACTIONS(1),
|
||||||
[sym__shebang_comment] = ACTIONS(1),
|
[sym__shebang_comment] = ACTIONS(1),
|
||||||
@ -1150,7 +1150,7 @@ static const uint16_t ts_small_parse_table[] = {
|
|||||||
sym_identifier,
|
sym_identifier,
|
||||||
[475] = 2,
|
[475] = 2,
|
||||||
ACTIONS(139), 1,
|
ACTIONS(139), 1,
|
||||||
anon_sym_static,
|
sym_static_modifier,
|
||||||
ACTIONS(141), 1,
|
ACTIONS(141), 1,
|
||||||
sym_identifier,
|
sym_identifier,
|
||||||
[482] = 2,
|
[482] = 2,
|
||||||
|
|||||||
@ -45,3 +45,15 @@ import qq.ss; import flobble.*;
|
|||||||
(identifier))
|
(identifier))
|
||||||
(import_statement
|
(import_statement
|
||||||
(identifier)))
|
(identifier)))
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
static import
|
||||||
|
================================================================================
|
||||||
|
import static qq.q.*;
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
(source_file
|
||||||
|
(import_statement
|
||||||
|
(static_modifier)
|
||||||
|
(identifier)
|
||||||
|
(identifier)))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user