gherkin 2.11.5 → 2.11.6

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