1
0
Fork 0
mirror of https://github.com/pnx/tree-sitter-dotenv synced 2026-08-26 16:08:13 +02:00

Compare commits

..

No commits in common. "38ed78c2eda5f2acb2681793a344cbaf4e4dc84a" and "65e3328e012f76d7e2858eb81f52cd987fe633ed" have entirely different histories.

12 changed files with 257 additions and 243 deletions

View file

@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.13) cmake_minimum_required(VERSION 3.13)
project(tree-sitter-dotenv project(tree-sitter-dotenv
VERSION "1.1.0" VERSION "1.0.1"
DESCRIPTION "Dotenv grammar for tree-sitter" DESCRIPTION "Dotenv grammar for tree-sitter"
HOMEPAGE_URL "https://github.com/pnx/tree-sitter-dotenv" HOMEPAGE_URL "https://github.com/pnx/tree-sitter-dotenv"
LANGUAGES C) LANGUAGES C)

View file

@ -1,7 +1,7 @@
[package] [package]
name = "tree-sitter-dotenv" name = "tree-sitter-dotenv"
description = "Dotenv grammar for tree-sitter" description = "Dotenv grammar for tree-sitter"
version = "1.1.0" version = "1.0.1"
license = "MIT" license = "MIT"
readme = "README.md" readme = "README.md"
keywords = ["incremental", "parsing", "tree-sitter", "dotenv"] keywords = ["incremental", "parsing", "tree-sitter", "dotenv"]

2
Makefile generated
View file

@ -2,7 +2,7 @@ ifeq ($(OS),Windows_NT)
$(error Windows is not supported) $(error Windows is not supported)
endif endif
VERSION := 1.1.0 VERSION := 1.0.1
LANGUAGE_NAME := tree-sitter-dotenv LANGUAGE_NAME := tree-sitter-dotenv

View file

@ -24,17 +24,17 @@ module.exports = grammar({
seq( seq(
field("key", choice( field("key", choice(
$.identifier, $.identifier,
alias("export", $.identifier), alias($.export, $.identifier),
)), )),
"=", "=",
optional(field("value", $._value)), optional(field("value", $._value)),
$._end_of_assignment, $._end_of_assignment,
), ),
prec(1, seq( prec(1, seq(
"export", $.export,
field("key", choice( field("key", choice(
$.identifier, $.identifier,
alias("export", $.identifier), alias($.export, $.identifier),
)), )),
"=", "=",
optional(field("value", $._value)), optional(field("value", $._value)),
@ -43,6 +43,7 @@ module.exports = grammar({
), ),
comment: _ => /\#[^\n]*/, comment: _ => /\#[^\n]*/,
export: _ => token(prec(1, 'export')),
identifier: _ => /[A-Za-z_][A-Za-z0-9_]*/, identifier: _ => /[A-Za-z_][A-Za-z0-9_]*/,
variable: $ => seq('$', choice( variable: $ => seq('$', choice(

View file

@ -1,6 +1,6 @@
{ {
"name": "tree-sitter-dotenv", "name": "tree-sitter-dotenv",
"version": "1.1.0", "version": "1.0.1",
"description": "Dotenv grammar for tree-sitter", "description": "Dotenv grammar for tree-sitter",
"repository": "github:pnx/tree-sitter-dotenv", "repository": "github:pnx/tree-sitter-dotenv",
"license": "MIT", "license": "MIT",

View file

@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "tree-sitter-dotenv" name = "tree-sitter-dotenv"
description = "Dotenv grammar for tree-sitter" description = "Dotenv grammar for tree-sitter"
version = "1.1.0" version = "1.0.1"
keywords = ["incremental", "parsing", "tree-sitter", "dotenv"] keywords = ["incremental", "parsing", "tree-sitter", "dotenv"]
classifiers = [ classifiers = [
"Intended Audience :: Developers", "Intended Audience :: Developers",

View file

@ -1,9 +1,9 @@
"=" @operator "=" @operator
"export" @keyword
(comment) @comment (comment) @comment
(export) @keyword
(boolean) @constant (boolean) @constant
(number) @number (number) @number

23
src/grammar.json generated
View file

@ -38,8 +38,8 @@
{ {
"type": "ALIAS", "type": "ALIAS",
"content": { "content": {
"type": "STRING", "type": "SYMBOL",
"value": "export" "name": "export"
}, },
"named": true, "named": true,
"value": "identifier" "value": "identifier"
@ -80,8 +80,8 @@
"type": "SEQ", "type": "SEQ",
"members": [ "members": [
{ {
"type": "STRING", "type": "SYMBOL",
"value": "export" "name": "export"
}, },
{ {
"type": "FIELD", "type": "FIELD",
@ -96,8 +96,8 @@
{ {
"type": "ALIAS", "type": "ALIAS",
"content": { "content": {
"type": "STRING", "type": "SYMBOL",
"value": "export" "name": "export"
}, },
"named": true, "named": true,
"value": "identifier" "value": "identifier"
@ -138,6 +138,17 @@
"type": "PATTERN", "type": "PATTERN",
"value": "\\#[^\\n]*" "value": "\\#[^\\n]*"
}, },
"export": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "STRING",
"value": "export"
}
}
},
"identifier": { "identifier": {
"type": "PATTERN", "type": "PATTERN",
"value": "[A-Za-z_][A-Za-z0-9_]*" "value": "[A-Za-z_][A-Za-z0-9_]*"

12
src/node-types.json generated
View file

@ -39,6 +39,16 @@
} }
] ]
} }
},
"children": {
"multiple": false,
"required": false,
"types": [
{
"type": "export",
"named": true
}
]
} }
}, },
{ {
@ -163,7 +173,7 @@
}, },
{ {
"type": "export", "type": "export",
"named": false "named": true
}, },
{ {
"type": "float", "type": "float",

370
src/parser.c generated
View file

@ -21,9 +21,9 @@
enum ts_symbol_identifiers { enum ts_symbol_identifiers {
sym_identifier = 1, sym_identifier = 1,
anon_sym_export = 2, anon_sym_EQ = 2,
anon_sym_EQ = 3, sym_comment = 3,
sym_comment = 4, sym_export = 4,
anon_sym_DOLLAR = 5, anon_sym_DOLLAR = 5,
anon_sym_LBRACE = 6, anon_sym_LBRACE = 6,
anon_sym_RBRACE = 7, anon_sym_RBRACE = 7,
@ -53,9 +53,9 @@ enum ts_symbol_identifiers {
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_identifier] = "identifier", [sym_identifier] = "identifier",
[anon_sym_export] = "export",
[anon_sym_EQ] = "=", [anon_sym_EQ] = "=",
[sym_comment] = "comment", [sym_comment] = "comment",
[sym_export] = "export",
[anon_sym_DOLLAR] = "$", [anon_sym_DOLLAR] = "$",
[anon_sym_LBRACE] = "{", [anon_sym_LBRACE] = "{",
[anon_sym_RBRACE] = "}", [anon_sym_RBRACE] = "}",
@ -85,9 +85,9 @@ 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_identifier] = sym_identifier, [sym_identifier] = sym_identifier,
[anon_sym_export] = anon_sym_export,
[anon_sym_EQ] = anon_sym_EQ, [anon_sym_EQ] = anon_sym_EQ,
[sym_comment] = sym_comment, [sym_comment] = sym_comment,
[sym_export] = sym_export,
[anon_sym_DOLLAR] = anon_sym_DOLLAR, [anon_sym_DOLLAR] = anon_sym_DOLLAR,
[anon_sym_LBRACE] = anon_sym_LBRACE, [anon_sym_LBRACE] = anon_sym_LBRACE,
[anon_sym_RBRACE] = anon_sym_RBRACE, [anon_sym_RBRACE] = anon_sym_RBRACE,
@ -123,10 +123,6 @@ static const TSSymbolMetadata ts_symbol_metadata[] = {
.visible = true, .visible = true,
.named = true, .named = true,
}, },
[anon_sym_export] = {
.visible = true,
.named = false,
},
[anon_sym_EQ] = { [anon_sym_EQ] = {
.visible = true, .visible = true,
.named = false, .named = false,
@ -135,6 +131,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = {
.visible = true, .visible = true,
.named = true, .named = true,
}, },
[sym_export] = {
.visible = true,
.named = true,
},
[anon_sym_DOLLAR] = { [anon_sym_DOLLAR] = {
.visible = true, .visible = true,
.named = false, .named = false,
@ -247,10 +247,10 @@ static const char * const ts_field_names[] = {
static const TSMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = { static const TSMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = {
[1] = {.index = 0, .length = 1}, [1] = {.index = 0, .length = 1},
[2] = {.index = 0, .length = 1}, [2] = {.index = 0, .length = 1},
[3] = {.index = 1, .length = 1}, [3] = {.index = 1, .length = 2},
[4] = {.index = 2, .length = 2}, [4] = {.index = 3, .length = 1},
[5] = {.index = 1, .length = 1}, [5] = {.index = 3, .length = 1},
[6] = {.index = 2, .length = 2}, [6] = {.index = 1, .length = 2},
[7] = {.index = 4, .length = 2}, [7] = {.index = 4, .length = 2},
[8] = {.index = 4, .length = 2}, [8] = {.index = 4, .length = 2},
}; };
@ -259,10 +259,10 @@ static const TSFieldMapEntry ts_field_map_entries[] = {
[0] = [0] =
{field_key, 0}, {field_key, 0},
[1] = [1] =
{field_key, 1},
[2] =
{field_key, 0}, {field_key, 0},
{field_value, 2}, {field_value, 2},
[3] =
{field_key, 1},
[4] = [4] =
{field_key, 1}, {field_key, 1},
{field_value, 3}, {field_value, 3},
@ -274,10 +274,10 @@ static const TSSymbol ts_alias_sequences[PRODUCTION_ID_COUNT][MAX_ALIAS_SEQUENCE
[0] = sym_identifier, [0] = sym_identifier,
}, },
[3] = { [3] = {
[1] = sym_identifier, [0] = sym_identifier,
}, },
[4] = { [4] = {
[0] = sym_identifier, [1] = sym_identifier,
}, },
[7] = { [7] = {
[1] = sym_identifier, [1] = sym_identifier,
@ -312,9 +312,9 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = {
[20] = 20, [20] = 20,
[21] = 21, [21] = 21,
[22] = 22, [22] = 22,
[23] = 22, [23] = 23,
[24] = 24, [24] = 22,
[25] = 25, [25] = 20,
[26] = 26, [26] = 26,
[27] = 27, [27] = 27,
[28] = 28, [28] = 28,
@ -332,10 +332,10 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = {
[40] = 40, [40] = 40,
[41] = 21, [41] = 21,
[42] = 42, [42] = 42,
[43] = 20, [43] = 43,
[44] = 44, [44] = 44,
[45] = 36, [45] = 35,
[46] = 44, [46] = 42,
}; };
static bool ts_lex(TSLexer *lexer, TSStateId state) { static bool ts_lex(TSLexer *lexer, TSStateId state) {
@ -754,7 +754,7 @@ static bool ts_lex_keywords(TSLexer *lexer, TSStateId state) {
if (lookahead == 't') ADVANCE(6); if (lookahead == 't') ADVANCE(6);
END_STATE(); END_STATE();
case 6: case 6:
ACCEPT_TOKEN(anon_sym_export); ACCEPT_TOKEN(sym_export);
END_STATE(); END_STATE();
default: default:
return false; return false;
@ -785,28 +785,28 @@ static const TSLexerMode ts_lex_modes[STATE_COUNT] = {
[20] = {.lex_state = 2}, [20] = {.lex_state = 2},
[21] = {.lex_state = 2}, [21] = {.lex_state = 2},
[22] = {.lex_state = 8}, [22] = {.lex_state = 8},
[23] = {.lex_state = 8}, [23] = {.lex_state = 3},
[24] = {.lex_state = 3}, [24] = {.lex_state = 8},
[25] = {.lex_state = 0, .external_lex_state = 1}, [25] = {.lex_state = 0, .external_lex_state = 1},
[26] = {.lex_state = 0}, [26] = {.lex_state = 0},
[27] = {.lex_state = 0, .external_lex_state = 1}, [27] = {.lex_state = 0, .external_lex_state = 1},
[28] = {.lex_state = 0}, [28] = {.lex_state = 0, .external_lex_state = 1},
[29] = {.lex_state = 0, .external_lex_state = 1}, [29] = {.lex_state = 0, .external_lex_state = 1},
[30] = {.lex_state = 0, .external_lex_state = 1}, [30] = {.lex_state = 0, .external_lex_state = 1},
[31] = {.lex_state = 0, .external_lex_state = 1}, [31] = {.lex_state = 0, .external_lex_state = 1},
[32] = {.lex_state = 0, .external_lex_state = 1}, [32] = {.lex_state = 0},
[33] = {.lex_state = 0, .external_lex_state = 1}, [33] = {.lex_state = 0, .external_lex_state = 1},
[34] = {.lex_state = 0}, [34] = {.lex_state = 0},
[35] = {.lex_state = 0}, [35] = {.lex_state = 0},
[36] = {.lex_state = 0}, [36] = {.lex_state = 0, .external_lex_state = 1},
[37] = {.lex_state = 0, .external_lex_state = 1}, [37] = {.lex_state = 0, .external_lex_state = 1},
[38] = {.lex_state = 0}, [38] = {.lex_state = 0, .external_lex_state = 1},
[39] = {.lex_state = 0, .external_lex_state = 1}, [39] = {.lex_state = 0, .external_lex_state = 1},
[40] = {.lex_state = 0, .external_lex_state = 1}, [40] = {.lex_state = 0},
[41] = {.lex_state = 0, .external_lex_state = 1}, [41] = {.lex_state = 0, .external_lex_state = 1},
[42] = {.lex_state = 0, .external_lex_state = 1}, [42] = {.lex_state = 8},
[43] = {.lex_state = 0, .external_lex_state = 1}, [43] = {.lex_state = 0, .external_lex_state = 1},
[44] = {.lex_state = 8}, [44] = {.lex_state = 0},
[45] = {.lex_state = 0}, [45] = {.lex_state = 0},
[46] = {.lex_state = 8}, [46] = {.lex_state = 8},
}; };
@ -815,9 +815,9 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
[STATE(0)] = { [STATE(0)] = {
[ts_builtin_sym_end] = ACTIONS(1), [ts_builtin_sym_end] = ACTIONS(1),
[sym_identifier] = ACTIONS(1), [sym_identifier] = ACTIONS(1),
[anon_sym_export] = ACTIONS(1),
[anon_sym_EQ] = ACTIONS(1), [anon_sym_EQ] = ACTIONS(1),
[sym_comment] = ACTIONS(1), [sym_comment] = ACTIONS(1),
[sym_export] = ACTIONS(1),
[anon_sym_DOLLAR] = ACTIONS(1), [anon_sym_DOLLAR] = ACTIONS(1),
[anon_sym_LBRACE] = ACTIONS(1), [anon_sym_LBRACE] = ACTIONS(1),
[anon_sym_RBRACE] = ACTIONS(1), [anon_sym_RBRACE] = ACTIONS(1),
@ -831,21 +831,21 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
}, },
[STATE(1)] = { [STATE(1)] = {
[sym_document] = STATE(26), [sym_document] = STATE(26),
[sym_assignment] = STATE(7), [sym_assignment] = STATE(6),
[aux_sym_document_repeat1] = STATE(7), [aux_sym_document_repeat1] = STATE(6),
[ts_builtin_sym_end] = ACTIONS(3), [ts_builtin_sym_end] = ACTIONS(3),
[sym_identifier] = ACTIONS(5), [sym_identifier] = ACTIONS(5),
[anon_sym_export] = ACTIONS(7), [sym_comment] = ACTIONS(7),
[sym_comment] = ACTIONS(9), [sym_export] = ACTIONS(9),
}, },
[STATE(2)] = { [STATE(2)] = {
[sym_variable] = STATE(33), [sym_variable] = STATE(33),
[sym__value] = STATE(33), [sym__value] = STATE(33),
[sym_string] = STATE(33), [sym_string] = STATE(33),
[sym__literal_string] = STATE(32), [sym__literal_string] = STATE(30),
[sym__string] = STATE(32), [sym__string] = STATE(30),
[sym_number] = STATE(33), [sym_number] = STATE(33),
[sym_integer] = STATE(30), [sym_integer] = STATE(28),
[anon_sym_DOLLAR] = ACTIONS(11), [anon_sym_DOLLAR] = ACTIONS(11),
[anon_sym_SQUOTE] = ACTIONS(13), [anon_sym_SQUOTE] = ACTIONS(13),
[anon_sym_DQUOTE] = ACTIONS(15), [anon_sym_DQUOTE] = ACTIONS(15),
@ -860,10 +860,10 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
[sym_variable] = STATE(39), [sym_variable] = STATE(39),
[sym__value] = STATE(39), [sym__value] = STATE(39),
[sym_string] = STATE(39), [sym_string] = STATE(39),
[sym__literal_string] = STATE(32), [sym__literal_string] = STATE(30),
[sym__string] = STATE(32), [sym__string] = STATE(30),
[sym_number] = STATE(39), [sym_number] = STATE(39),
[sym_integer] = STATE(30), [sym_integer] = STATE(28),
[anon_sym_DOLLAR] = ACTIONS(11), [anon_sym_DOLLAR] = ACTIONS(11),
[anon_sym_SQUOTE] = ACTIONS(13), [anon_sym_SQUOTE] = ACTIONS(13),
[anon_sym_DQUOTE] = ACTIONS(15), [anon_sym_DQUOTE] = ACTIONS(15),
@ -875,13 +875,13 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
[sym__end_of_assignment] = ACTIONS(27), [sym__end_of_assignment] = ACTIONS(27),
}, },
[STATE(4)] = { [STATE(4)] = {
[sym_variable] = STATE(42), [sym_variable] = STATE(29),
[sym__value] = STATE(42), [sym__value] = STATE(29),
[sym_string] = STATE(42), [sym_string] = STATE(29),
[sym__literal_string] = STATE(32), [sym__literal_string] = STATE(30),
[sym__string] = STATE(32), [sym__string] = STATE(30),
[sym_number] = STATE(42), [sym_number] = STATE(29),
[sym_integer] = STATE(30), [sym_integer] = STATE(28),
[anon_sym_DOLLAR] = ACTIONS(11), [anon_sym_DOLLAR] = ACTIONS(11),
[anon_sym_SQUOTE] = ACTIONS(13), [anon_sym_SQUOTE] = ACTIONS(13),
[anon_sym_DQUOTE] = ACTIONS(15), [anon_sym_DQUOTE] = ACTIONS(15),
@ -896,10 +896,10 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
[sym_variable] = STATE(31), [sym_variable] = STATE(31),
[sym__value] = STATE(31), [sym__value] = STATE(31),
[sym_string] = STATE(31), [sym_string] = STATE(31),
[sym__literal_string] = STATE(32), [sym__literal_string] = STATE(30),
[sym__string] = STATE(32), [sym__string] = STATE(30),
[sym_number] = STATE(31), [sym_number] = STATE(31),
[sym_integer] = STATE(30), [sym_integer] = STATE(28),
[anon_sym_DOLLAR] = ACTIONS(11), [anon_sym_DOLLAR] = ACTIONS(11),
[anon_sym_SQUOTE] = ACTIONS(13), [anon_sym_SQUOTE] = ACTIONS(13),
[anon_sym_DQUOTE] = ACTIONS(15), [anon_sym_DQUOTE] = ACTIONS(15),
@ -914,27 +914,27 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = {
static const uint16_t ts_small_parse_table[] = { static const uint16_t ts_small_parse_table[] = {
[0] = 5, [0] = 5,
ACTIONS(5), 1,
sym_identifier,
ACTIONS(9), 1,
sym_export,
ACTIONS(37), 1, ACTIONS(37), 1,
ts_builtin_sym_end, ts_builtin_sym_end,
ACTIONS(39), 1, ACTIONS(39), 1,
sym_identifier,
ACTIONS(42), 1,
anon_sym_export,
ACTIONS(45), 1,
sym_comment, sym_comment,
STATE(6), 2, STATE(7), 2,
sym_assignment, sym_assignment,
aux_sym_document_repeat1, aux_sym_document_repeat1,
[17] = 5, [17] = 5,
ACTIONS(5), 1, ACTIONS(41), 1,
sym_identifier,
ACTIONS(7), 1,
anon_sym_export,
ACTIONS(48), 1,
ts_builtin_sym_end, ts_builtin_sym_end,
ACTIONS(50), 1, ACTIONS(43), 1,
sym_identifier,
ACTIONS(46), 1,
sym_comment, sym_comment,
STATE(6), 2, ACTIONS(49), 1,
sym_export,
STATE(7), 2,
sym_assignment, sym_assignment,
aux_sym_document_repeat1, aux_sym_document_repeat1,
[34] = 4, [34] = 4,
@ -968,68 +968,68 @@ static const uint16_t ts_small_parse_table[] = {
sym_variable, sym_variable,
aux_sym__string_repeat1, aux_sym__string_repeat1,
[76] = 2, [76] = 2,
ACTIONS(70), 2, ACTIONS(72), 1,
sym_identifier,
ACTIONS(70), 3,
ts_builtin_sym_end, ts_builtin_sym_end,
sym_comment, sym_comment,
ACTIONS(72), 2, sym_export,
anon_sym_export,
sym_identifier,
[85] = 2, [85] = 2,
ACTIONS(74), 2, ACTIONS(76), 1,
sym_identifier,
ACTIONS(74), 3,
ts_builtin_sym_end, ts_builtin_sym_end,
sym_comment, sym_comment,
ACTIONS(76), 2, sym_export,
anon_sym_export,
sym_identifier,
[94] = 2, [94] = 2,
ACTIONS(78), 2, ACTIONS(80), 1,
sym_identifier,
ACTIONS(78), 3,
ts_builtin_sym_end, ts_builtin_sym_end,
sym_comment, sym_comment,
ACTIONS(80), 2, sym_export,
anon_sym_export,
sym_identifier,
[103] = 2, [103] = 2,
ACTIONS(82), 2, ACTIONS(84), 1,
sym_identifier,
ACTIONS(82), 3,
ts_builtin_sym_end, ts_builtin_sym_end,
sym_comment, sym_comment,
ACTIONS(84), 2, sym_export,
anon_sym_export,
sym_identifier,
[112] = 2, [112] = 2,
ACTIONS(86), 2, ACTIONS(88), 1,
sym_identifier,
ACTIONS(86), 3,
ts_builtin_sym_end, ts_builtin_sym_end,
sym_comment, sym_comment,
ACTIONS(88), 2, sym_export,
anon_sym_export,
sym_identifier,
[121] = 2, [121] = 2,
ACTIONS(90), 2, ACTIONS(92), 1,
sym_identifier,
ACTIONS(90), 3,
ts_builtin_sym_end, ts_builtin_sym_end,
sym_comment, sym_comment,
ACTIONS(92), 2, sym_export,
anon_sym_export,
sym_identifier,
[130] = 2, [130] = 2,
ACTIONS(94), 2, ACTIONS(96), 1,
sym_identifier,
ACTIONS(94), 3,
ts_builtin_sym_end, ts_builtin_sym_end,
sym_comment, sym_comment,
ACTIONS(96), 2, sym_export,
anon_sym_export,
sym_identifier,
[139] = 2, [139] = 2,
ACTIONS(98), 2, ACTIONS(100), 1,
sym_identifier,
ACTIONS(98), 3,
ts_builtin_sym_end, ts_builtin_sym_end,
sym_comment, sym_comment,
ACTIONS(100), 2, sym_export,
anon_sym_export,
sym_identifier,
[148] = 3, [148] = 3,
ACTIONS(102), 1, ACTIONS(102), 1,
sym_identifier, sym_identifier,
ACTIONS(104), 1, ACTIONS(104), 1,
anon_sym_export,
ACTIONS(106), 1,
anon_sym_EQ, anon_sym_EQ,
ACTIONS(106), 1,
sym_export,
[158] = 2, [158] = 2,
ACTIONS(110), 1, ACTIONS(110), 1,
aux_sym__string_token1, aux_sym__string_token1,
@ -1049,74 +1049,74 @@ static const uint16_t ts_small_parse_table[] = {
anon_sym_LBRACE, anon_sym_LBRACE,
[181] = 2, [181] = 2,
ACTIONS(120), 1, ACTIONS(120), 1,
sym_identifier, anon_sym_SQUOTE,
ACTIONS(122), 1, ACTIONS(122), 1,
anon_sym_LBRACE, aux_sym__literal_string_token1,
[188] = 2, [188] = 2,
ACTIONS(124), 1, ACTIONS(124), 1,
anon_sym_SQUOTE, sym_identifier,
ACTIONS(126), 1, ACTIONS(126), 1,
aux_sym__literal_string_token1, anon_sym_LBRACE,
[195] = 1, [195] = 1,
ACTIONS(128), 1, ACTIONS(110), 1,
sym__end_of_assignment, sym__end_of_assignment,
[199] = 1, [199] = 1,
ACTIONS(130), 1, ACTIONS(128), 1,
ts_builtin_sym_end, ts_builtin_sym_end,
[203] = 1, [203] = 1,
ACTIONS(132), 1, ACTIONS(130), 1,
sym__end_of_assignment, sym__end_of_assignment,
[207] = 1, [207] = 1,
ACTIONS(134), 1, ACTIONS(132), 1,
anon_sym_SQUOTE, sym__end_of_assignment,
[211] = 1, [211] = 1,
ACTIONS(136), 1, ACTIONS(134), 1,
sym__end_of_assignment, sym__end_of_assignment,
[215] = 1, [215] = 1,
ACTIONS(138), 1, ACTIONS(136), 1,
sym__end_of_assignment, sym__end_of_assignment,
[219] = 1, [219] = 1,
ACTIONS(140), 1, ACTIONS(138), 1,
sym__end_of_assignment, sym__end_of_assignment,
[223] = 1, [223] = 1,
ACTIONS(140), 1,
anon_sym_EQ,
[227] = 1,
ACTIONS(142), 1, ACTIONS(142), 1,
sym__end_of_assignment, sym__end_of_assignment,
[227] = 1,
ACTIONS(144), 1,
sym__end_of_assignment,
[231] = 1, [231] = 1,
ACTIONS(146), 1, ACTIONS(144), 1,
anon_sym_EQ, anon_sym_EQ,
[235] = 1, [235] = 1,
ACTIONS(148), 1, ACTIONS(146), 1,
anon_sym_EQ,
[239] = 1,
ACTIONS(150), 1,
anon_sym_RBRACE, anon_sym_RBRACE,
[239] = 1,
ACTIONS(148), 1,
sym__end_of_assignment,
[243] = 1, [243] = 1,
ACTIONS(152), 1, ACTIONS(150), 1,
sym__end_of_assignment, sym__end_of_assignment,
[247] = 1, [247] = 1,
ACTIONS(154), 1, ACTIONS(152), 1,
anon_sym_EQ, sym__end_of_assignment,
[251] = 1, [251] = 1,
ACTIONS(156), 1, ACTIONS(154), 1,
sym__end_of_assignment, sym__end_of_assignment,
[255] = 1, [255] = 1,
ACTIONS(158), 1, ACTIONS(156), 1,
sym__end_of_assignment, anon_sym_EQ,
[259] = 1, [259] = 1,
ACTIONS(114), 1, ACTIONS(114), 1,
sym__end_of_assignment, sym__end_of_assignment,
[263] = 1, [263] = 1,
ACTIONS(160), 1, ACTIONS(158), 1,
sym__end_of_assignment, sym_identifier,
[267] = 1, [267] = 1,
ACTIONS(110), 1, ACTIONS(160), 1,
sym__end_of_assignment, sym__end_of_assignment,
[271] = 1, [271] = 1,
ACTIONS(162), 1, ACTIONS(162), 1,
sym_identifier, anon_sym_SQUOTE,
[275] = 1, [275] = 1,
ACTIONS(164), 1, ACTIONS(164), 1,
anon_sym_RBRACE, anon_sym_RBRACE,
@ -1173,34 +1173,34 @@ static const TSParseActionEntry ts_parse_actions[] = {
[0] = {.entry = {.count = 0, .reusable = false}}, [0] = {.entry = {.count = 0, .reusable = false}},
[1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(), [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(),
[3] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_document, 0, 0, 0), [3] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_document, 0, 0, 0),
[5] = {.entry = {.count = 1, .reusable = false}}, SHIFT(38), [5] = {.entry = {.count = 1, .reusable = false}}, SHIFT(40),
[7] = {.entry = {.count = 1, .reusable = false}}, SHIFT(19), [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6),
[9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19),
[11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22),
[13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23),
[15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8),
[17] = {.entry = {.count = 1, .reusable = false}}, SHIFT(40), [17] = {.entry = {.count = 1, .reusable = false}}, SHIFT(38),
[19] = {.entry = {.count = 1, .reusable = false}}, SHIFT(30), [19] = {.entry = {.count = 1, .reusable = false}}, SHIFT(28),
[21] = {.entry = {.count = 1, .reusable = false}}, SHIFT(33), [21] = {.entry = {.count = 1, .reusable = false}}, SHIFT(33),
[23] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), [23] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15),
[25] = {.entry = {.count = 1, .reusable = false}}, SHIFT(39), [25] = {.entry = {.count = 1, .reusable = false}}, SHIFT(39),
[27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), [27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12),
[29] = {.entry = {.count = 1, .reusable = false}}, SHIFT(42), [29] = {.entry = {.count = 1, .reusable = false}}, SHIFT(29),
[31] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), [31] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11),
[33] = {.entry = {.count = 1, .reusable = false}}, SHIFT(31), [33] = {.entry = {.count = 1, .reusable = false}}, SHIFT(31),
[35] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), [35] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13),
[37] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2, 0, 0), [37] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_document, 1, 0, 0),
[39] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_document_repeat1, 2, 0, 0), SHIFT_REPEAT(38), [39] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7),
[42] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_document_repeat1, 2, 0, 0), SHIFT_REPEAT(19), [41] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2, 0, 0),
[45] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2, 0, 0), SHIFT_REPEAT(6), [43] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_document_repeat1, 2, 0, 0), SHIFT_REPEAT(40),
[48] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_document, 1, 0, 0), [46] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2, 0, 0), SHIFT_REPEAT(7),
[50] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), [49] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_document_repeat1, 2, 0, 0), SHIFT_REPEAT(19),
[52] = {.entry = {.count = 1, .reusable = false}}, SHIFT(22), [52] = {.entry = {.count = 1, .reusable = false}}, SHIFT(24),
[54] = {.entry = {.count = 1, .reusable = false}}, SHIFT(29), [54] = {.entry = {.count = 1, .reusable = false}}, SHIFT(27),
[56] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), [56] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9),
[58] = {.entry = {.count = 1, .reusable = false}}, SHIFT(25), [58] = {.entry = {.count = 1, .reusable = false}}, SHIFT(37),
[60] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), [60] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10),
[62] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__string_repeat1, 2, 0, 0), SHIFT_REPEAT(22), [62] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__string_repeat1, 2, 0, 0), SHIFT_REPEAT(24),
[65] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__string_repeat1, 2, 0, 0), [65] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__string_repeat1, 2, 0, 0),
[67] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__string_repeat1, 2, 0, 0), SHIFT_REPEAT(10), [67] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__string_repeat1, 2, 0, 0), SHIFT_REPEAT(10),
[70] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 3, 0, 1), [70] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 3, 0, 1),
@ -1209,46 +1209,46 @@ static const TSParseActionEntry ts_parse_actions[] = {
[76] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 3, 0, 2), [76] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 3, 0, 2),
[78] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 4, 0, 4), [78] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 4, 0, 4),
[80] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 4, 0, 4), [80] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 4, 0, 4),
[82] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 4, 0, 5), [82] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 4, 0, 3),
[84] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 4, 0, 5), [84] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 4, 0, 3),
[86] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 4, 0, 6), [86] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 4, 0, 5),
[88] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 4, 0, 6), [88] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 4, 0, 5),
[90] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 5, 0, 7), [90] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 4, 0, 6),
[92] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 5, 0, 7), [92] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 4, 0, 6),
[94] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 4, 0, 3), [94] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 5, 0, 7),
[96] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 4, 0, 3), [96] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 5, 0, 7),
[98] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 5, 0, 8), [98] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_assignment, 5, 0, 8),
[100] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 5, 0, 8), [100] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_assignment, 5, 0, 8),
[102] = {.entry = {.count = 1, .reusable = false}}, SHIFT(34), [102] = {.entry = {.count = 1, .reusable = false}}, SHIFT(34),
[104] = {.entry = {.count = 1, .reusable = false}}, SHIFT(35), [104] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4),
[106] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), [106] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32),
[108] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_variable, 2, 0, 0), [108] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_variable, 2, 0, 0),
[110] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variable, 2, 0, 0), [110] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variable, 2, 0, 0),
[112] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_variable, 4, 0, 0), [112] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_variable, 4, 0, 0),
[114] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variable, 4, 0, 0), [114] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variable, 4, 0, 0),
[116] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), [116] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25),
[118] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46), [118] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42),
[120] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43), [120] = {.entry = {.count = 1, .reusable = false}}, SHIFT(43),
[122] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), [122] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44),
[124] = {.entry = {.count = 1, .reusable = false}}, SHIFT(27), [124] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20),
[126] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), [126] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46),
[128] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__string, 3, 0, 0), [128] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(),
[130] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), [130] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__string, 2, 0, 0),
[132] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__literal_string, 2, 0, 0), [132] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_number, 1, 0, 0),
[134] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), [134] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14),
[136] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__string, 2, 0, 0), [136] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 1, 0, 0),
[138] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_number, 1, 0, 0), [138] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17),
[140] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), [140] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5),
[142] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string, 1, 0, 0), [142] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18),
[144] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), [144] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2),
[146] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), [146] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41),
[148] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), [148] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__literal_string, 3, 0, 0),
[150] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41), [150] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__string, 3, 0, 0),
[152] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__literal_string, 3, 0, 0), [152] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_integer, 1, 0, 0),
[154] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), [154] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16),
[156] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), [156] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3),
[158] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_integer, 1, 0, 0), [158] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35),
[160] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), [160] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__literal_string, 2, 0, 0),
[162] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), [162] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36),
[164] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), [164] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21),
[166] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), [166] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45),
@ -1328,8 +1328,8 @@ TS_PUBLIC const TSLanguage *tree_sitter_dotenv(void) {
.max_reserved_word_set_size = 0, .max_reserved_word_set_size = 0,
.metadata = { .metadata = {
.major_version = 1, .major_version = 1,
.minor_version = 1, .minor_version = 0,
.patch_version = 0, .patch_version = 1,
}, },
}; };
return &language; return &language;

View file

@ -1,6 +1,5 @@
================================================================================ ================================================================================
Export keyword Export keyword
:cst
================================================================================ ================================================================================
export VAR=one export VAR=one
@ -10,31 +9,27 @@ export export=var
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
1:0 - 5:0 document (document
1:0 - 1:14 assignment (assignment
1:0 - 1:6 "export" (export)
1:7 - 1:10 key: identifier `VAR` (identifier)
1:10 - 1:11 "=" (value))
1:11 - 1:14 value: value `one` (assignment
2:0 - 2:18 assignment (export)
2:0 - 2:6 "export" (identifier)
2:8 - 2:11 key: identifier `VAR` (value))
2:13 - 2:14 "=" (assignment
2:15 - 2:18 value: value `one` (export)
3:0 - 3:14 assignment (identifier)
3:0 - 3:6 "export" (value))
3:7 - 3:10 key: identifier `TAB` (assignment
3:10 - 3:11 "=" (export)
3:11 - 3:14 value: value `two` (identifier)
4:0 - 4:17 assignment (value))
4:0 - 4:6 "export" )
4:7 - 4:13 key: identifier `export`
4:13 - 4:14 "="
4:14 - 4:17 value: value `var`
================================================================================ ================================================================================
Export-like identifiers Export-like identifiers
:cst
================================================================================ ================================================================================
export=one export=one
@ -45,20 +40,17 @@ exportVAR = two
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
1:0 - 6:0 document (document
1:0 - 1:10 assignment (assignment
1:0 - 1:6 key: identifier `export` key: (identifier)
1:6 - 1:7 "=" value: (value))
1:7 - 1:10 value: value `one` (assignment
2:0 - 2:12 assignment key: (identifier)
2:0 - 2:6 key: identifier `export` value: (value))
2:7 - 2:8 "=" (assignment
2:9 - 2:12 value: value `one` key: (identifier)
3:0 - 3:13 assignment value: (value))
3:0 - 3:9 key: identifier `exportVAR` (assignment
3:9 - 3:10 "=" key: (identifier)
3:10 - 3:13 value: value `two` value: (value))
4:0 - 4:15 assignment )
4:0 - 4:9 key: identifier `exportVAR`
4:10 - 4:11 "="
4:12 - 4:15 value: value `two`

View file

@ -15,7 +15,7 @@
} }
], ],
"metadata": { "metadata": {
"version": "1.1.0", "version": "1.0.1",
"license": "MIT", "license": "MIT",
"description": "Dotenv grammar for tree-sitter", "description": "Dotenv grammar for tree-sitter",
"authors": [ "authors": [