gherkin 2.4.18 → 2.4.20

Sign up to get free protection for your applications and to get access to all the features.
Files changed (155) hide show
  1. data/Gemfile.lock +6 -7
  2. data/History.md +9 -0
  3. data/README.md +2 -2
  4. data/ext/gherkin_lexer_ar/extconf.rb +6 -0
  5. data/ext/gherkin_lexer_ar/gherkin_lexer_ar.c +1428 -0
  6. data/ext/gherkin_lexer_bg/extconf.rb +6 -0
  7. data/ext/gherkin_lexer_bg/gherkin_lexer_bg.c +1654 -0
  8. data/ext/gherkin_lexer_ca/extconf.rb +6 -0
  9. data/ext/gherkin_lexer_ca/gherkin_lexer_ca.c +1580 -0
  10. data/ext/gherkin_lexer_cs/extconf.rb +6 -0
  11. data/ext/gherkin_lexer_cs/gherkin_lexer_cs.c +1426 -0
  12. data/ext/gherkin_lexer_cy_gb/extconf.rb +6 -0
  13. data/ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c +1281 -0
  14. data/ext/gherkin_lexer_da/extconf.rb +6 -0
  15. data/ext/gherkin_lexer_da/gherkin_lexer_da.c +1297 -0
  16. data/ext/gherkin_lexer_de/extconf.rb +6 -0
  17. data/ext/gherkin_lexer_de/gherkin_lexer_de.c +1414 -0
  18. data/ext/gherkin_lexer_en/extconf.rb +6 -0
  19. data/ext/gherkin_lexer_en/gherkin_lexer_en.c +1264 -0
  20. data/ext/gherkin_lexer_en_au/extconf.rb +6 -0
  21. data/ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c +1225 -0
  22. data/ext/gherkin_lexer_en_lol/extconf.rb +6 -0
  23. data/ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c +1174 -0
  24. data/ext/gherkin_lexer_en_pirate/extconf.rb +6 -0
  25. data/ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c +1470 -0
  26. data/ext/gherkin_lexer_en_scouse/extconf.rb +6 -0
  27. data/ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c +1631 -0
  28. data/ext/gherkin_lexer_en_tx/extconf.rb +6 -0
  29. data/ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c +1264 -0
  30. data/ext/gherkin_lexer_eo/extconf.rb +6 -0
  31. data/ext/gherkin_lexer_eo/gherkin_lexer_eo.c +1240 -0
  32. data/ext/gherkin_lexer_es/extconf.rb +6 -0
  33. data/ext/gherkin_lexer_es/gherkin_lexer_es.c +1379 -0
  34. data/ext/gherkin_lexer_et/extconf.rb +6 -0
  35. data/ext/gherkin_lexer_et/gherkin_lexer_et.c +1235 -0
  36. data/ext/gherkin_lexer_fi/extconf.rb +6 -0
  37. data/ext/gherkin_lexer_fi/gherkin_lexer_fi.c +1214 -0
  38. data/ext/gherkin_lexer_fr/extconf.rb +6 -0
  39. data/ext/gherkin_lexer_fr/gherkin_lexer_fr.c +1450 -0
  40. data/ext/gherkin_lexer_he/extconf.rb +6 -0
  41. data/ext/gherkin_lexer_he/gherkin_lexer_he.c +1373 -0
  42. data/ext/gherkin_lexer_hr/extconf.rb +6 -0
  43. data/ext/gherkin_lexer_hr/gherkin_lexer_hr.c +1322 -0
  44. data/ext/gherkin_lexer_hu/extconf.rb +6 -0
  45. data/ext/gherkin_lexer_hu/gherkin_lexer_hu.c +1373 -0
  46. data/ext/gherkin_lexer_id/extconf.rb +6 -0
  47. data/ext/gherkin_lexer_id/gherkin_lexer_id.c +1207 -0
  48. data/ext/gherkin_lexer_is/extconf.rb +6 -0
  49. data/ext/gherkin_lexer_is/gherkin_lexer_is.c +1375 -0
  50. data/ext/gherkin_lexer_it/extconf.rb +6 -0
  51. data/ext/gherkin_lexer_it/gherkin_lexer_it.c +1331 -0
  52. data/ext/gherkin_lexer_ja/extconf.rb +6 -0
  53. data/ext/gherkin_lexer_ja/gherkin_lexer_ja.c +1698 -0
  54. data/ext/gherkin_lexer_ko/extconf.rb +6 -0
  55. data/ext/gherkin_lexer_ko/gherkin_lexer_ko.c +1359 -0
  56. data/ext/gherkin_lexer_lt/extconf.rb +6 -0
  57. data/ext/gherkin_lexer_lt/gherkin_lexer_lt.c +1294 -0
  58. data/ext/gherkin_lexer_lu/extconf.rb +6 -0
  59. data/ext/gherkin_lexer_lu/gherkin_lexer_lu.c +1388 -0
  60. data/ext/gherkin_lexer_lv/extconf.rb +6 -0
  61. data/ext/gherkin_lexer_lv/gherkin_lexer_lv.c +1424 -0
  62. data/ext/gherkin_lexer_nl/extconf.rb +6 -0
  63. data/ext/gherkin_lexer_nl/gherkin_lexer_nl.c +1367 -0
  64. data/ext/gherkin_lexer_no/extconf.rb +6 -0
  65. data/ext/gherkin_lexer_no/gherkin_lexer_no.c +1310 -0
  66. data/ext/gherkin_lexer_pl/extconf.rb +6 -0
  67. data/ext/gherkin_lexer_pl/gherkin_lexer_pl.c +1476 -0
  68. data/ext/gherkin_lexer_pt/extconf.rb +6 -0
  69. data/ext/gherkin_lexer_pt/gherkin_lexer_pt.c +1326 -0
  70. data/ext/gherkin_lexer_ro/extconf.rb +6 -0
  71. data/ext/gherkin_lexer_ro/gherkin_lexer_ro.c +1424 -0
  72. data/ext/gherkin_lexer_ru/extconf.rb +6 -0
  73. data/ext/gherkin_lexer_ru/gherkin_lexer_ru.c +2056 -0
  74. data/ext/gherkin_lexer_sk/extconf.rb +6 -0
  75. data/ext/gherkin_lexer_sk/gherkin_lexer_sk.c +1297 -0
  76. data/ext/gherkin_lexer_sr_cyrl/extconf.rb +6 -0
  77. data/ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c +2111 -0
  78. data/ext/gherkin_lexer_sr_latn/extconf.rb +6 -0
  79. data/ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c +1566 -0
  80. data/ext/gherkin_lexer_sv/extconf.rb +6 -0
  81. data/ext/gherkin_lexer_sv/gherkin_lexer_sv.c +1323 -0
  82. data/ext/gherkin_lexer_tr/extconf.rb +6 -0
  83. data/ext/gherkin_lexer_tr/gherkin_lexer_tr.c +1346 -0
  84. data/ext/gherkin_lexer_uk/extconf.rb +6 -0
  85. data/ext/gherkin_lexer_uk/gherkin_lexer_uk.c +1940 -0
  86. data/ext/gherkin_lexer_uz/extconf.rb +6 -0
  87. data/ext/gherkin_lexer_uz/gherkin_lexer_uz.c +1650 -0
  88. data/ext/gherkin_lexer_vi/extconf.rb +6 -0
  89. data/ext/gherkin_lexer_vi/gherkin_lexer_vi.c +1457 -0
  90. data/ext/gherkin_lexer_zh_cn/extconf.rb +6 -0
  91. data/ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c +1222 -0
  92. data/ext/gherkin_lexer_zh_tw/extconf.rb +6 -0
  93. data/ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c +1264 -0
  94. data/gherkin.gemspec +9 -3
  95. data/lib/gherkin/formatter/filter_formatter.rb +6 -1
  96. data/lib/gherkin/rb_lexer/ar.rb +1162 -0
  97. data/lib/gherkin/rb_lexer/bg.rb +1374 -0
  98. data/lib/gherkin/rb_lexer/ca.rb +1304 -0
  99. data/lib/gherkin/rb_lexer/cs.rb +1156 -0
  100. data/lib/gherkin/rb_lexer/cy_gb.rb +1026 -0
  101. data/lib/gherkin/rb_lexer/da.rb +1040 -0
  102. data/lib/gherkin/rb_lexer/de.rb +1150 -0
  103. data/lib/gherkin/rb_lexer/en.rb +1008 -0
  104. data/lib/gherkin/rb_lexer/en_au.rb +972 -0
  105. data/lib/gherkin/rb_lexer/en_lol.rb +927 -0
  106. data/lib/gherkin/rb_lexer/en_pirate.rb +1204 -0
  107. data/lib/gherkin/rb_lexer/en_scouse.rb +1355 -0
  108. data/lib/gherkin/rb_lexer/en_tx.rb +1010 -0
  109. data/lib/gherkin/rb_lexer/eo.rb +989 -0
  110. data/lib/gherkin/rb_lexer/es.rb +1116 -0
  111. data/lib/gherkin/rb_lexer/et.rb +982 -0
  112. data/lib/gherkin/rb_lexer/fi.rb +963 -0
  113. data/lib/gherkin/rb_lexer/fr.rb +1184 -0
  114. data/lib/gherkin/rb_lexer/he.rb +1110 -0
  115. data/lib/gherkin/rb_lexer/hr.rb +1060 -0
  116. data/lib/gherkin/rb_lexer/hu.rb +1111 -0
  117. data/lib/gherkin/rb_lexer/id.rb +957 -0
  118. data/lib/gherkin/rb_lexer/is.rb +1114 -0
  119. data/lib/gherkin/rb_lexer/it.rb +1075 -0
  120. data/lib/gherkin/rb_lexer/ja.rb +1412 -0
  121. data/lib/gherkin/rb_lexer/ko.rb +1096 -0
  122. data/lib/gherkin/rb_lexer/lt.rb +1038 -0
  123. data/lib/gherkin/rb_lexer/lu.rb +1126 -0
  124. data/lib/gherkin/rb_lexer/lv.rb +1158 -0
  125. data/lib/gherkin/rb_lexer/nl.rb +1109 -0
  126. data/lib/gherkin/rb_lexer/no.rb +1052 -0
  127. data/lib/gherkin/rb_lexer/pl.rb +1208 -0
  128. data/lib/gherkin/rb_lexer/pt.rb +1066 -0
  129. data/lib/gherkin/rb_lexer/ro.rb +1155 -0
  130. data/lib/gherkin/rb_lexer/ru.rb +1747 -0
  131. data/lib/gherkin/rb_lexer/sk.rb +1040 -0
  132. data/lib/gherkin/rb_lexer/sr_cyrl.rb +1797 -0
  133. data/lib/gherkin/rb_lexer/sr_latn.rb +1288 -0
  134. data/lib/gherkin/rb_lexer/sv.rb +1064 -0
  135. data/lib/gherkin/rb_lexer/tr.rb +1086 -0
  136. data/lib/gherkin/rb_lexer/uk.rb +1640 -0
  137. data/lib/gherkin/rb_lexer/uz.rb +1370 -0
  138. data/lib/gherkin/rb_lexer/vi.rb +1190 -0
  139. data/lib/gherkin/rb_lexer/zh_cn.rb +968 -0
  140. data/lib/gherkin/rb_lexer/zh_tw.rb +1006 -0
  141. data/spec/gherkin/fixtures/examples_with_only_header.feature +14 -0
  142. data/spec/gherkin/formatter/filter_formatter_spec.rb +21 -0
  143. data/tasks/gems.rake +9 -1
  144. metadata +30 -39
  145. data/.gitignore +0 -13
  146. data/ikvm/.gitignore +0 -3
  147. data/java/.gitignore +0 -5
  148. data/java/src/main/java/gherkin/lexer/i18n/.gitignore +0 -1
  149. data/java/src/main/resources/gherkin/.gitignore +0 -1
  150. data/js/.gitignore +0 -1
  151. data/js/lib/gherkin/lexer/.gitignore +0 -1
  152. data/lib/.gitignore +0 -4
  153. data/lib/gherkin/rb_lexer/.gitignore +0 -1
  154. data/ragel/i18n/.gitignore +0 -1
  155. data/tasks/bench/generated/.gitignore +0 -1
@@ -0,0 +1,6 @@
1
+ require 'mkmf'
2
+ CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
3
+ $CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc/
4
+ dir_config("gherkin_lexer_sr_cyrl")
5
+ have_library("c", "main")
6
+ create_makefile("gherkin_lexer_sr_cyrl")
@@ -0,0 +1,2111 @@
1
+
2
+ #line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
3
+ #include <assert.h>
4
+ #include <ruby.h>
5
+
6
+ #if defined(_WIN32)
7
+ #include <stddef.h>
8
+ #endif
9
+
10
+ #ifdef HAVE_RUBY_RE_H
11
+ #include <ruby/re.h>
12
+ #else
13
+ #include <re.h>
14
+ #endif
15
+
16
+ #ifdef HAVE_RUBY_ENCODING_H
17
+ #include <ruby/encoding.h>
18
+ #define ENCODED_STR_NEW(ptr, len) \
19
+ rb_enc_str_new(ptr, len, rb_utf8_encoding())
20
+ #else
21
+ #define ENCODED_STR_NEW(ptr, len) \
22
+ rb_str_new(ptr, len)
23
+ #endif
24
+
25
+ #ifndef RSTRING_PTR
26
+ #define RSTRING_PTR(s) (RSTRING(s)->ptr)
27
+ #endif
28
+
29
+ #ifndef RSTRING_LEN
30
+ #define RSTRING_LEN(s) (RSTRING(s)->len)
31
+ #endif
32
+
33
+ #define DATA_GET(FROM, TYPE, NAME) \
34
+ Data_Get_Struct(FROM, TYPE, NAME); \
35
+ if (NAME == NULL) { \
36
+ rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
37
+ }
38
+
39
+ typedef struct lexer_state {
40
+ int content_len;
41
+ int line_number;
42
+ int current_line;
43
+ int start_col;
44
+ size_t mark;
45
+ size_t keyword_start;
46
+ size_t keyword_end;
47
+ size_t next_keyword_start;
48
+ size_t content_start;
49
+ size_t content_end;
50
+ size_t docstring_content_type_start;
51
+ size_t docstring_content_type_end;
52
+ size_t query_start;
53
+ size_t last_newline;
54
+ size_t final_newline;
55
+ } lexer_state;
56
+
57
+ static VALUE mGherkin;
58
+ static VALUE mGherkinLexer;
59
+ static VALUE mCLexer;
60
+ static VALUE cI18nLexer;
61
+ static VALUE rb_eGherkinLexingError;
62
+
63
+ #define LEN(AT, P) (P - data - lexer->AT)
64
+ #define MARK(M, P) (lexer->M = (P) - data)
65
+ #define PTR_TO(P) (data + lexer->P)
66
+
67
+ #define STORE_KW_END_CON(EVENT) \
68
+ store_multiline_kw_con(listener, # EVENT, \
69
+ PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
70
+ PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
71
+ lexer->current_line, lexer->start_col); \
72
+ if (lexer->content_end != 0) { \
73
+ p = PTR_TO(content_end - 1); \
74
+ } \
75
+ lexer->content_end = 0
76
+
77
+ #define STORE_ATTR(ATTR) \
78
+ store_attr(listener, # ATTR, \
79
+ PTR_TO(content_start), LEN(content_start, p), \
80
+ lexer->line_number)
81
+
82
+
83
+ #line 254 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
84
+
85
+
86
+ /** Data **/
87
+
88
+ #line 89 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
89
+ static const char _lexer_actions[] = {
90
+ 0, 1, 0, 1, 1, 1, 2, 1,
91
+ 3, 1, 4, 1, 5, 1, 6, 1,
92
+ 7, 1, 8, 1, 9, 1, 10, 1,
93
+ 11, 1, 12, 1, 13, 1, 16, 1,
94
+ 17, 1, 18, 1, 19, 1, 20, 1,
95
+ 21, 1, 22, 1, 23, 2, 1, 18,
96
+ 2, 4, 5, 2, 13, 0, 2, 14,
97
+ 15, 2, 17, 0, 2, 17, 2, 2,
98
+ 17, 16, 2, 17, 19, 2, 18, 6,
99
+ 2, 18, 7, 2, 18, 8, 2, 18,
100
+ 9, 2, 18, 10, 2, 18, 16, 2,
101
+ 20, 21, 2, 22, 0, 2, 22, 2,
102
+ 2, 22, 16, 2, 22, 19, 3, 3,
103
+ 14, 15, 3, 5, 14, 15, 3, 11,
104
+ 14, 15, 3, 12, 14, 15, 3, 13,
105
+ 14, 15, 3, 14, 15, 18, 3, 17,
106
+ 14, 15, 4, 1, 14, 15, 18, 4,
107
+ 4, 5, 14, 15, 4, 17, 0, 14,
108
+ 15
109
+ };
110
+
111
+ static const short _lexer_key_offsets[] = {
112
+ 0, 0, 12, 21, 22, 23, 24, 25,
113
+ 26, 27, 29, 40, 41, 42, 44, 46,
114
+ 51, 56, 61, 66, 70, 74, 76, 77,
115
+ 78, 79, 80, 81, 82, 83, 84, 85,
116
+ 86, 87, 88, 89, 90, 91, 96, 103,
117
+ 108, 112, 118, 121, 123, 129, 140, 141,
118
+ 142, 143, 144, 145, 146, 147, 148, 149,
119
+ 152, 153, 155, 156, 157, 159, 160, 161,
120
+ 162, 163, 165, 166, 167, 168, 169, 170,
121
+ 171, 172, 173, 174, 175, 176, 185, 195,
122
+ 197, 199, 201, 203, 205, 216, 218, 220,
123
+ 222, 224, 226, 228, 230, 232, 234, 238,
124
+ 240, 243, 245, 247, 250, 252, 254, 256,
125
+ 258, 260, 262, 264, 266, 268, 270, 272,
126
+ 274, 276, 278, 280, 282, 284, 286, 288,
127
+ 290, 292, 294, 296, 298, 300, 302, 305,
128
+ 307, 309, 311, 313, 315, 317, 319, 321,
129
+ 323, 325, 327, 329, 331, 333, 335, 337,
130
+ 339, 341, 343, 345, 347, 349, 351, 353,
131
+ 355, 358, 360, 362, 364, 366, 368, 371,
132
+ 373, 375, 377, 379, 381, 383, 385, 387,
133
+ 389, 391, 393, 395, 397, 399, 401, 403,
134
+ 405, 407, 409, 411, 413, 415, 417, 419,
135
+ 421, 423, 425, 427, 429, 431, 433, 435,
136
+ 437, 439, 441, 443, 445, 447, 449, 451,
137
+ 453, 455, 457, 459, 461, 463, 465, 467,
138
+ 469, 471, 473, 475, 477, 479, 481, 483,
139
+ 485, 487, 489, 491, 493, 495, 497, 499,
140
+ 501, 503, 505, 507, 509, 511, 513, 515,
141
+ 517, 519, 521, 522, 523, 524, 525, 526,
142
+ 527, 528, 529, 530, 539, 549, 551, 553,
143
+ 555, 557, 559, 561, 563, 565, 567, 569,
144
+ 571, 573, 575, 577, 581, 583, 585, 587,
145
+ 589, 592, 594, 596, 598, 600, 602, 604,
146
+ 606, 608, 610, 612, 614, 616, 618, 620,
147
+ 622, 624, 626, 628, 631, 633, 635, 637,
148
+ 639, 641, 643, 645, 647, 649, 651, 653,
149
+ 655, 657, 659, 661, 663, 665, 667, 669,
150
+ 671, 673, 675, 677, 679, 681, 683, 685,
151
+ 687, 689, 691, 693, 695, 697, 699, 701,
152
+ 703, 705, 707, 709, 711, 713, 715, 717,
153
+ 719, 721, 723, 725, 727, 729, 731, 733,
154
+ 735, 737, 739, 741, 743, 745, 747, 749,
155
+ 751, 753, 755, 757, 759, 761, 763, 765,
156
+ 767, 769, 771, 773, 774, 775, 776, 777,
157
+ 778, 779, 780, 781, 782, 783, 784, 785,
158
+ 786, 787, 788, 789, 790, 791, 792, 800,
159
+ 807, 809, 811, 813, 815, 817, 820, 822,
160
+ 824, 826, 828, 830, 832, 834, 836, 838,
161
+ 840, 842, 844, 846, 848, 850, 852, 854,
162
+ 856, 858, 860, 862, 864, 866, 868, 870,
163
+ 872, 874, 876, 879, 881, 883, 885, 887,
164
+ 889, 891, 893, 895, 897, 899, 901, 903,
165
+ 906, 908, 910, 912, 914, 916, 918, 920,
166
+ 922, 924, 926, 928, 930, 932, 934, 936,
167
+ 938, 941, 943, 946, 948, 950, 952, 954,
168
+ 956, 959, 961, 963, 965, 967, 969, 971,
169
+ 973, 975, 977, 979, 981, 983, 985, 987,
170
+ 989, 991, 993, 995, 997, 999, 1001, 1003,
171
+ 1005, 1007, 1009, 1011, 1013, 1015, 1017, 1019,
172
+ 1021, 1023, 1025, 1027, 1029, 1031, 1033, 1035,
173
+ 1037, 1039, 1041, 1044, 1046, 1048, 1050, 1052,
174
+ 1054, 1056, 1058, 1060, 1062, 1064, 1066, 1068,
175
+ 1070, 1072, 1074, 1076, 1078, 1080, 1082, 1084,
176
+ 1086, 1088, 1090, 1092, 1094, 1096, 1098, 1100,
177
+ 1102, 1104, 1106, 1108, 1110, 1112, 1114, 1116,
178
+ 1117, 1118, 1119, 1120, 1121, 1122, 1124, 1125,
179
+ 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133,
180
+ 1134, 1135, 1136, 1137, 1138, 1140, 1141, 1142,
181
+ 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150,
182
+ 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158,
183
+ 1159, 1160, 1162, 1163, 1164, 1165, 1166, 1173,
184
+ 1177, 1179, 1181, 1183, 1185, 1187, 1189, 1191,
185
+ 1193, 1195, 1197, 1199, 1201, 1203, 1205, 1207,
186
+ 1209, 1211, 1213, 1215, 1217, 1219, 1221, 1223,
187
+ 1225, 1227, 1229, 1231, 1233, 1235, 1237, 1239,
188
+ 1241, 1243, 1245, 1247, 1249, 1251, 1253, 1255,
189
+ 1257, 1259, 1261, 1263, 1265, 1267, 1269, 1271,
190
+ 1272, 1273, 1282, 1292, 1294, 1296, 1298, 1300,
191
+ 1302, 1304, 1306, 1308, 1310, 1312, 1314, 1316,
192
+ 1318, 1320, 1324, 1326, 1329, 1331, 1333, 1336,
193
+ 1338, 1340, 1342, 1344, 1347, 1349, 1351, 1353,
194
+ 1355, 1357, 1359, 1361, 1363, 1365, 1367, 1369,
195
+ 1371, 1373, 1375, 1377, 1379, 1381, 1383, 1385,
196
+ 1387, 1389, 1391, 1393, 1395, 1397, 1400, 1402,
197
+ 1404, 1406, 1408, 1410, 1412, 1415, 1417, 1419,
198
+ 1421, 1423, 1425, 1427, 1429, 1431, 1433, 1435,
199
+ 1437, 1439, 1442, 1444, 1446, 1448, 1450, 1452,
200
+ 1454, 1456, 1458, 1460, 1462, 1464, 1466, 1468,
201
+ 1470, 1472, 1474, 1477, 1479, 1481, 1483, 1485,
202
+ 1487, 1490, 1492, 1494, 1496, 1498, 1500, 1502,
203
+ 1504, 1506, 1508, 1510, 1512, 1514, 1516, 1518,
204
+ 1520, 1522, 1524, 1526, 1528, 1530, 1532, 1534,
205
+ 1536, 1538, 1540, 1542, 1544, 1546, 1548, 1550,
206
+ 1552, 1554, 1556, 1558, 1560, 1562, 1564, 1566,
207
+ 1568, 1570, 1572, 1574, 1576, 1578, 1580, 1582,
208
+ 1584, 1586, 1588, 1590, 1592, 1594, 1596, 1598,
209
+ 1600, 1602, 1604, 1606, 1608, 1610, 1612, 1614,
210
+ 1616, 1618, 1620, 1622, 1624, 1626, 1628, 1630,
211
+ 1632, 1634, 1636, 1638, 1640, 1642, 1643, 1644,
212
+ 1645, 1646, 1647, 1648, 1649, 1651, 1652, 1653,
213
+ 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661,
214
+ 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669,
215
+ 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677,
216
+ 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685,
217
+ 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1694,
218
+ 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702,
219
+ 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710,
220
+ 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718
221
+ };
222
+
223
+ static const char _lexer_trans_keys[] = {
224
+ -48, -17, 10, 32, 34, 35, 37, 42,
225
+ 64, 124, 9, 13, -112, -105, -104, -102,
226
+ -100, -98, -97, -95, -92, -48, -69, -48,
227
+ -72, 32, 10, 10, 13, -48, 10, 32,
228
+ 34, 35, 37, 42, 64, 124, 9, 13,
229
+ 34, 34, 10, 13, 10, 13, 10, 32,
230
+ 34, 9, 13, 10, 32, 34, 9, 13,
231
+ 10, 32, 34, 9, 13, 10, 32, 34,
232
+ 9, 13, 10, 32, 9, 13, 10, 32,
233
+ 9, 13, 10, 13, 10, 95, 70, 69,
234
+ 65, 84, 85, 82, 69, 95, 69, 78,
235
+ 68, 95, 37, 13, 32, 64, 9, 10,
236
+ 9, 10, 13, 32, 64, 11, 12, 10,
237
+ 32, 64, 9, 13, 32, 124, 9, 13,
238
+ 10, 32, 92, 124, 9, 13, 10, 92,
239
+ 124, 10, 92, 10, 32, 92, 124, 9,
240
+ 13, -48, 10, 32, 34, 35, 37, 42,
241
+ 64, 124, 9, 13, -48, -80, -48, -76,
242
+ -48, -80, -47, -126, -48, -75, -72, -66,
243
+ -48, -80, -66, -48, -76, -48, 32, -80,
244
+ -48, -67, -47, -126, -122, -48, -75, -48,
245
+ -70, -47, -127, -47, -126, 58, 10, 10,
246
+ -48, 10, 32, 35, 37, 42, 64, 9,
247
+ 13, -112, -105, -104, -102, -100, -98, -97,
248
+ -95, -92, 10, -48, 10, -69, 10, -48,
249
+ 10, -72, 10, 10, 32, -48, 10, 32,
250
+ 34, 35, 37, 42, 64, 124, 9, 13,
251
+ -48, 10, -80, 10, -48, 10, -76, 10,
252
+ -48, 10, -80, 10, -47, 10, -126, 10,
253
+ -48, 10, -75, -72, -66, 10, -48, 10,
254
+ -80, -66, 10, -48, 10, -76, 10, -48,
255
+ 10, 32, -80, 10, -48, 10, -67, 10,
256
+ -47, 10, -122, 10, -48, 10, -75, 10,
257
+ -48, 10, -65, 10, -47, 10, -126, 10,
258
+ 10, 58, -48, 10, -66, 10, -48, 10,
259
+ -77, 10, -47, 10, -125, 10, -47, 10,
260
+ -101, 10, -48, 10, -67, 10, -48, 10,
261
+ -66, 10, -47, 10, -127, 10, -48, -47,
262
+ 10, -67, 10, -48, 10, -76, 10, -48,
263
+ 10, -127, 10, -48, 10, -66, 10, -48,
264
+ 10, -79, 10, -48, 10, -72, 10, -48,
265
+ 10, -67, 10, -48, 10, -80, 10, -47,
266
+ 10, -128, 10, -48, 10, -72, 10, -48,
267
+ 10, -68, 10, -48, 10, -75, 10, -47,
268
+ 10, -128, 10, -48, -47, 10, -70, 10,
269
+ -48, 10, -72, 10, -47, 10, -122, 10,
270
+ -126, -122, 10, -47, 10, -128, 10, -47,
271
+ 10, -125, 10, -48, 10, -70, 10, -47,
272
+ 10, -126, 10, -47, 10, -125, 10, -47,
273
+ 10, -128, 10, -48, 10, -80, 10, 10,
274
+ 32, -47, 10, -127, 10, -47, 10, -122,
275
+ 10, -48, 10, -75, 10, -48, 10, -67,
276
+ 10, -48, 10, -80, 10, -47, 10, -128,
277
+ 10, -48, 10, -72, 10, -47, 10, -104,
278
+ 10, -48, 10, -75, 10, -48, 10, -67,
279
+ 10, -48, 10, -80, 10, -47, 10, -128,
280
+ 10, -48, 10, -72, 10, -48, 10, -66,
281
+ 10, -47, 10, -125, 10, -48, 10, -67,
282
+ 10, -48, 10, -70, 10, -47, 10, -122,
283
+ 10, -48, 10, -72, 10, -48, 10, -66,
284
+ 10, -48, 10, -67, 10, -48, 10, -80,
285
+ 10, -48, 10, -69, 10, 10, 95, 10,
286
+ 70, 10, 69, 10, 65, 10, 84, 10,
287
+ 85, 10, 82, 10, 69, 10, 95, 10,
288
+ 69, 10, 78, 10, 68, 10, 95, 10,
289
+ 37, -48, -75, -48, -65, -47, -126, 58,
290
+ 10, 10, -48, 10, 32, 35, 37, 42,
291
+ 64, 9, 13, -112, -105, -104, -102, -100,
292
+ -98, -97, -95, -92, 10, -48, 10, -69,
293
+ 10, -48, 10, -72, 10, 10, 32, -48,
294
+ 10, -80, 10, -48, 10, -76, 10, -48,
295
+ 10, -80, 10, -47, 10, -126, 10, -48,
296
+ 10, -75, -72, -66, 10, -48, 10, -80,
297
+ 10, -48, 10, -76, 10, -48, 10, 32,
298
+ -80, 10, -48, 10, -66, 10, -48, 10,
299
+ -77, 10, -47, 10, -125, 10, -47, 10,
300
+ -101, 10, -48, 10, -67, 10, -48, 10,
301
+ -66, 10, -47, 10, -127, 10, -47, 10,
302
+ -126, 10, 10, 58, -48, -47, 10, -67,
303
+ 10, -48, 10, -76, 10, -48, 10, -127,
304
+ 10, -48, 10, -66, 10, -48, 10, -79,
305
+ 10, -48, 10, -72, 10, -48, 10, -67,
306
+ 10, -48, 10, -80, 10, -47, 10, -128,
307
+ 10, -48, 10, -72, 10, -48, 10, -68,
308
+ 10, -48, 10, -75, 10, -47, 10, -128,
309
+ 10, -47, 10, -122, 10, -48, 10, -75,
310
+ 10, -48, 10, -67, 10, -48, 10, -80,
311
+ 10, -47, 10, -128, 10, -48, 10, -72,
312
+ 10, -48, 10, -66, 10, -47, 10, -125,
313
+ 10, -48, 10, -67, 10, -48, 10, -70,
314
+ 10, -47, 10, -122, 10, -48, 10, -72,
315
+ 10, -48, 10, -66, 10, -48, 10, -67,
316
+ 10, -48, 10, -80, 10, -48, 10, -69,
317
+ 10, 10, 95, 10, 70, 10, 69, 10,
318
+ 65, 10, 84, 10, 85, 10, 82, 10,
319
+ 69, 10, 95, 10, 69, 10, 78, 10,
320
+ 68, 10, 95, 10, 37, -48, -66, -48,
321
+ -77, -47, -125, -47, -101, -48, -67, -48,
322
+ -66, -47, -127, -47, -126, 58, 10, 10,
323
+ -48, 10, 32, 35, 37, 64, 9, 13,
324
+ -102, -100, -98, -97, -95, -92, 10, -48,
325
+ 10, -66, 10, -48, 10, -67, 10, -47,
326
+ 10, -126, -122, 10, -48, 10, -75, 10,
327
+ -48, 10, -70, 10, -47, 10, -127, 10,
328
+ -47, 10, -126, 10, 10, 58, -48, 10,
329
+ -75, 10, -48, 10, -65, 10, -48, 10,
330
+ -66, 10, -48, 10, -77, 10, -47, 10,
331
+ -125, 10, -47, 10, -101, 10, -48, 10,
332
+ -67, 10, -48, 10, -66, 10, -47, 10,
333
+ -127, 10, -48, 10, -67, -66, 10, -48,
334
+ 10, -66, 10, -48, 10, -78, 10, -48,
335
+ 10, -80, 10, -48, 10, -79, 10, -48,
336
+ 10, -72, 10, -48, 10, -67, 10, -48,
337
+ -47, 10, -66, 10, -48, 10, -73, 10,
338
+ -48, 10, -80, 10, -48, 10, -76, 10,
339
+ -128, 10, -48, 10, -72, 10, -48, 10,
340
+ -68, 10, -48, 10, -75, 10, -47, 10,
341
+ -128, 10, -48, 10, 58, -72, 10, -48,
342
+ -47, 10, -70, 10, -48, 10, -72, 10,
343
+ -47, 10, -122, 10, -126, -122, 10, -47,
344
+ 10, -128, 10, -47, 10, -125, 10, -48,
345
+ 10, -70, 10, -47, 10, -126, 10, -47,
346
+ 10, -125, 10, -47, 10, -128, 10, -48,
347
+ 10, -80, 10, 10, 32, -47, 10, -127,
348
+ 10, -47, 10, -122, 10, -48, 10, -75,
349
+ 10, -48, 10, -67, 10, -48, 10, -80,
350
+ 10, -47, 10, -128, 10, -48, 10, -72,
351
+ 10, -47, 10, -104, 10, -48, 10, -75,
352
+ 10, -48, 10, -67, 10, -48, 10, -80,
353
+ 10, -47, 10, -128, 10, -48, 10, -72,
354
+ 10, -48, -47, 10, -66, 10, -104, 10,
355
+ -48, 10, -47, 10, -125, 10, -48, 10,
356
+ -67, 10, -48, 10, -70, 10, -47, 10,
357
+ -122, 10, -48, 10, -72, 10, -48, 10,
358
+ -66, 10, -48, 10, -67, 10, -48, 10,
359
+ -80, 10, -48, 10, -69, 10, 10, 95,
360
+ 10, 70, 10, 69, 10, 65, 10, 84,
361
+ 10, 85, 10, 82, 10, 69, 10, 95,
362
+ 10, 69, 10, 78, 10, 68, 10, 95,
363
+ 10, 37, -48, -47, -67, -48, -76, -48,
364
+ -127, -48, -67, -66, -48, -66, -48, -78,
365
+ -48, -80, -48, -79, -48, -72, -48, -67,
366
+ -48, -80, -48, -47, -66, -48, -73, -48,
367
+ -80, -48, -76, -48, -72, -48, -67, -128,
368
+ -48, -72, -48, -68, -48, -75, -47, -128,
369
+ -48, 58, -72, 58, 10, 10, -48, 10,
370
+ 32, 35, 124, 9, 13, -100, -98, -92,
371
+ 10, -48, 10, -66, 10, -48, 10, -77,
372
+ 10, -47, 10, -125, 10, -47, 10, -101,
373
+ 10, -48, 10, -67, 10, -48, 10, -66,
374
+ 10, -47, 10, -127, 10, -47, 10, -126,
375
+ 10, 10, 58, -47, 10, -127, 10, -48,
376
+ 10, -66, 10, -48, 10, -79, 10, -48,
377
+ 10, -72, 10, -48, 10, -67, 10, -48,
378
+ 10, -80, 10, -47, 10, -125, 10, -48,
379
+ 10, -67, 10, -48, 10, -70, 10, -47,
380
+ 10, -122, 10, -48, 10, -72, 10, -48,
381
+ 10, -66, 10, -48, 10, -67, 10, -48,
382
+ 10, -80, 10, -48, 10, -69, 10, 10,
383
+ 10, -48, 10, 32, 35, 37, 42, 64,
384
+ 9, 13, -112, -105, -104, -102, -100, -98,
385
+ -97, -95, -92, 10, -48, 10, -69, 10,
386
+ -48, 10, -72, 10, 10, 32, -48, 10,
387
+ -80, 10, -48, 10, -76, 10, -48, 10,
388
+ -80, 10, -47, 10, -126, 10, -48, 10,
389
+ -75, -72, -66, 10, -48, 10, -80, -66,
390
+ 10, -48, 10, -76, 10, -48, 10, 32,
391
+ -80, 10, -48, 10, -67, 10, -47, 10,
392
+ -126, -122, 10, -48, 10, -75, 10, -48,
393
+ 10, -70, 10, -47, 10, -127, 10, -47,
394
+ 10, -126, 10, 10, 58, -48, 10, -75,
395
+ 10, -48, 10, -65, 10, -48, 10, -66,
396
+ 10, -48, 10, -77, 10, -47, 10, -125,
397
+ 10, -47, 10, -101, 10, -48, 10, -67,
398
+ 10, -48, 10, -66, 10, -48, -47, 10,
399
+ -67, 10, -48, 10, -76, 10, -48, 10,
400
+ -127, 10, -48, 10, -67, -66, 10, -48,
401
+ 10, -66, 10, -48, 10, -78, 10, -48,
402
+ 10, -80, 10, -48, 10, -79, 10, -48,
403
+ 10, -72, 10, -48, 10, -67, 10, -48,
404
+ -47, 10, -66, 10, -48, 10, -73, 10,
405
+ -48, 10, -80, 10, -48, 10, -76, 10,
406
+ -128, 10, -48, 10, -72, 10, -48, 10,
407
+ -68, 10, -48, 10, -75, 10, -47, 10,
408
+ -128, 10, -48, -47, 10, -70, 10, -48,
409
+ 10, -72, 10, -47, 10, -122, 10, -126,
410
+ -122, 10, -47, 10, -128, 10, -47, 10,
411
+ -125, 10, -48, 10, -70, 10, -47, 10,
412
+ -126, 10, -47, 10, -125, 10, -47, 10,
413
+ -128, 10, -48, 10, -80, 10, 10, 32,
414
+ -47, 10, -127, 10, -47, 10, -122, 10,
415
+ -48, 10, -75, 10, -48, 10, -67, 10,
416
+ -48, 10, -80, 10, -47, 10, -128, 10,
417
+ -48, 10, -72, 10, -47, 10, -104, 10,
418
+ -48, 10, -75, 10, -48, 10, -67, 10,
419
+ -48, 10, -80, 10, -47, 10, -128, 10,
420
+ -48, 10, -72, 10, -48, 10, -66, 10,
421
+ -47, 10, -125, 10, -48, 10, -67, 10,
422
+ -48, 10, -70, 10, -47, 10, -122, 10,
423
+ -48, 10, -72, 10, -48, 10, -66, 10,
424
+ -48, 10, -67, 10, -48, 10, -80, 10,
425
+ -48, 10, -69, 10, 10, 95, 10, 70,
426
+ 10, 69, 10, 65, 10, 84, 10, 85,
427
+ 10, 82, 10, 69, 10, 95, 10, 69,
428
+ 10, 78, 10, 68, 10, 95, 10, 37,
429
+ -48, -47, -70, -48, -72, -47, -122, -48,
430
+ -80, -126, -122, -47, -128, -47, -125, -48,
431
+ -70, -47, -126, -47, -125, -47, -128, -48,
432
+ -80, 32, -47, -127, -47, -122, -48, -75,
433
+ -48, -67, -48, -80, -47, -128, -48, -72,
434
+ -47, -104, -48, -75, -48, -67, -48, -80,
435
+ -47, -128, -48, -72, -48, -47, -66, 58,
436
+ -104, -48, -47, -125, -48, -67, -48, -70,
437
+ -47, -122, -48, -72, -48, -66, -48, -67,
438
+ -48, -80, -48, -69, -69, -65, 0
439
+ };
440
+
441
+ static const char _lexer_single_lengths[] = {
442
+ 0, 10, 9, 1, 1, 1, 1, 1,
443
+ 1, 2, 9, 1, 1, 2, 2, 3,
444
+ 3, 3, 3, 2, 2, 2, 1, 1,
445
+ 1, 1, 1, 1, 1, 1, 1, 1,
446
+ 1, 1, 1, 1, 1, 3, 5, 3,
447
+ 2, 4, 3, 2, 4, 9, 1, 1,
448
+ 1, 1, 1, 1, 1, 1, 1, 3,
449
+ 1, 2, 1, 1, 2, 1, 1, 1,
450
+ 1, 2, 1, 1, 1, 1, 1, 1,
451
+ 1, 1, 1, 1, 1, 7, 10, 2,
452
+ 2, 2, 2, 2, 9, 2, 2, 2,
453
+ 2, 2, 2, 2, 2, 2, 4, 2,
454
+ 3, 2, 2, 3, 2, 2, 2, 2,
455
+ 2, 2, 2, 2, 2, 2, 2, 2,
456
+ 2, 2, 2, 2, 2, 2, 2, 2,
457
+ 2, 2, 2, 2, 2, 2, 3, 2,
458
+ 2, 2, 2, 2, 2, 2, 2, 2,
459
+ 2, 2, 2, 2, 2, 2, 2, 2,
460
+ 2, 2, 2, 2, 2, 2, 2, 2,
461
+ 3, 2, 2, 2, 2, 2, 3, 2,
462
+ 2, 2, 2, 2, 2, 2, 2, 2,
463
+ 2, 2, 2, 2, 2, 2, 2, 2,
464
+ 2, 2, 2, 2, 2, 2, 2, 2,
465
+ 2, 2, 2, 2, 2, 2, 2, 2,
466
+ 2, 2, 2, 2, 2, 2, 2, 2,
467
+ 2, 2, 2, 2, 2, 2, 2, 2,
468
+ 2, 2, 2, 2, 2, 2, 2, 2,
469
+ 2, 2, 2, 2, 2, 2, 2, 2,
470
+ 2, 2, 2, 2, 2, 2, 2, 2,
471
+ 2, 2, 1, 1, 1, 1, 1, 1,
472
+ 1, 1, 1, 7, 10, 2, 2, 2,
473
+ 2, 2, 2, 2, 2, 2, 2, 2,
474
+ 2, 2, 2, 4, 2, 2, 2, 2,
475
+ 3, 2, 2, 2, 2, 2, 2, 2,
476
+ 2, 2, 2, 2, 2, 2, 2, 2,
477
+ 2, 2, 2, 3, 2, 2, 2, 2,
478
+ 2, 2, 2, 2, 2, 2, 2, 2,
479
+ 2, 2, 2, 2, 2, 2, 2, 2,
480
+ 2, 2, 2, 2, 2, 2, 2, 2,
481
+ 2, 2, 2, 2, 2, 2, 2, 2,
482
+ 2, 2, 2, 2, 2, 2, 2, 2,
483
+ 2, 2, 2, 2, 2, 2, 2, 2,
484
+ 2, 2, 2, 2, 2, 2, 2, 2,
485
+ 2, 2, 2, 2, 2, 2, 2, 2,
486
+ 2, 2, 2, 1, 1, 1, 1, 1,
487
+ 1, 1, 1, 1, 1, 1, 1, 1,
488
+ 1, 1, 1, 1, 1, 1, 6, 7,
489
+ 2, 2, 2, 2, 2, 3, 2, 2,
490
+ 2, 2, 2, 2, 2, 2, 2, 2,
491
+ 2, 2, 2, 2, 2, 2, 2, 2,
492
+ 2, 2, 2, 2, 2, 2, 2, 2,
493
+ 2, 2, 3, 2, 2, 2, 2, 2,
494
+ 2, 2, 2, 2, 2, 2, 2, 3,
495
+ 2, 2, 2, 2, 2, 2, 2, 2,
496
+ 2, 2, 2, 2, 2, 2, 2, 2,
497
+ 3, 2, 3, 2, 2, 2, 2, 2,
498
+ 3, 2, 2, 2, 2, 2, 2, 2,
499
+ 2, 2, 2, 2, 2, 2, 2, 2,
500
+ 2, 2, 2, 2, 2, 2, 2, 2,
501
+ 2, 2, 2, 2, 2, 2, 2, 2,
502
+ 2, 2, 2, 2, 2, 2, 2, 2,
503
+ 2, 2, 3, 2, 2, 2, 2, 2,
504
+ 2, 2, 2, 2, 2, 2, 2, 2,
505
+ 2, 2, 2, 2, 2, 2, 2, 2,
506
+ 2, 2, 2, 2, 2, 2, 2, 2,
507
+ 2, 2, 2, 2, 2, 2, 2, 1,
508
+ 1, 1, 1, 1, 1, 2, 1, 1,
509
+ 1, 1, 1, 1, 1, 1, 1, 1,
510
+ 1, 1, 1, 1, 2, 1, 1, 1,
511
+ 1, 1, 1, 1, 1, 1, 1, 1,
512
+ 1, 1, 1, 1, 1, 1, 1, 1,
513
+ 1, 2, 1, 1, 1, 1, 5, 4,
514
+ 2, 2, 2, 2, 2, 2, 2, 2,
515
+ 2, 2, 2, 2, 2, 2, 2, 2,
516
+ 2, 2, 2, 2, 2, 2, 2, 2,
517
+ 2, 2, 2, 2, 2, 2, 2, 2,
518
+ 2, 2, 2, 2, 2, 2, 2, 2,
519
+ 2, 2, 2, 2, 2, 2, 2, 1,
520
+ 1, 7, 10, 2, 2, 2, 2, 2,
521
+ 2, 2, 2, 2, 2, 2, 2, 2,
522
+ 2, 4, 2, 3, 2, 2, 3, 2,
523
+ 2, 2, 2, 3, 2, 2, 2, 2,
524
+ 2, 2, 2, 2, 2, 2, 2, 2,
525
+ 2, 2, 2, 2, 2, 2, 2, 2,
526
+ 2, 2, 2, 2, 2, 3, 2, 2,
527
+ 2, 2, 2, 2, 3, 2, 2, 2,
528
+ 2, 2, 2, 2, 2, 2, 2, 2,
529
+ 2, 3, 2, 2, 2, 2, 2, 2,
530
+ 2, 2, 2, 2, 2, 2, 2, 2,
531
+ 2, 2, 3, 2, 2, 2, 2, 2,
532
+ 3, 2, 2, 2, 2, 2, 2, 2,
533
+ 2, 2, 2, 2, 2, 2, 2, 2,
534
+ 2, 2, 2, 2, 2, 2, 2, 2,
535
+ 2, 2, 2, 2, 2, 2, 2, 2,
536
+ 2, 2, 2, 2, 2, 2, 2, 2,
537
+ 2, 2, 2, 2, 2, 2, 2, 2,
538
+ 2, 2, 2, 2, 2, 2, 2, 2,
539
+ 2, 2, 2, 2, 2, 2, 2, 2,
540
+ 2, 2, 2, 2, 2, 2, 2, 2,
541
+ 2, 2, 2, 2, 2, 1, 1, 1,
542
+ 1, 1, 1, 1, 2, 1, 1, 1,
543
+ 1, 1, 1, 1, 1, 1, 1, 1,
544
+ 1, 1, 1, 1, 1, 1, 1, 1,
545
+ 1, 1, 1, 1, 1, 1, 1, 1,
546
+ 1, 1, 1, 1, 1, 1, 1, 1,
547
+ 1, 1, 1, 1, 1, 1, 2, 1,
548
+ 1, 1, 1, 1, 1, 1, 1, 1,
549
+ 1, 1, 1, 1, 1, 1, 1, 1,
550
+ 1, 1, 1, 1, 1, 1, 1, 0
551
+ };
552
+
553
+ static const char _lexer_range_lengths[] = {
554
+ 0, 1, 0, 0, 0, 0, 0, 0,
555
+ 0, 0, 1, 0, 0, 0, 0, 1,
556
+ 1, 1, 1, 1, 1, 0, 0, 0,
557
+ 0, 0, 0, 0, 0, 0, 0, 0,
558
+ 0, 0, 0, 0, 0, 1, 1, 1,
559
+ 1, 1, 0, 0, 1, 1, 0, 0,
560
+ 0, 0, 0, 0, 0, 0, 0, 0,
561
+ 0, 0, 0, 0, 0, 0, 0, 0,
562
+ 0, 0, 0, 0, 0, 0, 0, 0,
563
+ 0, 0, 0, 0, 0, 1, 0, 0,
564
+ 0, 0, 0, 0, 1, 0, 0, 0,
565
+ 0, 0, 0, 0, 0, 0, 0, 0,
566
+ 0, 0, 0, 0, 0, 0, 0, 0,
567
+ 0, 0, 0, 0, 0, 0, 0, 0,
568
+ 0, 0, 0, 0, 0, 0, 0, 0,
569
+ 0, 0, 0, 0, 0, 0, 0, 0,
570
+ 0, 0, 0, 0, 0, 0, 0, 0,
571
+ 0, 0, 0, 0, 0, 0, 0, 0,
572
+ 0, 0, 0, 0, 0, 0, 0, 0,
573
+ 0, 0, 0, 0, 0, 0, 0, 0,
574
+ 0, 0, 0, 0, 0, 0, 0, 0,
575
+ 0, 0, 0, 0, 0, 0, 0, 0,
576
+ 0, 0, 0, 0, 0, 0, 0, 0,
577
+ 0, 0, 0, 0, 0, 0, 0, 0,
578
+ 0, 0, 0, 0, 0, 0, 0, 0,
579
+ 0, 0, 0, 0, 0, 0, 0, 0,
580
+ 0, 0, 0, 0, 0, 0, 0, 0,
581
+ 0, 0, 0, 0, 0, 0, 0, 0,
582
+ 0, 0, 0, 0, 0, 0, 0, 0,
583
+ 0, 0, 0, 0, 0, 0, 0, 0,
584
+ 0, 0, 0, 1, 0, 0, 0, 0,
585
+ 0, 0, 0, 0, 0, 0, 0, 0,
586
+ 0, 0, 0, 0, 0, 0, 0, 0,
587
+ 0, 0, 0, 0, 0, 0, 0, 0,
588
+ 0, 0, 0, 0, 0, 0, 0, 0,
589
+ 0, 0, 0, 0, 0, 0, 0, 0,
590
+ 0, 0, 0, 0, 0, 0, 0, 0,
591
+ 0, 0, 0, 0, 0, 0, 0, 0,
592
+ 0, 0, 0, 0, 0, 0, 0, 0,
593
+ 0, 0, 0, 0, 0, 0, 0, 0,
594
+ 0, 0, 0, 0, 0, 0, 0, 0,
595
+ 0, 0, 0, 0, 0, 0, 0, 0,
596
+ 0, 0, 0, 0, 0, 0, 0, 0,
597
+ 0, 0, 0, 0, 0, 0, 0, 0,
598
+ 0, 0, 0, 0, 0, 0, 0, 0,
599
+ 0, 0, 0, 0, 0, 0, 0, 0,
600
+ 0, 0, 0, 0, 0, 0, 1, 0,
601
+ 0, 0, 0, 0, 0, 0, 0, 0,
602
+ 0, 0, 0, 0, 0, 0, 0, 0,
603
+ 0, 0, 0, 0, 0, 0, 0, 0,
604
+ 0, 0, 0, 0, 0, 0, 0, 0,
605
+ 0, 0, 0, 0, 0, 0, 0, 0,
606
+ 0, 0, 0, 0, 0, 0, 0, 0,
607
+ 0, 0, 0, 0, 0, 0, 0, 0,
608
+ 0, 0, 0, 0, 0, 0, 0, 0,
609
+ 0, 0, 0, 0, 0, 0, 0, 0,
610
+ 0, 0, 0, 0, 0, 0, 0, 0,
611
+ 0, 0, 0, 0, 0, 0, 0, 0,
612
+ 0, 0, 0, 0, 0, 0, 0, 0,
613
+ 0, 0, 0, 0, 0, 0, 0, 0,
614
+ 0, 0, 0, 0, 0, 0, 0, 0,
615
+ 0, 0, 0, 0, 0, 0, 0, 0,
616
+ 0, 0, 0, 0, 0, 0, 0, 0,
617
+ 0, 0, 0, 0, 0, 0, 0, 0,
618
+ 0, 0, 0, 0, 0, 0, 0, 0,
619
+ 0, 0, 0, 0, 0, 0, 0, 0,
620
+ 0, 0, 0, 0, 0, 0, 0, 0,
621
+ 0, 0, 0, 0, 0, 0, 0, 0,
622
+ 0, 0, 0, 0, 0, 0, 0, 0,
623
+ 0, 0, 0, 0, 0, 0, 0, 0,
624
+ 0, 0, 0, 0, 0, 0, 0, 0,
625
+ 0, 0, 0, 0, 0, 0, 1, 0,
626
+ 0, 0, 0, 0, 0, 0, 0, 0,
627
+ 0, 0, 0, 0, 0, 0, 0, 0,
628
+ 0, 0, 0, 0, 0, 0, 0, 0,
629
+ 0, 0, 0, 0, 0, 0, 0, 0,
630
+ 0, 0, 0, 0, 0, 0, 0, 0,
631
+ 0, 0, 0, 0, 0, 0, 0, 0,
632
+ 0, 1, 0, 0, 0, 0, 0, 0,
633
+ 0, 0, 0, 0, 0, 0, 0, 0,
634
+ 0, 0, 0, 0, 0, 0, 0, 0,
635
+ 0, 0, 0, 0, 0, 0, 0, 0,
636
+ 0, 0, 0, 0, 0, 0, 0, 0,
637
+ 0, 0, 0, 0, 0, 0, 0, 0,
638
+ 0, 0, 0, 0, 0, 0, 0, 0,
639
+ 0, 0, 0, 0, 0, 0, 0, 0,
640
+ 0, 0, 0, 0, 0, 0, 0, 0,
641
+ 0, 0, 0, 0, 0, 0, 0, 0,
642
+ 0, 0, 0, 0, 0, 0, 0, 0,
643
+ 0, 0, 0, 0, 0, 0, 0, 0,
644
+ 0, 0, 0, 0, 0, 0, 0, 0,
645
+ 0, 0, 0, 0, 0, 0, 0, 0,
646
+ 0, 0, 0, 0, 0, 0, 0, 0,
647
+ 0, 0, 0, 0, 0, 0, 0, 0,
648
+ 0, 0, 0, 0, 0, 0, 0, 0,
649
+ 0, 0, 0, 0, 0, 0, 0, 0,
650
+ 0, 0, 0, 0, 0, 0, 0, 0,
651
+ 0, 0, 0, 0, 0, 0, 0, 0,
652
+ 0, 0, 0, 0, 0, 0, 0, 0,
653
+ 0, 0, 0, 0, 0, 0, 0, 0,
654
+ 0, 0, 0, 0, 0, 0, 0, 0,
655
+ 0, 0, 0, 0, 0, 0, 0, 0,
656
+ 0, 0, 0, 0, 0, 0, 0, 0,
657
+ 0, 0, 0, 0, 0, 0, 0, 0,
658
+ 0, 0, 0, 0, 0, 0, 0, 0,
659
+ 0, 0, 0, 0, 0, 0, 0, 0,
660
+ 0, 0, 0, 0, 0, 0, 0, 0,
661
+ 0, 0, 0, 0, 0, 0, 0, 0,
662
+ 0, 0, 0, 0, 0, 0, 0, 0
663
+ };
664
+
665
+ static const short _lexer_index_offsets[] = {
666
+ 0, 0, 12, 22, 24, 26, 28, 30,
667
+ 32, 34, 37, 48, 50, 52, 55, 58,
668
+ 63, 68, 73, 78, 82, 86, 89, 91,
669
+ 93, 95, 97, 99, 101, 103, 105, 107,
670
+ 109, 111, 113, 115, 117, 119, 124, 131,
671
+ 136, 140, 146, 150, 153, 159, 170, 172,
672
+ 174, 176, 178, 180, 182, 184, 186, 188,
673
+ 192, 194, 197, 199, 201, 204, 206, 208,
674
+ 210, 212, 215, 217, 219, 221, 223, 225,
675
+ 227, 229, 231, 233, 235, 237, 246, 257,
676
+ 260, 263, 266, 269, 272, 283, 286, 289,
677
+ 292, 295, 298, 301, 304, 307, 310, 315,
678
+ 318, 322, 325, 328, 332, 335, 338, 341,
679
+ 344, 347, 350, 353, 356, 359, 362, 365,
680
+ 368, 371, 374, 377, 380, 383, 386, 389,
681
+ 392, 395, 398, 401, 404, 407, 410, 414,
682
+ 417, 420, 423, 426, 429, 432, 435, 438,
683
+ 441, 444, 447, 450, 453, 456, 459, 462,
684
+ 465, 468, 471, 474, 477, 480, 483, 486,
685
+ 489, 493, 496, 499, 502, 505, 508, 512,
686
+ 515, 518, 521, 524, 527, 530, 533, 536,
687
+ 539, 542, 545, 548, 551, 554, 557, 560,
688
+ 563, 566, 569, 572, 575, 578, 581, 584,
689
+ 587, 590, 593, 596, 599, 602, 605, 608,
690
+ 611, 614, 617, 620, 623, 626, 629, 632,
691
+ 635, 638, 641, 644, 647, 650, 653, 656,
692
+ 659, 662, 665, 668, 671, 674, 677, 680,
693
+ 683, 686, 689, 692, 695, 698, 701, 704,
694
+ 707, 710, 713, 716, 719, 722, 725, 728,
695
+ 731, 734, 737, 739, 741, 743, 745, 747,
696
+ 749, 751, 753, 755, 764, 775, 778, 781,
697
+ 784, 787, 790, 793, 796, 799, 802, 805,
698
+ 808, 811, 814, 817, 822, 825, 828, 831,
699
+ 834, 838, 841, 844, 847, 850, 853, 856,
700
+ 859, 862, 865, 868, 871, 874, 877, 880,
701
+ 883, 886, 889, 892, 896, 899, 902, 905,
702
+ 908, 911, 914, 917, 920, 923, 926, 929,
703
+ 932, 935, 938, 941, 944, 947, 950, 953,
704
+ 956, 959, 962, 965, 968, 971, 974, 977,
705
+ 980, 983, 986, 989, 992, 995, 998, 1001,
706
+ 1004, 1007, 1010, 1013, 1016, 1019, 1022, 1025,
707
+ 1028, 1031, 1034, 1037, 1040, 1043, 1046, 1049,
708
+ 1052, 1055, 1058, 1061, 1064, 1067, 1070, 1073,
709
+ 1076, 1079, 1082, 1085, 1088, 1091, 1094, 1097,
710
+ 1100, 1103, 1106, 1109, 1111, 1113, 1115, 1117,
711
+ 1119, 1121, 1123, 1125, 1127, 1129, 1131, 1133,
712
+ 1135, 1137, 1139, 1141, 1143, 1145, 1147, 1155,
713
+ 1163, 1166, 1169, 1172, 1175, 1178, 1182, 1185,
714
+ 1188, 1191, 1194, 1197, 1200, 1203, 1206, 1209,
715
+ 1212, 1215, 1218, 1221, 1224, 1227, 1230, 1233,
716
+ 1236, 1239, 1242, 1245, 1248, 1251, 1254, 1257,
717
+ 1260, 1263, 1266, 1270, 1273, 1276, 1279, 1282,
718
+ 1285, 1288, 1291, 1294, 1297, 1300, 1303, 1306,
719
+ 1310, 1313, 1316, 1319, 1322, 1325, 1328, 1331,
720
+ 1334, 1337, 1340, 1343, 1346, 1349, 1352, 1355,
721
+ 1358, 1362, 1365, 1369, 1372, 1375, 1378, 1381,
722
+ 1384, 1388, 1391, 1394, 1397, 1400, 1403, 1406,
723
+ 1409, 1412, 1415, 1418, 1421, 1424, 1427, 1430,
724
+ 1433, 1436, 1439, 1442, 1445, 1448, 1451, 1454,
725
+ 1457, 1460, 1463, 1466, 1469, 1472, 1475, 1478,
726
+ 1481, 1484, 1487, 1490, 1493, 1496, 1499, 1502,
727
+ 1505, 1508, 1511, 1515, 1518, 1521, 1524, 1527,
728
+ 1530, 1533, 1536, 1539, 1542, 1545, 1548, 1551,
729
+ 1554, 1557, 1560, 1563, 1566, 1569, 1572, 1575,
730
+ 1578, 1581, 1584, 1587, 1590, 1593, 1596, 1599,
731
+ 1602, 1605, 1608, 1611, 1614, 1617, 1620, 1623,
732
+ 1625, 1627, 1629, 1631, 1633, 1635, 1638, 1640,
733
+ 1642, 1644, 1646, 1648, 1650, 1652, 1654, 1656,
734
+ 1658, 1660, 1662, 1664, 1666, 1669, 1671, 1673,
735
+ 1675, 1677, 1679, 1681, 1683, 1685, 1687, 1689,
736
+ 1691, 1693, 1695, 1697, 1699, 1701, 1703, 1705,
737
+ 1707, 1709, 1712, 1714, 1716, 1718, 1720, 1727,
738
+ 1732, 1735, 1738, 1741, 1744, 1747, 1750, 1753,
739
+ 1756, 1759, 1762, 1765, 1768, 1771, 1774, 1777,
740
+ 1780, 1783, 1786, 1789, 1792, 1795, 1798, 1801,
741
+ 1804, 1807, 1810, 1813, 1816, 1819, 1822, 1825,
742
+ 1828, 1831, 1834, 1837, 1840, 1843, 1846, 1849,
743
+ 1852, 1855, 1858, 1861, 1864, 1867, 1870, 1873,
744
+ 1875, 1877, 1886, 1897, 1900, 1903, 1906, 1909,
745
+ 1912, 1915, 1918, 1921, 1924, 1927, 1930, 1933,
746
+ 1936, 1939, 1944, 1947, 1951, 1954, 1957, 1961,
747
+ 1964, 1967, 1970, 1973, 1977, 1980, 1983, 1986,
748
+ 1989, 1992, 1995, 1998, 2001, 2004, 2007, 2010,
749
+ 2013, 2016, 2019, 2022, 2025, 2028, 2031, 2034,
750
+ 2037, 2040, 2043, 2046, 2049, 2052, 2056, 2059,
751
+ 2062, 2065, 2068, 2071, 2074, 2078, 2081, 2084,
752
+ 2087, 2090, 2093, 2096, 2099, 2102, 2105, 2108,
753
+ 2111, 2114, 2118, 2121, 2124, 2127, 2130, 2133,
754
+ 2136, 2139, 2142, 2145, 2148, 2151, 2154, 2157,
755
+ 2160, 2163, 2166, 2170, 2173, 2176, 2179, 2182,
756
+ 2185, 2189, 2192, 2195, 2198, 2201, 2204, 2207,
757
+ 2210, 2213, 2216, 2219, 2222, 2225, 2228, 2231,
758
+ 2234, 2237, 2240, 2243, 2246, 2249, 2252, 2255,
759
+ 2258, 2261, 2264, 2267, 2270, 2273, 2276, 2279,
760
+ 2282, 2285, 2288, 2291, 2294, 2297, 2300, 2303,
761
+ 2306, 2309, 2312, 2315, 2318, 2321, 2324, 2327,
762
+ 2330, 2333, 2336, 2339, 2342, 2345, 2348, 2351,
763
+ 2354, 2357, 2360, 2363, 2366, 2369, 2372, 2375,
764
+ 2378, 2381, 2384, 2387, 2390, 2393, 2396, 2399,
765
+ 2402, 2405, 2408, 2411, 2414, 2417, 2419, 2421,
766
+ 2423, 2425, 2427, 2429, 2431, 2434, 2436, 2438,
767
+ 2440, 2442, 2444, 2446, 2448, 2450, 2452, 2454,
768
+ 2456, 2458, 2460, 2462, 2464, 2466, 2468, 2470,
769
+ 2472, 2474, 2476, 2478, 2480, 2482, 2484, 2486,
770
+ 2488, 2490, 2492, 2494, 2496, 2498, 2500, 2502,
771
+ 2504, 2506, 2508, 2510, 2512, 2514, 2516, 2519,
772
+ 2521, 2523, 2525, 2527, 2529, 2531, 2533, 2535,
773
+ 2537, 2539, 2541, 2543, 2545, 2547, 2549, 2551,
774
+ 2553, 2555, 2557, 2559, 2561, 2563, 2565, 2567
775
+ };
776
+
777
+ static const short _lexer_trans_targs[] = {
778
+ 2, 869, 10, 10, 11, 21, 23, 7,
779
+ 37, 40, 10, 0, 3, 46, 7, 56,
780
+ 355, 526, 548, 796, 851, 0, 4, 0,
781
+ 5, 0, 6, 0, 7, 0, 8, 0,
782
+ 0, 9, 10, 22, 9, 2, 10, 10,
783
+ 11, 21, 23, 7, 37, 40, 10, 0,
784
+ 12, 0, 13, 0, 15, 14, 14, 15,
785
+ 14, 14, 16, 16, 17, 16, 16, 16,
786
+ 16, 17, 16, 16, 16, 16, 18, 16,
787
+ 16, 16, 16, 19, 16, 16, 10, 20,
788
+ 20, 0, 10, 20, 20, 0, 10, 22,
789
+ 21, 10, 0, 24, 0, 25, 0, 26,
790
+ 0, 27, 0, 28, 0, 29, 0, 30,
791
+ 0, 31, 0, 32, 0, 33, 0, 34,
792
+ 0, 35, 0, 36, 0, 871, 0, 0,
793
+ 0, 0, 0, 38, 39, 10, 39, 39,
794
+ 37, 38, 38, 10, 39, 37, 39, 0,
795
+ 40, 41, 40, 0, 45, 44, 43, 41,
796
+ 44, 42, 0, 43, 41, 42, 0, 43,
797
+ 42, 45, 44, 43, 41, 44, 42, 2,
798
+ 45, 45, 11, 21, 23, 7, 37, 40,
799
+ 45, 0, 47, 0, 48, 0, 49, 0,
800
+ 50, 0, 51, 0, 52, 0, 53, 0,
801
+ 54, 0, 55, 0, 7, 7, 7, 0,
802
+ 57, 0, 58, 62, 0, 59, 0, 60,
803
+ 0, 61, 8, 0, 7, 0, 63, 0,
804
+ 64, 0, 65, 0, 66, 234, 0, 67,
805
+ 0, 68, 0, 69, 0, 70, 0, 71,
806
+ 0, 72, 0, 73, 0, 74, 0, 75,
807
+ 0, 77, 76, 77, 76, 78, 77, 77,
808
+ 10, 220, 83, 10, 77, 76, 79, 85,
809
+ 83, 95, 112, 126, 142, 152, 202, 77,
810
+ 76, 80, 77, 76, 81, 77, 76, 82,
811
+ 77, 76, 83, 77, 76, 77, 84, 76,
812
+ 2, 10, 10, 11, 21, 23, 7, 37,
813
+ 40, 10, 0, 86, 77, 76, 87, 77,
814
+ 76, 88, 77, 76, 89, 77, 76, 90,
815
+ 77, 76, 91, 77, 76, 92, 77, 76,
816
+ 93, 77, 76, 94, 77, 76, 83, 83,
817
+ 83, 77, 76, 96, 77, 76, 97, 101,
818
+ 77, 76, 98, 77, 76, 99, 77, 76,
819
+ 100, 77, 84, 76, 83, 77, 76, 102,
820
+ 77, 76, 103, 77, 76, 104, 77, 76,
821
+ 105, 77, 76, 106, 77, 76, 107, 77,
822
+ 76, 108, 77, 76, 109, 77, 76, 110,
823
+ 77, 76, 111, 77, 76, 77, 84, 76,
824
+ 113, 77, 76, 114, 77, 76, 115, 77,
825
+ 76, 116, 77, 76, 117, 77, 76, 118,
826
+ 77, 76, 119, 77, 76, 120, 77, 76,
827
+ 121, 77, 76, 122, 77, 76, 123, 77,
828
+ 76, 124, 77, 76, 125, 77, 76, 109,
829
+ 77, 76, 127, 131, 77, 76, 128, 77,
830
+ 76, 129, 77, 76, 130, 77, 76, 100,
831
+ 77, 76, 132, 77, 76, 133, 77, 76,
832
+ 134, 77, 76, 135, 77, 76, 136, 77,
833
+ 76, 137, 77, 76, 138, 77, 76, 139,
834
+ 77, 76, 140, 77, 76, 141, 77, 76,
835
+ 111, 77, 76, 143, 77, 76, 144, 77,
836
+ 76, 145, 77, 76, 146, 77, 76, 147,
837
+ 77, 76, 148, 77, 76, 149, 77, 76,
838
+ 150, 77, 76, 151, 77, 76, 111, 77,
839
+ 76, 153, 158, 77, 76, 154, 77, 76,
840
+ 155, 77, 76, 156, 77, 76, 157, 77,
841
+ 76, 140, 77, 76, 159, 190, 77, 76,
842
+ 160, 77, 76, 161, 77, 76, 162, 77,
843
+ 76, 163, 77, 76, 164, 77, 76, 165,
844
+ 77, 76, 166, 77, 76, 167, 77, 76,
845
+ 168, 77, 76, 169, 77, 76, 170, 77,
846
+ 76, 171, 77, 76, 172, 77, 76, 173,
847
+ 77, 76, 77, 174, 76, 175, 77, 76,
848
+ 176, 77, 76, 177, 77, 76, 178, 77,
849
+ 76, 179, 77, 76, 180, 77, 76, 181,
850
+ 77, 76, 182, 77, 76, 183, 77, 76,
851
+ 184, 77, 76, 185, 77, 76, 186, 77,
852
+ 76, 187, 77, 76, 188, 77, 76, 189,
853
+ 77, 76, 140, 77, 76, 191, 77, 76,
854
+ 192, 77, 76, 193, 77, 76, 194, 77,
855
+ 76, 195, 77, 76, 196, 77, 76, 197,
856
+ 77, 76, 198, 77, 76, 199, 77, 76,
857
+ 200, 77, 76, 201, 77, 76, 111, 77,
858
+ 76, 203, 77, 76, 204, 77, 76, 205,
859
+ 77, 76, 206, 77, 76, 207, 77, 76,
860
+ 208, 77, 76, 209, 77, 76, 210, 77,
861
+ 76, 211, 77, 76, 212, 77, 76, 213,
862
+ 77, 76, 214, 77, 76, 215, 77, 76,
863
+ 216, 77, 76, 217, 77, 76, 218, 77,
864
+ 76, 219, 77, 76, 120, 77, 76, 77,
865
+ 221, 76, 77, 222, 76, 77, 223, 76,
866
+ 77, 224, 76, 77, 225, 76, 77, 226,
867
+ 76, 77, 227, 76, 77, 228, 76, 77,
868
+ 229, 76, 77, 230, 76, 77, 231, 76,
869
+ 77, 232, 76, 77, 233, 76, 77, 10,
870
+ 76, 235, 0, 236, 0, 237, 0, 238,
871
+ 0, 239, 0, 240, 0, 241, 0, 243,
872
+ 242, 243, 242, 244, 243, 243, 10, 341,
873
+ 249, 10, 243, 242, 245, 250, 249, 260,
874
+ 266, 283, 299, 309, 323, 243, 242, 246,
875
+ 243, 242, 247, 243, 242, 248, 243, 242,
876
+ 249, 243, 242, 243, 84, 242, 251, 243,
877
+ 242, 252, 243, 242, 253, 243, 242, 254,
878
+ 243, 242, 255, 243, 242, 256, 243, 242,
879
+ 257, 243, 242, 258, 243, 242, 259, 243,
880
+ 242, 249, 249, 249, 243, 242, 261, 243,
881
+ 242, 262, 243, 242, 263, 243, 242, 264,
882
+ 243, 242, 265, 243, 84, 242, 249, 243,
883
+ 242, 267, 243, 242, 268, 243, 242, 269,
884
+ 243, 242, 270, 243, 242, 271, 243, 242,
885
+ 272, 243, 242, 273, 243, 242, 274, 243,
886
+ 242, 275, 243, 242, 276, 243, 242, 277,
887
+ 243, 242, 278, 243, 242, 279, 243, 242,
888
+ 280, 243, 242, 281, 243, 242, 282, 243,
889
+ 242, 243, 84, 242, 284, 288, 243, 242,
890
+ 285, 243, 242, 286, 243, 242, 287, 243,
891
+ 242, 265, 243, 242, 289, 243, 242, 290,
892
+ 243, 242, 291, 243, 242, 292, 243, 242,
893
+ 293, 243, 242, 294, 243, 242, 295, 243,
894
+ 242, 296, 243, 242, 297, 243, 242, 298,
895
+ 243, 242, 282, 243, 242, 300, 243, 242,
896
+ 301, 243, 242, 302, 243, 242, 303, 243,
897
+ 242, 304, 243, 242, 305, 243, 242, 306,
898
+ 243, 242, 307, 243, 242, 308, 243, 242,
899
+ 282, 243, 242, 310, 243, 242, 311, 243,
900
+ 242, 312, 243, 242, 313, 243, 242, 314,
901
+ 243, 242, 315, 243, 242, 316, 243, 242,
902
+ 317, 243, 242, 318, 243, 242, 319, 243,
903
+ 242, 320, 243, 242, 321, 243, 242, 322,
904
+ 243, 242, 282, 243, 242, 324, 243, 242,
905
+ 325, 243, 242, 326, 243, 242, 327, 243,
906
+ 242, 328, 243, 242, 329, 243, 242, 330,
907
+ 243, 242, 331, 243, 242, 332, 243, 242,
908
+ 333, 243, 242, 334, 243, 242, 335, 243,
909
+ 242, 336, 243, 242, 337, 243, 242, 338,
910
+ 243, 242, 339, 243, 242, 340, 243, 242,
911
+ 274, 243, 242, 243, 342, 242, 243, 343,
912
+ 242, 243, 344, 242, 243, 345, 242, 243,
913
+ 346, 242, 243, 347, 242, 243, 348, 242,
914
+ 243, 349, 242, 243, 350, 242, 243, 351,
915
+ 242, 243, 352, 242, 243, 353, 242, 243,
916
+ 354, 242, 243, 10, 242, 356, 0, 357,
917
+ 0, 358, 0, 359, 0, 360, 0, 361,
918
+ 0, 362, 0, 363, 0, 364, 0, 365,
919
+ 0, 366, 0, 367, 0, 368, 0, 369,
920
+ 0, 370, 0, 371, 0, 372, 0, 374,
921
+ 373, 374, 373, 375, 374, 374, 10, 512,
922
+ 10, 374, 373, 376, 395, 407, 423, 442,
923
+ 494, 374, 373, 377, 374, 373, 378, 374,
924
+ 373, 379, 374, 373, 380, 374, 373, 381,
925
+ 374, 373, 382, 391, 374, 373, 383, 374,
926
+ 373, 384, 374, 373, 385, 374, 373, 386,
927
+ 374, 373, 387, 374, 373, 388, 374, 373,
928
+ 389, 374, 373, 390, 374, 373, 374, 84,
929
+ 373, 392, 374, 373, 393, 374, 373, 394,
930
+ 374, 373, 388, 374, 373, 396, 374, 373,
931
+ 397, 374, 373, 398, 374, 373, 399, 374,
932
+ 373, 400, 374, 373, 401, 374, 373, 402,
933
+ 374, 373, 403, 374, 373, 404, 374, 373,
934
+ 405, 374, 373, 406, 374, 373, 386, 374,
935
+ 373, 408, 374, 373, 409, 374, 373, 410,
936
+ 374, 373, 411, 417, 374, 373, 412, 374,
937
+ 373, 413, 374, 373, 414, 374, 373, 415,
938
+ 374, 373, 416, 374, 373, 390, 374, 373,
939
+ 418, 374, 373, 419, 374, 373, 420, 374,
940
+ 373, 421, 374, 373, 422, 374, 373, 415,
941
+ 374, 373, 424, 431, 374, 373, 425, 374,
942
+ 373, 426, 374, 373, 427, 374, 373, 428,
943
+ 374, 373, 429, 374, 373, 430, 374, 373,
944
+ 419, 374, 373, 432, 374, 373, 433, 374,
945
+ 373, 434, 374, 373, 435, 374, 373, 436,
946
+ 374, 373, 437, 374, 373, 438, 374, 373,
947
+ 439, 374, 373, 440, 374, 373, 441, 374,
948
+ 84, 373, 390, 374, 373, 443, 448, 374,
949
+ 373, 444, 374, 373, 445, 374, 373, 446,
950
+ 374, 373, 447, 374, 373, 415, 374, 373,
951
+ 449, 480, 374, 373, 450, 374, 373, 451,
952
+ 374, 373, 452, 374, 373, 453, 374, 373,
953
+ 454, 374, 373, 455, 374, 373, 456, 374,
954
+ 373, 457, 374, 373, 458, 374, 373, 459,
955
+ 374, 373, 460, 374, 373, 461, 374, 373,
956
+ 462, 374, 373, 463, 374, 373, 374, 464,
957
+ 373, 465, 374, 373, 466, 374, 373, 467,
958
+ 374, 373, 468, 374, 373, 469, 374, 373,
959
+ 470, 374, 373, 471, 374, 373, 472, 374,
960
+ 373, 473, 374, 373, 474, 374, 373, 475,
961
+ 374, 373, 476, 374, 373, 477, 374, 373,
962
+ 478, 374, 373, 479, 374, 373, 415, 374,
963
+ 373, 481, 374, 373, 482, 374, 373, 483,
964
+ 374, 373, 484, 374, 373, 485, 374, 373,
965
+ 486, 374, 373, 487, 374, 373, 488, 374,
966
+ 373, 489, 374, 373, 490, 374, 373, 491,
967
+ 492, 374, 373, 390, 374, 373, 493, 374,
968
+ 373, 441, 374, 373, 495, 374, 373, 496,
969
+ 374, 373, 497, 374, 373, 498, 374, 373,
970
+ 499, 374, 373, 500, 374, 373, 501, 374,
971
+ 373, 502, 374, 373, 503, 374, 373, 504,
972
+ 374, 373, 505, 374, 373, 506, 374, 373,
973
+ 507, 374, 373, 508, 374, 373, 509, 374,
974
+ 373, 510, 374, 373, 511, 374, 373, 403,
975
+ 374, 373, 374, 513, 373, 374, 514, 373,
976
+ 374, 515, 373, 374, 516, 373, 374, 517,
977
+ 373, 374, 518, 373, 374, 519, 373, 374,
978
+ 520, 373, 374, 521, 373, 374, 522, 373,
979
+ 374, 523, 373, 374, 524, 373, 374, 525,
980
+ 373, 374, 10, 373, 527, 531, 0, 528,
981
+ 0, 529, 0, 530, 0, 61, 0, 532,
982
+ 0, 533, 0, 534, 540, 0, 535, 0,
983
+ 536, 0, 537, 0, 538, 0, 539, 0,
984
+ 74, 0, 541, 0, 542, 0, 543, 0,
985
+ 544, 0, 545, 0, 546, 0, 547, 0,
986
+ 371, 0, 549, 560, 0, 550, 0, 551,
987
+ 0, 552, 0, 553, 0, 554, 0, 555,
988
+ 0, 556, 0, 557, 0, 558, 0, 559,
989
+ 0, 538, 0, 561, 0, 562, 0, 563,
990
+ 0, 564, 0, 565, 0, 566, 0, 567,
991
+ 0, 568, 0, 569, 0, 570, 623, 0,
992
+ 571, 0, 572, 0, 574, 573, 574, 573,
993
+ 575, 574, 574, 10, 10, 574, 573, 576,
994
+ 593, 605, 574, 573, 577, 574, 573, 578,
995
+ 574, 573, 579, 574, 573, 580, 574, 573,
996
+ 581, 574, 573, 582, 574, 573, 583, 574,
997
+ 573, 584, 574, 573, 585, 574, 573, 586,
998
+ 574, 573, 587, 574, 573, 588, 574, 573,
999
+ 589, 574, 573, 590, 574, 573, 591, 574,
1000
+ 573, 592, 574, 573, 574, 84, 573, 594,
1001
+ 574, 573, 595, 574, 573, 596, 574, 573,
1002
+ 597, 574, 573, 598, 574, 573, 599, 574,
1003
+ 573, 600, 574, 573, 601, 574, 573, 602,
1004
+ 574, 573, 603, 574, 573, 604, 574, 573,
1005
+ 592, 574, 573, 606, 574, 573, 607, 574,
1006
+ 573, 608, 574, 573, 609, 574, 573, 610,
1007
+ 574, 573, 611, 574, 573, 612, 574, 573,
1008
+ 613, 574, 573, 614, 574, 573, 615, 574,
1009
+ 573, 616, 574, 573, 617, 574, 573, 618,
1010
+ 574, 573, 619, 574, 573, 620, 574, 573,
1011
+ 621, 574, 573, 622, 574, 573, 584, 574,
1012
+ 573, 625, 624, 625, 624, 626, 625, 625,
1013
+ 10, 782, 631, 10, 625, 624, 627, 632,
1014
+ 631, 642, 665, 677, 697, 714, 764, 625,
1015
+ 624, 628, 625, 624, 629, 625, 624, 630,
1016
+ 625, 624, 631, 625, 624, 625, 84, 624,
1017
+ 633, 625, 624, 634, 625, 624, 635, 625,
1018
+ 624, 636, 625, 624, 637, 625, 624, 638,
1019
+ 625, 624, 639, 625, 624, 640, 625, 624,
1020
+ 641, 625, 624, 631, 631, 631, 625, 624,
1021
+ 643, 625, 624, 644, 648, 625, 624, 645,
1022
+ 625, 624, 646, 625, 624, 647, 625, 84,
1023
+ 624, 631, 625, 624, 649, 625, 624, 650,
1024
+ 625, 624, 651, 625, 624, 652, 661, 625,
1025
+ 624, 653, 625, 624, 654, 625, 624, 655,
1026
+ 625, 624, 656, 625, 624, 657, 625, 624,
1027
+ 658, 625, 624, 659, 625, 624, 660, 625,
1028
+ 624, 625, 84, 624, 662, 625, 624, 663,
1029
+ 625, 624, 664, 625, 624, 658, 625, 624,
1030
+ 666, 625, 624, 667, 625, 624, 668, 625,
1031
+ 624, 669, 625, 624, 670, 625, 624, 671,
1032
+ 625, 624, 672, 625, 624, 673, 625, 624,
1033
+ 674, 625, 624, 675, 625, 624, 676, 625,
1034
+ 624, 656, 625, 624, 678, 682, 625, 624,
1035
+ 679, 625, 624, 680, 625, 624, 681, 625,
1036
+ 624, 647, 625, 624, 683, 625, 624, 684,
1037
+ 625, 624, 685, 691, 625, 624, 686, 625,
1038
+ 624, 687, 625, 624, 688, 625, 624, 689,
1039
+ 625, 624, 690, 625, 624, 660, 625, 624,
1040
+ 692, 625, 624, 693, 625, 624, 694, 625,
1041
+ 624, 695, 625, 624, 696, 625, 624, 689,
1042
+ 625, 624, 698, 705, 625, 624, 699, 625,
1043
+ 624, 700, 625, 624, 701, 625, 624, 702,
1044
+ 625, 624, 703, 625, 624, 704, 625, 624,
1045
+ 693, 625, 624, 706, 625, 624, 707, 625,
1046
+ 624, 708, 625, 624, 709, 625, 624, 710,
1047
+ 625, 624, 711, 625, 624, 712, 625, 624,
1048
+ 713, 625, 624, 660, 625, 624, 715, 720,
1049
+ 625, 624, 716, 625, 624, 717, 625, 624,
1050
+ 718, 625, 624, 719, 625, 624, 689, 625,
1051
+ 624, 721, 752, 625, 624, 722, 625, 624,
1052
+ 723, 625, 624, 724, 625, 624, 725, 625,
1053
+ 624, 726, 625, 624, 727, 625, 624, 728,
1054
+ 625, 624, 729, 625, 624, 730, 625, 624,
1055
+ 731, 625, 624, 732, 625, 624, 733, 625,
1056
+ 624, 734, 625, 624, 735, 625, 624, 625,
1057
+ 736, 624, 737, 625, 624, 738, 625, 624,
1058
+ 739, 625, 624, 740, 625, 624, 741, 625,
1059
+ 624, 742, 625, 624, 743, 625, 624, 744,
1060
+ 625, 624, 745, 625, 624, 746, 625, 624,
1061
+ 747, 625, 624, 748, 625, 624, 749, 625,
1062
+ 624, 750, 625, 624, 751, 625, 624, 689,
1063
+ 625, 624, 753, 625, 624, 754, 625, 624,
1064
+ 755, 625, 624, 756, 625, 624, 757, 625,
1065
+ 624, 758, 625, 624, 759, 625, 624, 760,
1066
+ 625, 624, 761, 625, 624, 762, 625, 624,
1067
+ 763, 625, 624, 660, 625, 624, 765, 625,
1068
+ 624, 766, 625, 624, 767, 625, 624, 768,
1069
+ 625, 624, 769, 625, 624, 770, 625, 624,
1070
+ 771, 625, 624, 772, 625, 624, 773, 625,
1071
+ 624, 774, 625, 624, 775, 625, 624, 776,
1072
+ 625, 624, 777, 625, 624, 778, 625, 624,
1073
+ 779, 625, 624, 780, 625, 624, 781, 625,
1074
+ 624, 673, 625, 624, 625, 783, 624, 625,
1075
+ 784, 624, 625, 785, 624, 625, 786, 624,
1076
+ 625, 787, 624, 625, 788, 624, 625, 789,
1077
+ 624, 625, 790, 624, 625, 791, 624, 625,
1078
+ 792, 624, 625, 793, 624, 625, 794, 624,
1079
+ 625, 795, 624, 625, 10, 624, 797, 804,
1080
+ 0, 798, 0, 799, 0, 800, 0, 801,
1081
+ 0, 802, 0, 803, 0, 240, 0, 805,
1082
+ 836, 0, 806, 0, 807, 0, 808, 0,
1083
+ 809, 0, 810, 0, 811, 0, 812, 0,
1084
+ 813, 0, 814, 0, 815, 0, 816, 0,
1085
+ 817, 0, 818, 0, 819, 0, 820, 0,
1086
+ 821, 0, 822, 0, 823, 0, 824, 0,
1087
+ 825, 0, 826, 0, 827, 0, 828, 0,
1088
+ 829, 0, 830, 0, 831, 0, 832, 0,
1089
+ 833, 0, 834, 0, 835, 0, 802, 0,
1090
+ 837, 0, 838, 0, 839, 0, 840, 0,
1091
+ 841, 0, 842, 0, 843, 0, 844, 0,
1092
+ 845, 0, 846, 0, 847, 849, 0, 848,
1093
+ 0, 623, 0, 850, 0, 570, 0, 852,
1094
+ 0, 853, 0, 854, 0, 855, 0, 856,
1095
+ 0, 857, 0, 858, 0, 859, 0, 860,
1096
+ 0, 861, 0, 862, 0, 863, 0, 864,
1097
+ 0, 865, 0, 866, 0, 867, 0, 868,
1098
+ 0, 363, 0, 870, 0, 10, 0, 0,
1099
+ 0
1100
+ };
1101
+
1102
+ static const unsigned char _lexer_trans_actions[] = {
1103
+ 29, 0, 54, 0, 5, 1, 0, 29,
1104
+ 1, 35, 0, 43, 0, 0, 0, 0,
1105
+ 0, 0, 0, 0, 0, 43, 0, 43,
1106
+ 0, 43, 0, 43, 0, 43, 0, 43,
1107
+ 43, 57, 110, 23, 0, 29, 54, 0,
1108
+ 5, 1, 0, 29, 1, 35, 0, 43,
1109
+ 0, 43, 0, 43, 135, 48, 9, 106,
1110
+ 11, 0, 130, 45, 45, 45, 3, 122,
1111
+ 33, 33, 33, 0, 122, 33, 33, 33,
1112
+ 0, 122, 33, 0, 33, 0, 102, 7,
1113
+ 7, 43, 54, 0, 0, 43, 114, 25,
1114
+ 0, 54, 43, 0, 43, 0, 43, 0,
1115
+ 43, 0, 43, 0, 43, 0, 43, 0,
1116
+ 43, 0, 43, 0, 43, 0, 43, 0,
1117
+ 43, 0, 43, 0, 43, 0, 43, 43,
1118
+ 43, 43, 43, 0, 27, 118, 27, 27,
1119
+ 51, 27, 0, 54, 0, 1, 0, 43,
1120
+ 0, 0, 0, 43, 54, 37, 37, 87,
1121
+ 37, 37, 43, 0, 39, 0, 43, 0,
1122
+ 0, 54, 0, 0, 39, 0, 0, 96,
1123
+ 54, 0, 93, 90, 41, 96, 90, 99,
1124
+ 0, 43, 0, 43, 0, 43, 0, 43,
1125
+ 0, 43, 0, 43, 0, 43, 0, 43,
1126
+ 0, 43, 0, 43, 0, 0, 0, 43,
1127
+ 0, 43, 0, 0, 43, 0, 43, 0,
1128
+ 43, 0, 0, 43, 0, 43, 0, 43,
1129
+ 0, 43, 0, 43, 0, 0, 43, 0,
1130
+ 43, 0, 43, 0, 43, 0, 43, 0,
1131
+ 43, 0, 43, 0, 43, 0, 43, 0,
1132
+ 43, 140, 57, 54, 0, 84, 54, 0,
1133
+ 72, 33, 84, 72, 0, 0, 0, 0,
1134
+ 0, 0, 0, 0, 0, 0, 0, 54,
1135
+ 0, 0, 54, 0, 0, 54, 0, 0,
1136
+ 54, 0, 0, 54, 0, 54, 15, 0,
1137
+ 63, 126, 31, 60, 57, 31, 63, 57,
1138
+ 66, 31, 43, 0, 54, 0, 0, 54,
1139
+ 0, 0, 54, 0, 0, 54, 0, 0,
1140
+ 54, 0, 0, 54, 0, 0, 54, 0,
1141
+ 0, 54, 0, 0, 54, 0, 0, 0,
1142
+ 0, 54, 0, 0, 54, 0, 0, 0,
1143
+ 54, 0, 0, 54, 0, 0, 54, 0,
1144
+ 0, 54, 15, 0, 0, 54, 0, 0,
1145
+ 54, 0, 0, 54, 0, 0, 54, 0,
1146
+ 0, 54, 0, 0, 54, 0, 0, 54,
1147
+ 0, 0, 54, 0, 0, 54, 0, 0,
1148
+ 54, 0, 0, 54, 0, 54, 15, 0,
1149
+ 0, 54, 0, 0, 54, 0, 0, 54,
1150
+ 0, 0, 54, 0, 0, 54, 0, 0,
1151
+ 54, 0, 0, 54, 0, 0, 54, 0,
1152
+ 0, 54, 0, 0, 54, 0, 0, 54,
1153
+ 0, 0, 54, 0, 0, 54, 0, 0,
1154
+ 54, 0, 0, 0, 54, 0, 0, 54,
1155
+ 0, 0, 54, 0, 0, 54, 0, 0,
1156
+ 54, 0, 0, 54, 0, 0, 54, 0,
1157
+ 0, 54, 0, 0, 54, 0, 0, 54,
1158
+ 0, 0, 54, 0, 0, 54, 0, 0,
1159
+ 54, 0, 0, 54, 0, 0, 54, 0,
1160
+ 0, 54, 0, 0, 54, 0, 0, 54,
1161
+ 0, 0, 54, 0, 0, 54, 0, 0,
1162
+ 54, 0, 0, 54, 0, 0, 54, 0,
1163
+ 0, 54, 0, 0, 54, 0, 0, 54,
1164
+ 0, 0, 0, 54, 0, 0, 54, 0,
1165
+ 0, 54, 0, 0, 54, 0, 0, 54,
1166
+ 0, 0, 54, 0, 0, 0, 54, 0,
1167
+ 0, 54, 0, 0, 54, 0, 0, 54,
1168
+ 0, 0, 54, 0, 0, 54, 0, 0,
1169
+ 54, 0, 0, 54, 0, 0, 54, 0,
1170
+ 0, 54, 0, 0, 54, 0, 0, 54,
1171
+ 0, 0, 54, 0, 0, 54, 0, 0,
1172
+ 54, 0, 54, 0, 0, 0, 54, 0,
1173
+ 0, 54, 0, 0, 54, 0, 0, 54,
1174
+ 0, 0, 54, 0, 0, 54, 0, 0,
1175
+ 54, 0, 0, 54, 0, 0, 54, 0,
1176
+ 0, 54, 0, 0, 54, 0, 0, 54,
1177
+ 0, 0, 54, 0, 0, 54, 0, 0,
1178
+ 54, 0, 0, 54, 0, 0, 54, 0,
1179
+ 0, 54, 0, 0, 54, 0, 0, 54,
1180
+ 0, 0, 54, 0, 0, 54, 0, 0,
1181
+ 54, 0, 0, 54, 0, 0, 54, 0,
1182
+ 0, 54, 0, 0, 54, 0, 0, 54,
1183
+ 0, 0, 54, 0, 0, 54, 0, 0,
1184
+ 54, 0, 0, 54, 0, 0, 54, 0,
1185
+ 0, 54, 0, 0, 54, 0, 0, 54,
1186
+ 0, 0, 54, 0, 0, 54, 0, 0,
1187
+ 54, 0, 0, 54, 0, 0, 54, 0,
1188
+ 0, 54, 0, 0, 54, 0, 0, 54,
1189
+ 0, 0, 54, 0, 0, 54, 0, 54,
1190
+ 0, 0, 54, 0, 0, 54, 0, 0,
1191
+ 54, 0, 0, 54, 0, 0, 54, 0,
1192
+ 0, 54, 0, 0, 54, 0, 0, 54,
1193
+ 0, 0, 54, 0, 0, 54, 0, 0,
1194
+ 54, 0, 0, 54, 0, 0, 54, 15,
1195
+ 0, 0, 43, 0, 43, 0, 43, 0,
1196
+ 43, 0, 43, 0, 43, 0, 43, 140,
1197
+ 57, 54, 0, 84, 54, 0, 78, 33,
1198
+ 84, 78, 0, 0, 0, 0, 0, 0,
1199
+ 0, 0, 0, 0, 0, 54, 0, 0,
1200
+ 54, 0, 0, 54, 0, 0, 54, 0,
1201
+ 0, 54, 0, 54, 19, 0, 0, 54,
1202
+ 0, 0, 54, 0, 0, 54, 0, 0,
1203
+ 54, 0, 0, 54, 0, 0, 54, 0,
1204
+ 0, 54, 0, 0, 54, 0, 0, 54,
1205
+ 0, 0, 0, 0, 54, 0, 0, 54,
1206
+ 0, 0, 54, 0, 0, 54, 0, 0,
1207
+ 54, 0, 0, 54, 19, 0, 0, 54,
1208
+ 0, 0, 54, 0, 0, 54, 0, 0,
1209
+ 54, 0, 0, 54, 0, 0, 54, 0,
1210
+ 0, 54, 0, 0, 54, 0, 0, 54,
1211
+ 0, 0, 54, 0, 0, 54, 0, 0,
1212
+ 54, 0, 0, 54, 0, 0, 54, 0,
1213
+ 0, 54, 0, 0, 54, 0, 0, 54,
1214
+ 0, 54, 19, 0, 0, 0, 54, 0,
1215
+ 0, 54, 0, 0, 54, 0, 0, 54,
1216
+ 0, 0, 54, 0, 0, 54, 0, 0,
1217
+ 54, 0, 0, 54, 0, 0, 54, 0,
1218
+ 0, 54, 0, 0, 54, 0, 0, 54,
1219
+ 0, 0, 54, 0, 0, 54, 0, 0,
1220
+ 54, 0, 0, 54, 0, 0, 54, 0,
1221
+ 0, 54, 0, 0, 54, 0, 0, 54,
1222
+ 0, 0, 54, 0, 0, 54, 0, 0,
1223
+ 54, 0, 0, 54, 0, 0, 54, 0,
1224
+ 0, 54, 0, 0, 54, 0, 0, 54,
1225
+ 0, 0, 54, 0, 0, 54, 0, 0,
1226
+ 54, 0, 0, 54, 0, 0, 54, 0,
1227
+ 0, 54, 0, 0, 54, 0, 0, 54,
1228
+ 0, 0, 54, 0, 0, 54, 0, 0,
1229
+ 54, 0, 0, 54, 0, 0, 54, 0,
1230
+ 0, 54, 0, 0, 54, 0, 0, 54,
1231
+ 0, 0, 54, 0, 0, 54, 0, 0,
1232
+ 54, 0, 0, 54, 0, 0, 54, 0,
1233
+ 0, 54, 0, 0, 54, 0, 0, 54,
1234
+ 0, 0, 54, 0, 0, 54, 0, 0,
1235
+ 54, 0, 0, 54, 0, 0, 54, 0,
1236
+ 0, 54, 0, 54, 0, 0, 54, 0,
1237
+ 0, 54, 0, 0, 54, 0, 0, 54,
1238
+ 0, 0, 54, 0, 0, 54, 0, 0,
1239
+ 54, 0, 0, 54, 0, 0, 54, 0,
1240
+ 0, 54, 0, 0, 54, 0, 0, 54,
1241
+ 0, 0, 54, 19, 0, 0, 43, 0,
1242
+ 43, 0, 43, 0, 43, 0, 43, 0,
1243
+ 43, 0, 43, 0, 43, 0, 43, 0,
1244
+ 43, 0, 43, 0, 43, 0, 43, 0,
1245
+ 43, 0, 43, 0, 43, 0, 43, 140,
1246
+ 57, 54, 0, 84, 54, 0, 69, 33,
1247
+ 69, 0, 0, 0, 0, 0, 0, 0,
1248
+ 0, 54, 0, 0, 54, 0, 0, 54,
1249
+ 0, 0, 54, 0, 0, 54, 0, 0,
1250
+ 54, 0, 0, 0, 54, 0, 0, 54,
1251
+ 0, 0, 54, 0, 0, 54, 0, 0,
1252
+ 54, 0, 0, 54, 0, 0, 54, 0,
1253
+ 0, 54, 0, 0, 54, 0, 54, 13,
1254
+ 0, 0, 54, 0, 0, 54, 0, 0,
1255
+ 54, 0, 0, 54, 0, 0, 54, 0,
1256
+ 0, 54, 0, 0, 54, 0, 0, 54,
1257
+ 0, 0, 54, 0, 0, 54, 0, 0,
1258
+ 54, 0, 0, 54, 0, 0, 54, 0,
1259
+ 0, 54, 0, 0, 54, 0, 0, 54,
1260
+ 0, 0, 54, 0, 0, 54, 0, 0,
1261
+ 54, 0, 0, 0, 54, 0, 0, 54,
1262
+ 0, 0, 54, 0, 0, 54, 0, 0,
1263
+ 54, 0, 0, 54, 0, 0, 54, 0,
1264
+ 0, 54, 0, 0, 54, 0, 0, 54,
1265
+ 0, 0, 54, 0, 0, 54, 0, 0,
1266
+ 54, 0, 0, 0, 54, 0, 0, 54,
1267
+ 0, 0, 54, 0, 0, 54, 0, 0,
1268
+ 54, 0, 0, 54, 0, 0, 54, 0,
1269
+ 0, 54, 0, 0, 54, 0, 0, 54,
1270
+ 0, 0, 54, 0, 0, 54, 0, 0,
1271
+ 54, 0, 0, 54, 0, 0, 54, 0,
1272
+ 0, 54, 0, 0, 54, 0, 0, 54,
1273
+ 13, 0, 0, 54, 0, 0, 0, 54,
1274
+ 0, 0, 54, 0, 0, 54, 0, 0,
1275
+ 54, 0, 0, 54, 0, 0, 54, 0,
1276
+ 0, 0, 54, 0, 0, 54, 0, 0,
1277
+ 54, 0, 0, 54, 0, 0, 54, 0,
1278
+ 0, 54, 0, 0, 54, 0, 0, 54,
1279
+ 0, 0, 54, 0, 0, 54, 0, 0,
1280
+ 54, 0, 0, 54, 0, 0, 54, 0,
1281
+ 0, 54, 0, 0, 54, 0, 54, 0,
1282
+ 0, 0, 54, 0, 0, 54, 0, 0,
1283
+ 54, 0, 0, 54, 0, 0, 54, 0,
1284
+ 0, 54, 0, 0, 54, 0, 0, 54,
1285
+ 0, 0, 54, 0, 0, 54, 0, 0,
1286
+ 54, 0, 0, 54, 0, 0, 54, 0,
1287
+ 0, 54, 0, 0, 54, 0, 0, 54,
1288
+ 0, 0, 54, 0, 0, 54, 0, 0,
1289
+ 54, 0, 0, 54, 0, 0, 54, 0,
1290
+ 0, 54, 0, 0, 54, 0, 0, 54,
1291
+ 0, 0, 54, 0, 0, 54, 0, 0,
1292
+ 0, 54, 0, 0, 54, 0, 0, 54,
1293
+ 0, 0, 54, 0, 0, 54, 0, 0,
1294
+ 54, 0, 0, 54, 0, 0, 54, 0,
1295
+ 0, 54, 0, 0, 54, 0, 0, 54,
1296
+ 0, 0, 54, 0, 0, 54, 0, 0,
1297
+ 54, 0, 0, 54, 0, 0, 54, 0,
1298
+ 0, 54, 0, 0, 54, 0, 0, 54,
1299
+ 0, 0, 54, 0, 0, 54, 0, 0,
1300
+ 54, 0, 54, 0, 0, 54, 0, 0,
1301
+ 54, 0, 0, 54, 0, 0, 54, 0,
1302
+ 0, 54, 0, 0, 54, 0, 0, 54,
1303
+ 0, 0, 54, 0, 0, 54, 0, 0,
1304
+ 54, 0, 0, 54, 0, 0, 54, 0,
1305
+ 0, 54, 13, 0, 0, 0, 43, 0,
1306
+ 43, 0, 43, 0, 43, 0, 43, 0,
1307
+ 43, 0, 43, 0, 0, 43, 0, 43,
1308
+ 0, 43, 0, 43, 0, 43, 0, 43,
1309
+ 0, 43, 0, 43, 0, 43, 0, 43,
1310
+ 0, 43, 0, 43, 0, 43, 0, 43,
1311
+ 0, 43, 0, 0, 43, 0, 43, 0,
1312
+ 43, 0, 43, 0, 43, 0, 43, 0,
1313
+ 43, 0, 43, 0, 43, 0, 43, 0,
1314
+ 43, 0, 43, 0, 43, 0, 43, 0,
1315
+ 43, 0, 43, 0, 43, 0, 43, 0,
1316
+ 43, 0, 43, 0, 43, 0, 0, 43,
1317
+ 0, 43, 0, 43, 140, 57, 54, 0,
1318
+ 84, 54, 0, 81, 81, 0, 0, 0,
1319
+ 0, 0, 54, 0, 0, 54, 0, 0,
1320
+ 54, 0, 0, 54, 0, 0, 54, 0,
1321
+ 0, 54, 0, 0, 54, 0, 0, 54,
1322
+ 0, 0, 54, 0, 0, 54, 0, 0,
1323
+ 54, 0, 0, 54, 0, 0, 54, 0,
1324
+ 0, 54, 0, 0, 54, 0, 0, 54,
1325
+ 0, 0, 54, 0, 54, 21, 0, 0,
1326
+ 54, 0, 0, 54, 0, 0, 54, 0,
1327
+ 0, 54, 0, 0, 54, 0, 0, 54,
1328
+ 0, 0, 54, 0, 0, 54, 0, 0,
1329
+ 54, 0, 0, 54, 0, 0, 54, 0,
1330
+ 0, 54, 0, 0, 54, 0, 0, 54,
1331
+ 0, 0, 54, 0, 0, 54, 0, 0,
1332
+ 54, 0, 0, 54, 0, 0, 54, 0,
1333
+ 0, 54, 0, 0, 54, 0, 0, 54,
1334
+ 0, 0, 54, 0, 0, 54, 0, 0,
1335
+ 54, 0, 0, 54, 0, 0, 54, 0,
1336
+ 0, 54, 0, 0, 54, 0, 0, 54,
1337
+ 0, 140, 57, 54, 0, 84, 54, 0,
1338
+ 75, 33, 84, 75, 0, 0, 0, 0,
1339
+ 0, 0, 0, 0, 0, 0, 0, 54,
1340
+ 0, 0, 54, 0, 0, 54, 0, 0,
1341
+ 54, 0, 0, 54, 0, 54, 17, 0,
1342
+ 0, 54, 0, 0, 54, 0, 0, 54,
1343
+ 0, 0, 54, 0, 0, 54, 0, 0,
1344
+ 54, 0, 0, 54, 0, 0, 54, 0,
1345
+ 0, 54, 0, 0, 0, 0, 54, 0,
1346
+ 0, 54, 0, 0, 0, 54, 0, 0,
1347
+ 54, 0, 0, 54, 0, 0, 54, 17,
1348
+ 0, 0, 54, 0, 0, 54, 0, 0,
1349
+ 54, 0, 0, 54, 0, 0, 0, 54,
1350
+ 0, 0, 54, 0, 0, 54, 0, 0,
1351
+ 54, 0, 0, 54, 0, 0, 54, 0,
1352
+ 0, 54, 0, 0, 54, 0, 0, 54,
1353
+ 0, 54, 17, 0, 0, 54, 0, 0,
1354
+ 54, 0, 0, 54, 0, 0, 54, 0,
1355
+ 0, 54, 0, 0, 54, 0, 0, 54,
1356
+ 0, 0, 54, 0, 0, 54, 0, 0,
1357
+ 54, 0, 0, 54, 0, 0, 54, 0,
1358
+ 0, 54, 0, 0, 54, 0, 0, 54,
1359
+ 0, 0, 54, 0, 0, 0, 54, 0,
1360
+ 0, 54, 0, 0, 54, 0, 0, 54,
1361
+ 0, 0, 54, 0, 0, 54, 0, 0,
1362
+ 54, 0, 0, 0, 54, 0, 0, 54,
1363
+ 0, 0, 54, 0, 0, 54, 0, 0,
1364
+ 54, 0, 0, 54, 0, 0, 54, 0,
1365
+ 0, 54, 0, 0, 54, 0, 0, 54,
1366
+ 0, 0, 54, 0, 0, 54, 0, 0,
1367
+ 54, 0, 0, 0, 54, 0, 0, 54,
1368
+ 0, 0, 54, 0, 0, 54, 0, 0,
1369
+ 54, 0, 0, 54, 0, 0, 54, 0,
1370
+ 0, 54, 0, 0, 54, 0, 0, 54,
1371
+ 0, 0, 54, 0, 0, 54, 0, 0,
1372
+ 54, 0, 0, 54, 0, 0, 54, 0,
1373
+ 0, 54, 0, 0, 54, 0, 0, 0,
1374
+ 54, 0, 0, 54, 0, 0, 54, 0,
1375
+ 0, 54, 0, 0, 54, 0, 0, 54,
1376
+ 0, 0, 0, 54, 0, 0, 54, 0,
1377
+ 0, 54, 0, 0, 54, 0, 0, 54,
1378
+ 0, 0, 54, 0, 0, 54, 0, 0,
1379
+ 54, 0, 0, 54, 0, 0, 54, 0,
1380
+ 0, 54, 0, 0, 54, 0, 0, 54,
1381
+ 0, 0, 54, 0, 0, 54, 0, 54,
1382
+ 0, 0, 0, 54, 0, 0, 54, 0,
1383
+ 0, 54, 0, 0, 54, 0, 0, 54,
1384
+ 0, 0, 54, 0, 0, 54, 0, 0,
1385
+ 54, 0, 0, 54, 0, 0, 54, 0,
1386
+ 0, 54, 0, 0, 54, 0, 0, 54,
1387
+ 0, 0, 54, 0, 0, 54, 0, 0,
1388
+ 54, 0, 0, 54, 0, 0, 54, 0,
1389
+ 0, 54, 0, 0, 54, 0, 0, 54,
1390
+ 0, 0, 54, 0, 0, 54, 0, 0,
1391
+ 54, 0, 0, 54, 0, 0, 54, 0,
1392
+ 0, 54, 0, 0, 54, 0, 0, 54,
1393
+ 0, 0, 54, 0, 0, 54, 0, 0,
1394
+ 54, 0, 0, 54, 0, 0, 54, 0,
1395
+ 0, 54, 0, 0, 54, 0, 0, 54,
1396
+ 0, 0, 54, 0, 0, 54, 0, 0,
1397
+ 54, 0, 0, 54, 0, 0, 54, 0,
1398
+ 0, 54, 0, 0, 54, 0, 0, 54,
1399
+ 0, 0, 54, 0, 54, 0, 0, 54,
1400
+ 0, 0, 54, 0, 0, 54, 0, 0,
1401
+ 54, 0, 0, 54, 0, 0, 54, 0,
1402
+ 0, 54, 0, 0, 54, 0, 0, 54,
1403
+ 0, 0, 54, 0, 0, 54, 0, 0,
1404
+ 54, 0, 0, 54, 17, 0, 0, 0,
1405
+ 43, 0, 43, 0, 43, 0, 43, 0,
1406
+ 43, 0, 43, 0, 43, 0, 43, 0,
1407
+ 0, 43, 0, 43, 0, 43, 0, 43,
1408
+ 0, 43, 0, 43, 0, 43, 0, 43,
1409
+ 0, 43, 0, 43, 0, 43, 0, 43,
1410
+ 0, 43, 0, 43, 0, 43, 0, 43,
1411
+ 0, 43, 0, 43, 0, 43, 0, 43,
1412
+ 0, 43, 0, 43, 0, 43, 0, 43,
1413
+ 0, 43, 0, 43, 0, 43, 0, 43,
1414
+ 0, 43, 0, 43, 0, 43, 0, 43,
1415
+ 0, 43, 0, 43, 0, 43, 0, 43,
1416
+ 0, 43, 0, 43, 0, 43, 0, 43,
1417
+ 0, 43, 0, 43, 0, 0, 43, 0,
1418
+ 43, 0, 43, 0, 43, 0, 43, 0,
1419
+ 43, 0, 43, 0, 43, 0, 43, 0,
1420
+ 43, 0, 43, 0, 43, 0, 43, 0,
1421
+ 43, 0, 43, 0, 43, 0, 43, 0,
1422
+ 43, 0, 43, 0, 43, 0, 43, 0,
1423
+ 43, 0, 43, 0, 43, 0, 43, 0,
1424
+ 0
1425
+ };
1426
+
1427
+ static const unsigned char _lexer_eof_actions[] = {
1428
+ 0, 43, 43, 43, 43, 43, 43, 43,
1429
+ 43, 43, 43, 43, 43, 43, 43, 43,
1430
+ 43, 43, 43, 43, 43, 43, 43, 43,
1431
+ 43, 43, 43, 43, 43, 43, 43, 43,
1432
+ 43, 43, 43, 43, 43, 43, 43, 43,
1433
+ 43, 43, 43, 43, 43, 43, 43, 43,
1434
+ 43, 43, 43, 43, 43, 43, 43, 43,
1435
+ 43, 43, 43, 43, 43, 43, 43, 43,
1436
+ 43, 43, 43, 43, 43, 43, 43, 43,
1437
+ 43, 43, 43, 43, 43, 43, 43, 43,
1438
+ 43, 43, 43, 43, 43, 43, 43, 43,
1439
+ 43, 43, 43, 43, 43, 43, 43, 43,
1440
+ 43, 43, 43, 43, 43, 43, 43, 43,
1441
+ 43, 43, 43, 43, 43, 43, 43, 43,
1442
+ 43, 43, 43, 43, 43, 43, 43, 43,
1443
+ 43, 43, 43, 43, 43, 43, 43, 43,
1444
+ 43, 43, 43, 43, 43, 43, 43, 43,
1445
+ 43, 43, 43, 43, 43, 43, 43, 43,
1446
+ 43, 43, 43, 43, 43, 43, 43, 43,
1447
+ 43, 43, 43, 43, 43, 43, 43, 43,
1448
+ 43, 43, 43, 43, 43, 43, 43, 43,
1449
+ 43, 43, 43, 43, 43, 43, 43, 43,
1450
+ 43, 43, 43, 43, 43, 43, 43, 43,
1451
+ 43, 43, 43, 43, 43, 43, 43, 43,
1452
+ 43, 43, 43, 43, 43, 43, 43, 43,
1453
+ 43, 43, 43, 43, 43, 43, 43, 43,
1454
+ 43, 43, 43, 43, 43, 43, 43, 43,
1455
+ 43, 43, 43, 43, 43, 43, 43, 43,
1456
+ 43, 43, 43, 43, 43, 43, 43, 43,
1457
+ 43, 43, 43, 43, 43, 43, 43, 43,
1458
+ 43, 43, 43, 43, 43, 43, 43, 43,
1459
+ 43, 43, 43, 43, 43, 43, 43, 43,
1460
+ 43, 43, 43, 43, 43, 43, 43, 43,
1461
+ 43, 43, 43, 43, 43, 43, 43, 43,
1462
+ 43, 43, 43, 43, 43, 43, 43, 43,
1463
+ 43, 43, 43, 43, 43, 43, 43, 43,
1464
+ 43, 43, 43, 43, 43, 43, 43, 43,
1465
+ 43, 43, 43, 43, 43, 43, 43, 43,
1466
+ 43, 43, 43, 43, 43, 43, 43, 43,
1467
+ 43, 43, 43, 43, 43, 43, 43, 43,
1468
+ 43, 43, 43, 43, 43, 43, 43, 43,
1469
+ 43, 43, 43, 43, 43, 43, 43, 43,
1470
+ 43, 43, 43, 43, 43, 43, 43, 43,
1471
+ 43, 43, 43, 43, 43, 43, 43, 43,
1472
+ 43, 43, 43, 43, 43, 43, 43, 43,
1473
+ 43, 43, 43, 43, 43, 43, 43, 43,
1474
+ 43, 43, 43, 43, 43, 43, 43, 43,
1475
+ 43, 43, 43, 43, 43, 43, 43, 43,
1476
+ 43, 43, 43, 43, 43, 43, 43, 43,
1477
+ 43, 43, 43, 43, 43, 43, 43, 43,
1478
+ 43, 43, 43, 43, 43, 43, 43, 43,
1479
+ 43, 43, 43, 43, 43, 43, 43, 43,
1480
+ 43, 43, 43, 43, 43, 43, 43, 43,
1481
+ 43, 43, 43, 43, 43, 43, 43, 43,
1482
+ 43, 43, 43, 43, 43, 43, 43, 43,
1483
+ 43, 43, 43, 43, 43, 43, 43, 43,
1484
+ 43, 43, 43, 43, 43, 43, 43, 43,
1485
+ 43, 43, 43, 43, 43, 43, 43, 43,
1486
+ 43, 43, 43, 43, 43, 43, 43, 43,
1487
+ 43, 43, 43, 43, 43, 43, 43, 43,
1488
+ 43, 43, 43, 43, 43, 43, 43, 43,
1489
+ 43, 43, 43, 43, 43, 43, 43, 43,
1490
+ 43, 43, 43, 43, 43, 43, 43, 43,
1491
+ 43, 43, 43, 43, 43, 43, 43, 43,
1492
+ 43, 43, 43, 43, 43, 43, 43, 43,
1493
+ 43, 43, 43, 43, 43, 43, 43, 43,
1494
+ 43, 43, 43, 43, 43, 43, 43, 43,
1495
+ 43, 43, 43, 43, 43, 43, 43, 43,
1496
+ 43, 43, 43, 43, 43, 43, 43, 43,
1497
+ 43, 43, 43, 43, 43, 43, 43, 43,
1498
+ 43, 43, 43, 43, 43, 43, 43, 43,
1499
+ 43, 43, 43, 43, 43, 43, 43, 43,
1500
+ 43, 43, 43, 43, 43, 43, 43, 43,
1501
+ 43, 43, 43, 43, 43, 43, 43, 43,
1502
+ 43, 43, 43, 43, 43, 43, 43, 43,
1503
+ 43, 43, 43, 43, 43, 43, 43, 43,
1504
+ 43, 43, 43, 43, 43, 43, 43, 43,
1505
+ 43, 43, 43, 43, 43, 43, 43, 43,
1506
+ 43, 43, 43, 43, 43, 43, 43, 43,
1507
+ 43, 43, 43, 43, 43, 43, 43, 43,
1508
+ 43, 43, 43, 43, 43, 43, 43, 43,
1509
+ 43, 43, 43, 43, 43, 43, 43, 43,
1510
+ 43, 43, 43, 43, 43, 43, 43, 43,
1511
+ 43, 43, 43, 43, 43, 43, 43, 43,
1512
+ 43, 43, 43, 43, 43, 43, 43, 43,
1513
+ 43, 43, 43, 43, 43, 43, 43, 43,
1514
+ 43, 43, 43, 43, 43, 43, 43, 43,
1515
+ 43, 43, 43, 43, 43, 43, 43, 43,
1516
+ 43, 43, 43, 43, 43, 43, 43, 43,
1517
+ 43, 43, 43, 43, 43, 43, 43, 43,
1518
+ 43, 43, 43, 43, 43, 43, 43, 43,
1519
+ 43, 43, 43, 43, 43, 43, 43, 43,
1520
+ 43, 43, 43, 43, 43, 43, 43, 43,
1521
+ 43, 43, 43, 43, 43, 43, 43, 43,
1522
+ 43, 43, 43, 43, 43, 43, 43, 43,
1523
+ 43, 43, 43, 43, 43, 43, 43, 43,
1524
+ 43, 43, 43, 43, 43, 43, 43, 43,
1525
+ 43, 43, 43, 43, 43, 43, 43, 43,
1526
+ 43, 43, 43, 43, 43, 43, 43, 43,
1527
+ 43, 43, 43, 43, 43, 43, 43, 43,
1528
+ 43, 43, 43, 43, 43, 43, 43, 43,
1529
+ 43, 43, 43, 43, 43, 43, 43, 43,
1530
+ 43, 43, 43, 43, 43, 43, 43, 43,
1531
+ 43, 43, 43, 43, 43, 43, 43, 43,
1532
+ 43, 43, 43, 43, 43, 43, 43, 43,
1533
+ 43, 43, 43, 43, 43, 43, 43, 43,
1534
+ 43, 43, 43, 43, 43, 43, 43, 43,
1535
+ 43, 43, 43, 43, 43, 43, 43, 43,
1536
+ 43, 43, 43, 43, 43, 43, 43, 43
1537
+ };
1538
+
1539
+ static const int lexer_start = 1;
1540
+ static const int lexer_first_final = 871;
1541
+ static const int lexer_error = 0;
1542
+
1543
+ static const int lexer_en_main = 1;
1544
+
1545
+
1546
+ #line 258 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1547
+
1548
+ static VALUE
1549
+ unindent(VALUE con, int start_col)
1550
+ {
1551
+ VALUE re;
1552
+ // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
1553
+ char pat[32];
1554
+ snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
1555
+ re = rb_reg_regcomp(rb_str_new2(pat));
1556
+ rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
1557
+
1558
+ return Qnil;
1559
+
1560
+ }
1561
+
1562
+ static void
1563
+ store_kw_con(VALUE listener, const char * event_name,
1564
+ const char * keyword_at, size_t keyword_length,
1565
+ const char * at, size_t length,
1566
+ int current_line)
1567
+ {
1568
+ VALUE con = Qnil, kw = Qnil;
1569
+ kw = ENCODED_STR_NEW(keyword_at, keyword_length);
1570
+ con = ENCODED_STR_NEW(at, length);
1571
+ rb_funcall(con, rb_intern("strip!"), 0);
1572
+ rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
1573
+ }
1574
+
1575
+ static void
1576
+ store_multiline_kw_con(VALUE listener, const char * event_name,
1577
+ const char * keyword_at, size_t keyword_length,
1578
+ const char * at, size_t length,
1579
+ int current_line, int start_col)
1580
+ {
1581
+ VALUE split;
1582
+ VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
1583
+
1584
+ kw = ENCODED_STR_NEW(keyword_at, keyword_length);
1585
+ con = ENCODED_STR_NEW(at, length);
1586
+
1587
+ unindent(con, start_col);
1588
+
1589
+ split = rb_str_split(con, "\n");
1590
+
1591
+ name = rb_funcall(split, rb_intern("shift"), 0);
1592
+ desc = rb_ary_join(split, rb_str_new2( "\n" ));
1593
+
1594
+ if( name == Qnil )
1595
+ {
1596
+ name = rb_str_new2("");
1597
+ }
1598
+ if( rb_funcall(desc, rb_intern("size"), 0) == 0)
1599
+ {
1600
+ desc = rb_str_new2("");
1601
+ }
1602
+ rb_funcall(name, rb_intern("strip!"), 0);
1603
+ rb_funcall(desc, rb_intern("rstrip!"), 0);
1604
+ rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
1605
+ }
1606
+
1607
+ static void
1608
+ store_attr(VALUE listener, const char * attr_type,
1609
+ const char * at, size_t length,
1610
+ int line)
1611
+ {
1612
+ VALUE val = ENCODED_STR_NEW(at, length);
1613
+ rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
1614
+ }
1615
+ static void
1616
+ store_docstring_content(VALUE listener,
1617
+ int start_col,
1618
+ const char *type_at, size_t type_length,
1619
+ const char *at, size_t length,
1620
+ int current_line)
1621
+ {
1622
+ VALUE re2;
1623
+ VALUE unescape_escaped_quotes;
1624
+ VALUE con = ENCODED_STR_NEW(at, length);
1625
+ VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
1626
+
1627
+ unindent(con, start_col);
1628
+
1629
+ re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
1630
+ unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
1631
+ rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
1632
+ rb_funcall(con_type, rb_intern("strip!"), 0);
1633
+ rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
1634
+ rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
1635
+ }
1636
+ static void
1637
+ raise_lexer_error(const char * at, int line)
1638
+ {
1639
+ rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
1640
+ }
1641
+
1642
+ static void lexer_init(lexer_state *lexer) {
1643
+ lexer->content_start = 0;
1644
+ lexer->content_end = 0;
1645
+ lexer->content_len = 0;
1646
+ lexer->docstring_content_type_start = 0;
1647
+ lexer->docstring_content_type_end = 0;
1648
+ lexer->mark = 0;
1649
+ lexer->keyword_start = 0;
1650
+ lexer->keyword_end = 0;
1651
+ lexer->next_keyword_start = 0;
1652
+ lexer->line_number = 1;
1653
+ lexer->last_newline = 0;
1654
+ lexer->final_newline = 0;
1655
+ lexer->start_col = 0;
1656
+ }
1657
+
1658
+ static VALUE CLexer_alloc(VALUE klass)
1659
+ {
1660
+ VALUE obj;
1661
+ lexer_state *lxr = ALLOC(lexer_state);
1662
+ lexer_init(lxr);
1663
+
1664
+ obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
1665
+
1666
+ return obj;
1667
+ }
1668
+
1669
+ static VALUE CLexer_init(VALUE self, VALUE listener)
1670
+ {
1671
+ lexer_state *lxr;
1672
+ rb_iv_set(self, "@listener", listener);
1673
+
1674
+ lxr = NULL;
1675
+ DATA_GET(self, lexer_state, lxr);
1676
+ lexer_init(lxr);
1677
+
1678
+ return self;
1679
+ }
1680
+
1681
+ static VALUE CLexer_scan(VALUE self, VALUE input)
1682
+ {
1683
+ VALUE input_copy;
1684
+ char *data;
1685
+ size_t len;
1686
+ VALUE listener = rb_iv_get(self, "@listener");
1687
+
1688
+ lexer_state *lexer;
1689
+ lexer = NULL;
1690
+ DATA_GET(self, lexer_state, lexer);
1691
+
1692
+ input_copy = rb_str_dup(input);
1693
+
1694
+ rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
1695
+ data = RSTRING_PTR(input_copy);
1696
+ len = RSTRING_LEN(input_copy);
1697
+
1698
+ if (len == 0) {
1699
+ rb_raise(rb_eGherkinLexingError, "No content to lex.");
1700
+ } else {
1701
+
1702
+ const char *p, *pe, *eof;
1703
+ int cs = 0;
1704
+
1705
+ VALUE current_row = Qnil;
1706
+
1707
+ p = data;
1708
+ pe = data + len;
1709
+ eof = pe;
1710
+
1711
+ assert(*pe == '\0' && "pointer does not end on NULL");
1712
+
1713
+
1714
+ #line 1715 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
1715
+ {
1716
+ cs = lexer_start;
1717
+ }
1718
+
1719
+ #line 425 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1720
+
1721
+ #line 1722 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
1722
+ {
1723
+ int _klen;
1724
+ unsigned int _trans;
1725
+ const char *_acts;
1726
+ unsigned int _nacts;
1727
+ const char *_keys;
1728
+
1729
+ if ( p == pe )
1730
+ goto _test_eof;
1731
+ if ( cs == 0 )
1732
+ goto _out;
1733
+ _resume:
1734
+ _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
1735
+ _trans = _lexer_index_offsets[cs];
1736
+
1737
+ _klen = _lexer_single_lengths[cs];
1738
+ if ( _klen > 0 ) {
1739
+ const char *_lower = _keys;
1740
+ const char *_mid;
1741
+ const char *_upper = _keys + _klen - 1;
1742
+ while (1) {
1743
+ if ( _upper < _lower )
1744
+ break;
1745
+
1746
+ _mid = _lower + ((_upper-_lower) >> 1);
1747
+ if ( (*p) < *_mid )
1748
+ _upper = _mid - 1;
1749
+ else if ( (*p) > *_mid )
1750
+ _lower = _mid + 1;
1751
+ else {
1752
+ _trans += (_mid - _keys);
1753
+ goto _match;
1754
+ }
1755
+ }
1756
+ _keys += _klen;
1757
+ _trans += _klen;
1758
+ }
1759
+
1760
+ _klen = _lexer_range_lengths[cs];
1761
+ if ( _klen > 0 ) {
1762
+ const char *_lower = _keys;
1763
+ const char *_mid;
1764
+ const char *_upper = _keys + (_klen<<1) - 2;
1765
+ while (1) {
1766
+ if ( _upper < _lower )
1767
+ break;
1768
+
1769
+ _mid = _lower + (((_upper-_lower) >> 1) & ~1);
1770
+ if ( (*p) < _mid[0] )
1771
+ _upper = _mid - 2;
1772
+ else if ( (*p) > _mid[1] )
1773
+ _lower = _mid + 2;
1774
+ else {
1775
+ _trans += ((_mid - _keys)>>1);
1776
+ goto _match;
1777
+ }
1778
+ }
1779
+ _trans += _klen;
1780
+ }
1781
+
1782
+ _match:
1783
+ cs = _lexer_trans_targs[_trans];
1784
+
1785
+ if ( _lexer_trans_actions[_trans] == 0 )
1786
+ goto _again;
1787
+
1788
+ _acts = _lexer_actions + _lexer_trans_actions[_trans];
1789
+ _nacts = (unsigned int) *_acts++;
1790
+ while ( _nacts-- > 0 )
1791
+ {
1792
+ switch ( *_acts++ )
1793
+ {
1794
+ case 0:
1795
+ #line 83 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1796
+ {
1797
+ MARK(content_start, p);
1798
+ lexer->current_line = lexer->line_number;
1799
+ lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
1800
+ }
1801
+ break;
1802
+ case 1:
1803
+ #line 89 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1804
+ {
1805
+ MARK(content_start, p);
1806
+ }
1807
+ break;
1808
+ case 2:
1809
+ #line 93 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1810
+ {
1811
+ lexer->current_line = lexer->line_number;
1812
+ lexer->start_col = p - data - lexer->last_newline;
1813
+ }
1814
+ break;
1815
+ case 3:
1816
+ #line 98 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1817
+ {
1818
+ int len = LEN(content_start, PTR_TO(final_newline));
1819
+ int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
1820
+
1821
+ if (len < 0) len = 0;
1822
+ if (type_len < 0) len = 0;
1823
+
1824
+ store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
1825
+ }
1826
+ break;
1827
+ case 4:
1828
+ #line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1829
+ {
1830
+ MARK(docstring_content_type_start, p);
1831
+ }
1832
+ break;
1833
+ case 5:
1834
+ #line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1835
+ {
1836
+ MARK(docstring_content_type_end, p);
1837
+ }
1838
+ break;
1839
+ case 6:
1840
+ #line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1841
+ {
1842
+ STORE_KW_END_CON(feature);
1843
+ }
1844
+ break;
1845
+ case 7:
1846
+ #line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1847
+ {
1848
+ STORE_KW_END_CON(background);
1849
+ }
1850
+ break;
1851
+ case 8:
1852
+ #line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1853
+ {
1854
+ STORE_KW_END_CON(scenario);
1855
+ }
1856
+ break;
1857
+ case 9:
1858
+ #line 128 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1859
+ {
1860
+ STORE_KW_END_CON(scenario_outline);
1861
+ }
1862
+ break;
1863
+ case 10:
1864
+ #line 132 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1865
+ {
1866
+ STORE_KW_END_CON(examples);
1867
+ }
1868
+ break;
1869
+ case 11:
1870
+ #line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1871
+ {
1872
+ store_kw_con(listener, "step",
1873
+ PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
1874
+ PTR_TO(content_start), LEN(content_start, p),
1875
+ lexer->current_line);
1876
+ }
1877
+ break;
1878
+ case 12:
1879
+ #line 143 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1880
+ {
1881
+ STORE_ATTR(comment);
1882
+ lexer->mark = 0;
1883
+ }
1884
+ break;
1885
+ case 13:
1886
+ #line 148 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1887
+ {
1888
+ STORE_ATTR(tag);
1889
+ lexer->mark = 0;
1890
+ }
1891
+ break;
1892
+ case 14:
1893
+ #line 153 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1894
+ {
1895
+ lexer->line_number += 1;
1896
+ MARK(final_newline, p);
1897
+ }
1898
+ break;
1899
+ case 15:
1900
+ #line 158 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1901
+ {
1902
+ MARK(last_newline, p + 1);
1903
+ }
1904
+ break;
1905
+ case 16:
1906
+ #line 162 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1907
+ {
1908
+ if (lexer->mark == 0) {
1909
+ MARK(mark, p);
1910
+ }
1911
+ }
1912
+ break;
1913
+ case 17:
1914
+ #line 168 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1915
+ {
1916
+ MARK(keyword_end, p);
1917
+ MARK(keyword_start, PTR_TO(mark));
1918
+ MARK(content_start, p + 1);
1919
+ lexer->mark = 0;
1920
+ }
1921
+ break;
1922
+ case 18:
1923
+ #line 175 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1924
+ {
1925
+ MARK(content_end, p);
1926
+ }
1927
+ break;
1928
+ case 19:
1929
+ #line 179 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1930
+ {
1931
+ p = p - 1;
1932
+ lexer->current_line = lexer->line_number;
1933
+ current_row = rb_ary_new();
1934
+ }
1935
+ break;
1936
+ case 20:
1937
+ #line 185 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1938
+ {
1939
+ MARK(content_start, p);
1940
+ }
1941
+ break;
1942
+ case 21:
1943
+ #line 189 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1944
+ {
1945
+ VALUE re_pipe, re_newline, re_backslash;
1946
+ VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
1947
+ rb_funcall(con, rb_intern("strip!"), 0);
1948
+ re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
1949
+ re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
1950
+ re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
1951
+ rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
1952
+ rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
1953
+ rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
1954
+
1955
+ rb_ary_push(current_row, con);
1956
+ }
1957
+ break;
1958
+ case 22:
1959
+ #line 203 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1960
+ {
1961
+ rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
1962
+ }
1963
+ break;
1964
+ case 23:
1965
+ #line 207 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
1966
+ {
1967
+ int line;
1968
+ if (cs < lexer_first_final) {
1969
+ size_t count = 0;
1970
+ VALUE newstr_val;
1971
+ char *newstr;
1972
+ int newstr_count = 0;
1973
+ size_t len;
1974
+ const char *buff;
1975
+ if (lexer->last_newline != 0) {
1976
+ len = LEN(last_newline, eof);
1977
+ buff = PTR_TO(last_newline);
1978
+ } else {
1979
+ len = strlen(data);
1980
+ buff = data;
1981
+ }
1982
+
1983
+ // Allocate as a ruby string so that it gets cleaned up by GC
1984
+ newstr_val = rb_str_new(buff, len);
1985
+ newstr = RSTRING_PTR(newstr_val);
1986
+
1987
+
1988
+ for (count = 0; count < len; count++) {
1989
+ if(buff[count] == 10) {
1990
+ newstr[newstr_count] = '\0'; // terminate new string at first newline found
1991
+ break;
1992
+ } else {
1993
+ if (buff[count] == '%') {
1994
+ newstr[newstr_count++] = buff[count];
1995
+ newstr[newstr_count] = buff[count];
1996
+ } else {
1997
+ newstr[newstr_count] = buff[count];
1998
+ }
1999
+ }
2000
+ newstr_count++;
2001
+ }
2002
+
2003
+ line = lexer->line_number;
2004
+ lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
2005
+ raise_lexer_error(newstr, line);
2006
+ } else {
2007
+ rb_funcall(listener, rb_intern("eof"), 0);
2008
+ }
2009
+ }
2010
+ break;
2011
+ #line 2012 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
2012
+ }
2013
+ }
2014
+
2015
+ _again:
2016
+ if ( cs == 0 )
2017
+ goto _out;
2018
+ if ( ++p != pe )
2019
+ goto _resume;
2020
+ _test_eof: {}
2021
+ if ( p == eof )
2022
+ {
2023
+ const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
2024
+ unsigned int __nacts = (unsigned int) *__acts++;
2025
+ while ( __nacts-- > 0 ) {
2026
+ switch ( *__acts++ ) {
2027
+ case 23:
2028
+ #line 207 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
2029
+ {
2030
+ int line;
2031
+ if (cs < lexer_first_final) {
2032
+ size_t count = 0;
2033
+ VALUE newstr_val;
2034
+ char *newstr;
2035
+ int newstr_count = 0;
2036
+ size_t len;
2037
+ const char *buff;
2038
+ if (lexer->last_newline != 0) {
2039
+ len = LEN(last_newline, eof);
2040
+ buff = PTR_TO(last_newline);
2041
+ } else {
2042
+ len = strlen(data);
2043
+ buff = data;
2044
+ }
2045
+
2046
+ // Allocate as a ruby string so that it gets cleaned up by GC
2047
+ newstr_val = rb_str_new(buff, len);
2048
+ newstr = RSTRING_PTR(newstr_val);
2049
+
2050
+
2051
+ for (count = 0; count < len; count++) {
2052
+ if(buff[count] == 10) {
2053
+ newstr[newstr_count] = '\0'; // terminate new string at first newline found
2054
+ break;
2055
+ } else {
2056
+ if (buff[count] == '%') {
2057
+ newstr[newstr_count++] = buff[count];
2058
+ newstr[newstr_count] = buff[count];
2059
+ } else {
2060
+ newstr[newstr_count] = buff[count];
2061
+ }
2062
+ }
2063
+ newstr_count++;
2064
+ }
2065
+
2066
+ line = lexer->line_number;
2067
+ lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
2068
+ raise_lexer_error(newstr, line);
2069
+ } else {
2070
+ rb_funcall(listener, rb_intern("eof"), 0);
2071
+ }
2072
+ }
2073
+ break;
2074
+ #line 2075 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
2075
+ }
2076
+ }
2077
+ }
2078
+
2079
+ _out: {}
2080
+ }
2081
+
2082
+ #line 426 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
2083
+
2084
+ assert(p <= pe && "data overflow after parsing execute");
2085
+ assert(lexer->content_start <= len && "content starts after data end");
2086
+ assert(lexer->mark < len && "mark is after data end");
2087
+
2088
+ // Reset lexer by re-initializing the whole thing
2089
+ lexer_init(lexer);
2090
+
2091
+ if (cs == lexer_error) {
2092
+ rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
2093
+ } else {
2094
+ return Qtrue;
2095
+ }
2096
+ }
2097
+ }
2098
+
2099
+ void Init_gherkin_lexer_sr_cyrl()
2100
+ {
2101
+ mGherkin = rb_define_module("Gherkin");
2102
+ mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
2103
+ rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
2104
+
2105
+ mCLexer = rb_define_module_under(mGherkin, "CLexer");
2106
+ cI18nLexer = rb_define_class_under(mCLexer, "Sr_cyrl", rb_cObject);
2107
+ rb_define_alloc_func(cI18nLexer, CLexer_alloc);
2108
+ rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
2109
+ rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
2110
+ }
2111
+