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_ja")
5
+ have_library("c", "main")
6
+ create_makefile("gherkin_lexer_ja")
@@ -0,0 +1,1698 @@
1
+
2
+ #line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.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/ja.c.rl"
84
+
85
+
86
+ /** Data **/
87
+
88
+ #line 89 "ext/gherkin_lexer_ja/gherkin_lexer_ja.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, 16, 19, 23, 24, 25, 26,
113
+ 27, 29, 44, 46, 47, 48, 49, 50,
114
+ 51, 52, 53, 54, 62, 64, 66, 68,
115
+ 70, 72, 74, 76, 78, 80, 82, 84,
116
+ 86, 88, 90, 92, 107, 108, 109, 110,
117
+ 111, 112, 113, 114, 115, 116, 117, 118,
118
+ 119, 120, 131, 134, 137, 139, 141, 143,
119
+ 145, 147, 149, 151, 153, 155, 157, 159,
120
+ 161, 163, 165, 167, 169, 171, 173, 175,
121
+ 178, 181, 183, 185, 187, 189, 191, 193,
122
+ 195, 197, 199, 201, 203, 205, 207, 209,
123
+ 211, 213, 215, 217, 219, 221, 223, 225,
124
+ 227, 229, 231, 233, 236, 238, 240, 242,
125
+ 244, 246, 249, 251, 253, 255, 257, 259,
126
+ 261, 263, 265, 267, 269, 271, 273, 275,
127
+ 277, 279, 281, 283, 285, 287, 289, 291,
128
+ 293, 295, 297, 299, 301, 303, 305, 307,
129
+ 309, 311, 313, 315, 317, 319, 321, 323,
130
+ 325, 327, 329, 331, 333, 335, 337, 339,
131
+ 341, 343, 344, 345, 346, 347, 348, 349,
132
+ 350, 351, 363, 367, 372, 374, 376, 378,
133
+ 380, 382, 384, 386, 388, 390, 392, 394,
134
+ 396, 398, 400, 402, 404, 406, 408, 411,
135
+ 413, 415, 417, 419, 421, 423, 425, 427,
136
+ 429, 432, 435, 437, 439, 441, 443, 445,
137
+ 447, 449, 451, 453, 455, 457, 459, 461,
138
+ 463, 465, 467, 469, 471, 473, 475, 477,
139
+ 479, 481, 483, 485, 487, 489, 492, 494,
140
+ 496, 498, 500, 502, 505, 507, 509, 511,
141
+ 513, 515, 517, 519, 521, 523, 525, 527,
142
+ 529, 531, 533, 535, 537, 539, 541, 543,
143
+ 545, 547, 549, 551, 553, 555, 557, 559,
144
+ 561, 563, 565, 567, 569, 571, 573, 575,
145
+ 577, 579, 581, 583, 585, 587, 589, 591,
146
+ 593, 595, 597, 599, 601, 602, 603, 605,
147
+ 607, 612, 617, 622, 627, 631, 635, 637,
148
+ 638, 639, 640, 641, 642, 643, 644, 645,
149
+ 646, 647, 648, 649, 650, 651, 652, 653,
150
+ 658, 665, 670, 674, 680, 683, 685, 691,
151
+ 706, 708, 710, 712, 714, 716, 717, 718,
152
+ 719, 720, 721, 722, 723, 724, 725, 726,
153
+ 727, 728, 731, 732, 733, 734, 735, 736,
154
+ 737, 738, 739, 740, 741, 742, 743, 744,
155
+ 745, 746, 747, 748, 749, 751, 753, 754,
156
+ 755, 756, 757, 758, 759, 760, 761, 762,
157
+ 763, 764, 765, 766, 767, 768, 769, 770,
158
+ 771, 772, 784, 788, 793, 795, 797, 799,
159
+ 801, 803, 805, 807, 809, 811, 813, 815,
160
+ 817, 819, 821, 823, 825, 827, 829, 832,
161
+ 834, 836, 838, 840, 842, 844, 846, 848,
162
+ 850, 852, 854, 856, 858, 860, 862, 864,
163
+ 866, 868, 870, 872, 874, 876, 878, 880,
164
+ 882, 884, 886, 888, 890, 892, 894, 896,
165
+ 898, 900, 902, 904, 906, 908, 910, 912,
166
+ 914, 916, 918, 920, 922, 924, 926, 928,
167
+ 930, 932, 933, 934, 935, 936, 937, 938,
168
+ 939, 940, 941, 942, 944, 945, 946, 947,
169
+ 948, 949, 950, 951, 964, 968, 973, 975,
170
+ 977, 979, 981, 983, 985, 987, 989, 991,
171
+ 993, 995, 997, 999, 1001, 1003, 1005, 1007,
172
+ 1009, 1012, 1014, 1016, 1018, 1020, 1022, 1024,
173
+ 1026, 1028, 1030, 1033, 1036, 1038, 1040, 1042,
174
+ 1044, 1046, 1048, 1050, 1052, 1054, 1056, 1058,
175
+ 1060, 1062, 1064, 1066, 1068, 1070, 1072, 1074,
176
+ 1076, 1078, 1080, 1082, 1084, 1086, 1088, 1090,
177
+ 1093, 1095, 1097, 1099, 1101, 1103, 1106, 1108,
178
+ 1110, 1112, 1114, 1116, 1118, 1120, 1122, 1124,
179
+ 1126, 1128, 1130, 1132, 1134, 1136, 1138, 1140,
180
+ 1142, 1144, 1146, 1148, 1150, 1152, 1154, 1156,
181
+ 1158, 1160, 1162, 1164, 1166, 1168, 1170, 1172,
182
+ 1174, 1176, 1178, 1180, 1182, 1184, 1186, 1188,
183
+ 1190, 1192, 1194, 1196, 1198, 1200, 1202, 1204,
184
+ 1206, 1208, 1210, 1212, 1214, 1215, 1216, 1217,
185
+ 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225,
186
+ 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233,
187
+ 1234, 1235, 1236, 1237
188
+ };
189
+
190
+ static const char _lexer_trans_keys[] = {
191
+ -29, -28, -27, -26, -24, -17, 10, 32,
192
+ 34, 35, 37, 42, 64, 124, 9, 13,
193
+ -127, -126, -125, -117, -105, -97, -86, -29,
194
+ -127, -92, 10, 10, 13, -29, -28, -27,
195
+ -26, -24, 10, 32, 34, 35, 37, 42,
196
+ 64, 124, 9, 13, -67, -66, -122, -29,
197
+ -127, -105, -117, 58, 10, 10, -29, -26,
198
+ 10, 32, 35, 124, 9, 13, -125, 10,
199
+ -107, 10, -29, 10, -126, 10, -93, 10,
200
+ -29, 10, -125, 10, -68, 10, -29, 10,
201
+ -125, 10, -127, 10, -29, 10, -125, 10,
202
+ -93, 10, 10, 58, -29, -28, -27, -26,
203
+ -24, 10, 32, 34, 35, 37, 42, 64,
204
+ 124, 9, 13, -119, -115, -26, -113, -112,
205
+ -87, -97, -24, -125, -67, 58, 10, 10,
206
+ -29, -28, -26, -24, 10, 32, 35, 37,
207
+ 64, 9, 13, -126, -125, 10, -75, -73,
208
+ 10, -29, 10, -125, 10, -77, 10, -29,
209
+ 10, -125, 10, -105, 10, -29, 10, -125,
210
+ 10, -85, 10, 10, 58, -29, 10, -125,
211
+ 10, -118, 10, -29, 10, -125, 10, -86,
212
+ 10, -29, 10, -126, 10, -86, 10, -29,
213
+ 10, 58, -126, -125, 10, -94, 10, -29,
214
+ 10, -126, 10, -90, 10, -29, 10, -125,
215
+ 10, -120, 10, -29, 10, -125, 10, -87,
216
+ 10, -29, 10, -126, 10, -92, 10, -29,
217
+ 10, -125, 10, -77, 10, -122, 10, -29,
218
+ 10, -125, 10, -77, 10, -29, 10, -125,
219
+ 10, -105, 10, -29, 10, -125, 10, -84,
220
+ 10, -29, 10, 58, -125, 10, -68, 10,
221
+ -29, 10, -125, 10, -120, 10, -122, -107,
222
+ 10, -29, 10, -125, 10, -77, 10, -29,
223
+ 10, -125, 10, -105, 10, -29, 10, -125,
224
+ 10, -84, 10, -29, 10, -126, 10, -93,
225
+ 10, -29, 10, -125, 10, -68, 10, -29,
226
+ 10, -125, 10, -127, 10, -29, 10, -125,
227
+ 10, -93, 10, -66, 10, -117, 10, -87,
228
+ 10, -97, 10, -24, 10, -125, 10, -67,
229
+ 10, -125, 10, -116, 10, -26, 10, -103,
230
+ 10, -81, 10, 10, 95, 10, 70, 10,
231
+ 69, 10, 65, 10, 84, 10, 85, 10,
232
+ 82, 10, 69, 10, 95, 10, 69, 10,
233
+ 78, 10, 68, 10, 95, 10, 37, -125,
234
+ -116, -26, -103, -81, 58, 10, 10, -29,
235
+ -28, -27, -26, 10, 32, 35, 37, 42,
236
+ 64, 9, 13, -127, -126, -125, 10, -117,
237
+ -105, -97, -86, 10, -29, 10, -127, 10,
238
+ -92, 10, -29, 10, -127, 10, -117, 10,
239
+ -29, 10, -127, 10, -105, 10, -29, 10,
240
+ -127, 10, -96, 10, -29, 10, -126, 10,
241
+ -119, 10, -29, 10, -127, 10, -80, 10,
242
+ -126, -73, 10, -29, 10, -125, 10, -118,
243
+ 10, -29, 10, -125, 10, -86, 10, -29,
244
+ 10, -126, 10, -86, 10, -29, 10, 58,
245
+ -126, -125, 10, -94, 10, -29, 10, -126,
246
+ 10, -90, 10, -29, 10, -125, 10, -120,
247
+ 10, -29, 10, -125, 10, -87, 10, -29,
248
+ 10, -126, 10, -92, 10, -29, 10, -125,
249
+ 10, -77, 10, 10, 58, -122, 10, -29,
250
+ 10, -125, 10, -77, 10, -29, 10, -125,
251
+ 10, -105, 10, -29, 10, -125, 10, -84,
252
+ 10, -29, 10, 58, -125, 10, -68, 10,
253
+ -29, 10, -125, 10, -120, 10, -122, -107,
254
+ 10, -29, 10, -125, 10, -77, 10, -29,
255
+ 10, -125, 10, -105, 10, -29, 10, -125,
256
+ 10, -84, 10, -29, 10, -126, 10, -93,
257
+ 10, -29, 10, -125, 10, -68, 10, -29,
258
+ 10, -125, 10, -127, 10, -29, 10, -125,
259
+ 10, -93, 10, -67, 10, -122, 10, -119,
260
+ 10, -115, 10, -26, 10, -113, 10, -112,
261
+ 10, -87, 10, -97, 10, -24, 10, -125,
262
+ 10, -67, 10, 10, 95, 10, 70, 10,
263
+ 69, 10, 65, 10, 84, 10, 85, 10,
264
+ 82, 10, 69, 10, 95, 10, 69, 10,
265
+ 78, 10, 68, 10, 95, 10, 37, 10,
266
+ 32, 34, 34, 10, 13, 10, 13, 10,
267
+ 32, 34, 9, 13, 10, 32, 34, 9,
268
+ 13, 10, 32, 34, 9, 13, 10, 32,
269
+ 34, 9, 13, 10, 32, 9, 13, 10,
270
+ 32, 9, 13, 10, 13, 10, 95, 70,
271
+ 69, 65, 84, 85, 82, 69, 95, 69,
272
+ 78, 68, 95, 37, 32, 13, 32, 64,
273
+ 9, 10, 9, 10, 13, 32, 64, 11,
274
+ 12, 10, 32, 64, 9, 13, 32, 124,
275
+ 9, 13, 10, 32, 92, 124, 9, 13,
276
+ 10, 92, 124, 10, 92, 10, 32, 92,
277
+ 124, 9, 13, -29, -28, -27, -26, -24,
278
+ 10, 32, 34, 35, 37, 42, 64, 124,
279
+ 9, 13, -87, 10, -97, 10, -24, 10,
280
+ -125, 10, -67, 10, -29, -127, -117, -29,
281
+ -127, -96, -29, -126, -119, -29, -127, -80,
282
+ -126, -75, -73, -29, -125, -77, -29, -125,
283
+ -105, -29, -125, -85, -29, -125, -118, -29,
284
+ -125, -86, -29, -126, -86, -29, 58, -126,
285
+ -125, -94, -29, -126, -90, -29, -125, -120,
286
+ -29, -125, -87, -29, -126, -92, -29, -125,
287
+ -77, 58, 10, 10, -29, -28, -27, -26,
288
+ 10, 32, 35, 37, 42, 64, 9, 13,
289
+ -127, -126, -125, 10, -117, -105, -97, -86,
290
+ 10, -29, 10, -127, 10, -92, 10, -29,
291
+ 10, -127, 10, -117, 10, -29, 10, -127,
292
+ 10, -105, 10, -29, 10, -127, 10, -96,
293
+ 10, -29, 10, -126, 10, -119, 10, -29,
294
+ 10, -127, 10, -80, 10, -126, -73, 10,
295
+ -29, 10, -125, 10, -118, 10, -29, 10,
296
+ -125, 10, -86, 10, -29, 10, -126, 10,
297
+ -86, 10, 10, 58, -107, 10, -29, 10,
298
+ -126, 10, -93, 10, -29, 10, -125, 10,
299
+ -68, 10, -29, 10, -125, 10, -127, 10,
300
+ -29, 10, -125, 10, -93, 10, -67, 10,
301
+ -122, 10, -119, 10, -115, 10, -26, 10,
302
+ -113, 10, -112, 10, -87, 10, -97, 10,
303
+ -24, 10, -125, 10, -67, 10, 10, 95,
304
+ 10, 70, 10, 69, 10, 65, 10, 84,
305
+ 10, 85, 10, 82, 10, 69, 10, 95,
306
+ 10, 69, 10, 78, 10, 68, 10, 95,
307
+ 10, 37, 10, 32, -122, -29, -125, -77,
308
+ -29, -125, -105, -29, -125, -84, -29, 58,
309
+ -125, -68, -29, -125, -120, 10, 10, -29,
310
+ -28, -27, -26, -24, 10, 32, 35, 37,
311
+ 42, 64, 9, 13, -127, -126, -125, 10,
312
+ -117, -105, -97, -86, 10, -29, 10, -127,
313
+ 10, -92, 10, -29, 10, -127, 10, -117,
314
+ 10, -29, 10, -127, 10, -105, 10, -29,
315
+ 10, -127, 10, -96, 10, -29, 10, -126,
316
+ 10, -119, 10, -29, 10, -127, 10, -80,
317
+ 10, -126, -73, 10, -29, 10, -125, 10,
318
+ -118, 10, -29, 10, -125, 10, -86, 10,
319
+ -29, 10, -126, 10, -86, 10, -29, 10,
320
+ 58, -126, -125, 10, -94, 10, -29, 10,
321
+ -126, 10, -90, 10, -29, 10, -125, 10,
322
+ -120, 10, -29, 10, -125, 10, -87, 10,
323
+ -29, 10, -126, 10, -92, 10, -29, 10,
324
+ -125, 10, -77, 10, 10, 58, -122, 10,
325
+ -29, 10, -125, 10, -77, 10, -29, 10,
326
+ -125, 10, -105, 10, -29, 10, -125, 10,
327
+ -84, 10, -29, 10, 58, -125, 10, -68,
328
+ 10, -29, 10, -125, 10, -120, 10, -122,
329
+ -107, 10, -29, 10, -125, 10, -77, 10,
330
+ -29, 10, -125, 10, -105, 10, -29, 10,
331
+ -125, 10, -84, 10, -29, 10, -126, 10,
332
+ -93, 10, -29, 10, -125, 10, -68, 10,
333
+ -29, 10, -125, 10, -127, 10, -29, 10,
334
+ -125, 10, -93, 10, -67, 10, -122, 10,
335
+ -119, 10, -115, 10, -26, 10, -113, 10,
336
+ -112, 10, -87, 10, -97, 10, -24, 10,
337
+ -125, 10, -67, 10, -125, 10, -116, 10,
338
+ -26, 10, -103, 10, -81, 10, 10, 95,
339
+ 10, 70, 10, 69, 10, 65, 10, 84,
340
+ 10, 85, 10, 82, 10, 69, 10, 95,
341
+ 10, 69, 10, 78, 10, 68, 10, 95,
342
+ 10, 37, 10, 32, -122, -107, -29, -125,
343
+ -77, -29, -125, -105, -29, -125, -84, -29,
344
+ -126, -93, -29, -125, -68, -29, -125, -127,
345
+ -29, -125, -93, -69, -65, 0
346
+ };
347
+
348
+ static const char _lexer_single_lengths[] = {
349
+ 0, 14, 3, 4, 1, 1, 1, 1,
350
+ 2, 13, 2, 1, 1, 1, 1, 1,
351
+ 1, 1, 1, 6, 2, 2, 2, 2,
352
+ 2, 2, 2, 2, 2, 2, 2, 2,
353
+ 2, 2, 2, 13, 1, 1, 1, 1,
354
+ 1, 1, 1, 1, 1, 1, 1, 1,
355
+ 1, 9, 3, 3, 2, 2, 2, 2,
356
+ 2, 2, 2, 2, 2, 2, 2, 2,
357
+ 2, 2, 2, 2, 2, 2, 2, 3,
358
+ 3, 2, 2, 2, 2, 2, 2, 2,
359
+ 2, 2, 2, 2, 2, 2, 2, 2,
360
+ 2, 2, 2, 2, 2, 2, 2, 2,
361
+ 2, 2, 2, 3, 2, 2, 2, 2,
362
+ 2, 3, 2, 2, 2, 2, 2, 2,
363
+ 2, 2, 2, 2, 2, 2, 2, 2,
364
+ 2, 2, 2, 2, 2, 2, 2, 2,
365
+ 2, 2, 2, 2, 2, 2, 2, 2,
366
+ 2, 2, 2, 2, 2, 2, 2, 2,
367
+ 2, 2, 2, 2, 2, 2, 2, 2,
368
+ 2, 1, 1, 1, 1, 1, 1, 1,
369
+ 1, 10, 4, 5, 2, 2, 2, 2,
370
+ 2, 2, 2, 2, 2, 2, 2, 2,
371
+ 2, 2, 2, 2, 2, 2, 3, 2,
372
+ 2, 2, 2, 2, 2, 2, 2, 2,
373
+ 3, 3, 2, 2, 2, 2, 2, 2,
374
+ 2, 2, 2, 2, 2, 2, 2, 2,
375
+ 2, 2, 2, 2, 2, 2, 2, 2,
376
+ 2, 2, 2, 2, 2, 3, 2, 2,
377
+ 2, 2, 2, 3, 2, 2, 2, 2,
378
+ 2, 2, 2, 2, 2, 2, 2, 2,
379
+ 2, 2, 2, 2, 2, 2, 2, 2,
380
+ 2, 2, 2, 2, 2, 2, 2, 2,
381
+ 2, 2, 2, 2, 2, 2, 2, 2,
382
+ 2, 2, 2, 2, 2, 2, 2, 2,
383
+ 2, 2, 2, 2, 1, 1, 2, 2,
384
+ 3, 3, 3, 3, 2, 2, 2, 1,
385
+ 1, 1, 1, 1, 1, 1, 1, 1,
386
+ 1, 1, 1, 1, 1, 1, 1, 3,
387
+ 5, 3, 2, 4, 3, 2, 4, 13,
388
+ 2, 2, 2, 2, 2, 1, 1, 1,
389
+ 1, 1, 1, 1, 1, 1, 1, 1,
390
+ 1, 3, 1, 1, 1, 1, 1, 1,
391
+ 1, 1, 1, 1, 1, 1, 1, 1,
392
+ 1, 1, 1, 1, 2, 2, 1, 1,
393
+ 1, 1, 1, 1, 1, 1, 1, 1,
394
+ 1, 1, 1, 1, 1, 1, 1, 1,
395
+ 1, 10, 4, 5, 2, 2, 2, 2,
396
+ 2, 2, 2, 2, 2, 2, 2, 2,
397
+ 2, 2, 2, 2, 2, 2, 3, 2,
398
+ 2, 2, 2, 2, 2, 2, 2, 2,
399
+ 2, 2, 2, 2, 2, 2, 2, 2,
400
+ 2, 2, 2, 2, 2, 2, 2, 2,
401
+ 2, 2, 2, 2, 2, 2, 2, 2,
402
+ 2, 2, 2, 2, 2, 2, 2, 2,
403
+ 2, 2, 2, 2, 2, 2, 2, 2,
404
+ 2, 1, 1, 1, 1, 1, 1, 1,
405
+ 1, 1, 1, 2, 1, 1, 1, 1,
406
+ 1, 1, 1, 11, 4, 5, 2, 2,
407
+ 2, 2, 2, 2, 2, 2, 2, 2,
408
+ 2, 2, 2, 2, 2, 2, 2, 2,
409
+ 3, 2, 2, 2, 2, 2, 2, 2,
410
+ 2, 2, 3, 3, 2, 2, 2, 2,
411
+ 2, 2, 2, 2, 2, 2, 2, 2,
412
+ 2, 2, 2, 2, 2, 2, 2, 2,
413
+ 2, 2, 2, 2, 2, 2, 2, 3,
414
+ 2, 2, 2, 2, 2, 3, 2, 2,
415
+ 2, 2, 2, 2, 2, 2, 2, 2,
416
+ 2, 2, 2, 2, 2, 2, 2, 2,
417
+ 2, 2, 2, 2, 2, 2, 2, 2,
418
+ 2, 2, 2, 2, 2, 2, 2, 2,
419
+ 2, 2, 2, 2, 2, 2, 2, 2,
420
+ 2, 2, 2, 2, 2, 2, 2, 2,
421
+ 2, 2, 2, 2, 1, 1, 1, 1,
422
+ 1, 1, 1, 1, 1, 1, 1, 1,
423
+ 1, 1, 1, 1, 1, 1, 1, 1,
424
+ 1, 1, 1, 0
425
+ };
426
+
427
+ static const char _lexer_range_lengths[] = {
428
+ 0, 1, 0, 0, 0, 0, 0, 0,
429
+ 0, 1, 0, 0, 0, 0, 0, 0,
430
+ 0, 0, 0, 1, 0, 0, 0, 0,
431
+ 0, 0, 0, 0, 0, 0, 0, 0,
432
+ 0, 0, 0, 1, 0, 0, 0, 0,
433
+ 0, 0, 0, 0, 0, 0, 0, 0,
434
+ 0, 1, 0, 0, 0, 0, 0, 0,
435
+ 0, 0, 0, 0, 0, 0, 0, 0,
436
+ 0, 0, 0, 0, 0, 0, 0, 0,
437
+ 0, 0, 0, 0, 0, 0, 0, 0,
438
+ 0, 0, 0, 0, 0, 0, 0, 0,
439
+ 0, 0, 0, 0, 0, 0, 0, 0,
440
+ 0, 0, 0, 0, 0, 0, 0, 0,
441
+ 0, 0, 0, 0, 0, 0, 0, 0,
442
+ 0, 0, 0, 0, 0, 0, 0, 0,
443
+ 0, 0, 0, 0, 0, 0, 0, 0,
444
+ 0, 0, 0, 0, 0, 0, 0, 0,
445
+ 0, 0, 0, 0, 0, 0, 0, 0,
446
+ 0, 0, 0, 0, 0, 0, 0, 0,
447
+ 0, 0, 0, 0, 0, 0, 0, 0,
448
+ 0, 1, 0, 0, 0, 0, 0, 0,
449
+ 0, 0, 0, 0, 0, 0, 0, 0,
450
+ 0, 0, 0, 0, 0, 0, 0, 0,
451
+ 0, 0, 0, 0, 0, 0, 0, 0,
452
+ 0, 0, 0, 0, 0, 0, 0, 0,
453
+ 0, 0, 0, 0, 0, 0, 0, 0,
454
+ 0, 0, 0, 0, 0, 0, 0, 0,
455
+ 0, 0, 0, 0, 0, 0, 0, 0,
456
+ 0, 0, 0, 0, 0, 0, 0, 0,
457
+ 0, 0, 0, 0, 0, 0, 0, 0,
458
+ 0, 0, 0, 0, 0, 0, 0, 0,
459
+ 0, 0, 0, 0, 0, 0, 0, 0,
460
+ 0, 0, 0, 0, 0, 0, 0, 0,
461
+ 0, 0, 0, 0, 0, 0, 0, 0,
462
+ 0, 0, 0, 0, 0, 0, 0, 0,
463
+ 1, 1, 1, 1, 1, 1, 0, 0,
464
+ 0, 0, 0, 0, 0, 0, 0, 0,
465
+ 0, 0, 0, 0, 0, 0, 0, 1,
466
+ 1, 1, 1, 1, 0, 0, 1, 1,
467
+ 0, 0, 0, 0, 0, 0, 0, 0,
468
+ 0, 0, 0, 0, 0, 0, 0, 0,
469
+ 0, 0, 0, 0, 0, 0, 0, 0,
470
+ 0, 0, 0, 0, 0, 0, 0, 0,
471
+ 0, 0, 0, 0, 0, 0, 0, 0,
472
+ 0, 0, 0, 0, 0, 0, 0, 0,
473
+ 0, 0, 0, 0, 0, 0, 0, 0,
474
+ 0, 1, 0, 0, 0, 0, 0, 0,
475
+ 0, 0, 0, 0, 0, 0, 0, 0,
476
+ 0, 0, 0, 0, 0, 0, 0, 0,
477
+ 0, 0, 0, 0, 0, 0, 0, 0,
478
+ 0, 0, 0, 0, 0, 0, 0, 0,
479
+ 0, 0, 0, 0, 0, 0, 0, 0,
480
+ 0, 0, 0, 0, 0, 0, 0, 0,
481
+ 0, 0, 0, 0, 0, 0, 0, 0,
482
+ 0, 0, 0, 0, 0, 0, 0, 0,
483
+ 0, 0, 0, 0, 0, 0, 0, 0,
484
+ 0, 0, 0, 0, 0, 0, 0, 0,
485
+ 0, 0, 0, 1, 0, 0, 0, 0,
486
+ 0, 0, 0, 0, 0, 0, 0, 0,
487
+ 0, 0, 0, 0, 0, 0, 0, 0,
488
+ 0, 0, 0, 0, 0, 0, 0, 0,
489
+ 0, 0, 0, 0, 0, 0, 0, 0,
490
+ 0, 0, 0, 0, 0, 0, 0, 0,
491
+ 0, 0, 0, 0, 0, 0, 0, 0,
492
+ 0, 0, 0, 0, 0, 0, 0, 0,
493
+ 0, 0, 0, 0, 0, 0, 0, 0,
494
+ 0, 0, 0, 0, 0, 0, 0, 0,
495
+ 0, 0, 0, 0, 0, 0, 0, 0,
496
+ 0, 0, 0, 0, 0, 0, 0, 0,
497
+ 0, 0, 0, 0, 0, 0, 0, 0,
498
+ 0, 0, 0, 0, 0, 0, 0, 0,
499
+ 0, 0, 0, 0, 0, 0, 0, 0,
500
+ 0, 0, 0, 0, 0, 0, 0, 0,
501
+ 0, 0, 0, 0, 0, 0, 0, 0,
502
+ 0, 0, 0, 0, 0, 0, 0, 0,
503
+ 0, 0, 0, 0
504
+ };
505
+
506
+ static const short _lexer_index_offsets[] = {
507
+ 0, 0, 16, 20, 25, 27, 29, 31,
508
+ 33, 36, 51, 54, 56, 58, 60, 62,
509
+ 64, 66, 68, 70, 78, 81, 84, 87,
510
+ 90, 93, 96, 99, 102, 105, 108, 111,
511
+ 114, 117, 120, 123, 138, 140, 142, 144,
512
+ 146, 148, 150, 152, 154, 156, 158, 160,
513
+ 162, 164, 175, 179, 183, 186, 189, 192,
514
+ 195, 198, 201, 204, 207, 210, 213, 216,
515
+ 219, 222, 225, 228, 231, 234, 237, 240,
516
+ 244, 248, 251, 254, 257, 260, 263, 266,
517
+ 269, 272, 275, 278, 281, 284, 287, 290,
518
+ 293, 296, 299, 302, 305, 308, 311, 314,
519
+ 317, 320, 323, 326, 330, 333, 336, 339,
520
+ 342, 345, 349, 352, 355, 358, 361, 364,
521
+ 367, 370, 373, 376, 379, 382, 385, 388,
522
+ 391, 394, 397, 400, 403, 406, 409, 412,
523
+ 415, 418, 421, 424, 427, 430, 433, 436,
524
+ 439, 442, 445, 448, 451, 454, 457, 460,
525
+ 463, 466, 469, 472, 475, 478, 481, 484,
526
+ 487, 490, 492, 494, 496, 498, 500, 502,
527
+ 504, 506, 518, 523, 529, 532, 535, 538,
528
+ 541, 544, 547, 550, 553, 556, 559, 562,
529
+ 565, 568, 571, 574, 577, 580, 583, 587,
530
+ 590, 593, 596, 599, 602, 605, 608, 611,
531
+ 614, 618, 622, 625, 628, 631, 634, 637,
532
+ 640, 643, 646, 649, 652, 655, 658, 661,
533
+ 664, 667, 670, 673, 676, 679, 682, 685,
534
+ 688, 691, 694, 697, 700, 703, 707, 710,
535
+ 713, 716, 719, 722, 726, 729, 732, 735,
536
+ 738, 741, 744, 747, 750, 753, 756, 759,
537
+ 762, 765, 768, 771, 774, 777, 780, 783,
538
+ 786, 789, 792, 795, 798, 801, 804, 807,
539
+ 810, 813, 816, 819, 822, 825, 828, 831,
540
+ 834, 837, 840, 843, 846, 849, 852, 855,
541
+ 858, 861, 864, 867, 870, 872, 874, 877,
542
+ 880, 885, 890, 895, 900, 904, 908, 911,
543
+ 913, 915, 917, 919, 921, 923, 925, 927,
544
+ 929, 931, 933, 935, 937, 939, 941, 943,
545
+ 948, 955, 960, 964, 970, 974, 977, 983,
546
+ 998, 1001, 1004, 1007, 1010, 1013, 1015, 1017,
547
+ 1019, 1021, 1023, 1025, 1027, 1029, 1031, 1033,
548
+ 1035, 1037, 1041, 1043, 1045, 1047, 1049, 1051,
549
+ 1053, 1055, 1057, 1059, 1061, 1063, 1065, 1067,
550
+ 1069, 1071, 1073, 1075, 1077, 1080, 1083, 1085,
551
+ 1087, 1089, 1091, 1093, 1095, 1097, 1099, 1101,
552
+ 1103, 1105, 1107, 1109, 1111, 1113, 1115, 1117,
553
+ 1119, 1121, 1133, 1138, 1144, 1147, 1150, 1153,
554
+ 1156, 1159, 1162, 1165, 1168, 1171, 1174, 1177,
555
+ 1180, 1183, 1186, 1189, 1192, 1195, 1198, 1202,
556
+ 1205, 1208, 1211, 1214, 1217, 1220, 1223, 1226,
557
+ 1229, 1232, 1235, 1238, 1241, 1244, 1247, 1250,
558
+ 1253, 1256, 1259, 1262, 1265, 1268, 1271, 1274,
559
+ 1277, 1280, 1283, 1286, 1289, 1292, 1295, 1298,
560
+ 1301, 1304, 1307, 1310, 1313, 1316, 1319, 1322,
561
+ 1325, 1328, 1331, 1334, 1337, 1340, 1343, 1346,
562
+ 1349, 1352, 1354, 1356, 1358, 1360, 1362, 1364,
563
+ 1366, 1368, 1370, 1372, 1375, 1377, 1379, 1381,
564
+ 1383, 1385, 1387, 1389, 1402, 1407, 1413, 1416,
565
+ 1419, 1422, 1425, 1428, 1431, 1434, 1437, 1440,
566
+ 1443, 1446, 1449, 1452, 1455, 1458, 1461, 1464,
567
+ 1467, 1471, 1474, 1477, 1480, 1483, 1486, 1489,
568
+ 1492, 1495, 1498, 1502, 1506, 1509, 1512, 1515,
569
+ 1518, 1521, 1524, 1527, 1530, 1533, 1536, 1539,
570
+ 1542, 1545, 1548, 1551, 1554, 1557, 1560, 1563,
571
+ 1566, 1569, 1572, 1575, 1578, 1581, 1584, 1587,
572
+ 1591, 1594, 1597, 1600, 1603, 1606, 1610, 1613,
573
+ 1616, 1619, 1622, 1625, 1628, 1631, 1634, 1637,
574
+ 1640, 1643, 1646, 1649, 1652, 1655, 1658, 1661,
575
+ 1664, 1667, 1670, 1673, 1676, 1679, 1682, 1685,
576
+ 1688, 1691, 1694, 1697, 1700, 1703, 1706, 1709,
577
+ 1712, 1715, 1718, 1721, 1724, 1727, 1730, 1733,
578
+ 1736, 1739, 1742, 1745, 1748, 1751, 1754, 1757,
579
+ 1760, 1763, 1766, 1769, 1772, 1774, 1776, 1778,
580
+ 1780, 1782, 1784, 1786, 1788, 1790, 1792, 1794,
581
+ 1796, 1798, 1800, 1802, 1804, 1806, 1808, 1810,
582
+ 1812, 1814, 1816, 1818
583
+ };
584
+
585
+ static const short _lexer_trans_targs[] = {
586
+ 2, 10, 36, 41, 153, 601, 9, 9,
587
+ 276, 286, 288, 302, 303, 306, 9, 0,
588
+ 3, 329, 579, 0, 4, 317, 320, 323,
589
+ 0, 5, 0, 6, 0, 7, 0, 0,
590
+ 8, 9, 287, 8, 2, 10, 36, 41,
591
+ 153, 9, 9, 276, 286, 288, 302, 303,
592
+ 306, 9, 0, 11, 15, 0, 12, 0,
593
+ 13, 0, 14, 0, 7, 0, 16, 0,
594
+ 17, 0, 19, 18, 19, 18, 20, 312,
595
+ 19, 19, 9, 9, 19, 18, 21, 19,
596
+ 18, 22, 19, 18, 23, 19, 18, 24,
597
+ 19, 18, 25, 19, 18, 26, 19, 18,
598
+ 27, 19, 18, 28, 19, 18, 29, 19,
599
+ 18, 30, 19, 18, 31, 19, 18, 32,
600
+ 19, 18, 33, 19, 18, 34, 19, 18,
601
+ 19, 35, 18, 2, 10, 36, 41, 153,
602
+ 9, 9, 276, 286, 288, 302, 303, 306,
603
+ 9, 0, 37, 0, 38, 0, 39, 0,
604
+ 40, 0, 7, 0, 42, 0, 43, 0,
605
+ 44, 0, 45, 0, 46, 0, 47, 0,
606
+ 49, 48, 49, 48, 50, 127, 129, 134,
607
+ 49, 49, 9, 139, 9, 49, 48, 51,
608
+ 105, 49, 48, 52, 62, 49, 48, 53,
609
+ 49, 48, 54, 49, 48, 55, 49, 48,
610
+ 56, 49, 48, 57, 49, 48, 58, 49,
611
+ 48, 59, 49, 48, 60, 49, 48, 61,
612
+ 49, 48, 49, 35, 48, 63, 49, 48,
613
+ 64, 49, 48, 65, 49, 48, 66, 49,
614
+ 48, 67, 49, 48, 68, 49, 48, 69,
615
+ 49, 48, 70, 49, 48, 71, 49, 48,
616
+ 72, 49, 35, 48, 73, 89, 49, 48,
617
+ 74, 49, 48, 75, 49, 48, 76, 49,
618
+ 48, 77, 49, 48, 78, 49, 48, 79,
619
+ 49, 48, 80, 49, 48, 81, 49, 48,
620
+ 82, 49, 48, 83, 49, 48, 84, 49,
621
+ 48, 85, 49, 48, 86, 49, 48, 87,
622
+ 49, 48, 88, 49, 48, 61, 49, 48,
623
+ 90, 49, 48, 91, 49, 48, 92, 49,
624
+ 48, 93, 49, 48, 94, 49, 48, 95,
625
+ 49, 48, 96, 49, 48, 97, 49, 48,
626
+ 98, 49, 48, 99, 49, 48, 100, 49,
627
+ 35, 48, 101, 49, 48, 102, 49, 48,
628
+ 103, 49, 48, 104, 49, 48, 61, 49,
629
+ 48, 106, 115, 49, 48, 107, 49, 48,
630
+ 108, 49, 48, 109, 49, 48, 110, 49,
631
+ 48, 111, 49, 48, 112, 49, 48, 113,
632
+ 49, 48, 114, 49, 48, 61, 49, 48,
633
+ 116, 49, 48, 117, 49, 48, 118, 49,
634
+ 48, 119, 49, 48, 120, 49, 48, 121,
635
+ 49, 48, 122, 49, 48, 123, 49, 48,
636
+ 124, 49, 48, 125, 49, 48, 126, 49,
637
+ 48, 61, 49, 48, 128, 49, 48, 61,
638
+ 49, 48, 130, 49, 48, 131, 49, 48,
639
+ 132, 49, 48, 133, 49, 48, 61, 49,
640
+ 48, 135, 49, 48, 136, 49, 48, 137,
641
+ 49, 48, 138, 49, 48, 61, 49, 48,
642
+ 49, 140, 48, 49, 141, 48, 49, 142,
643
+ 48, 49, 143, 48, 49, 144, 48, 49,
644
+ 145, 48, 49, 146, 48, 49, 147, 48,
645
+ 49, 148, 48, 49, 149, 48, 49, 150,
646
+ 48, 49, 151, 48, 49, 152, 48, 49,
647
+ 9, 48, 154, 0, 155, 0, 156, 0,
648
+ 157, 0, 158, 0, 159, 0, 161, 160,
649
+ 161, 160, 162, 249, 251, 256, 161, 161,
650
+ 9, 261, 275, 9, 161, 160, 163, 182,
651
+ 227, 161, 160, 164, 167, 173, 176, 161,
652
+ 160, 165, 161, 160, 166, 161, 160, 35,
653
+ 161, 160, 168, 161, 160, 169, 161, 160,
654
+ 170, 161, 160, 171, 161, 160, 172, 161,
655
+ 160, 35, 161, 160, 174, 161, 160, 175,
656
+ 161, 160, 170, 161, 160, 177, 161, 160,
657
+ 178, 161, 160, 179, 161, 160, 180, 161,
658
+ 160, 181, 161, 160, 35, 161, 160, 170,
659
+ 183, 161, 160, 184, 161, 160, 185, 161,
660
+ 160, 186, 161, 160, 187, 161, 160, 188,
661
+ 161, 160, 189, 161, 160, 190, 161, 160,
662
+ 191, 161, 160, 192, 161, 160, 193, 161,
663
+ 35, 160, 194, 211, 161, 160, 195, 161,
664
+ 160, 196, 161, 160, 197, 161, 160, 198,
665
+ 161, 160, 199, 161, 160, 200, 161, 160,
666
+ 201, 161, 160, 202, 161, 160, 203, 161,
667
+ 160, 204, 161, 160, 205, 161, 160, 206,
668
+ 161, 160, 207, 161, 160, 208, 161, 160,
669
+ 209, 161, 160, 210, 161, 160, 161, 35,
670
+ 160, 212, 161, 160, 213, 161, 160, 214,
671
+ 161, 160, 215, 161, 160, 216, 161, 160,
672
+ 217, 161, 160, 218, 161, 160, 219, 161,
673
+ 160, 220, 161, 160, 221, 161, 160, 222,
674
+ 161, 35, 160, 223, 161, 160, 224, 161,
675
+ 160, 225, 161, 160, 226, 161, 160, 210,
676
+ 161, 160, 228, 237, 161, 160, 229, 161,
677
+ 160, 230, 161, 160, 231, 161, 160, 232,
678
+ 161, 160, 233, 161, 160, 234, 161, 160,
679
+ 235, 161, 160, 236, 161, 160, 210, 161,
680
+ 160, 238, 161, 160, 239, 161, 160, 240,
681
+ 161, 160, 241, 161, 160, 242, 161, 160,
682
+ 243, 161, 160, 244, 161, 160, 245, 161,
683
+ 160, 246, 161, 160, 247, 161, 160, 248,
684
+ 161, 160, 210, 161, 160, 250, 161, 160,
685
+ 170, 161, 160, 252, 161, 160, 253, 161,
686
+ 160, 254, 161, 160, 255, 161, 160, 35,
687
+ 161, 160, 257, 161, 160, 258, 161, 160,
688
+ 259, 161, 160, 260, 161, 160, 210, 161,
689
+ 160, 161, 262, 160, 161, 263, 160, 161,
690
+ 264, 160, 161, 265, 160, 161, 266, 160,
691
+ 161, 267, 160, 161, 268, 160, 161, 269,
692
+ 160, 161, 270, 160, 161, 271, 160, 161,
693
+ 272, 160, 161, 273, 160, 161, 274, 160,
694
+ 161, 9, 160, 161, 35, 160, 277, 0,
695
+ 278, 0, 280, 279, 279, 280, 279, 279,
696
+ 281, 281, 282, 281, 281, 281, 281, 282,
697
+ 281, 281, 281, 281, 283, 281, 281, 281,
698
+ 281, 284, 281, 281, 9, 285, 285, 0,
699
+ 9, 285, 285, 0, 9, 287, 286, 9,
700
+ 0, 289, 0, 290, 0, 291, 0, 292,
701
+ 0, 293, 0, 294, 0, 295, 0, 296,
702
+ 0, 297, 0, 298, 0, 299, 0, 300,
703
+ 0, 301, 0, 603, 0, 7, 0, 0,
704
+ 0, 0, 0, 304, 305, 9, 305, 305,
705
+ 303, 304, 304, 9, 305, 303, 305, 0,
706
+ 306, 307, 306, 0, 311, 310, 309, 307,
707
+ 310, 308, 0, 309, 307, 308, 0, 309,
708
+ 308, 311, 310, 309, 307, 310, 308, 2,
709
+ 10, 36, 41, 153, 311, 311, 276, 286,
710
+ 288, 302, 303, 306, 311, 0, 313, 19,
711
+ 18, 314, 19, 18, 315, 19, 18, 316,
712
+ 19, 18, 34, 19, 18, 318, 0, 319,
713
+ 0, 12, 0, 321, 0, 322, 0, 12,
714
+ 0, 324, 0, 325, 0, 326, 0, 327,
715
+ 0, 328, 0, 7, 0, 12, 330, 339,
716
+ 0, 331, 0, 332, 0, 333, 0, 334,
717
+ 0, 335, 0, 336, 0, 337, 0, 338,
718
+ 0, 16, 0, 340, 0, 341, 0, 342,
719
+ 0, 343, 0, 344, 0, 345, 0, 346,
720
+ 0, 347, 0, 348, 0, 349, 457, 0,
721
+ 350, 441, 0, 351, 0, 352, 0, 353,
722
+ 0, 354, 0, 355, 0, 356, 0, 357,
723
+ 0, 358, 0, 359, 0, 360, 0, 361,
724
+ 0, 362, 0, 363, 0, 364, 0, 365,
725
+ 0, 366, 0, 367, 0, 369, 368, 369,
726
+ 368, 370, 414, 416, 421, 369, 369, 9,
727
+ 426, 440, 9, 369, 368, 371, 390, 401,
728
+ 369, 368, 372, 375, 381, 384, 369, 368,
729
+ 373, 369, 368, 374, 369, 368, 35, 369,
730
+ 368, 376, 369, 368, 377, 369, 368, 378,
731
+ 369, 368, 379, 369, 368, 380, 369, 368,
732
+ 35, 369, 368, 382, 369, 368, 383, 369,
733
+ 368, 378, 369, 368, 385, 369, 368, 386,
734
+ 369, 368, 387, 369, 368, 388, 369, 368,
735
+ 389, 369, 368, 35, 369, 368, 378, 391,
736
+ 369, 368, 392, 369, 368, 393, 369, 368,
737
+ 394, 369, 368, 395, 369, 368, 396, 369,
738
+ 368, 397, 369, 368, 398, 369, 368, 399,
739
+ 369, 368, 400, 369, 368, 369, 35, 368,
740
+ 402, 369, 368, 403, 369, 368, 404, 369,
741
+ 368, 405, 369, 368, 406, 369, 368, 407,
742
+ 369, 368, 408, 369, 368, 409, 369, 368,
743
+ 410, 369, 368, 411, 369, 368, 412, 369,
744
+ 368, 413, 369, 368, 400, 369, 368, 415,
745
+ 369, 368, 378, 369, 368, 417, 369, 368,
746
+ 418, 369, 368, 419, 369, 368, 420, 369,
747
+ 368, 35, 369, 368, 422, 369, 368, 423,
748
+ 369, 368, 424, 369, 368, 425, 369, 368,
749
+ 400, 369, 368, 369, 427, 368, 369, 428,
750
+ 368, 369, 429, 368, 369, 430, 368, 369,
751
+ 431, 368, 369, 432, 368, 369, 433, 368,
752
+ 369, 434, 368, 369, 435, 368, 369, 436,
753
+ 368, 369, 437, 368, 369, 438, 368, 369,
754
+ 439, 368, 369, 9, 368, 369, 35, 368,
755
+ 442, 0, 443, 0, 444, 0, 445, 0,
756
+ 446, 0, 447, 0, 448, 0, 449, 0,
757
+ 450, 0, 451, 0, 452, 367, 0, 453,
758
+ 0, 454, 0, 455, 0, 456, 0, 366,
759
+ 0, 459, 458, 459, 458, 460, 547, 549,
760
+ 554, 559, 459, 459, 9, 564, 578, 9,
761
+ 459, 458, 461, 480, 525, 459, 458, 462,
762
+ 465, 471, 474, 459, 458, 463, 459, 458,
763
+ 464, 459, 458, 35, 459, 458, 466, 459,
764
+ 458, 467, 459, 458, 468, 459, 458, 469,
765
+ 459, 458, 470, 459, 458, 35, 459, 458,
766
+ 472, 459, 458, 473, 459, 458, 468, 459,
767
+ 458, 475, 459, 458, 476, 459, 458, 477,
768
+ 459, 458, 478, 459, 458, 479, 459, 458,
769
+ 35, 459, 458, 468, 481, 459, 458, 482,
770
+ 459, 458, 483, 459, 458, 484, 459, 458,
771
+ 485, 459, 458, 486, 459, 458, 487, 459,
772
+ 458, 488, 459, 458, 489, 459, 458, 490,
773
+ 459, 458, 491, 459, 35, 458, 492, 509,
774
+ 459, 458, 493, 459, 458, 494, 459, 458,
775
+ 495, 459, 458, 496, 459, 458, 497, 459,
776
+ 458, 498, 459, 458, 499, 459, 458, 500,
777
+ 459, 458, 501, 459, 458, 502, 459, 458,
778
+ 503, 459, 458, 504, 459, 458, 505, 459,
779
+ 458, 506, 459, 458, 507, 459, 458, 508,
780
+ 459, 458, 459, 35, 458, 510, 459, 458,
781
+ 511, 459, 458, 512, 459, 458, 513, 459,
782
+ 458, 514, 459, 458, 515, 459, 458, 516,
783
+ 459, 458, 517, 459, 458, 518, 459, 458,
784
+ 519, 459, 458, 520, 459, 35, 458, 521,
785
+ 459, 458, 522, 459, 458, 523, 459, 458,
786
+ 524, 459, 458, 508, 459, 458, 526, 535,
787
+ 459, 458, 527, 459, 458, 528, 459, 458,
788
+ 529, 459, 458, 530, 459, 458, 531, 459,
789
+ 458, 532, 459, 458, 533, 459, 458, 534,
790
+ 459, 458, 508, 459, 458, 536, 459, 458,
791
+ 537, 459, 458, 538, 459, 458, 539, 459,
792
+ 458, 540, 459, 458, 541, 459, 458, 542,
793
+ 459, 458, 543, 459, 458, 544, 459, 458,
794
+ 545, 459, 458, 546, 459, 458, 508, 459,
795
+ 458, 548, 459, 458, 468, 459, 458, 550,
796
+ 459, 458, 551, 459, 458, 552, 459, 458,
797
+ 553, 459, 458, 35, 459, 458, 555, 459,
798
+ 458, 556, 459, 458, 557, 459, 458, 558,
799
+ 459, 458, 508, 459, 458, 560, 459, 458,
800
+ 561, 459, 458, 562, 459, 458, 563, 459,
801
+ 458, 508, 459, 458, 459, 565, 458, 459,
802
+ 566, 458, 459, 567, 458, 459, 568, 458,
803
+ 459, 569, 458, 459, 570, 458, 459, 571,
804
+ 458, 459, 572, 458, 459, 573, 458, 459,
805
+ 574, 458, 459, 575, 458, 459, 576, 458,
806
+ 459, 577, 458, 459, 9, 458, 459, 35,
807
+ 458, 580, 589, 0, 581, 0, 582, 0,
808
+ 583, 0, 584, 0, 585, 0, 586, 0,
809
+ 587, 0, 588, 0, 366, 0, 590, 0,
810
+ 591, 0, 592, 0, 593, 0, 594, 0,
811
+ 595, 0, 596, 0, 597, 0, 598, 0,
812
+ 599, 0, 600, 0, 46, 0, 602, 0,
813
+ 9, 0, 0, 0
814
+ };
815
+
816
+ static const unsigned char _lexer_trans_actions[] = {
817
+ 29, 29, 29, 29, 29, 0, 54, 0,
818
+ 5, 1, 0, 29, 1, 35, 0, 43,
819
+ 0, 0, 0, 43, 0, 0, 0, 0,
820
+ 43, 0, 43, 0, 43, 0, 43, 43,
821
+ 57, 110, 23, 0, 29, 29, 29, 29,
822
+ 29, 54, 0, 5, 1, 0, 29, 1,
823
+ 35, 0, 43, 0, 0, 43, 0, 43,
824
+ 0, 43, 0, 43, 0, 43, 0, 43,
825
+ 0, 43, 140, 57, 54, 0, 84, 84,
826
+ 54, 0, 81, 81, 0, 0, 0, 54,
827
+ 0, 0, 54, 0, 0, 54, 0, 0,
828
+ 54, 0, 0, 54, 0, 0, 54, 0,
829
+ 0, 54, 0, 0, 54, 0, 0, 54,
830
+ 0, 0, 54, 0, 0, 54, 0, 0,
831
+ 54, 0, 0, 54, 0, 0, 54, 0,
832
+ 54, 21, 0, 63, 63, 63, 63, 63,
833
+ 126, 31, 60, 57, 31, 63, 57, 66,
834
+ 31, 43, 0, 43, 0, 43, 0, 43,
835
+ 0, 43, 0, 43, 0, 43, 0, 43,
836
+ 0, 43, 0, 43, 0, 43, 0, 43,
837
+ 140, 57, 54, 0, 84, 84, 84, 84,
838
+ 54, 0, 69, 33, 69, 0, 0, 0,
839
+ 0, 54, 0, 0, 0, 54, 0, 0,
840
+ 54, 0, 0, 54, 0, 0, 54, 0,
841
+ 0, 54, 0, 0, 54, 0, 0, 54,
842
+ 0, 0, 54, 0, 0, 54, 0, 0,
843
+ 54, 0, 54, 13, 0, 0, 54, 0,
844
+ 0, 54, 0, 0, 54, 0, 0, 54,
845
+ 0, 0, 54, 0, 0, 54, 0, 0,
846
+ 54, 0, 0, 54, 0, 0, 54, 0,
847
+ 0, 54, 13, 0, 0, 0, 54, 0,
848
+ 0, 54, 0, 0, 54, 0, 0, 54,
849
+ 0, 0, 54, 0, 0, 54, 0, 0,
850
+ 54, 0, 0, 54, 0, 0, 54, 0,
851
+ 0, 54, 0, 0, 54, 0, 0, 54,
852
+ 0, 0, 54, 0, 0, 54, 0, 0,
853
+ 54, 0, 0, 54, 0, 0, 54, 0,
854
+ 0, 54, 0, 0, 54, 0, 0, 54,
855
+ 0, 0, 54, 0, 0, 54, 0, 0,
856
+ 54, 0, 0, 54, 0, 0, 54, 0,
857
+ 0, 54, 0, 0, 54, 0, 0, 54,
858
+ 13, 0, 0, 54, 0, 0, 54, 0,
859
+ 0, 54, 0, 0, 54, 0, 0, 54,
860
+ 0, 0, 0, 54, 0, 0, 54, 0,
861
+ 0, 54, 0, 0, 54, 0, 0, 54,
862
+ 0, 0, 54, 0, 0, 54, 0, 0,
863
+ 54, 0, 0, 54, 0, 0, 54, 0,
864
+ 0, 54, 0, 0, 54, 0, 0, 54,
865
+ 0, 0, 54, 0, 0, 54, 0, 0,
866
+ 54, 0, 0, 54, 0, 0, 54, 0,
867
+ 0, 54, 0, 0, 54, 0, 0, 54,
868
+ 0, 0, 54, 0, 0, 54, 0, 0,
869
+ 54, 0, 0, 54, 0, 0, 54, 0,
870
+ 0, 54, 0, 0, 54, 0, 0, 54,
871
+ 0, 0, 54, 0, 0, 54, 0, 0,
872
+ 54, 0, 0, 54, 0, 0, 54, 0,
873
+ 54, 0, 0, 54, 0, 0, 54, 0,
874
+ 0, 54, 0, 0, 54, 0, 0, 54,
875
+ 0, 0, 54, 0, 0, 54, 0, 0,
876
+ 54, 0, 0, 54, 0, 0, 54, 0,
877
+ 0, 54, 0, 0, 54, 0, 0, 54,
878
+ 13, 0, 0, 43, 0, 43, 0, 43,
879
+ 0, 43, 0, 43, 0, 43, 140, 57,
880
+ 54, 0, 84, 84, 84, 84, 54, 0,
881
+ 72, 33, 84, 72, 0, 0, 0, 0,
882
+ 0, 54, 0, 0, 0, 0, 0, 54,
883
+ 0, 0, 54, 0, 0, 54, 0, 15,
884
+ 54, 0, 0, 54, 0, 0, 54, 0,
885
+ 0, 54, 0, 0, 54, 0, 0, 54,
886
+ 0, 15, 54, 0, 0, 54, 0, 0,
887
+ 54, 0, 0, 54, 0, 0, 54, 0,
888
+ 0, 54, 0, 0, 54, 0, 0, 54,
889
+ 0, 0, 54, 0, 15, 54, 0, 0,
890
+ 0, 54, 0, 0, 54, 0, 0, 54,
891
+ 0, 0, 54, 0, 0, 54, 0, 0,
892
+ 54, 0, 0, 54, 0, 0, 54, 0,
893
+ 0, 54, 0, 0, 54, 0, 0, 54,
894
+ 15, 0, 0, 0, 54, 0, 0, 54,
895
+ 0, 0, 54, 0, 0, 54, 0, 0,
896
+ 54, 0, 0, 54, 0, 0, 54, 0,
897
+ 0, 54, 0, 0, 54, 0, 0, 54,
898
+ 0, 0, 54, 0, 0, 54, 0, 0,
899
+ 54, 0, 0, 54, 0, 0, 54, 0,
900
+ 0, 54, 0, 0, 54, 0, 54, 15,
901
+ 0, 0, 54, 0, 0, 54, 0, 0,
902
+ 54, 0, 0, 54, 0, 0, 54, 0,
903
+ 0, 54, 0, 0, 54, 0, 0, 54,
904
+ 0, 0, 54, 0, 0, 54, 0, 0,
905
+ 54, 15, 0, 0, 54, 0, 0, 54,
906
+ 0, 0, 54, 0, 0, 54, 0, 0,
907
+ 54, 0, 0, 0, 54, 0, 0, 54,
908
+ 0, 0, 54, 0, 0, 54, 0, 0,
909
+ 54, 0, 0, 54, 0, 0, 54, 0,
910
+ 0, 54, 0, 0, 54, 0, 0, 54,
911
+ 0, 0, 54, 0, 0, 54, 0, 0,
912
+ 54, 0, 0, 54, 0, 0, 54, 0,
913
+ 0, 54, 0, 0, 54, 0, 0, 54,
914
+ 0, 0, 54, 0, 0, 54, 0, 0,
915
+ 54, 0, 0, 54, 0, 0, 54, 0,
916
+ 0, 54, 0, 0, 54, 0, 0, 54,
917
+ 0, 0, 54, 0, 0, 54, 0, 15,
918
+ 54, 0, 0, 54, 0, 0, 54, 0,
919
+ 0, 54, 0, 0, 54, 0, 0, 54,
920
+ 0, 54, 0, 0, 54, 0, 0, 54,
921
+ 0, 0, 54, 0, 0, 54, 0, 0,
922
+ 54, 0, 0, 54, 0, 0, 54, 0,
923
+ 0, 54, 0, 0, 54, 0, 0, 54,
924
+ 0, 0, 54, 0, 0, 54, 0, 0,
925
+ 54, 15, 0, 54, 15, 0, 0, 43,
926
+ 0, 43, 135, 48, 9, 106, 11, 0,
927
+ 130, 45, 45, 45, 3, 122, 33, 33,
928
+ 33, 0, 122, 33, 33, 33, 0, 122,
929
+ 33, 0, 33, 0, 102, 7, 7, 43,
930
+ 54, 0, 0, 43, 114, 25, 0, 54,
931
+ 43, 0, 43, 0, 43, 0, 43, 0,
932
+ 43, 0, 43, 0, 43, 0, 43, 0,
933
+ 43, 0, 43, 0, 43, 0, 43, 0,
934
+ 43, 0, 43, 0, 43, 0, 43, 43,
935
+ 43, 43, 43, 0, 27, 118, 27, 27,
936
+ 51, 27, 0, 54, 0, 1, 0, 43,
937
+ 0, 0, 0, 43, 54, 37, 37, 87,
938
+ 37, 37, 43, 0, 39, 0, 43, 0,
939
+ 0, 54, 0, 0, 39, 0, 0, 96,
940
+ 96, 96, 96, 96, 54, 0, 93, 90,
941
+ 41, 96, 90, 99, 0, 43, 0, 54,
942
+ 0, 0, 54, 0, 0, 54, 0, 0,
943
+ 54, 0, 0, 54, 0, 0, 43, 0,
944
+ 43, 0, 43, 0, 43, 0, 43, 0,
945
+ 43, 0, 43, 0, 43, 0, 43, 0,
946
+ 43, 0, 43, 0, 43, 0, 0, 0,
947
+ 43, 0, 43, 0, 43, 0, 43, 0,
948
+ 43, 0, 43, 0, 43, 0, 43, 0,
949
+ 43, 0, 43, 0, 43, 0, 43, 0,
950
+ 43, 0, 43, 0, 43, 0, 43, 0,
951
+ 43, 0, 43, 0, 43, 0, 0, 43,
952
+ 0, 0, 43, 0, 43, 0, 43, 0,
953
+ 43, 0, 43, 0, 43, 0, 43, 0,
954
+ 43, 0, 43, 0, 43, 0, 43, 0,
955
+ 43, 0, 43, 0, 43, 0, 43, 0,
956
+ 43, 0, 43, 0, 43, 140, 57, 54,
957
+ 0, 84, 84, 84, 84, 54, 0, 78,
958
+ 33, 84, 78, 0, 0, 0, 0, 0,
959
+ 54, 0, 0, 0, 0, 0, 54, 0,
960
+ 0, 54, 0, 0, 54, 0, 19, 54,
961
+ 0, 0, 54, 0, 0, 54, 0, 0,
962
+ 54, 0, 0, 54, 0, 0, 54, 0,
963
+ 19, 54, 0, 0, 54, 0, 0, 54,
964
+ 0, 0, 54, 0, 0, 54, 0, 0,
965
+ 54, 0, 0, 54, 0, 0, 54, 0,
966
+ 0, 54, 0, 19, 54, 0, 0, 0,
967
+ 54, 0, 0, 54, 0, 0, 54, 0,
968
+ 0, 54, 0, 0, 54, 0, 0, 54,
969
+ 0, 0, 54, 0, 0, 54, 0, 0,
970
+ 54, 0, 0, 54, 0, 54, 19, 0,
971
+ 0, 54, 0, 0, 54, 0, 0, 54,
972
+ 0, 0, 54, 0, 0, 54, 0, 0,
973
+ 54, 0, 0, 54, 0, 0, 54, 0,
974
+ 0, 54, 0, 0, 54, 0, 0, 54,
975
+ 0, 0, 54, 0, 0, 54, 0, 0,
976
+ 54, 0, 0, 54, 0, 0, 54, 0,
977
+ 0, 54, 0, 0, 54, 0, 0, 54,
978
+ 0, 19, 54, 0, 0, 54, 0, 0,
979
+ 54, 0, 0, 54, 0, 0, 54, 0,
980
+ 0, 54, 0, 54, 0, 0, 54, 0,
981
+ 0, 54, 0, 0, 54, 0, 0, 54,
982
+ 0, 0, 54, 0, 0, 54, 0, 0,
983
+ 54, 0, 0, 54, 0, 0, 54, 0,
984
+ 0, 54, 0, 0, 54, 0, 0, 54,
985
+ 0, 0, 54, 19, 0, 54, 19, 0,
986
+ 0, 43, 0, 43, 0, 43, 0, 43,
987
+ 0, 43, 0, 43, 0, 43, 0, 43,
988
+ 0, 43, 0, 43, 0, 0, 43, 0,
989
+ 43, 0, 43, 0, 43, 0, 43, 0,
990
+ 43, 140, 57, 54, 0, 84, 84, 84,
991
+ 84, 84, 54, 0, 75, 33, 84, 75,
992
+ 0, 0, 0, 0, 0, 54, 0, 0,
993
+ 0, 0, 0, 54, 0, 0, 54, 0,
994
+ 0, 54, 0, 17, 54, 0, 0, 54,
995
+ 0, 0, 54, 0, 0, 54, 0, 0,
996
+ 54, 0, 0, 54, 0, 17, 54, 0,
997
+ 0, 54, 0, 0, 54, 0, 0, 54,
998
+ 0, 0, 54, 0, 0, 54, 0, 0,
999
+ 54, 0, 0, 54, 0, 0, 54, 0,
1000
+ 17, 54, 0, 0, 0, 54, 0, 0,
1001
+ 54, 0, 0, 54, 0, 0, 54, 0,
1002
+ 0, 54, 0, 0, 54, 0, 0, 54,
1003
+ 0, 0, 54, 0, 0, 54, 0, 0,
1004
+ 54, 0, 0, 54, 17, 0, 0, 0,
1005
+ 54, 0, 0, 54, 0, 0, 54, 0,
1006
+ 0, 54, 0, 0, 54, 0, 0, 54,
1007
+ 0, 0, 54, 0, 0, 54, 0, 0,
1008
+ 54, 0, 0, 54, 0, 0, 54, 0,
1009
+ 0, 54, 0, 0, 54, 0, 0, 54,
1010
+ 0, 0, 54, 0, 0, 54, 0, 0,
1011
+ 54, 0, 54, 17, 0, 0, 54, 0,
1012
+ 0, 54, 0, 0, 54, 0, 0, 54,
1013
+ 0, 0, 54, 0, 0, 54, 0, 0,
1014
+ 54, 0, 0, 54, 0, 0, 54, 0,
1015
+ 0, 54, 0, 0, 54, 17, 0, 0,
1016
+ 54, 0, 0, 54, 0, 0, 54, 0,
1017
+ 0, 54, 0, 0, 54, 0, 0, 0,
1018
+ 54, 0, 0, 54, 0, 0, 54, 0,
1019
+ 0, 54, 0, 0, 54, 0, 0, 54,
1020
+ 0, 0, 54, 0, 0, 54, 0, 0,
1021
+ 54, 0, 0, 54, 0, 0, 54, 0,
1022
+ 0, 54, 0, 0, 54, 0, 0, 54,
1023
+ 0, 0, 54, 0, 0, 54, 0, 0,
1024
+ 54, 0, 0, 54, 0, 0, 54, 0,
1025
+ 0, 54, 0, 0, 54, 0, 0, 54,
1026
+ 0, 0, 54, 0, 0, 54, 0, 0,
1027
+ 54, 0, 0, 54, 0, 0, 54, 0,
1028
+ 0, 54, 0, 17, 54, 0, 0, 54,
1029
+ 0, 0, 54, 0, 0, 54, 0, 0,
1030
+ 54, 0, 0, 54, 0, 0, 54, 0,
1031
+ 0, 54, 0, 0, 54, 0, 0, 54,
1032
+ 0, 0, 54, 0, 54, 0, 0, 54,
1033
+ 0, 0, 54, 0, 0, 54, 0, 0,
1034
+ 54, 0, 0, 54, 0, 0, 54, 0,
1035
+ 0, 54, 0, 0, 54, 0, 0, 54,
1036
+ 0, 0, 54, 0, 0, 54, 0, 0,
1037
+ 54, 0, 0, 54, 17, 0, 54, 17,
1038
+ 0, 0, 0, 43, 0, 43, 0, 43,
1039
+ 0, 43, 0, 43, 0, 43, 0, 43,
1040
+ 0, 43, 0, 43, 0, 43, 0, 43,
1041
+ 0, 43, 0, 43, 0, 43, 0, 43,
1042
+ 0, 43, 0, 43, 0, 43, 0, 43,
1043
+ 0, 43, 0, 43, 0, 43, 0, 43,
1044
+ 0, 43, 0, 0
1045
+ };
1046
+
1047
+ static const unsigned char _lexer_eof_actions[] = {
1048
+ 0, 43, 43, 43, 43, 43, 43, 43,
1049
+ 43, 43, 43, 43, 43, 43, 43, 43,
1050
+ 43, 43, 43, 43, 43, 43, 43, 43,
1051
+ 43, 43, 43, 43, 43, 43, 43, 43,
1052
+ 43, 43, 43, 43, 43, 43, 43, 43,
1053
+ 43, 43, 43, 43, 43, 43, 43, 43,
1054
+ 43, 43, 43, 43, 43, 43, 43, 43,
1055
+ 43, 43, 43, 43, 43, 43, 43, 43,
1056
+ 43, 43, 43, 43, 43, 43, 43, 43,
1057
+ 43, 43, 43, 43, 43, 43, 43, 43,
1058
+ 43, 43, 43, 43, 43, 43, 43, 43,
1059
+ 43, 43, 43, 43, 43, 43, 43, 43,
1060
+ 43, 43, 43, 43, 43, 43, 43, 43,
1061
+ 43, 43, 43, 43, 43, 43, 43, 43,
1062
+ 43, 43, 43, 43, 43, 43, 43, 43,
1063
+ 43, 43, 43, 43, 43, 43, 43, 43,
1064
+ 43, 43, 43, 43, 43, 43, 43, 43,
1065
+ 43, 43, 43, 43, 43, 43, 43, 43,
1066
+ 43, 43, 43, 43, 43, 43, 43, 43,
1067
+ 43, 43, 43, 43, 43, 43, 43, 43,
1068
+ 43, 43, 43, 43, 43, 43, 43, 43,
1069
+ 43, 43, 43, 43, 43, 43, 43, 43,
1070
+ 43, 43, 43, 43, 43, 43, 43, 43,
1071
+ 43, 43, 43, 43, 43, 43, 43, 43,
1072
+ 43, 43, 43, 43, 43, 43, 43, 43,
1073
+ 43, 43, 43, 43, 43, 43, 43, 43,
1074
+ 43, 43, 43, 43, 43, 43, 43, 43,
1075
+ 43, 43, 43, 43, 43, 43, 43, 43,
1076
+ 43, 43, 43, 43, 43, 43, 43, 43,
1077
+ 43, 43, 43, 43, 43, 43, 43, 43,
1078
+ 43, 43, 43, 43, 43, 43, 43, 43,
1079
+ 43, 43, 43, 43, 43, 43, 43, 43,
1080
+ 43, 43, 43, 43, 43, 43, 43, 43,
1081
+ 43, 43, 43, 43, 43, 43, 43, 43,
1082
+ 43, 43, 43, 43, 43, 43, 43, 43,
1083
+ 43, 43, 43, 43, 43, 43, 43, 43,
1084
+ 43, 43, 43, 43, 43, 43, 43, 43,
1085
+ 43, 43, 43, 43, 43, 43, 43, 43,
1086
+ 43, 43, 43, 43, 43, 43, 43, 43,
1087
+ 43, 43, 43, 43, 43, 43, 43, 43,
1088
+ 43, 43, 43, 43, 43, 43, 43, 43,
1089
+ 43, 43, 43, 43, 43, 43, 43, 43,
1090
+ 43, 43, 43, 43, 43, 43, 43, 43,
1091
+ 43, 43, 43, 43, 43, 43, 43, 43,
1092
+ 43, 43, 43, 43, 43, 43, 43, 43,
1093
+ 43, 43, 43, 43, 43, 43, 43, 43,
1094
+ 43, 43, 43, 43, 43, 43, 43, 43,
1095
+ 43, 43, 43, 43, 43, 43, 43, 43,
1096
+ 43, 43, 43, 43, 43, 43, 43, 43,
1097
+ 43, 43, 43, 43, 43, 43, 43, 43,
1098
+ 43, 43, 43, 43, 43, 43, 43, 43,
1099
+ 43, 43, 43, 43, 43, 43, 43, 43,
1100
+ 43, 43, 43, 43, 43, 43, 43, 43,
1101
+ 43, 43, 43, 43, 43, 43, 43, 43,
1102
+ 43, 43, 43, 43, 43, 43, 43, 43,
1103
+ 43, 43, 43, 43, 43, 43, 43, 43,
1104
+ 43, 43, 43, 43, 43, 43, 43, 43,
1105
+ 43, 43, 43, 43, 43, 43, 43, 43,
1106
+ 43, 43, 43, 43, 43, 43, 43, 43,
1107
+ 43, 43, 43, 43, 43, 43, 43, 43,
1108
+ 43, 43, 43, 43, 43, 43, 43, 43,
1109
+ 43, 43, 43, 43, 43, 43, 43, 43,
1110
+ 43, 43, 43, 43, 43, 43, 43, 43,
1111
+ 43, 43, 43, 43, 43, 43, 43, 43,
1112
+ 43, 43, 43, 43, 43, 43, 43, 43,
1113
+ 43, 43, 43, 43, 43, 43, 43, 43,
1114
+ 43, 43, 43, 43, 43, 43, 43, 43,
1115
+ 43, 43, 43, 43, 43, 43, 43, 43,
1116
+ 43, 43, 43, 43, 43, 43, 43, 43,
1117
+ 43, 43, 43, 43, 43, 43, 43, 43,
1118
+ 43, 43, 43, 43, 43, 43, 43, 43,
1119
+ 43, 43, 43, 43, 43, 43, 43, 43,
1120
+ 43, 43, 43, 43, 43, 43, 43, 43,
1121
+ 43, 43, 43, 43, 43, 43, 43, 43,
1122
+ 43, 43, 43, 43, 43, 43, 43, 43,
1123
+ 43, 43, 43, 43
1124
+ };
1125
+
1126
+ static const int lexer_start = 1;
1127
+ static const int lexer_first_final = 603;
1128
+ static const int lexer_error = 0;
1129
+
1130
+ static const int lexer_en_main = 1;
1131
+
1132
+
1133
+ #line 258 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1134
+
1135
+ static VALUE
1136
+ unindent(VALUE con, int start_col)
1137
+ {
1138
+ VALUE re;
1139
+ // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
1140
+ char pat[32];
1141
+ snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
1142
+ re = rb_reg_regcomp(rb_str_new2(pat));
1143
+ rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
1144
+
1145
+ return Qnil;
1146
+
1147
+ }
1148
+
1149
+ static void
1150
+ store_kw_con(VALUE listener, const char * event_name,
1151
+ const char * keyword_at, size_t keyword_length,
1152
+ const char * at, size_t length,
1153
+ int current_line)
1154
+ {
1155
+ VALUE con = Qnil, kw = Qnil;
1156
+ kw = ENCODED_STR_NEW(keyword_at, keyword_length);
1157
+ con = ENCODED_STR_NEW(at, length);
1158
+ rb_funcall(con, rb_intern("strip!"), 0);
1159
+ rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
1160
+ }
1161
+
1162
+ static void
1163
+ store_multiline_kw_con(VALUE listener, const char * event_name,
1164
+ const char * keyword_at, size_t keyword_length,
1165
+ const char * at, size_t length,
1166
+ int current_line, int start_col)
1167
+ {
1168
+ VALUE split;
1169
+ VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
1170
+
1171
+ kw = ENCODED_STR_NEW(keyword_at, keyword_length);
1172
+ con = ENCODED_STR_NEW(at, length);
1173
+
1174
+ unindent(con, start_col);
1175
+
1176
+ split = rb_str_split(con, "\n");
1177
+
1178
+ name = rb_funcall(split, rb_intern("shift"), 0);
1179
+ desc = rb_ary_join(split, rb_str_new2( "\n" ));
1180
+
1181
+ if( name == Qnil )
1182
+ {
1183
+ name = rb_str_new2("");
1184
+ }
1185
+ if( rb_funcall(desc, rb_intern("size"), 0) == 0)
1186
+ {
1187
+ desc = rb_str_new2("");
1188
+ }
1189
+ rb_funcall(name, rb_intern("strip!"), 0);
1190
+ rb_funcall(desc, rb_intern("rstrip!"), 0);
1191
+ rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
1192
+ }
1193
+
1194
+ static void
1195
+ store_attr(VALUE listener, const char * attr_type,
1196
+ const char * at, size_t length,
1197
+ int line)
1198
+ {
1199
+ VALUE val = ENCODED_STR_NEW(at, length);
1200
+ rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
1201
+ }
1202
+ static void
1203
+ store_docstring_content(VALUE listener,
1204
+ int start_col,
1205
+ const char *type_at, size_t type_length,
1206
+ const char *at, size_t length,
1207
+ int current_line)
1208
+ {
1209
+ VALUE re2;
1210
+ VALUE unescape_escaped_quotes;
1211
+ VALUE con = ENCODED_STR_NEW(at, length);
1212
+ VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
1213
+
1214
+ unindent(con, start_col);
1215
+
1216
+ re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
1217
+ unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
1218
+ rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
1219
+ rb_funcall(con_type, rb_intern("strip!"), 0);
1220
+ rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
1221
+ rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
1222
+ }
1223
+ static void
1224
+ raise_lexer_error(const char * at, int line)
1225
+ {
1226
+ rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
1227
+ }
1228
+
1229
+ static void lexer_init(lexer_state *lexer) {
1230
+ lexer->content_start = 0;
1231
+ lexer->content_end = 0;
1232
+ lexer->content_len = 0;
1233
+ lexer->docstring_content_type_start = 0;
1234
+ lexer->docstring_content_type_end = 0;
1235
+ lexer->mark = 0;
1236
+ lexer->keyword_start = 0;
1237
+ lexer->keyword_end = 0;
1238
+ lexer->next_keyword_start = 0;
1239
+ lexer->line_number = 1;
1240
+ lexer->last_newline = 0;
1241
+ lexer->final_newline = 0;
1242
+ lexer->start_col = 0;
1243
+ }
1244
+
1245
+ static VALUE CLexer_alloc(VALUE klass)
1246
+ {
1247
+ VALUE obj;
1248
+ lexer_state *lxr = ALLOC(lexer_state);
1249
+ lexer_init(lxr);
1250
+
1251
+ obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
1252
+
1253
+ return obj;
1254
+ }
1255
+
1256
+ static VALUE CLexer_init(VALUE self, VALUE listener)
1257
+ {
1258
+ lexer_state *lxr;
1259
+ rb_iv_set(self, "@listener", listener);
1260
+
1261
+ lxr = NULL;
1262
+ DATA_GET(self, lexer_state, lxr);
1263
+ lexer_init(lxr);
1264
+
1265
+ return self;
1266
+ }
1267
+
1268
+ static VALUE CLexer_scan(VALUE self, VALUE input)
1269
+ {
1270
+ VALUE input_copy;
1271
+ char *data;
1272
+ size_t len;
1273
+ VALUE listener = rb_iv_get(self, "@listener");
1274
+
1275
+ lexer_state *lexer;
1276
+ lexer = NULL;
1277
+ DATA_GET(self, lexer_state, lexer);
1278
+
1279
+ input_copy = rb_str_dup(input);
1280
+
1281
+ rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
1282
+ data = RSTRING_PTR(input_copy);
1283
+ len = RSTRING_LEN(input_copy);
1284
+
1285
+ if (len == 0) {
1286
+ rb_raise(rb_eGherkinLexingError, "No content to lex.");
1287
+ } else {
1288
+
1289
+ const char *p, *pe, *eof;
1290
+ int cs = 0;
1291
+
1292
+ VALUE current_row = Qnil;
1293
+
1294
+ p = data;
1295
+ pe = data + len;
1296
+ eof = pe;
1297
+
1298
+ assert(*pe == '\0' && "pointer does not end on NULL");
1299
+
1300
+
1301
+ #line 1302 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
1302
+ {
1303
+ cs = lexer_start;
1304
+ }
1305
+
1306
+ #line 425 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1307
+
1308
+ #line 1309 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
1309
+ {
1310
+ int _klen;
1311
+ unsigned int _trans;
1312
+ const char *_acts;
1313
+ unsigned int _nacts;
1314
+ const char *_keys;
1315
+
1316
+ if ( p == pe )
1317
+ goto _test_eof;
1318
+ if ( cs == 0 )
1319
+ goto _out;
1320
+ _resume:
1321
+ _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
1322
+ _trans = _lexer_index_offsets[cs];
1323
+
1324
+ _klen = _lexer_single_lengths[cs];
1325
+ if ( _klen > 0 ) {
1326
+ const char *_lower = _keys;
1327
+ const char *_mid;
1328
+ const char *_upper = _keys + _klen - 1;
1329
+ while (1) {
1330
+ if ( _upper < _lower )
1331
+ break;
1332
+
1333
+ _mid = _lower + ((_upper-_lower) >> 1);
1334
+ if ( (*p) < *_mid )
1335
+ _upper = _mid - 1;
1336
+ else if ( (*p) > *_mid )
1337
+ _lower = _mid + 1;
1338
+ else {
1339
+ _trans += (_mid - _keys);
1340
+ goto _match;
1341
+ }
1342
+ }
1343
+ _keys += _klen;
1344
+ _trans += _klen;
1345
+ }
1346
+
1347
+ _klen = _lexer_range_lengths[cs];
1348
+ if ( _klen > 0 ) {
1349
+ const char *_lower = _keys;
1350
+ const char *_mid;
1351
+ const char *_upper = _keys + (_klen<<1) - 2;
1352
+ while (1) {
1353
+ if ( _upper < _lower )
1354
+ break;
1355
+
1356
+ _mid = _lower + (((_upper-_lower) >> 1) & ~1);
1357
+ if ( (*p) < _mid[0] )
1358
+ _upper = _mid - 2;
1359
+ else if ( (*p) > _mid[1] )
1360
+ _lower = _mid + 2;
1361
+ else {
1362
+ _trans += ((_mid - _keys)>>1);
1363
+ goto _match;
1364
+ }
1365
+ }
1366
+ _trans += _klen;
1367
+ }
1368
+
1369
+ _match:
1370
+ cs = _lexer_trans_targs[_trans];
1371
+
1372
+ if ( _lexer_trans_actions[_trans] == 0 )
1373
+ goto _again;
1374
+
1375
+ _acts = _lexer_actions + _lexer_trans_actions[_trans];
1376
+ _nacts = (unsigned int) *_acts++;
1377
+ while ( _nacts-- > 0 )
1378
+ {
1379
+ switch ( *_acts++ )
1380
+ {
1381
+ case 0:
1382
+ #line 83 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1383
+ {
1384
+ MARK(content_start, p);
1385
+ lexer->current_line = lexer->line_number;
1386
+ lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
1387
+ }
1388
+ break;
1389
+ case 1:
1390
+ #line 89 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1391
+ {
1392
+ MARK(content_start, p);
1393
+ }
1394
+ break;
1395
+ case 2:
1396
+ #line 93 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1397
+ {
1398
+ lexer->current_line = lexer->line_number;
1399
+ lexer->start_col = p - data - lexer->last_newline;
1400
+ }
1401
+ break;
1402
+ case 3:
1403
+ #line 98 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1404
+ {
1405
+ int len = LEN(content_start, PTR_TO(final_newline));
1406
+ int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
1407
+
1408
+ if (len < 0) len = 0;
1409
+ if (type_len < 0) len = 0;
1410
+
1411
+ store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
1412
+ }
1413
+ break;
1414
+ case 4:
1415
+ #line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1416
+ {
1417
+ MARK(docstring_content_type_start, p);
1418
+ }
1419
+ break;
1420
+ case 5:
1421
+ #line 112 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1422
+ {
1423
+ MARK(docstring_content_type_end, p);
1424
+ }
1425
+ break;
1426
+ case 6:
1427
+ #line 116 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1428
+ {
1429
+ STORE_KW_END_CON(feature);
1430
+ }
1431
+ break;
1432
+ case 7:
1433
+ #line 120 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1434
+ {
1435
+ STORE_KW_END_CON(background);
1436
+ }
1437
+ break;
1438
+ case 8:
1439
+ #line 124 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1440
+ {
1441
+ STORE_KW_END_CON(scenario);
1442
+ }
1443
+ break;
1444
+ case 9:
1445
+ #line 128 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1446
+ {
1447
+ STORE_KW_END_CON(scenario_outline);
1448
+ }
1449
+ break;
1450
+ case 10:
1451
+ #line 132 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1452
+ {
1453
+ STORE_KW_END_CON(examples);
1454
+ }
1455
+ break;
1456
+ case 11:
1457
+ #line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1458
+ {
1459
+ store_kw_con(listener, "step",
1460
+ PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
1461
+ PTR_TO(content_start), LEN(content_start, p),
1462
+ lexer->current_line);
1463
+ }
1464
+ break;
1465
+ case 12:
1466
+ #line 143 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1467
+ {
1468
+ STORE_ATTR(comment);
1469
+ lexer->mark = 0;
1470
+ }
1471
+ break;
1472
+ case 13:
1473
+ #line 148 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1474
+ {
1475
+ STORE_ATTR(tag);
1476
+ lexer->mark = 0;
1477
+ }
1478
+ break;
1479
+ case 14:
1480
+ #line 153 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1481
+ {
1482
+ lexer->line_number += 1;
1483
+ MARK(final_newline, p);
1484
+ }
1485
+ break;
1486
+ case 15:
1487
+ #line 158 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1488
+ {
1489
+ MARK(last_newline, p + 1);
1490
+ }
1491
+ break;
1492
+ case 16:
1493
+ #line 162 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1494
+ {
1495
+ if (lexer->mark == 0) {
1496
+ MARK(mark, p);
1497
+ }
1498
+ }
1499
+ break;
1500
+ case 17:
1501
+ #line 168 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1502
+ {
1503
+ MARK(keyword_end, p);
1504
+ MARK(keyword_start, PTR_TO(mark));
1505
+ MARK(content_start, p + 1);
1506
+ lexer->mark = 0;
1507
+ }
1508
+ break;
1509
+ case 18:
1510
+ #line 175 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1511
+ {
1512
+ MARK(content_end, p);
1513
+ }
1514
+ break;
1515
+ case 19:
1516
+ #line 179 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1517
+ {
1518
+ p = p - 1;
1519
+ lexer->current_line = lexer->line_number;
1520
+ current_row = rb_ary_new();
1521
+ }
1522
+ break;
1523
+ case 20:
1524
+ #line 185 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1525
+ {
1526
+ MARK(content_start, p);
1527
+ }
1528
+ break;
1529
+ case 21:
1530
+ #line 189 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1531
+ {
1532
+ VALUE re_pipe, re_newline, re_backslash;
1533
+ VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
1534
+ rb_funcall(con, rb_intern("strip!"), 0);
1535
+ re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
1536
+ re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
1537
+ re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
1538
+ rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
1539
+ rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
1540
+ rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
1541
+
1542
+ rb_ary_push(current_row, con);
1543
+ }
1544
+ break;
1545
+ case 22:
1546
+ #line 203 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1547
+ {
1548
+ rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
1549
+ }
1550
+ break;
1551
+ case 23:
1552
+ #line 207 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1553
+ {
1554
+ int line;
1555
+ if (cs < lexer_first_final) {
1556
+ size_t count = 0;
1557
+ VALUE newstr_val;
1558
+ char *newstr;
1559
+ int newstr_count = 0;
1560
+ size_t len;
1561
+ const char *buff;
1562
+ if (lexer->last_newline != 0) {
1563
+ len = LEN(last_newline, eof);
1564
+ buff = PTR_TO(last_newline);
1565
+ } else {
1566
+ len = strlen(data);
1567
+ buff = data;
1568
+ }
1569
+
1570
+ // Allocate as a ruby string so that it gets cleaned up by GC
1571
+ newstr_val = rb_str_new(buff, len);
1572
+ newstr = RSTRING_PTR(newstr_val);
1573
+
1574
+
1575
+ for (count = 0; count < len; count++) {
1576
+ if(buff[count] == 10) {
1577
+ newstr[newstr_count] = '\0'; // terminate new string at first newline found
1578
+ break;
1579
+ } else {
1580
+ if (buff[count] == '%') {
1581
+ newstr[newstr_count++] = buff[count];
1582
+ newstr[newstr_count] = buff[count];
1583
+ } else {
1584
+ newstr[newstr_count] = buff[count];
1585
+ }
1586
+ }
1587
+ newstr_count++;
1588
+ }
1589
+
1590
+ line = lexer->line_number;
1591
+ lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
1592
+ raise_lexer_error(newstr, line);
1593
+ } else {
1594
+ rb_funcall(listener, rb_intern("eof"), 0);
1595
+ }
1596
+ }
1597
+ break;
1598
+ #line 1599 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
1599
+ }
1600
+ }
1601
+
1602
+ _again:
1603
+ if ( cs == 0 )
1604
+ goto _out;
1605
+ if ( ++p != pe )
1606
+ goto _resume;
1607
+ _test_eof: {}
1608
+ if ( p == eof )
1609
+ {
1610
+ const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
1611
+ unsigned int __nacts = (unsigned int) *__acts++;
1612
+ while ( __nacts-- > 0 ) {
1613
+ switch ( *__acts++ ) {
1614
+ case 23:
1615
+ #line 207 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1616
+ {
1617
+ int line;
1618
+ if (cs < lexer_first_final) {
1619
+ size_t count = 0;
1620
+ VALUE newstr_val;
1621
+ char *newstr;
1622
+ int newstr_count = 0;
1623
+ size_t len;
1624
+ const char *buff;
1625
+ if (lexer->last_newline != 0) {
1626
+ len = LEN(last_newline, eof);
1627
+ buff = PTR_TO(last_newline);
1628
+ } else {
1629
+ len = strlen(data);
1630
+ buff = data;
1631
+ }
1632
+
1633
+ // Allocate as a ruby string so that it gets cleaned up by GC
1634
+ newstr_val = rb_str_new(buff, len);
1635
+ newstr = RSTRING_PTR(newstr_val);
1636
+
1637
+
1638
+ for (count = 0; count < len; count++) {
1639
+ if(buff[count] == 10) {
1640
+ newstr[newstr_count] = '\0'; // terminate new string at first newline found
1641
+ break;
1642
+ } else {
1643
+ if (buff[count] == '%') {
1644
+ newstr[newstr_count++] = buff[count];
1645
+ newstr[newstr_count] = buff[count];
1646
+ } else {
1647
+ newstr[newstr_count] = buff[count];
1648
+ }
1649
+ }
1650
+ newstr_count++;
1651
+ }
1652
+
1653
+ line = lexer->line_number;
1654
+ lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
1655
+ raise_lexer_error(newstr, line);
1656
+ } else {
1657
+ rb_funcall(listener, rb_intern("eof"), 0);
1658
+ }
1659
+ }
1660
+ break;
1661
+ #line 1662 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
1662
+ }
1663
+ }
1664
+ }
1665
+
1666
+ _out: {}
1667
+ }
1668
+
1669
+ #line 426 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ja.c.rl"
1670
+
1671
+ assert(p <= pe && "data overflow after parsing execute");
1672
+ assert(lexer->content_start <= len && "content starts after data end");
1673
+ assert(lexer->mark < len && "mark is after data end");
1674
+
1675
+ // Reset lexer by re-initializing the whole thing
1676
+ lexer_init(lexer);
1677
+
1678
+ if (cs == lexer_error) {
1679
+ rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
1680
+ } else {
1681
+ return Qtrue;
1682
+ }
1683
+ }
1684
+ }
1685
+
1686
+ void Init_gherkin_lexer_ja()
1687
+ {
1688
+ mGherkin = rb_define_module("Gherkin");
1689
+ mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
1690
+ rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
1691
+
1692
+ mCLexer = rb_define_module_under(mGherkin, "CLexer");
1693
+ cI18nLexer = rb_define_class_under(mCLexer, "Ja", rb_cObject);
1694
+ rb_define_alloc_func(cI18nLexer, CLexer_alloc);
1695
+ rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
1696
+ rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
1697
+ }
1698
+