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.
@@ -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[ROUTINE] && lexer->get_column(lexer) == 0 && lex_routine_keyword(lexer)) {
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[RTN_DOT] && lex_rtn_dot(lexer)) {
76
+ if (valid_symbols[COMPILED_HEADER] && lex_compiled_header(lexer)) {
87
77
  return true;
88
78
  }
89
79
 
90
- bool matched = ObjectScript_Core_Scanner_scan(&scanner->core_scanner, lexer,
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tree-sitter-objectscript",
3
- "version": "1.7.4",
3
+ "version": "1.7.5",
4
4
  "description": "Tree Sitter Grammar for InterSystems ObjectScript",
5
5
  "scripts": {
6
6
  "install": "node-gyp-build",
package/tree-sitter.json CHANGED
@@ -97,7 +97,7 @@
97
97
  }
98
98
  ],
99
99
  "metadata": {
100
- "version": "1.7.4",
100
+ "version": "1.7.5",
101
101
  "license": "MIT",
102
102
  "description": "ObjectScript grammars for tree-sitter",
103
103
  "namespace": "io.github.treesitter.objectscript",
@@ -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