tree-sitter-objectscript 1.7.4 → 1.7.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +79 -24
- package/common/scanner.h +13 -0
- package/core/grammar.js +1 -0
- package/core/src/parser.c +376 -365
- package/expr/src/parser.c +1 -1
- package/objectscript/src/parser.c +608 -597
- package/objectscript/src/scanner.c +1 -0
- package/objectscript_routine/grammar.js +1 -1
- package/objectscript_routine/src/parser.c +63529 -63529
- package/objectscript_routine/src/scanner.c +36 -47
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/tree-sitter-objectscript.node +0 -0
- package/prebuilds/darwin-x64/tree-sitter-objectscript.node +0 -0
- package/prebuilds/linux-arm64/tree-sitter-objectscript.node +0 -0
- package/prebuilds/linux-x64/tree-sitter-objectscript.node +0 -0
- package/prebuilds/win32-arm64/tree-sitter-objectscript.node +0 -0
- package/prebuilds/win32-x64/tree-sitter-objectscript.node +0 -0
- package/tree-sitter.json +1 -1
- package/udl/queries/studio-highlights.scm +13 -0
- package/udl/src/parser.c +604 -593
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
// Keep this in sync with grammar externals.
|
|
6
6
|
enum TokenType {
|
|
7
7
|
COMPILED_HEADER = OBJECTSCRIPT_CORE_TOKEN_TYPE_MAX,
|
|
8
|
-
ROUTINE,
|
|
9
8
|
RTN_DOT,
|
|
10
9
|
};
|
|
11
10
|
|
|
@@ -13,21 +12,6 @@ struct ObjectScript_Routine_Scanner {
|
|
|
13
12
|
struct ObjectScript_Core_Scanner core_scanner;
|
|
14
13
|
};
|
|
15
14
|
|
|
16
|
-
static bool lex_routine_keyword(TSLexer *lexer) {
|
|
17
|
-
static const char keyword[] = "ROUTINE";
|
|
18
|
-
|
|
19
|
-
for (size_t i = 0; keyword[i] != 0; i++) {
|
|
20
|
-
if (ascii_toupper_i32(lexer->lookahead) != (int32_t)keyword[i]) {
|
|
21
|
-
return false;
|
|
22
|
-
}
|
|
23
|
-
advance(lexer);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
lexer->mark_end(lexer);
|
|
27
|
-
lexer->result_symbol = ROUTINE;
|
|
28
|
-
return true;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
15
|
static bool lex_rtn_dot(TSLexer *lexer) {
|
|
32
16
|
if (lexer->get_column(lexer) != 0) return false;
|
|
33
17
|
if (lexer->lookahead != '.') return false;
|
|
@@ -44,6 +28,33 @@ static bool lex_rtn_dot(TSLexer *lexer) {
|
|
|
44
28
|
return false;
|
|
45
29
|
}
|
|
46
30
|
|
|
31
|
+
static bool lex_compiled_header(TSLexer *lexer) {
|
|
32
|
+
lexer->mark_end(lexer);
|
|
33
|
+
while(!lexer->eof(lexer) && lexer->lookahead != '\n') {
|
|
34
|
+
advance(lexer);
|
|
35
|
+
}
|
|
36
|
+
if (lexer->lookahead != '\n') return false;
|
|
37
|
+
|
|
38
|
+
advance(lexer);
|
|
39
|
+
if (lexer->lookahead != '%') return false;
|
|
40
|
+
advance(lexer);
|
|
41
|
+
if (lexer->lookahead != 'R') return false;
|
|
42
|
+
advance(lexer);
|
|
43
|
+
if (lexer->lookahead != 'O') return false;
|
|
44
|
+
advance(lexer);
|
|
45
|
+
|
|
46
|
+
lexer->result_symbol = COMPILED_HEADER;
|
|
47
|
+
int newline_count = 0;
|
|
48
|
+
while(newline_count < 2 && !lexer->eof(lexer)) {
|
|
49
|
+
if (lexer->lookahead == '\n') {
|
|
50
|
+
newline_count++;
|
|
51
|
+
}
|
|
52
|
+
advance(lexer);
|
|
53
|
+
}
|
|
54
|
+
lexer->mark_end(lexer);
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
|
|
47
58
|
static bool scan(void *payload, TSLexer *lexer, const bool *valid_symbols) {
|
|
48
59
|
struct ObjectScript_Routine_Scanner *scanner =
|
|
49
60
|
(struct ObjectScript_Routine_Scanner *)payload;
|
|
@@ -53,43 +64,20 @@ static bool scan(void *payload, TSLexer *lexer, const bool *valid_symbols) {
|
|
|
53
64
|
return false;
|
|
54
65
|
}
|
|
55
66
|
|
|
56
|
-
if (valid_symbols[
|
|
67
|
+
if (valid_symbols[RTN_DOT] && lex_rtn_dot(lexer)) {
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (ObjectScript_Core_Scanner_scan(&scanner->core_scanner, lexer,
|
|
72
|
+
valid_symbols)) {
|
|
57
73
|
return true;
|
|
58
|
-
} else if (valid_symbols[COMPILED_HEADER]) {
|
|
59
|
-
lexer->mark_end(lexer);
|
|
60
|
-
while(!lexer->eof(lexer) && lexer->lookahead != '\n') {
|
|
61
|
-
advance(lexer);
|
|
62
|
-
}
|
|
63
|
-
if (lexer->lookahead == '\n') {
|
|
64
|
-
advance(lexer);
|
|
65
|
-
if (lexer->lookahead != '%') {
|
|
66
|
-
return false;
|
|
67
|
-
}
|
|
68
|
-
advance(lexer);
|
|
69
|
-
if (lexer->lookahead != 'R') return false;
|
|
70
|
-
advance(lexer);
|
|
71
|
-
|
|
72
|
-
if (lexer->lookahead != 'O') return false;
|
|
73
|
-
advance(lexer);
|
|
74
|
-
lexer->result_symbol = COMPILED_HEADER;
|
|
75
|
-
int newline_count = 0;
|
|
76
|
-
while(newline_count < 2 &&!lexer->eof(lexer)) {
|
|
77
|
-
if (lexer->lookahead == '\n')
|
|
78
|
-
{newline_count++;}
|
|
79
|
-
advance(lexer);
|
|
80
|
-
}
|
|
81
|
-
lexer->mark_end(lexer);
|
|
82
|
-
return true;
|
|
83
|
-
}
|
|
84
74
|
}
|
|
85
75
|
|
|
86
|
-
if (valid_symbols[
|
|
76
|
+
if (valid_symbols[COMPILED_HEADER] && lex_compiled_header(lexer)) {
|
|
87
77
|
return true;
|
|
88
78
|
}
|
|
89
79
|
|
|
90
|
-
|
|
91
|
-
valid_symbols);
|
|
92
|
-
return matched;
|
|
80
|
+
return false;
|
|
93
81
|
}
|
|
94
82
|
|
|
95
83
|
void *tree_sitter_objectscript_routine_external_scanner_create() {
|
|
@@ -100,6 +88,7 @@ void *tree_sitter_objectscript_routine_external_scanner_create() {
|
|
|
100
88
|
// scanner->saw_routine_header = false;
|
|
101
89
|
ObjectScript_Core_Scanner_init(&scanner->core_scanner);
|
|
102
90
|
scanner->core_scanner.column1_statement_mode = false;
|
|
91
|
+
scanner->core_scanner.routine_token_mode = true;
|
|
103
92
|
return scanner;
|
|
104
93
|
}
|
|
105
94
|
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/tree-sitter.json
CHANGED
|
@@ -12,6 +12,19 @@
|
|
|
12
12
|
] @punctuation.bracket.json)
|
|
13
13
|
]
|
|
14
14
|
|
|
15
|
+
[
|
|
16
|
+
(class_body
|
|
17
|
+
[
|
|
18
|
+
"{"
|
|
19
|
+
"}"
|
|
20
|
+
] @punctuation.special)
|
|
21
|
+
(method_definition
|
|
22
|
+
[
|
|
23
|
+
"{"
|
|
24
|
+
"}"
|
|
25
|
+
] @punctuation.special)
|
|
26
|
+
]
|
|
27
|
+
|
|
15
28
|
; end @punctuation.bracket.json
|
|
16
29
|
; start @label (maroon fg, yellow bg)
|
|
17
30
|
(tag) @label
|