Commit
+1356 -41 +/-6 browse
1 | diff --git a/grammar.js b/grammar.js |
2 | index f37fde0..d9f22a9 100644 |
3 | --- a/grammar.js |
4 | +++ b/grammar.js |
5 | @@ -1,13 +1,54 @@ |
6 | const NEWLINE = /\r?\n/; |
7 | + const WHITE_SPACE = /[\t\f\v ]+/; |
8 | + const ANYTHING = /[^\r\n]+/; |
9 | + |
10 | + const COMMAND_PRELUDE = prec(30, token.immediate("diff")); |
11 | + const INDEX_PRELUDE = prec(25, token.immediate("index")); |
12 | + const FILE_PRELUDE = prec( |
13 | + 20, |
14 | + token.immediate(field("kind", choice("---", "+++"))) |
15 | + ); |
16 | + const LOCATION_PRELUDE = prec(15, token.immediate("@@")); |
17 | + const ADDITION_PRELUDE = prec(10, token.immediate("+")); |
18 | + const DELETION_PRELUDE = prec(5, token.immediate("-")); |
19 | |
20 | module.exports = grammar({ |
21 | name: "gitdiff", |
22 | |
23 | - extras: ($) => [], |
24 | + extras: ($) => [WHITE_SPACE], |
25 | |
26 | rules: { |
27 | - source: ($) => repeat($._line), |
28 | + source: ($) => repeat(seq($._line, NEWLINE)), |
29 | + |
30 | + _line: ($) => |
31 | + choice( |
32 | + $.command, |
33 | + $.index, |
34 | + $.file, |
35 | + $.location, |
36 | + $.addition, |
37 | + $.deletion, |
38 | + $.context |
39 | + ), |
40 | + |
41 | + command: ($) => seq(COMMAND_PRELUDE, "--git", $.filename), |
42 | + |
43 | + index: ($) => seq(INDEX_PRELUDE, $.commit, "..", $.commit, $.mode), |
44 | + |
45 | + file: ($) => seq(FILE_PRELUDE, $.filename), |
46 | + |
47 | + location: ($) => |
48 | + seq(LOCATION_PRELUDE, $.linerange, $.linerange, "@@", ANYTHING), |
49 | + |
50 | + addition: ($) => seq(ADDITION_PRELUDE, optional(ANYTHING)), |
51 | + |
52 | + deletion: ($) => seq(DELETION_PRELUDE, optional(ANYTHING)), |
53 | + |
54 | + context: ($) => token(prec(-1, ANYTHING)), |
55 | |
56 | - _line: ($) => choice(), |
57 | + linerange: ($) => /[-\+]\d+,\d+/, |
58 | + filename: ($) => ANYTHING, |
59 | + commit: ($) => /[a-f0-9]{7,40}/, |
60 | + mode: ($) => /\d+/, |
61 | }, |
62 | }); |
63 | diff --git a/src/grammar.json b/src/grammar.json |
64 | index 4559391..b9061f6 100644 |
65 | --- a/src/grammar.json |
66 | +++ b/src/grammar.json |
67 | @@ -2,11 +2,265 @@ |
68 | "name": "gitdiff", |
69 | "rules": { |
70 | "source": { |
71 | - "type": "STRING", |
72 | - "value": "hello" |
73 | + "type": "REPEAT", |
74 | + "content": { |
75 | + "type": "SEQ", |
76 | + "members": [ |
77 | + { |
78 | + "type": "SYMBOL", |
79 | + "name": "_line" |
80 | + }, |
81 | + { |
82 | + "type": "PATTERN", |
83 | + "value": "\\r?\\n" |
84 | + } |
85 | + ] |
86 | + } |
87 | + }, |
88 | + "_line": { |
89 | + "type": "CHOICE", |
90 | + "members": [ |
91 | + { |
92 | + "type": "SYMBOL", |
93 | + "name": "command" |
94 | + }, |
95 | + { |
96 | + "type": "SYMBOL", |
97 | + "name": "index" |
98 | + }, |
99 | + { |
100 | + "type": "SYMBOL", |
101 | + "name": "file" |
102 | + }, |
103 | + { |
104 | + "type": "SYMBOL", |
105 | + "name": "location" |
106 | + }, |
107 | + { |
108 | + "type": "SYMBOL", |
109 | + "name": "addition" |
110 | + }, |
111 | + { |
112 | + "type": "SYMBOL", |
113 | + "name": "deletion" |
114 | + }, |
115 | + { |
116 | + "type": "SYMBOL", |
117 | + "name": "context" |
118 | + } |
119 | + ] |
120 | + }, |
121 | + "command": { |
122 | + "type": "SEQ", |
123 | + "members": [ |
124 | + { |
125 | + "type": "PREC", |
126 | + "value": 30, |
127 | + "content": { |
128 | + "type": "IMMEDIATE_TOKEN", |
129 | + "content": { |
130 | + "type": "STRING", |
131 | + "value": "diff" |
132 | + } |
133 | + } |
134 | + }, |
135 | + { |
136 | + "type": "STRING", |
137 | + "value": "--git" |
138 | + }, |
139 | + { |
140 | + "type": "SYMBOL", |
141 | + "name": "filename" |
142 | + } |
143 | + ] |
144 | + }, |
145 | + "index": { |
146 | + "type": "SEQ", |
147 | + "members": [ |
148 | + { |
149 | + "type": "PREC", |
150 | + "value": 25, |
151 | + "content": { |
152 | + "type": "IMMEDIATE_TOKEN", |
153 | + "content": { |
154 | + "type": "STRING", |
155 | + "value": "index" |
156 | + } |
157 | + } |
158 | + }, |
159 | + { |
160 | + "type": "SYMBOL", |
161 | + "name": "commit" |
162 | + }, |
163 | + { |
164 | + "type": "STRING", |
165 | + "value": ".." |
166 | + }, |
167 | + { |
168 | + "type": "SYMBOL", |
169 | + "name": "commit" |
170 | + }, |
171 | + { |
172 | + "type": "SYMBOL", |
173 | + "name": "mode" |
174 | + } |
175 | + ] |
176 | + }, |
177 | + "file": { |
178 | + "type": "SEQ", |
179 | + "members": [ |
180 | + { |
181 | + "type": "PREC", |
182 | + "value": 20, |
183 | + "content": { |
184 | + "type": "IMMEDIATE_TOKEN", |
185 | + "content": { |
186 | + "type": "FIELD", |
187 | + "name": "kind", |
188 | + "content": { |
189 | + "type": "CHOICE", |
190 | + "members": [ |
191 | + { |
192 | + "type": "STRING", |
193 | + "value": "---" |
194 | + }, |
195 | + { |
196 | + "type": "STRING", |
197 | + "value": "+++" |
198 | + } |
199 | + ] |
200 | + } |
201 | + } |
202 | + } |
203 | + }, |
204 | + { |
205 | + "type": "SYMBOL", |
206 | + "name": "filename" |
207 | + } |
208 | + ] |
209 | + }, |
210 | + "location": { |
211 | + "type": "SEQ", |
212 | + "members": [ |
213 | + { |
214 | + "type": "PREC", |
215 | + "value": 15, |
216 | + "content": { |
217 | + "type": "IMMEDIATE_TOKEN", |
218 | + "content": { |
219 | + "type": "STRING", |
220 | + "value": "@@" |
221 | + } |
222 | + } |
223 | + }, |
224 | + { |
225 | + "type": "SYMBOL", |
226 | + "name": "linerange" |
227 | + }, |
228 | + { |
229 | + "type": "SYMBOL", |
230 | + "name": "linerange" |
231 | + }, |
232 | + { |
233 | + "type": "STRING", |
234 | + "value": "@@" |
235 | + }, |
236 | + { |
237 | + "type": "PATTERN", |
238 | + "value": "[^\\r\\n]+" |
239 | + } |
240 | + ] |
241 | + }, |
242 | + "addition": { |
243 | + "type": "SEQ", |
244 | + "members": [ |
245 | + { |
246 | + "type": "PREC", |
247 | + "value": 10, |
248 | + "content": { |
249 | + "type": "IMMEDIATE_TOKEN", |
250 | + "content": { |
251 | + "type": "STRING", |
252 | + "value": "+" |
253 | + } |
254 | + } |
255 | + }, |
256 | + { |
257 | + "type": "CHOICE", |
258 | + "members": [ |
259 | + { |
260 | + "type": "PATTERN", |
261 | + "value": "[^\\r\\n]+" |
262 | + }, |
263 | + { |
264 | + "type": "BLANK" |
265 | + } |
266 | + ] |
267 | + } |
268 | + ] |
269 | + }, |
270 | + "deletion": { |
271 | + "type": "SEQ", |
272 | + "members": [ |
273 | + { |
274 | + "type": "PREC", |
275 | + "value": 5, |
276 | + "content": { |
277 | + "type": "IMMEDIATE_TOKEN", |
278 | + "content": { |
279 | + "type": "STRING", |
280 | + "value": "-" |
281 | + } |
282 | + } |
283 | + }, |
284 | + { |
285 | + "type": "CHOICE", |
286 | + "members": [ |
287 | + { |
288 | + "type": "PATTERN", |
289 | + "value": "[^\\r\\n]+" |
290 | + }, |
291 | + { |
292 | + "type": "BLANK" |
293 | + } |
294 | + ] |
295 | + } |
296 | + ] |
297 | + }, |
298 | + "context": { |
299 | + "type": "TOKEN", |
300 | + "content": { |
301 | + "type": "PREC", |
302 | + "value": -1, |
303 | + "content": { |
304 | + "type": "PATTERN", |
305 | + "value": "[^\\r\\n]+" |
306 | + } |
307 | + } |
308 | + }, |
309 | + "linerange": { |
310 | + "type": "PATTERN", |
311 | + "value": "[-\\+]\\d+,\\d+" |
312 | + }, |
313 | + "filename": { |
314 | + "type": "PATTERN", |
315 | + "value": "[^\\r\\n]+" |
316 | + }, |
317 | + "commit": { |
318 | + "type": "PATTERN", |
319 | + "value": "[a-f0-9]{7,40}" |
320 | + }, |
321 | + "mode": { |
322 | + "type": "PATTERN", |
323 | + "value": "\\d+" |
324 | } |
325 | }, |
326 | - "extras": [], |
327 | + "extras": [ |
328 | + { |
329 | + "type": "PATTERN", |
330 | + "value": "[\\t\\f\\v ]+" |
331 | + } |
332 | + ], |
333 | "conflicts": [], |
334 | "precedences": [], |
335 | "externals": [], |
336 | diff --git a/src/node-types.json b/src/node-types.json |
337 | index c3b80ca..51fc099 100644 |
338 | --- a/src/node-types.json |
339 | +++ b/src/node-types.json |
340 | @@ -1,11 +1,164 @@ |
341 | [ |
342 | { |
343 | - "type": "source", |
344 | + "type": "addition", |
345 | + "named": true, |
346 | + "fields": {} |
347 | + }, |
348 | + { |
349 | + "type": "command", |
350 | + "named": true, |
351 | + "fields": {}, |
352 | + "children": { |
353 | + "multiple": false, |
354 | + "required": true, |
355 | + "types": [ |
356 | + { |
357 | + "type": "filename", |
358 | + "named": true |
359 | + } |
360 | + ] |
361 | + } |
362 | + }, |
363 | + { |
364 | + "type": "deletion", |
365 | + "named": true, |
366 | + "fields": {} |
367 | + }, |
368 | + { |
369 | + "type": "file", |
370 | + "named": true, |
371 | + "fields": {}, |
372 | + "children": { |
373 | + "multiple": false, |
374 | + "required": true, |
375 | + "types": [ |
376 | + { |
377 | + "type": "filename", |
378 | + "named": true |
379 | + } |
380 | + ] |
381 | + } |
382 | + }, |
383 | + { |
384 | + "type": "filename", |
385 | "named": true, |
386 | "fields": {} |
387 | }, |
388 | { |
389 | - "type": "hello", |
390 | + "type": "index", |
391 | + "named": true, |
392 | + "fields": {}, |
393 | + "children": { |
394 | + "multiple": true, |
395 | + "required": true, |
396 | + "types": [ |
397 | + { |
398 | + "type": "commit", |
399 | + "named": true |
400 | + }, |
401 | + { |
402 | + "type": "mode", |
403 | + "named": true |
404 | + } |
405 | + ] |
406 | + } |
407 | + }, |
408 | + { |
409 | + "type": "location", |
410 | + "named": true, |
411 | + "fields": {}, |
412 | + "children": { |
413 | + "multiple": true, |
414 | + "required": true, |
415 | + "types": [ |
416 | + { |
417 | + "type": "linerange", |
418 | + "named": true |
419 | + } |
420 | + ] |
421 | + } |
422 | + }, |
423 | + { |
424 | + "type": "source", |
425 | + "named": true, |
426 | + "fields": {}, |
427 | + "children": { |
428 | + "multiple": true, |
429 | + "required": false, |
430 | + "types": [ |
431 | + { |
432 | + "type": "addition", |
433 | + "named": true |
434 | + }, |
435 | + { |
436 | + "type": "command", |
437 | + "named": true |
438 | + }, |
439 | + { |
440 | + "type": "context", |
441 | + "named": true |
442 | + }, |
443 | + { |
444 | + "type": "deletion", |
445 | + "named": true |
446 | + }, |
447 | + { |
448 | + "type": "file", |
449 | + "named": true |
450 | + }, |
451 | + { |
452 | + "type": "index", |
453 | + "named": true |
454 | + }, |
455 | + { |
456 | + "type": "location", |
457 | + "named": true |
458 | + } |
459 | + ] |
460 | + } |
461 | + }, |
462 | + { |
463 | + "type": "+", |
464 | "named": false |
465 | + }, |
466 | + { |
467 | + "type": "-", |
468 | + "named": false |
469 | + }, |
470 | + { |
471 | + "type": "--git", |
472 | + "named": false |
473 | + }, |
474 | + { |
475 | + "type": "..", |
476 | + "named": false |
477 | + }, |
478 | + { |
479 | + "type": "@@", |
480 | + "named": false |
481 | + }, |
482 | + { |
483 | + "type": "commit", |
484 | + "named": true |
485 | + }, |
486 | + { |
487 | + "type": "context", |
488 | + "named": true |
489 | + }, |
490 | + { |
491 | + "type": "diff", |
492 | + "named": false |
493 | + }, |
494 | + { |
495 | + "type": "index", |
496 | + "named": false |
497 | + }, |
498 | + { |
499 | + "type": "linerange", |
500 | + "named": true |
501 | + }, |
502 | + { |
503 | + "type": "mode", |
504 | + "named": true |
505 | } |
506 | ] |
507 | \ No newline at end of file |
508 | diff --git a/src/parser.c b/src/parser.c |
509 | index 4dee83b..f5f5299 100644 |
510 | --- a/src/parser.c |
511 | +++ b/src/parser.c |
512 | @@ -6,31 +6,100 @@ |
513 | #endif |
514 | |
515 | #define LANGUAGE_VERSION 13 |
516 | - #define STATE_COUNT 4 |
517 | - #define LARGE_STATE_COUNT 2 |
518 | - #define SYMBOL_COUNT 3 |
519 | + #define STATE_COUNT 27 |
520 | + #define LARGE_STATE_COUNT 4 |
521 | + #define SYMBOL_COUNT 26 |
522 | #define ALIAS_COUNT 0 |
523 | - #define TOKEN_COUNT 2 |
524 | + #define TOKEN_COUNT 16 |
525 | #define EXTERNAL_TOKEN_COUNT 0 |
526 | #define FIELD_COUNT 0 |
527 | - #define MAX_ALIAS_SEQUENCE_LENGTH 1 |
528 | + #define MAX_ALIAS_SEQUENCE_LENGTH 5 |
529 | #define PRODUCTION_ID_COUNT 1 |
530 | |
531 | enum { |
532 | - anon_sym_hello = 1, |
533 | - sym_source = 2, |
534 | + aux_sym_source_token1 = 1, |
535 | + anon_sym_diff = 2, |
536 | + anon_sym_DASH_DASHgit = 3, |
537 | + anon_sym_index = 4, |
538 | + anon_sym_DOT_DOT = 5, |
539 | + aux_sym_file_token1 = 6, |
540 | + anon_sym_AT_AT = 7, |
541 | + anon_sym_AT_AT2 = 8, |
542 | + aux_sym_location_token1 = 9, |
543 | + anon_sym_PLUS = 10, |
544 | + anon_sym_DASH = 11, |
545 | + sym_context = 12, |
546 | + sym_linerange = 13, |
547 | + sym_commit = 14, |
548 | + sym_mode = 15, |
549 | + sym_source = 16, |
550 | + sym__line = 17, |
551 | + sym_command = 18, |
552 | + sym_index = 19, |
553 | + sym_file = 20, |
554 | + sym_location = 21, |
555 | + sym_addition = 22, |
556 | + sym_deletion = 23, |
557 | + sym_filename = 24, |
558 | + aux_sym_source_repeat1 = 25, |
559 | }; |
560 | |
561 | static const char * const ts_symbol_names[] = { |
562 | [ts_builtin_sym_end] = "end", |
563 | - [anon_sym_hello] = "hello", |
564 | + [aux_sym_source_token1] = "source_token1", |
565 | + [anon_sym_diff] = "diff", |
566 | + [anon_sym_DASH_DASHgit] = "--git", |
567 | + [anon_sym_index] = "index", |
568 | + [anon_sym_DOT_DOT] = "..", |
569 | + [aux_sym_file_token1] = "file_token1", |
570 | + [anon_sym_AT_AT] = "@@", |
571 | + [anon_sym_AT_AT2] = "@@", |
572 | + [aux_sym_location_token1] = "location_token1", |
573 | + [anon_sym_PLUS] = "+", |
574 | + [anon_sym_DASH] = "-", |
575 | + [sym_context] = "context", |
576 | + [sym_linerange] = "linerange", |
577 | + [sym_commit] = "commit", |
578 | + [sym_mode] = "mode", |
579 | [sym_source] = "source", |
580 | + [sym__line] = "_line", |
581 | + [sym_command] = "command", |
582 | + [sym_index] = "index", |
583 | + [sym_file] = "file", |
584 | + [sym_location] = "location", |
585 | + [sym_addition] = "addition", |
586 | + [sym_deletion] = "deletion", |
587 | + [sym_filename] = "filename", |
588 | + [aux_sym_source_repeat1] = "source_repeat1", |
589 | }; |
590 | |
591 | static const TSSymbol ts_symbol_map[] = { |
592 | [ts_builtin_sym_end] = ts_builtin_sym_end, |
593 | - [anon_sym_hello] = anon_sym_hello, |
594 | + [aux_sym_source_token1] = aux_sym_source_token1, |
595 | + [anon_sym_diff] = anon_sym_diff, |
596 | + [anon_sym_DASH_DASHgit] = anon_sym_DASH_DASHgit, |
597 | + [anon_sym_index] = anon_sym_index, |
598 | + [anon_sym_DOT_DOT] = anon_sym_DOT_DOT, |
599 | + [aux_sym_file_token1] = aux_sym_file_token1, |
600 | + [anon_sym_AT_AT] = anon_sym_AT_AT, |
601 | + [anon_sym_AT_AT2] = anon_sym_AT_AT, |
602 | + [aux_sym_location_token1] = aux_sym_location_token1, |
603 | + [anon_sym_PLUS] = anon_sym_PLUS, |
604 | + [anon_sym_DASH] = anon_sym_DASH, |
605 | + [sym_context] = sym_context, |
606 | + [sym_linerange] = sym_linerange, |
607 | + [sym_commit] = sym_commit, |
608 | + [sym_mode] = sym_mode, |
609 | [sym_source] = sym_source, |
610 | + [sym__line] = sym__line, |
611 | + [sym_command] = sym_command, |
612 | + [sym_index] = sym_index, |
613 | + [sym_file] = sym_file, |
614 | + [sym_location] = sym_location, |
615 | + [sym_addition] = sym_addition, |
616 | + [sym_deletion] = sym_deletion, |
617 | + [sym_filename] = sym_filename, |
618 | + [aux_sym_source_repeat1] = aux_sym_source_repeat1, |
619 | }; |
620 | |
621 | static const TSSymbolMetadata ts_symbol_metadata[] = { |
622 | @@ -38,14 +107,106 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { |
623 | .visible = false, |
624 | .named = true, |
625 | }, |
626 | - [anon_sym_hello] = { |
627 | + [aux_sym_source_token1] = { |
628 | + .visible = false, |
629 | + .named = false, |
630 | + }, |
631 | + [anon_sym_diff] = { |
632 | + .visible = true, |
633 | + .named = false, |
634 | + }, |
635 | + [anon_sym_DASH_DASHgit] = { |
636 | + .visible = true, |
637 | + .named = false, |
638 | + }, |
639 | + [anon_sym_index] = { |
640 | + .visible = true, |
641 | + .named = false, |
642 | + }, |
643 | + [anon_sym_DOT_DOT] = { |
644 | + .visible = true, |
645 | + .named = false, |
646 | + }, |
647 | + [aux_sym_file_token1] = { |
648 | + .visible = false, |
649 | + .named = false, |
650 | + }, |
651 | + [anon_sym_AT_AT] = { |
652 | + .visible = true, |
653 | + .named = false, |
654 | + }, |
655 | + [anon_sym_AT_AT2] = { |
656 | + .visible = true, |
657 | + .named = false, |
658 | + }, |
659 | + [aux_sym_location_token1] = { |
660 | + .visible = false, |
661 | + .named = false, |
662 | + }, |
663 | + [anon_sym_PLUS] = { |
664 | + .visible = true, |
665 | + .named = false, |
666 | + }, |
667 | + [anon_sym_DASH] = { |
668 | .visible = true, |
669 | .named = false, |
670 | }, |
671 | + [sym_context] = { |
672 | + .visible = true, |
673 | + .named = true, |
674 | + }, |
675 | + [sym_linerange] = { |
676 | + .visible = true, |
677 | + .named = true, |
678 | + }, |
679 | + [sym_commit] = { |
680 | + .visible = true, |
681 | + .named = true, |
682 | + }, |
683 | + [sym_mode] = { |
684 | + .visible = true, |
685 | + .named = true, |
686 | + }, |
687 | [sym_source] = { |
688 | .visible = true, |
689 | .named = true, |
690 | }, |
691 | + [sym__line] = { |
692 | + .visible = false, |
693 | + .named = true, |
694 | + }, |
695 | + [sym_command] = { |
696 | + .visible = true, |
697 | + .named = true, |
698 | + }, |
699 | + [sym_index] = { |
700 | + .visible = true, |
701 | + .named = true, |
702 | + }, |
703 | + [sym_file] = { |
704 | + .visible = true, |
705 | + .named = true, |
706 | + }, |
707 | + [sym_location] = { |
708 | + .visible = true, |
709 | + .named = true, |
710 | + }, |
711 | + [sym_addition] = { |
712 | + .visible = true, |
713 | + .named = true, |
714 | + }, |
715 | + [sym_deletion] = { |
716 | + .visible = true, |
717 | + .named = true, |
718 | + }, |
719 | + [sym_filename] = { |
720 | + .visible = true, |
721 | + .named = true, |
722 | + }, |
723 | + [aux_sym_source_repeat1] = { |
724 | + .visible = false, |
725 | + .named = false, |
726 | + }, |
727 | }; |
728 | |
729 | static const TSSymbol ts_alias_sequences[PRODUCTION_ID_COUNT][MAX_ALIAS_SEQUENCE_LENGTH] = { |
730 | @@ -61,26 +222,468 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { |
731 | eof = lexer->eof(lexer); |
732 | switch (state) { |
733 | case 0: |
734 | - if (eof) ADVANCE(5); |
735 | - if (lookahead == 'h') ADVANCE(1); |
736 | + if (eof) ADVANCE(31); |
737 | + if (lookahead == '\n') ADVANCE(32); |
738 | + if (lookahead == '\r') ADVANCE(1); |
739 | + if (lookahead == '+') ADVANCE(42); |
740 | + if (lookahead == '-') ADVANCE(44); |
741 | + if (lookahead == '.') ADVANCE(8); |
742 | + if (lookahead == '@') ADVANCE(9); |
743 | + if (lookahead == 'd') ADVANCE(16); |
744 | + if (lookahead == 'i') ADVANCE(18); |
745 | + if (('\t' <= lookahead && lookahead <= '\f') || |
746 | + lookahead == ' ') SKIP(29) |
747 | + if (('0' <= lookahead && lookahead <= '9') || |
748 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(28); |
749 | END_STATE(); |
750 | case 1: |
751 | - if (lookahead == 'e') ADVANCE(3); |
752 | + if (lookahead == '\n') ADVANCE(32); |
753 | END_STATE(); |
754 | case 2: |
755 | - if (lookahead == 'l') ADVANCE(4); |
756 | + if (lookahead == '\n') ADVANCE(32); |
757 | + if (lookahead == '\r') ADVANCE(1); |
758 | + if (('\t' <= lookahead && lookahead <= '\f') || |
759 | + lookahead == ' ') ADVANCE(40); |
760 | + if (lookahead != 0) ADVANCE(41); |
761 | END_STATE(); |
762 | case 3: |
763 | - if (lookahead == 'l') ADVANCE(2); |
764 | + if (lookahead == '+') ADVANCE(37); |
765 | END_STATE(); |
766 | case 4: |
767 | - if (lookahead == 'o') ADVANCE(6); |
768 | + if (lookahead == '+') ADVANCE(21); |
769 | + if (lookahead == '-') ADVANCE(7); |
770 | + if (lookahead == '@') ADVANCE(10); |
771 | + if (lookahead == '\t' || |
772 | + lookahead == 11 || |
773 | + lookahead == '\f' || |
774 | + lookahead == ' ') SKIP(4) |
775 | + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(93); |
776 | END_STATE(); |
777 | case 5: |
778 | - ACCEPT_TOKEN(ts_builtin_sym_end); |
779 | + if (lookahead == ',') ADVANCE(22); |
780 | + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(5); |
781 | END_STATE(); |
782 | case 6: |
783 | - ACCEPT_TOKEN(anon_sym_hello); |
784 | + if (lookahead == '-') ADVANCE(37); |
785 | + END_STATE(); |
786 | + case 7: |
787 | + if (lookahead == '-') ADVANCE(15); |
788 | + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(5); |
789 | + END_STATE(); |
790 | + case 8: |
791 | + if (lookahead == '.') ADVANCE(36); |
792 | + END_STATE(); |
793 | + case 9: |
794 | + if (lookahead == '@') ADVANCE(38); |
795 | + END_STATE(); |
796 | + case 10: |
797 | + if (lookahead == '@') ADVANCE(39); |
798 | + END_STATE(); |
799 | + case 11: |
800 | + if (lookahead == 'd') ADVANCE(12); |
801 | + END_STATE(); |
802 | + case 12: |
803 | + if (lookahead == 'e') ADVANCE(20); |
804 | + END_STATE(); |
805 | + case 13: |
806 | + if (lookahead == 'f') ADVANCE(33); |
807 | + END_STATE(); |
808 | + case 14: |
809 | + if (lookahead == 'f') ADVANCE(13); |
810 | + END_STATE(); |
811 | + case 15: |
812 | + if (lookahead == 'g') ADVANCE(17); |
813 | + END_STATE(); |
814 | + case 16: |
815 | + if (lookahead == 'i') ADVANCE(14); |
816 | + if (('0' <= lookahead && lookahead <= '9') || |
817 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(27); |
818 | + END_STATE(); |
819 | + case 17: |
820 | + if (lookahead == 'i') ADVANCE(19); |
821 | + END_STATE(); |
822 | + case 18: |
823 | + if (lookahead == 'n') ADVANCE(11); |
824 | + END_STATE(); |
825 | + case 19: |
826 | + if (lookahead == 't') ADVANCE(34); |
827 | + END_STATE(); |
828 | + case 20: |
829 | + if (lookahead == 'x') ADVANCE(35); |
830 | + END_STATE(); |
831 | + case 21: |
832 | + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(5); |
833 | + END_STATE(); |
834 | + case 22: |
835 | + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(58); |
836 | + END_STATE(); |
837 | + case 23: |
838 | + if (('0' <= lookahead && lookahead <= '9') || |
839 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(92); |
840 | + END_STATE(); |
841 | + case 24: |
842 | + if (('0' <= lookahead && lookahead <= '9') || |
843 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(23); |
844 | + END_STATE(); |
845 | + case 25: |
846 | + if (('0' <= lookahead && lookahead <= '9') || |
847 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(24); |
848 | + END_STATE(); |
849 | + case 26: |
850 | + if (('0' <= lookahead && lookahead <= '9') || |
851 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(25); |
852 | + END_STATE(); |
853 | + case 27: |
854 | + if (('0' <= lookahead && lookahead <= '9') || |
855 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(26); |
856 | + END_STATE(); |
857 | + case 28: |
858 | + if (('0' <= lookahead && lookahead <= '9') || |
859 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(27); |
860 | + END_STATE(); |
861 | + case 29: |
862 | + if (eof) ADVANCE(31); |
863 | + if (lookahead == '\n') ADVANCE(32); |
864 | + if (lookahead == '\r') ADVANCE(1); |
865 | + if (lookahead == '.') ADVANCE(8); |
866 | + if (lookahead == '@') ADVANCE(10); |
867 | + if (('\t' <= lookahead && lookahead <= '\f') || |
868 | + lookahead == ' ') SKIP(29) |
869 | + if (('0' <= lookahead && lookahead <= '9') || |
870 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(28); |
871 | + END_STATE(); |
872 | + case 30: |
873 | + if (eof) ADVANCE(31); |
874 | + if (lookahead == '+') ADVANCE(43); |
875 | + if (lookahead == '-') ADVANCE(45); |
876 | + if (lookahead == '@') ADVANCE(48); |
877 | + if (lookahead == 'd') ADVANCE(53); |
878 | + if (lookahead == 'i') ADVANCE(54); |
879 | + if (lookahead == '\t' || |
880 | + lookahead == 11 || |
881 | + lookahead == '\f' || |
882 | + lookahead == ' ') ADVANCE(56); |
883 | + if (lookahead != 0 && |
884 | + (lookahead < '\n' || '\r' < lookahead)) ADVANCE(57); |
885 | + END_STATE(); |
886 | + case 31: |
887 | + ACCEPT_TOKEN(ts_builtin_sym_end); |
888 | + END_STATE(); |
889 | + case 32: |
890 | + ACCEPT_TOKEN(aux_sym_source_token1); |
891 | + END_STATE(); |
892 | + case 33: |
893 | + ACCEPT_TOKEN(anon_sym_diff); |
894 | + END_STATE(); |
895 | + case 34: |
896 | + ACCEPT_TOKEN(anon_sym_DASH_DASHgit); |
897 | + END_STATE(); |
898 | + case 35: |
899 | + ACCEPT_TOKEN(anon_sym_index); |
900 | + END_STATE(); |
901 | + case 36: |
902 | + ACCEPT_TOKEN(anon_sym_DOT_DOT); |
903 | + END_STATE(); |
904 | + case 37: |
905 | + ACCEPT_TOKEN(aux_sym_file_token1); |
906 | + END_STATE(); |
907 | + case 38: |
908 | + ACCEPT_TOKEN(anon_sym_AT_AT); |
909 | + END_STATE(); |
910 | + case 39: |
911 | + ACCEPT_TOKEN(anon_sym_AT_AT2); |
912 | + END_STATE(); |
913 | + case 40: |
914 | + ACCEPT_TOKEN(aux_sym_location_token1); |
915 | + if (lookahead == '\t' || |
916 | + lookahead == 11 || |
917 | + lookahead == '\f' || |
918 | + lookahead == ' ') ADVANCE(40); |
919 | + if (lookahead != 0 && |
920 | + (lookahead < '\n' || '\r' < lookahead)) ADVANCE(41); |
921 | + END_STATE(); |
922 | + case 41: |
923 | + ACCEPT_TOKEN(aux_sym_location_token1); |
924 | + if (lookahead != 0 && |
925 | + lookahead != '\n' && |
926 | + lookahead != '\r') ADVANCE(41); |
927 | + END_STATE(); |
928 | + case 42: |
929 | + ACCEPT_TOKEN(anon_sym_PLUS); |
930 | + if (lookahead == '+') ADVANCE(3); |
931 | + END_STATE(); |
932 | + case 43: |
933 | + ACCEPT_TOKEN(anon_sym_PLUS); |
934 | + if (lookahead == '+') ADVANCE(46); |
935 | + END_STATE(); |
936 | + case 44: |
937 | + ACCEPT_TOKEN(anon_sym_DASH); |
938 | + if (lookahead == '-') ADVANCE(6); |
939 | + END_STATE(); |
940 | + case 45: |
941 | + ACCEPT_TOKEN(anon_sym_DASH); |
942 | + if (lookahead == '-') ADVANCE(47); |
943 | + END_STATE(); |
944 | + case 46: |
945 | + ACCEPT_TOKEN(sym_context); |
946 | + if (lookahead == '+') ADVANCE(37); |
947 | + if (lookahead != 0 && |
948 | + lookahead != '\n' && |
949 | + lookahead != '\r') ADVANCE(57); |
950 | + END_STATE(); |
951 | + case 47: |
952 | + ACCEPT_TOKEN(sym_context); |
953 | + if (lookahead == '-') ADVANCE(37); |
954 | + if (lookahead != 0 && |
955 | + lookahead != '\n' && |
956 | + lookahead != '\r') ADVANCE(57); |
957 | + END_STATE(); |
958 | + case 48: |
959 | + ACCEPT_TOKEN(sym_context); |
960 | + if (lookahead == '@') ADVANCE(38); |
961 | + if (lookahead != 0 && |
962 | + lookahead != '\n' && |
963 | + lookahead != '\r') ADVANCE(57); |
964 | + END_STATE(); |
965 | + case 49: |
966 | + ACCEPT_TOKEN(sym_context); |
967 | + if (lookahead == 'd') ADVANCE(50); |
968 | + if (lookahead != 0 && |
969 | + lookahead != '\n' && |
970 | + lookahead != '\r') ADVANCE(57); |
971 | + END_STATE(); |
972 | + case 50: |
973 | + ACCEPT_TOKEN(sym_context); |
974 | + if (lookahead == 'e') ADVANCE(55); |
975 | + if (lookahead != 0 && |
976 | + lookahead != '\n' && |
977 | + lookahead != '\r') ADVANCE(57); |
978 | + END_STATE(); |
979 | + case 51: |
980 | + ACCEPT_TOKEN(sym_context); |
981 | + if (lookahead == 'f') ADVANCE(33); |
982 | + if (lookahead != 0 && |
983 | + lookahead != '\n' && |
984 | + lookahead != '\r') ADVANCE(57); |
985 | + END_STATE(); |
986 | + case 52: |
987 | + ACCEPT_TOKEN(sym_context); |
988 | + if (lookahead == 'f') ADVANCE(51); |
989 | + if (lookahead != 0 && |
990 | + lookahead != '\n' && |
991 | + lookahead != '\r') ADVANCE(57); |
992 | + END_STATE(); |
993 | + case 53: |
994 | + ACCEPT_TOKEN(sym_context); |
995 | + if (lookahead == 'i') ADVANCE(52); |
996 | + if (lookahead != 0 && |
997 | + lookahead != '\n' && |
998 | + lookahead != '\r') ADVANCE(57); |
999 | + END_STATE(); |
1000 | + case 54: |
1001 | + ACCEPT_TOKEN(sym_context); |
1002 | + if (lookahead == 'n') ADVANCE(49); |
1003 | + if (lookahead != 0 && |
1004 | + lookahead != '\n' && |
1005 | + lookahead != '\r') ADVANCE(57); |
1006 | + END_STATE(); |
1007 | + case 55: |
1008 | + ACCEPT_TOKEN(sym_context); |
1009 | + if (lookahead == 'x') ADVANCE(35); |
1010 | + if (lookahead != 0 && |
1011 | + lookahead != '\n' && |
1012 | + lookahead != '\r') ADVANCE(57); |
1013 | + END_STATE(); |
1014 | + case 56: |
1015 | + ACCEPT_TOKEN(sym_context); |
1016 | + if (lookahead == '\t' || |
1017 | + lookahead == 11 || |
1018 | + lookahead == '\f' || |
1019 | + lookahead == ' ') ADVANCE(56); |
1020 | + if (lookahead != 0 && |
1021 | + (lookahead < '\n' || '\r' < lookahead)) ADVANCE(57); |
1022 | + END_STATE(); |
1023 | + case 57: |
1024 | + ACCEPT_TOKEN(sym_context); |
1025 | + if (lookahead != 0 && |
1026 | + lookahead != '\n' && |
1027 | + lookahead != '\r') ADVANCE(57); |
1028 | + END_STATE(); |
1029 | + case 58: |
1030 | + ACCEPT_TOKEN(sym_linerange); |
1031 | + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(58); |
1032 | + END_STATE(); |
1033 | + case 59: |
1034 | + ACCEPT_TOKEN(sym_commit); |
1035 | + END_STATE(); |
1036 | + case 60: |
1037 | + ACCEPT_TOKEN(sym_commit); |
1038 | + if (('0' <= lookahead && lookahead <= '9') || |
1039 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(59); |
1040 | + END_STATE(); |
1041 | + case 61: |
1042 | + ACCEPT_TOKEN(sym_commit); |
1043 | + if (('0' <= lookahead && lookahead <= '9') || |
1044 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(60); |
1045 | + END_STATE(); |
1046 | + case 62: |
1047 | + ACCEPT_TOKEN(sym_commit); |
1048 | + if (('0' <= lookahead && lookahead <= '9') || |
1049 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(61); |
1050 | + END_STATE(); |
1051 | + case 63: |
1052 | + ACCEPT_TOKEN(sym_commit); |
1053 | + if (('0' <= lookahead && lookahead <= '9') || |
1054 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(62); |
1055 | + END_STATE(); |
1056 | + case 64: |
1057 | + ACCEPT_TOKEN(sym_commit); |
1058 | + if (('0' <= lookahead && lookahead <= '9') || |
1059 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(63); |
1060 | + END_STATE(); |
1061 | + case 65: |
1062 | + ACCEPT_TOKEN(sym_commit); |
1063 | + if (('0' <= lookahead && lookahead <= '9') || |
1064 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(64); |
1065 | + END_STATE(); |
1066 | + case 66: |
1067 | + ACCEPT_TOKEN(sym_commit); |
1068 | + if (('0' <= lookahead && lookahead <= '9') || |
1069 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(65); |
1070 | + END_STATE(); |
1071 | + case 67: |
1072 | + ACCEPT_TOKEN(sym_commit); |
1073 | + if (('0' <= lookahead && lookahead <= '9') || |
1074 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(66); |
1075 | + END_STATE(); |
1076 | + case 68: |
1077 | + ACCEPT_TOKEN(sym_commit); |
1078 | + if (('0' <= lookahead && lookahead <= '9') || |
1079 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(67); |
1080 | + END_STATE(); |
1081 | + case 69: |
1082 | + ACCEPT_TOKEN(sym_commit); |
1083 | + if (('0' <= lookahead && lookahead <= '9') || |
1084 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(68); |
1085 | + END_STATE(); |
1086 | + case 70: |
1087 | + ACCEPT_TOKEN(sym_commit); |
1088 | + if (('0' <= lookahead && lookahead <= '9') || |
1089 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(69); |
1090 | + END_STATE(); |
1091 | + case 71: |
1092 | + ACCEPT_TOKEN(sym_commit); |
1093 | + if (('0' <= lookahead && lookahead <= '9') || |
1094 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(70); |
1095 | + END_STATE(); |
1096 | + case 72: |
1097 | + ACCEPT_TOKEN(sym_commit); |
1098 | + if (('0' <= lookahead && lookahead <= '9') || |
1099 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(71); |
1100 | + END_STATE(); |
1101 | + case 73: |
1102 | + ACCEPT_TOKEN(sym_commit); |
1103 | + if (('0' <= lookahead && lookahead <= '9') || |
1104 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(72); |
1105 | + END_STATE(); |
1106 | + case 74: |
1107 | + ACCEPT_TOKEN(sym_commit); |
1108 | + if (('0' <= lookahead && lookahead <= '9') || |
1109 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(73); |
1110 | + END_STATE(); |
1111 | + case 75: |
1112 | + ACCEPT_TOKEN(sym_commit); |
1113 | + if (('0' <= lookahead && lookahead <= '9') || |
1114 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(74); |
1115 | + END_STATE(); |
1116 | + case 76: |
1117 | + ACCEPT_TOKEN(sym_commit); |
1118 | + if (('0' <= lookahead && lookahead <= '9') || |
1119 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(75); |
1120 | + END_STATE(); |
1121 | + case 77: |
1122 | + ACCEPT_TOKEN(sym_commit); |
1123 | + if (('0' <= lookahead && lookahead <= '9') || |
1124 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(76); |
1125 | + END_STATE(); |
1126 | + case 78: |
1127 | + ACCEPT_TOKEN(sym_commit); |
1128 | + if (('0' <= lookahead && lookahead <= '9') || |
1129 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(77); |
1130 | + END_STATE(); |
1131 | + case 79: |
1132 | + ACCEPT_TOKEN(sym_commit); |
1133 | + if (('0' <= lookahead && lookahead <= '9') || |
1134 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(78); |
1135 | + END_STATE(); |
1136 | + case 80: |
1137 | + ACCEPT_TOKEN(sym_commit); |
1138 | + if (('0' <= lookahead && lookahead <= '9') || |
1139 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(79); |
1140 | + END_STATE(); |
1141 | + case 81: |
1142 | + ACCEPT_TOKEN(sym_commit); |
1143 | + if (('0' <= lookahead && lookahead <= '9') || |
1144 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(80); |
1145 | + END_STATE(); |
1146 | + case 82: |
1147 | + ACCEPT_TOKEN(sym_commit); |
1148 | + if (('0' <= lookahead && lookahead <= '9') || |
1149 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(81); |
1150 | + END_STATE(); |
1151 | + case 83: |
1152 | + ACCEPT_TOKEN(sym_commit); |
1153 | + if (('0' <= lookahead && lookahead <= '9') || |
1154 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(82); |
1155 | + END_STATE(); |
1156 | + case 84: |
1157 | + ACCEPT_TOKEN(sym_commit); |
1158 | + if (('0' <= lookahead && lookahead <= '9') || |
1159 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(83); |
1160 | + END_STATE(); |
1161 | + case 85: |
1162 | + ACCEPT_TOKEN(sym_commit); |
1163 | + if (('0' <= lookahead && lookahead <= '9') || |
1164 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(84); |
1165 | + END_STATE(); |
1166 | + case 86: |
1167 | + ACCEPT_TOKEN(sym_commit); |
1168 | + if (('0' <= lookahead && lookahead <= '9') || |
1169 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(85); |
1170 | + END_STATE(); |
1171 | + case 87: |
1172 | + ACCEPT_TOKEN(sym_commit); |
1173 | + if (('0' <= lookahead && lookahead <= '9') || |
1174 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(86); |
1175 | + END_STATE(); |
1176 | + case 88: |
1177 | + ACCEPT_TOKEN(sym_commit); |
1178 | + if (('0' <= lookahead && lookahead <= '9') || |
1179 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(87); |
1180 | + END_STATE(); |
1181 | + case 89: |
1182 | + ACCEPT_TOKEN(sym_commit); |
1183 | + if (('0' <= lookahead && lookahead <= '9') || |
1184 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(88); |
1185 | + END_STATE(); |
1186 | + case 90: |
1187 | + ACCEPT_TOKEN(sym_commit); |
1188 | + if (('0' <= lookahead && lookahead <= '9') || |
1189 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(89); |
1190 | + END_STATE(); |
1191 | + case 91: |
1192 | + ACCEPT_TOKEN(sym_commit); |
1193 | + if (('0' <= lookahead && lookahead <= '9') || |
1194 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(90); |
1195 | + END_STATE(); |
1196 | + case 92: |
1197 | + ACCEPT_TOKEN(sym_commit); |
1198 | + if (('0' <= lookahead && lookahead <= '9') || |
1199 | + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(91); |
1200 | + END_STATE(); |
1201 | + case 93: |
1202 | + ACCEPT_TOKEN(sym_mode); |
1203 | + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(93); |
1204 | END_STATE(); |
1205 | default: |
1206 | return false; |
1207 | @@ -89,42 +692,263 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { |
1208 | |
1209 | static const TSLexMode ts_lex_modes[STATE_COUNT] = { |
1210 | [0] = {.lex_state = 0}, |
1211 | - [1] = {.lex_state = 0}, |
1212 | - [2] = {.lex_state = 0}, |
1213 | - [3] = {.lex_state = 0}, |
1214 | + [1] = {.lex_state = 30}, |
1215 | + [2] = {.lex_state = 30}, |
1216 | + [3] = {.lex_state = 30}, |
1217 | + [4] = {.lex_state = 30}, |
1218 | + [5] = {.lex_state = 2}, |
1219 | + [6] = {.lex_state = 2}, |
1220 | + [7] = {.lex_state = 2}, |
1221 | + [8] = {.lex_state = 2}, |
1222 | + [9] = {.lex_state = 0}, |
1223 | + [10] = {.lex_state = 0}, |
1224 | + [11] = {.lex_state = 0}, |
1225 | + [12] = {.lex_state = 0}, |
1226 | + [13] = {.lex_state = 0}, |
1227 | + [14] = {.lex_state = 0}, |
1228 | + [15] = {.lex_state = 4}, |
1229 | + [16] = {.lex_state = 4}, |
1230 | + [17] = {.lex_state = 0}, |
1231 | + [18] = {.lex_state = 4}, |
1232 | + [19] = {.lex_state = 0}, |
1233 | + [20] = {.lex_state = 0}, |
1234 | + [21] = {.lex_state = 0}, |
1235 | + [22] = {.lex_state = 4}, |
1236 | + [23] = {.lex_state = 4}, |
1237 | + [24] = {.lex_state = 2}, |
1238 | + [25] = {.lex_state = 0}, |
1239 | + [26] = {.lex_state = 0}, |
1240 | }; |
1241 | |
1242 | static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { |
1243 | [0] = { |
1244 | [ts_builtin_sym_end] = ACTIONS(1), |
1245 | - [anon_sym_hello] = ACTIONS(1), |
1246 | + [aux_sym_source_token1] = ACTIONS(1), |
1247 | + [anon_sym_diff] = ACTIONS(1), |
1248 | + [anon_sym_index] = ACTIONS(1), |
1249 | + [anon_sym_DOT_DOT] = ACTIONS(1), |
1250 | + [aux_sym_file_token1] = ACTIONS(1), |
1251 | + [anon_sym_AT_AT] = ACTIONS(1), |
1252 | + [anon_sym_AT_AT2] = ACTIONS(1), |
1253 | + [anon_sym_PLUS] = ACTIONS(1), |
1254 | + [anon_sym_DASH] = ACTIONS(1), |
1255 | + [sym_commit] = ACTIONS(1), |
1256 | }, |
1257 | [1] = { |
1258 | - [sym_source] = STATE(3), |
1259 | - [anon_sym_hello] = ACTIONS(3), |
1260 | + [sym_source] = STATE(10), |
1261 | + [sym__line] = STATE(11), |
1262 | + [sym_command] = STATE(11), |
1263 | + [sym_index] = STATE(11), |
1264 | + [sym_file] = STATE(11), |
1265 | + [sym_location] = STATE(11), |
1266 | + [sym_addition] = STATE(11), |
1267 | + [sym_deletion] = STATE(11), |
1268 | + [aux_sym_source_repeat1] = STATE(2), |
1269 | + [ts_builtin_sym_end] = ACTIONS(3), |
1270 | + [anon_sym_diff] = ACTIONS(5), |
1271 | + [anon_sym_index] = ACTIONS(7), |
1272 | + [aux_sym_file_token1] = ACTIONS(9), |
1273 | + [anon_sym_AT_AT] = ACTIONS(11), |
1274 | + [anon_sym_PLUS] = ACTIONS(13), |
1275 | + [anon_sym_DASH] = ACTIONS(15), |
1276 | + [sym_context] = ACTIONS(17), |
1277 | + }, |
1278 | + [2] = { |
1279 | + [sym__line] = STATE(11), |
1280 | + [sym_command] = STATE(11), |
1281 | + [sym_index] = STATE(11), |
1282 | + [sym_file] = STATE(11), |
1283 | + [sym_location] = STATE(11), |
1284 | + [sym_addition] = STATE(11), |
1285 | + [sym_deletion] = STATE(11), |
1286 | + [aux_sym_source_repeat1] = STATE(3), |
1287 | + [ts_builtin_sym_end] = ACTIONS(19), |
1288 | + [anon_sym_diff] = ACTIONS(5), |
1289 | + [anon_sym_index] = ACTIONS(7), |
1290 | + [aux_sym_file_token1] = ACTIONS(9), |
1291 | + [anon_sym_AT_AT] = ACTIONS(11), |
1292 | + [anon_sym_PLUS] = ACTIONS(13), |
1293 | + [anon_sym_DASH] = ACTIONS(15), |
1294 | + [sym_context] = ACTIONS(17), |
1295 | + }, |
1296 | + [3] = { |
1297 | + [sym__line] = STATE(11), |
1298 | + [sym_command] = STATE(11), |
1299 | + [sym_index] = STATE(11), |
1300 | + [sym_file] = STATE(11), |
1301 | + [sym_location] = STATE(11), |
1302 | + [sym_addition] = STATE(11), |
1303 | + [sym_deletion] = STATE(11), |
1304 | + [aux_sym_source_repeat1] = STATE(3), |
1305 | + [ts_builtin_sym_end] = ACTIONS(21), |
1306 | + [anon_sym_diff] = ACTIONS(23), |
1307 | + [anon_sym_index] = ACTIONS(26), |
1308 | + [aux_sym_file_token1] = ACTIONS(29), |
1309 | + [anon_sym_AT_AT] = ACTIONS(32), |
1310 | + [anon_sym_PLUS] = ACTIONS(35), |
1311 | + [anon_sym_DASH] = ACTIONS(38), |
1312 | + [sym_context] = ACTIONS(41), |
1313 | }, |
1314 | }; |
1315 | |
1316 | static const uint16_t ts_small_parse_table[] = { |
1317 | - [0] = 1, |
1318 | - ACTIONS(5), 1, |
1319 | + [0] = 2, |
1320 | + ACTIONS(44), 3, |
1321 | + anon_sym_PLUS, |
1322 | + anon_sym_DASH, |
1323 | + sym_context, |
1324 | + ACTIONS(21), 5, |
1325 | ts_builtin_sym_end, |
1326 | - [4] = 1, |
1327 | - ACTIONS(7), 1, |
1328 | + anon_sym_diff, |
1329 | + anon_sym_index, |
1330 | + aux_sym_file_token1, |
1331 | + anon_sym_AT_AT, |
1332 | + [13] = 2, |
1333 | + ACTIONS(46), 1, |
1334 | + aux_sym_source_token1, |
1335 | + ACTIONS(48), 1, |
1336 | + aux_sym_location_token1, |
1337 | + [20] = 2, |
1338 | + ACTIONS(50), 1, |
1339 | + aux_sym_location_token1, |
1340 | + STATE(20), 1, |
1341 | + sym_filename, |
1342 | + [27] = 2, |
1343 | + ACTIONS(50), 1, |
1344 | + aux_sym_location_token1, |
1345 | + STATE(14), 1, |
1346 | + sym_filename, |
1347 | + [34] = 2, |
1348 | + ACTIONS(52), 1, |
1349 | + aux_sym_source_token1, |
1350 | + ACTIONS(54), 1, |
1351 | + aux_sym_location_token1, |
1352 | + [41] = 1, |
1353 | + ACTIONS(56), 1, |
1354 | + aux_sym_source_token1, |
1355 | + [45] = 1, |
1356 | + ACTIONS(58), 1, |
1357 | ts_builtin_sym_end, |
1358 | + [49] = 1, |
1359 | + ACTIONS(60), 1, |
1360 | + aux_sym_source_token1, |
1361 | + [53] = 1, |
1362 | + ACTIONS(62), 1, |
1363 | + anon_sym_DOT_DOT, |
1364 | + [57] = 1, |
1365 | + ACTIONS(64), 1, |
1366 | + aux_sym_source_token1, |
1367 | + [61] = 1, |
1368 | + ACTIONS(66), 1, |
1369 | + aux_sym_source_token1, |
1370 | + [65] = 1, |
1371 | + ACTIONS(68), 1, |
1372 | + sym_linerange, |
1373 | + [69] = 1, |
1374 | + ACTIONS(70), 1, |
1375 | + sym_linerange, |
1376 | + [73] = 1, |
1377 | + ACTIONS(72), 1, |
1378 | + aux_sym_source_token1, |
1379 | + [77] = 1, |
1380 | + ACTIONS(74), 1, |
1381 | + anon_sym_DASH_DASHgit, |
1382 | + [81] = 1, |
1383 | + ACTIONS(76), 1, |
1384 | + sym_commit, |
1385 | + [85] = 1, |
1386 | + ACTIONS(78), 1, |
1387 | + aux_sym_source_token1, |
1388 | + [89] = 1, |
1389 | + ACTIONS(80), 1, |
1390 | + sym_commit, |
1391 | + [93] = 1, |
1392 | + ACTIONS(82), 1, |
1393 | + anon_sym_AT_AT2, |
1394 | + [97] = 1, |
1395 | + ACTIONS(84), 1, |
1396 | + sym_mode, |
1397 | + [101] = 1, |
1398 | + ACTIONS(86), 1, |
1399 | + aux_sym_location_token1, |
1400 | + [105] = 1, |
1401 | + ACTIONS(88), 1, |
1402 | + aux_sym_source_token1, |
1403 | + [109] = 1, |
1404 | + ACTIONS(90), 1, |
1405 | + aux_sym_source_token1, |
1406 | }; |
1407 | |
1408 | static const uint32_t ts_small_parse_table_map[] = { |
1409 | - [SMALL_STATE(2)] = 0, |
1410 | - [SMALL_STATE(3)] = 4, |
1411 | + [SMALL_STATE(4)] = 0, |
1412 | + [SMALL_STATE(5)] = 13, |
1413 | + [SMALL_STATE(6)] = 20, |
1414 | + [SMALL_STATE(7)] = 27, |
1415 | + [SMALL_STATE(8)] = 34, |
1416 | + [SMALL_STATE(9)] = 41, |
1417 | + [SMALL_STATE(10)] = 45, |
1418 | + [SMALL_STATE(11)] = 49, |
1419 | + [SMALL_STATE(12)] = 53, |
1420 | + [SMALL_STATE(13)] = 57, |
1421 | + [SMALL_STATE(14)] = 61, |
1422 | + [SMALL_STATE(15)] = 65, |
1423 | + [SMALL_STATE(16)] = 69, |
1424 | + [SMALL_STATE(17)] = 73, |
1425 | + [SMALL_STATE(18)] = 77, |
1426 | + [SMALL_STATE(19)] = 81, |
1427 | + [SMALL_STATE(20)] = 85, |
1428 | + [SMALL_STATE(21)] = 89, |
1429 | + [SMALL_STATE(22)] = 93, |
1430 | + [SMALL_STATE(23)] = 97, |
1431 | + [SMALL_STATE(24)] = 101, |
1432 | + [SMALL_STATE(25)] = 105, |
1433 | + [SMALL_STATE(26)] = 109, |
1434 | }; |
1435 | |
1436 | static const TSParseActionEntry ts_parse_actions[] = { |
1437 | [0] = {.entry = {.count = 0, .reusable = false}}, |
1438 | [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(), |
1439 | - [3] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), |
1440 | - [5] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source, 1), |
1441 | - [7] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), |
1442 | + [3] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source, 0), |
1443 | + [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), |
1444 | + [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), |
1445 | + [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), |
1446 | + [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), |
1447 | + [13] = {.entry = {.count = 1, .reusable = false}}, SHIFT(5), |
1448 | + [15] = {.entry = {.count = 1, .reusable = false}}, SHIFT(8), |
1449 | + [17] = {.entry = {.count = 1, .reusable = false}}, SHIFT(11), |
1450 | + [19] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source, 1), |
1451 | + [21] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_repeat1, 2), |
1452 | + [23] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(18), |
1453 | + [26] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(19), |
1454 | + [29] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(7), |
1455 | + [32] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(16), |
1456 | + [35] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(5), |
1457 | + [38] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(8), |
1458 | + [41] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(11), |
1459 | + [44] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_source_repeat1, 2), |
1460 | + [46] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_addition, 1), |
1461 | + [48] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), |
1462 | + [50] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), |
1463 | + [52] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_deletion, 1), |
1464 | + [54] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), |
1465 | + [56] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_addition, 2), |
1466 | + [58] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), |
1467 | + [60] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), |
1468 | + [62] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), |
1469 | + [64] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_filename, 1), |
1470 | + [66] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_file, 2), |
1471 | + [68] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), |
1472 | + [70] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), |
1473 | + [72] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_deletion, 2), |
1474 | + [74] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), |
1475 | + [76] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), |
1476 | + [78] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_command, 3), |
1477 | + [80] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), |
1478 | + [82] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), |
1479 | + [84] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), |
1480 | + [86] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), |
1481 | + [88] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_index, 5), |
1482 | + [90] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_location, 5), |
1483 | }; |
1484 | |
1485 | #ifdef __cplusplus |
1486 | diff --git a/test/corpus/text.txt b/test/corpus/text.txt |
1487 | index e69de29..1f85731 100644 |
1488 | --- a/test/corpus/text.txt |
1489 | +++ b/test/corpus/text.txt |
1490 | @@ -0,0 +1,43 @@ |
1491 | + ================================================================================ |
1492 | + Single-file small change |
1493 | + ================================================================================ |
1494 | + diff --git a/grammar.js b/grammar.js |
1495 | + index dc36969..f37fde0 100644 |
1496 | + --- a/grammar.js |
1497 | + +++ b/grammar.js |
1498 | + @@ -6,6 +6,8 @@ module.exports = grammar({ |
1499 | + extras: ($) => [], |
1500 | + |
1501 | + rules: { |
1502 | + - source: ($) => "hello", |
1503 | + + source: ($) => repeat($._line), |
1504 | + + |
1505 | + + _line: ($) => choice(), |
1506 | + }, |
1507 | + }); |
1508 | + |
1509 | + -------------------------------------------------------------------------------- |
1510 | + |
1511 | + (source |
1512 | + (command |
1513 | + (filename)) |
1514 | + (index |
1515 | + (commit) |
1516 | + (commit) |
1517 | + (mode)) |
1518 | + (file |
1519 | + (filename)) |
1520 | + (file |
1521 | + (filename)) |
1522 | + (location |
1523 | + (linerange) |
1524 | + (linerange)) |
1525 | + (context) |
1526 | + (context) |
1527 | + (context) |
1528 | + (deletion) |
1529 | + (addition) |
1530 | + (addition) |
1531 | + (addition) |
1532 | + (context) |
1533 | + (context)) |
1534 | diff --git a/tree-sitter-gitdiff.wasm b/tree-sitter-gitdiff.wasm |
1535 | new file mode 100755 |
1536 | index 0000000..0e9e828 |
1537 | Binary files /dev/null and b/tree-sitter-gitdiff.wasm differ |