[DRE-commits] [ruby-gherkin] 01/02: Merge tag 'debian/2.12.1-1' into wheezy-backports
Jérémy Bobbio
lunar at alioth.debian.org
Mon Oct 7 10:21:17 UTC 2013
This is an automated email from the git hooks/post-receive script.
lunar pushed a commit to branch wheezy-backports
in repository ruby-gherkin.
commit b9c1d0febeb5a1dc2e42addef3f24dec5b41743c
Merge: 2777ce6 e2e8aef
Author: Jérémy Bobbio <lunar at debian.org>
Date: Mon Oct 7 12:17:13 2013 +0200
Merge tag 'debian/2.12.1-1' into wheezy-backports
ruby-gherkin Debian release 2.12.1-1
.ruby-gemset | 1 +
.ruby-version | 1 +
.rvmrc | 1 -
.travis.yml | 5 +-
Gemfile | 2 +-
History.md | 82 +
LICENSE | 2 +-
README.md | 94 +-
checksums.yaml.gz | Bin 0 -> 266 bytes
cucumber.yml | 1 +
debian/Rakefile | 52 +
debian/changelog | 21 +
debian/control | 8 +-
debian/copyright | 5 +-
debian/patches/fix_path_ragel_task.patch | 19 +
debian/patches/remove_bundler_rubygems_stuff.patch | 10 +-
debian/patches/series | 3 +-
debian/patches/signed_char.patch | 71 +
debian/patches/skip_encoding_lexer.patch | 28 +
debian/rules | 11 +
examples/parse_and_output_json.rb | 4 +-
ext/gherkin_lexer_ar/extconf.rb | 6 -
ext/gherkin_lexer_ar/gherkin_lexer_ar.c | 1432 -------------
ext/gherkin_lexer_bg/extconf.rb | 6 -
ext/gherkin_lexer_bg/gherkin_lexer_bg.c | 1655 ---------------
ext/gherkin_lexer_bm/extconf.rb | 6 -
ext/gherkin_lexer_bm/gherkin_lexer_bm.c | 1337 -------------
ext/gherkin_lexer_ca/extconf.rb | 6 -
ext/gherkin_lexer_ca/gherkin_lexer_ca.c | 1581 ---------------
ext/gherkin_lexer_cs/extconf.rb | 6 -
ext/gherkin_lexer_cs/gherkin_lexer_cs.c | 1427 -------------
ext/gherkin_lexer_cy_gb/extconf.rb | 6 -
ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c | 1282 ------------
ext/gherkin_lexer_da/extconf.rb | 6 -
ext/gherkin_lexer_da/gherkin_lexer_da.c | 1298 ------------
ext/gherkin_lexer_de/extconf.rb | 6 -
ext/gherkin_lexer_de/gherkin_lexer_de.c | 1415 -------------
ext/gherkin_lexer_en/extconf.rb | 6 -
ext/gherkin_lexer_en/gherkin_lexer_en.c | 1418 -------------
ext/gherkin_lexer_en_au/extconf.rb | 6 -
ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c | 1223 ------------
ext/gherkin_lexer_en_lol/extconf.rb | 6 -
ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c | 1177 -----------
ext/gherkin_lexer_en_pirate/extconf.rb | 6 -
.../gherkin_lexer_en_pirate.c | 1471 --------------
ext/gherkin_lexer_en_scouse/extconf.rb | 6 -
.../gherkin_lexer_en_scouse.c | 1634 ---------------
ext/gherkin_lexer_en_tx/extconf.rb | 6 -
ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c | 1265 ------------
ext/gherkin_lexer_eo/extconf.rb | 6 -
ext/gherkin_lexer_eo/gherkin_lexer_eo.c | 1241 ------------
ext/gherkin_lexer_es/extconf.rb | 6 -
ext/gherkin_lexer_es/gherkin_lexer_es.c | 1399 -------------
ext/gherkin_lexer_et/extconf.rb | 6 -
ext/gherkin_lexer_et/gherkin_lexer_et.c | 1236 ------------
ext/gherkin_lexer_fi/extconf.rb | 6 -
ext/gherkin_lexer_fi/gherkin_lexer_fi.c | 1215 -----------
ext/gherkin_lexer_fr/extconf.rb | 6 -
ext/gherkin_lexer_fr/gherkin_lexer_fr.c | 1493 --------------
ext/gherkin_lexer_he/extconf.rb | 6 -
ext/gherkin_lexer_he/gherkin_lexer_he.c | 1374 -------------
ext/gherkin_lexer_hr/extconf.rb | 6 -
ext/gherkin_lexer_hr/gherkin_lexer_hr.c | 1323 ------------
ext/gherkin_lexer_hu/extconf.rb | 6 -
ext/gherkin_lexer_hu/gherkin_lexer_hu.c | 1376 -------------
ext/gherkin_lexer_id/extconf.rb | 6 -
ext/gherkin_lexer_id/gherkin_lexer_id.c | 1208 -----------
ext/gherkin_lexer_is/extconf.rb | 6 -
ext/gherkin_lexer_is/gherkin_lexer_is.c | 1376 -------------
ext/gherkin_lexer_it/extconf.rb | 6 -
ext/gherkin_lexer_it/gherkin_lexer_it.c | 1340 -------------
ext/gherkin_lexer_ja/extconf.rb | 6 -
ext/gherkin_lexer_ja/gherkin_lexer_ja.c | 1699 ----------------
ext/gherkin_lexer_ko/extconf.rb | 6 -
ext/gherkin_lexer_ko/gherkin_lexer_ko.c | 1360 -------------
ext/gherkin_lexer_lt/extconf.rb | 6 -
ext/gherkin_lexer_lt/gherkin_lexer_lt.c | 1296 ------------
ext/gherkin_lexer_lu/extconf.rb | 6 -
ext/gherkin_lexer_lu/gherkin_lexer_lu.c | 1389 -------------
ext/gherkin_lexer_lv/extconf.rb | 6 -
ext/gherkin_lexer_lv/gherkin_lexer_lv.c | 1425 -------------
ext/gherkin_lexer_nl/extconf.rb | 6 -
ext/gherkin_lexer_nl/gherkin_lexer_nl.c | 1368 -------------
ext/gherkin_lexer_no/extconf.rb | 6 -
ext/gherkin_lexer_no/gherkin_lexer_no.c | 1311 ------------
ext/gherkin_lexer_pl/extconf.rb | 6 -
ext/gherkin_lexer_pl/gherkin_lexer_pl.c | 1738 ----------------
ext/gherkin_lexer_pt/extconf.rb | 6 -
ext/gherkin_lexer_pt/gherkin_lexer_pt.c | 1711 ----------------
ext/gherkin_lexer_ro/extconf.rb | 6 -
ext/gherkin_lexer_ro/gherkin_lexer_ro.c | 1427 -------------
ext/gherkin_lexer_ru/extconf.rb | 6 -
ext/gherkin_lexer_ru/gherkin_lexer_ru.c | 2058 -------------------
ext/gherkin_lexer_sk/extconf.rb | 6 -
ext/gherkin_lexer_sk/gherkin_lexer_sk.c | 1298 ------------
ext/gherkin_lexer_sr_cyrl/extconf.rb | 6 -
ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c | 2112 --------------------
ext/gherkin_lexer_sr_latn/extconf.rb | 6 -
ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c | 1567 ---------------
ext/gherkin_lexer_sv/extconf.rb | 6 -
ext/gherkin_lexer_sv/gherkin_lexer_sv.c | 1324 ------------
ext/gherkin_lexer_tr/extconf.rb | 6 -
ext/gherkin_lexer_tr/gherkin_lexer_tr.c | 1347 -------------
ext/gherkin_lexer_uk/extconf.rb | 6 -
ext/gherkin_lexer_uk/gherkin_lexer_uk.c | 1941 ------------------
ext/gherkin_lexer_uz/extconf.rb | 6 -
ext/gherkin_lexer_uz/gherkin_lexer_uz.c | 1651 ---------------
ext/gherkin_lexer_vi/extconf.rb | 6 -
ext/gherkin_lexer_vi/gherkin_lexer_vi.c | 1458 --------------
ext/gherkin_lexer_zh_cn/extconf.rb | 6 -
ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c | 1314 ------------
ext/gherkin_lexer_zh_tw/extconf.rb | 6 -
ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c | 1307 ------------
features/.cucumber/stepdefs.json | 8 +-
features/parser_with_native_lexer.feature | 2 +-
features/pretty_formatter.feature | 1 +
features/step_definitions/json_formatter_steps.rb | 8 +-
features/step_definitions/json_parser_steps.rb | 3 +-
features/support/env.rb | 5 +-
gherkin.gemspec | 43 +-
install_mingw_os_x.sh | 8 +-
lib/gherkin/README.md | 7 +
lib/gherkin/formatter/filter_formatter.rb | 8 +-
lib/gherkin/formatter/hashable.rb | 8 +-
lib/gherkin/formatter/json_formatter.rb | 19 +-
lib/gherkin/formatter/line_filter.rb | 4 +-
lib/gherkin/formatter/pretty_formatter.rb | 2 +-
lib/gherkin/formatter/regexp_filter.rb | 4 +-
lib/gherkin/formatter/tag_filter.rb | 6 +-
lib/gherkin/i18n.json | 772 +++++++
lib/gherkin/i18n.rb | 26 +-
lib/gherkin/i18n.yml | 613 ------
lib/gherkin/js_lexer.rb | 20 -
lib/gherkin/json_parser.rb | 8 +-
lib/gherkin/lexer/encoding.rb | 41 +
lib/gherkin/lexer/i18n_lexer.rb | 12 +-
lib/gherkin/native/java.rb | 4 +-
lib/gherkin/native/therubyracer.rb | 6 +-
lib/gherkin/parser/parser.rb | 28 +-
lib/gherkin/platform.rb | 13 +
lib/gherkin/rb_lexer.rb | 8 -
lib/gherkin/rb_lexer/README.rdoc | 8 -
lib/gherkin/rb_lexer/ar.rb | 1165 -----------
lib/gherkin/rb_lexer/bg.rb | 1377 -------------
lib/gherkin/rb_lexer/bm.rb | 1081 ----------
lib/gherkin/rb_lexer/ca.rb | 1305 ------------
lib/gherkin/rb_lexer/cs.rb | 1157 -----------
lib/gherkin/rb_lexer/cy_gb.rb | 1027 ----------
lib/gherkin/rb_lexer/da.rb | 1043 ----------
lib/gherkin/rb_lexer/de.rb | 1151 -----------
lib/gherkin/rb_lexer/en.rb | 1151 -----------
lib/gherkin/rb_lexer/en_au.rb | 971 ---------
lib/gherkin/rb_lexer/en_lol.rb | 929 ---------
lib/gherkin/rb_lexer/en_pirate.rb | 1205 -----------
lib/gherkin/rb_lexer/en_scouse.rb | 1357 -------------
lib/gherkin/rb_lexer/en_tx.rb | 1011 ----------
lib/gherkin/rb_lexer/eo.rb | 990 ---------
lib/gherkin/rb_lexer/es.rb | 1135 -----------
lib/gherkin/rb_lexer/et.rb | 985 ---------
lib/gherkin/rb_lexer/fi.rb | 964 ---------
lib/gherkin/rb_lexer/fr.rb | 1223 ------------
lib/gherkin/rb_lexer/he.rb | 1113 -----------
lib/gherkin/rb_lexer/hr.rb | 1061 ----------
lib/gherkin/rb_lexer/hu.rb | 1113 -----------
lib/gherkin/rb_lexer/id.rb | 958 ---------
lib/gherkin/rb_lexer/is.rb | 1115 -----------
lib/gherkin/rb_lexer/it.rb | 1081 ----------
lib/gherkin/rb_lexer/ja.rb | 1413 -------------
lib/gherkin/rb_lexer/ko.rb | 1097 ----------
lib/gherkin/rb_lexer/lt.rb | 1040 ----------
lib/gherkin/rb_lexer/lu.rb | 1127 -----------
lib/gherkin/rb_lexer/lv.rb | 1161 -----------
lib/gherkin/rb_lexer/nl.rb | 1110 ----------
lib/gherkin/rb_lexer/no.rb | 1055 ----------
lib/gherkin/rb_lexer/pl.rb | 1452 --------------
lib/gherkin/rb_lexer/pt.rb | 1425 -------------
lib/gherkin/rb_lexer/ro.rb | 1159 -----------
lib/gherkin/rb_lexer/ru.rb | 1749 ----------------
lib/gherkin/rb_lexer/sk.rb | 1041 ----------
lib/gherkin/rb_lexer/sr_cyrl.rb | 1798 -----------------
lib/gherkin/rb_lexer/sr_latn.rb | 1289 ------------
lib/gherkin/rb_lexer/sv.rb | 1065 ----------
lib/gherkin/rb_lexer/tr.rb | 1087 ----------
lib/gherkin/rb_lexer/uk.rb | 1641 ---------------
lib/gherkin/rb_lexer/uz.rb | 1371 -------------
lib/gherkin/rb_lexer/vi.rb | 1193 -----------
lib/gherkin/rb_lexer/zh_cn.rb | 1053 ----------
lib/gherkin/rb_lexer/zh_tw.rb | 1047 ----------
lib/gherkin/rubify.rb | 23 +-
lib/gherkin/tag_expression.rb | 4 +-
metadata.yml | 298 +--
ragel/lexer.c.rl.erb | 10 +-
ragel/lexer.java.rl.erb | 14 +-
ragel/lexer.js.rl.erb | 16 +-
ragel/lexer.rb.rl.erb | 8 +-
spec/gherkin/c_lexer_spec.rb | 2 +-
spec/gherkin/fixtures/iso-8859-1.feature | 6 +
.../fixtures/with_bom_and_language_spec.feature | 4 +
spec/gherkin/formatter/json_formatter_spec.rb | 93 +-
spec/gherkin/formatter/pretty_formatter_spec.rb | 43 +-
spec/gherkin/i18n_spec.rb | 18 +-
spec/gherkin/js_lexer_spec.rb | 23 -
spec/gherkin/json_parser_spec.rb | 21 +-
spec/gherkin/lexer/i18n_lexer_spec.rb | 70 +-
spec/gherkin/native_lexer_spec.rb | 29 +
spec/gherkin/output_stream_string_io.rb | 20 -
spec/gherkin/parser/parser_spec.rb | 2 +-
spec/gherkin/rb_lexer_spec.rb | 20 -
spec/gherkin/rubify_spec.rb | 23 +
spec/gherkin/shared/bom_group.rb | 20 -
spec/gherkin/shared/encoding_group.rb | 50 +
spec/gherkin/tag_expression_spec.rb | 34 +-
spec/spec_helper.rb | 13 +-
tasks/apidoc.rake | 32 +
tasks/compile.rake | 41 +-
tasks/cucumber.rake | 1 +
tasks/gems.rake | 25 +-
tasks/ikvm.rake | 18 +-
tasks/ragel_task.rb | 26 +-
tasks/release.rake | 23 +-
tasks/rspec.rake | 8 +-
tasks/yard.rake | 7 -
222 files changed, 1923 insertions(+), 121852 deletions(-)
diff --cc debian/changelog
index 15ff603,a4beadf..603ed60
--- a/debian/changelog
+++ b/debian/changelog
@@@ -1,9 -1,24 +1,30 @@@
+ ruby-gherkin (2.12.1-1) unstable; urgency=low
+
+ * Imported Upstream version 2.12.1
+ * Refresh patches
+ * debian/control:
+ + bump Standards-Version to 3.9.4 (no changes needed)
+ + update my email address
+ + build-depend on ruby-multi-json, ragel
+ + depend on ruby-multi-json
+ * debian/rules:
+ + Install upstream changelog
+ + use debian/Rakefile to regenerate upstream C and Ruby files from ragel
+ * add myself to copyright holders of debian/*
+ * debian/patches:
+ + add fix_path_ragel_task.patch: fix paths in sed commands in
+ tasks/ragel_task.rb
+ + add skip_encoding_lexer.patch, skipping failing tests on powerpc
+ + remove signed_char.patch from quilt series
+
+ -- Cédric Boutillier <boutil at debian.org> Wed, 31 Jul 2013 15:47:02 +0200
+
+ruby-gherkin (2.11.1-2~bpo70+1) wheezy-backports; urgency=low
+
+ * Rebuild for wheezy-backports.
+
+ -- Jérémy Bobbio <lunar at debian.org> Wed, 07 Aug 2013 12:14:22 +0200
+
ruby-gherkin (2.11.1-2) unstable; urgency=low
* debian/patches/signed_char.patch: force the assumption of signedness for
diff --cc ext/gherkin_lexer_ar/extconf.rb
index eda6c65,eda6c65..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_ar/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_ar")
--have_library("c", "main")
--create_makefile("gherkin_lexer_ar")
diff --cc ext/gherkin_lexer_ar/gherkin_lexer_ar.c
index 95dbe0f,dd81528..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_ar/gherkin_lexer_ar.c
+++ /dev/null
@@@ -1,1432 -1,1432 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 13, 19, 21, 22, 23, 24,
- 25, 26, 27, 29, 31, 43, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 58, 60, 65, 70, 75, 80, 84,
- 88, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 110, 117, 122, 126, 132, 135, 137,
- 143, 155, 157, 158, 159, 160, 161, 162,
- 163, 164, 165, 166, 167, 168, 169, 170,
- 180, 187, 189, 191, 193, 195, 197, 199,
- 201, 213, 215, 217, 219, 221, 223, 225,
- 227, 229, 231, 233, 235, 237, 239, 241,
- 243, 245, 247, 249, 251, 253, 255, 257,
- 259, 261, 263, 265, 267, 269, 271, 274,
- 276, 278, 280, 282, 284, 286, 288, 290,
- 292, 294, 296, 298, 300, 302, 304, 306,
- 310, 312, 314, 316, 318, 320, 322, 324,
- 326, 328, 330, 332, 334, 336, 338, 340,
- 342, 344, 346, 348, 350, 352, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363,
- 370, 372, 374, 376, 378, 380, 382, 384,
- 386, 388, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 417, 421,
- 423, 426, 428, 430, 432, 434, 436, 438,
- 440, 442, 444, 446, 448, 450, 452, 454,
- 456, 458, 460, 462, 464, 466, 468, 470,
- 472, 474, 476, 478, 480, 482, 484, 486,
- 488, 491, 493, 495, 497, 499, 501, 503,
- 505, 507, 509, 511, 513, 515, 517, 519,
- 521, 523, 525, 527, 529, 531, 533, 535,
- 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560,
- 570, 577, 579, 581, 583, 585, 587, 589,
- 591, 593, 595, 597, 599, 601, 603, 605,
- 607, 609, 611, 613, 615, 617, 619, 621,
- 623, 625, 627, 629, 631, 633, 635, 637,
- 639, 641, 643, 645, 647, 649, 651, 653,
- 655, 657, 659, 661, 663, 665, 669, 671,
- 673, 675, 677, 679, 681, 683, 685, 687,
- 689, 691, 693, 695, 697, 699, 701, 703,
- 705, 707, 709, 711, 713, 714, 715, 725,
- 732, 735, 737, 739, 741, 743, 745, 747,
- 749, 751, 753, 755, 757, 759, 761, 763,
- 765, 767, 769, 771, 773, 775, 777, 779,
- 781, 783, 785, 787, 789, 791, 793, 795,
- 797, 799, 801, 803, 805, 807, 809, 811,
- 813, 815, 817, 819, 822, 824, 826, 828,
- 830, 832, 834, 836, 838, 840, 842, 844,
- 846, 848, 850, 852, 854, 858, 860, 862,
- 864, 866, 868, 870, 872, 874, 876, 878,
- 880, 882, 884, 886, 888, 890, 892, 894,
- 896, 898, 900, 902, 903, 904, 905, 906,
- 907, 908, 909, 910, 911, 912
- };
-
- static const char _lexer_trans_keys[] = {
- -40, -39, -17, 10, 32, 34, 35, 37,
- 42, 64, 124, 9, 13, -89, -88, -85,
- -82, -77, -71, -40, -39, -80, -40, -89,
- -39, -117, 32, 10, 13, 10, 13, -40,
- -39, 10, 32, 34, 35, 37, 42, 64,
- 124, 9, 13, -124, -123, -120, -39, -125,
- -39, -122, -40, -86, -39, -119, 34, 34,
- 10, 13, 10, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 9, 13, 10, 32, 9, 13,
- 10, 13, 10, 95, 70, 69, 65, 84,
- 85, 82, 69, 95, 69, 78, 68, 95,
- 37, 13, 32, 64, 9, 10, 9, 10,
- 13, 32, 64, 11, 12, 10, 32, 64,
- 9, 13, 32, 124, 9, 13, 10, 32,
- 92, 124, 9, 13, 10, 92, 124, 10,
- 92, 10, 32, 92, 124, 9, 13, -40,
- -39, 10, 32, 34, 35, 37, 42, 64,
- 124, 9, 13, -124, -123, -40, -82, -39,
- -124, -39, -127, -39, -118, -40, -87, 58,
- 10, 10, -40, -39, 10, 32, 35, 37,
- 42, 64, 9, 13, -89, -88, -85, -82,
- -77, -71, 10, -40, 10, -80, 10, -40,
- 10, -89, 10, -39, 10, -117, 10, 10,
- 32, -40, -39, 10, 32, 34, 35, 37,
- 42, 64, 124, 9, 13, -39, 10, -127,
- 10, -40, 10, -79, 10, -40, 10, -74,
- 10, -39, 10, -123, 10, -40, 10, -89,
- 10, -40, 10, -75, 10, -39, 10, -118,
- 10, -40, 10, -87, 10, 10, 58, -39,
- 10, -118, 10, -39, 10, -122, 10, -40,
- 10, -89, 10, -40, 10, -79, 10, -39,
- 10, -118, 10, -39, 10, -120, 10, 10,
- 32, 58, -39, 10, -123, 10, -40, 10,
- -82, 10, -40, 10, -73, 10, -40, 10,
- -73, 10, -39, 10, -122, 10, -40, 10,
- -81, 10, -39, 10, -123, 10, -40, 10,
- -89, 10, -124, -123, -120, 10, -39, 10,
- -125, 10, -39, 10, -122, 10, -40, 10,
- -86, 10, -39, 10, -119, 10, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, -40, -85, -39, -124, -40, -87,
- 58, 10, 10, -40, 10, 32, 35, 124,
- 9, 13, -82, 10, -40, 10, -89, 10,
- -40, 10, -75, 10, -39, 10, -118, 10,
- -40, 10, -87, 10, 10, 58, -39, -127,
- -40, -79, -40, -74, -39, -123, -40, -89,
- -40, -75, -39, -118, -40, -87, 58, 10,
- 10, -40, 10, 32, 35, 37, 64, 9,
- 13, -89, -82, -77, 10, -39, 10, -124,
- -123, 10, -40, 10, -82, 10, -39, 10,
- -124, 10, -39, 10, -127, 10, -39, 10,
- -118, 10, -40, 10, -87, 10, 10, 58,
- -40, 10, -85, 10, -39, 10, -124, 10,
- -40, 10, -89, 10, -40, 10, -75, 10,
- -39, 10, -118, 10, -39, 10, -122, 10,
- -40, 10, -89, 10, -40, 10, -79, 10,
- -39, 10, -118, 10, -39, 10, -120, 10,
- 10, 32, 58, -39, 10, -123, 10, -40,
- 10, -82, 10, -40, 10, -73, 10, -40,
- 10, -73, 10, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, -39,
- -118, -39, -122, -40, -89, -40, -79, -39,
- -118, -39, -120, 32, 58, -39, -123, -40,
- -82, -40, -73, -40, -73, 58, 10, 10,
- -40, -39, 10, 32, 35, 37, 42, 64,
- 9, 13, -89, -88, -85, -82, -77, -71,
- 10, -40, 10, -80, 10, -40, 10, -89,
- 10, -39, 10, -117, 10, 10, 32, -39,
- 10, -127, 10, -40, 10, -79, 10, -40,
- 10, -74, 10, -39, 10, -123, 10, -40,
- 10, -89, 10, -40, 10, -75, 10, -39,
- 10, -118, 10, -40, 10, -87, 10, 10,
- 58, -39, 10, -118, 10, -39, 10, -122,
- 10, -40, 10, -89, 10, -40, 10, -79,
- 10, -39, 10, -118, 10, -39, 10, -120,
- 10, -39, 10, -122, 10, -40, 10, -81,
- 10, -39, 10, -123, 10, -40, 10, -89,
- 10, -124, -123, -120, 10, -39, 10, -125,
- 10, -39, 10, -122, 10, -40, 10, -86,
- 10, -39, 10, -119, 10, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 10, -40, -39, 10, 32, 35,
- 37, 42, 64, 9, 13, -89, -88, -85,
- -82, -77, -71, 10, -40, -39, 10, -80,
- 10, -40, 10, -89, 10, -39, 10, -117,
- 10, 10, 32, -124, 10, -40, 10, -82,
- 10, -39, 10, -124, 10, -39, 10, -127,
- 10, -39, 10, -118, 10, -40, 10, -87,
- 10, 10, 58, -39, 10, -127, 10, -40,
- 10, -79, 10, -40, 10, -74, 10, -39,
- 10, -123, 10, -40, 10, -89, 10, -40,
- 10, -75, 10, -39, 10, -118, 10, -39,
- 10, -122, 10, -40, 10, -89, 10, -40,
- 10, -79, 10, -39, 10, -118, 10, -39,
- 10, -120, 10, 10, 32, 58, -39, 10,
- -123, 10, -40, 10, -82, 10, -40, 10,
- -73, 10, -40, 10, -73, 10, -39, 10,
- -122, 10, -40, 10, -81, 10, -39, 10,
- -123, 10, -40, 10, -89, 10, -124, -123,
- -120, 10, -39, 10, -125, 10, -39, 10,
- -122, 10, -40, 10, -86, 10, -39, 10,
- -119, 10, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, -39, -122,
- -40, -81, -39, -123, -40, -89, -69, -65,
- 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 11, 6, 2, 1, 1, 1, 1,
- 1, 1, 2, 2, 10, 3, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 3, 3, 3, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 3, 5, 3, 2, 4, 3, 2, 4,
- 10, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 8,
- 7, 2, 2, 2, 2, 2, 2, 2,
- 10, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 4,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 5,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 6, 4, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 8,
- 7, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 1, 1, 8, 7,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 4, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 1, 1, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 1, 1, 1, 1, 0, 0, 1,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 13, 20, 23, 25, 27, 29,
- 31, 33, 35, 38, 41, 53, 57, 59,
- 61, 63, 65, 67, 69, 71, 73, 75,
- 77, 80, 83, 88, 93, 98, 103, 107,
- 111, 114, 116, 118, 120, 122, 124, 126,
- 128, 130, 132, 134, 136, 138, 140, 142,
- 144, 149, 156, 161, 165, 171, 175, 178,
- 184, 196, 199, 201, 203, 205, 207, 209,
- 211, 213, 215, 217, 219, 221, 223, 225,
- 235, 243, 246, 249, 252, 255, 258, 261,
- 264, 276, 279, 282, 285, 288, 291, 294,
- 297, 300, 303, 306, 309, 312, 315, 318,
- 321, 324, 327, 330, 333, 336, 339, 342,
- 345, 348, 351, 354, 357, 360, 363, 367,
- 370, 373, 376, 379, 382, 385, 388, 391,
- 394, 397, 400, 403, 406, 409, 412, 415,
- 420, 423, 426, 429, 432, 435, 438, 441,
- 444, 447, 450, 453, 456, 459, 462, 465,
- 468, 471, 474, 477, 480, 483, 486, 488,
- 490, 492, 494, 496, 498, 500, 502, 504,
- 511, 514, 517, 520, 523, 526, 529, 532,
- 535, 538, 541, 543, 545, 547, 549, 551,
- 553, 555, 557, 559, 561, 563, 565, 567,
- 569, 571, 573, 575, 577, 579, 587, 592,
- 595, 599, 602, 605, 608, 611, 614, 617,
- 620, 623, 626, 629, 632, 635, 638, 641,
- 644, 647, 650, 653, 656, 659, 662, 665,
- 668, 671, 674, 677, 680, 683, 686, 689,
- 692, 696, 699, 702, 705, 708, 711, 714,
- 717, 720, 723, 726, 729, 732, 735, 738,
- 741, 744, 747, 750, 753, 756, 759, 762,
- 764, 766, 768, 770, 772, 774, 776, 778,
- 780, 782, 784, 786, 789, 791, 793, 795,
- 797, 799, 801, 803, 805, 807, 809, 811,
- 821, 829, 832, 835, 838, 841, 844, 847,
- 850, 853, 856, 859, 862, 865, 868, 871,
- 874, 877, 880, 883, 886, 889, 892, 895,
- 898, 901, 904, 907, 910, 913, 916, 919,
- 922, 925, 928, 931, 934, 937, 940, 943,
- 946, 949, 952, 955, 958, 961, 966, 969,
- 972, 975, 978, 981, 984, 987, 990, 993,
- 996, 999, 1002, 1005, 1008, 1011, 1014, 1017,
- 1020, 1023, 1026, 1029, 1032, 1034, 1036, 1046,
- 1054, 1058, 1061, 1064, 1067, 1070, 1073, 1076,
- 1079, 1082, 1085, 1088, 1091, 1094, 1097, 1100,
- 1103, 1106, 1109, 1112, 1115, 1118, 1121, 1124,
- 1127, 1130, 1133, 1136, 1139, 1142, 1145, 1148,
- 1151, 1154, 1157, 1160, 1163, 1166, 1169, 1172,
- 1175, 1178, 1181, 1184, 1188, 1191, 1194, 1197,
- 1200, 1203, 1206, 1209, 1212, 1215, 1218, 1221,
- 1224, 1227, 1230, 1233, 1236, 1241, 1244, 1247,
- 1250, 1253, 1256, 1259, 1262, 1265, 1268, 1271,
- 1274, 1277, 1280, 1283, 1286, 1289, 1292, 1295,
- 1298, 1301, 1304, 1307, 1309, 1311, 1313, 1315,
- 1317, 1319, 1321, 1323, 1325, 1327
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 13, 435, 12, 12, 22, 32, 34,
- 9, 48, 51, 12, 0, 3, 170, 176,
- 178, 247, 427, 0, 4, 57, 0, 5,
- 0, 6, 0, 7, 0, 8, 0, 9,
- 0, 10, 0, 12, 33, 11, 12, 33,
- 11, 2, 13, 12, 12, 22, 32, 34,
- 9, 48, 51, 12, 0, 14, 18, 9,
- 0, 15, 0, 16, 0, 17, 0, 9,
- 0, 19, 0, 20, 0, 21, 0, 9,
- 0, 23, 0, 24, 0, 26, 25, 25,
- 26, 25, 25, 27, 27, 28, 27, 27,
- 27, 27, 28, 27, 27, 27, 27, 29,
- 27, 27, 27, 27, 30, 27, 27, 12,
- 31, 31, 0, 12, 31, 31, 0, 12,
- 33, 32, 12, 0, 35, 0, 36, 0,
- 37, 0, 38, 0, 39, 0, 40, 0,
- 41, 0, 42, 0, 43, 0, 44, 0,
- 45, 0, 46, 0, 47, 0, 437, 0,
- 0, 0, 0, 0, 49, 50, 12, 50,
- 50, 48, 49, 49, 12, 50, 48, 50,
- 0, 51, 52, 51, 0, 56, 55, 54,
- 52, 55, 53, 0, 54, 52, 53, 0,
- 54, 53, 56, 55, 54, 52, 55, 53,
- 2, 13, 56, 56, 22, 32, 34, 9,
- 48, 51, 56, 0, 58, 150, 0, 59,
- 0, 60, 0, 61, 0, 62, 0, 63,
- 0, 64, 0, 65, 0, 66, 0, 67,
- 0, 68, 0, 69, 0, 71, 70, 71,
- 70, 72, 127, 71, 71, 12, 136, 79,
- 12, 71, 70, 73, 81, 87, 89, 98,
- 119, 71, 70, 74, 71, 70, 75, 71,
- 70, 76, 71, 70, 77, 71, 70, 78,
- 71, 70, 79, 71, 70, 71, 80, 70,
- 2, 13, 12, 12, 22, 32, 34, 9,
- 48, 51, 12, 0, 82, 71, 70, 83,
- 71, 70, 84, 71, 70, 85, 71, 70,
- 86, 71, 70, 79, 71, 70, 88, 71,
- 70, 79, 71, 70, 90, 71, 70, 91,
- 71, 70, 92, 71, 70, 93, 71, 70,
- 94, 71, 70, 95, 71, 70, 96, 71,
- 70, 97, 71, 70, 71, 80, 70, 99,
- 71, 70, 100, 71, 70, 101, 71, 70,
- 102, 71, 70, 103, 71, 70, 104, 71,
- 70, 105, 71, 70, 106, 71, 70, 107,
- 71, 70, 108, 71, 70, 109, 71, 70,
- 110, 71, 70, 71, 111, 80, 70, 112,
- 71, 70, 113, 71, 70, 114, 71, 70,
- 115, 71, 70, 116, 71, 70, 117, 71,
- 70, 118, 71, 70, 97, 71, 70, 120,
- 71, 70, 121, 71, 70, 122, 71, 70,
- 123, 71, 70, 124, 71, 70, 125, 71,
- 70, 126, 71, 70, 79, 71, 70, 128,
- 132, 79, 71, 70, 129, 71, 70, 130,
- 71, 70, 131, 71, 70, 79, 71, 70,
- 133, 71, 70, 134, 71, 70, 135, 71,
- 70, 79, 71, 70, 71, 137, 70, 71,
- 138, 70, 71, 139, 70, 71, 140, 70,
- 71, 141, 70, 71, 142, 70, 71, 143,
- 70, 71, 144, 70, 71, 145, 70, 71,
- 146, 70, 71, 147, 70, 71, 148, 70,
- 71, 149, 70, 71, 12, 70, 151, 0,
- 152, 0, 153, 0, 154, 0, 155, 0,
- 156, 0, 157, 0, 159, 158, 159, 158,
- 160, 159, 159, 12, 12, 159, 158, 161,
- 159, 158, 162, 159, 158, 163, 159, 158,
- 164, 159, 158, 165, 159, 158, 166, 159,
- 158, 167, 159, 158, 168, 159, 158, 169,
- 159, 158, 159, 80, 158, 171, 0, 172,
- 0, 173, 0, 174, 0, 175, 0, 9,
- 0, 177, 0, 9, 0, 179, 0, 180,
- 0, 181, 0, 182, 0, 183, 0, 184,
- 0, 185, 0, 186, 0, 187, 0, 189,
- 188, 189, 188, 190, 189, 189, 12, 233,
- 12, 189, 188, 191, 208, 212, 189, 188,
- 192, 189, 188, 193, 204, 189, 188, 194,
- 189, 188, 195, 189, 188, 196, 189, 188,
- 197, 189, 188, 198, 189, 188, 199, 189,
- 188, 200, 189, 188, 201, 189, 188, 202,
- 189, 188, 203, 189, 188, 189, 80, 188,
- 205, 189, 188, 206, 189, 188, 207, 189,
- 188, 201, 189, 188, 209, 189, 188, 210,
- 189, 188, 211, 189, 188, 199, 189, 188,
- 213, 189, 188, 214, 189, 188, 215, 189,
- 188, 216, 189, 188, 217, 189, 188, 218,
- 189, 188, 219, 189, 188, 220, 189, 188,
- 221, 189, 188, 222, 189, 188, 223, 189,
- 188, 224, 189, 188, 189, 225, 80, 188,
- 226, 189, 188, 227, 189, 188, 228, 189,
- 188, 229, 189, 188, 230, 189, 188, 231,
- 189, 188, 232, 189, 188, 203, 189, 188,
- 189, 234, 188, 189, 235, 188, 189, 236,
- 188, 189, 237, 188, 189, 238, 188, 189,
- 239, 188, 189, 240, 188, 189, 241, 188,
- 189, 242, 188, 189, 243, 188, 189, 244,
- 188, 189, 245, 188, 189, 246, 188, 189,
- 12, 188, 248, 0, 249, 0, 250, 0,
- 251, 0, 252, 0, 253, 0, 254, 0,
- 255, 0, 256, 0, 257, 0, 258, 0,
- 259, 0, 260, 340, 0, 261, 0, 262,
- 0, 263, 0, 264, 0, 265, 0, 266,
- 0, 267, 0, 268, 0, 269, 0, 271,
- 270, 271, 270, 272, 317, 271, 271, 12,
- 326, 279, 12, 271, 270, 273, 280, 286,
- 288, 297, 309, 271, 270, 274, 271, 270,
- 275, 271, 270, 276, 271, 270, 277, 271,
- 270, 278, 271, 270, 279, 271, 270, 271,
- 80, 270, 281, 271, 270, 282, 271, 270,
- 283, 271, 270, 284, 271, 270, 285, 271,
- 270, 279, 271, 270, 287, 271, 270, 279,
- 271, 270, 289, 271, 270, 290, 271, 270,
- 291, 271, 270, 292, 271, 270, 293, 271,
- 270, 294, 271, 270, 295, 271, 270, 296,
- 271, 270, 271, 80, 270, 298, 271, 270,
- 299, 271, 270, 300, 271, 270, 301, 271,
- 270, 302, 271, 270, 303, 271, 270, 304,
- 271, 270, 305, 271, 270, 306, 271, 270,
- 307, 271, 270, 308, 271, 270, 296, 271,
- 270, 310, 271, 270, 311, 271, 270, 312,
- 271, 270, 313, 271, 270, 314, 271, 270,
- 315, 271, 270, 316, 271, 270, 279, 271,
- 270, 318, 322, 279, 271, 270, 319, 271,
- 270, 320, 271, 270, 321, 271, 270, 279,
- 271, 270, 323, 271, 270, 324, 271, 270,
- 325, 271, 270, 279, 271, 270, 271, 327,
- 270, 271, 328, 270, 271, 329, 270, 271,
- 330, 270, 271, 331, 270, 271, 332, 270,
- 271, 333, 270, 271, 334, 270, 271, 335,
- 270, 271, 336, 270, 271, 337, 270, 271,
- 338, 270, 271, 339, 270, 271, 12, 270,
- 342, 341, 342, 341, 343, 404, 342, 342,
- 12, 413, 350, 12, 342, 341, 344, 363,
- 369, 371, 375, 396, 342, 341, 345, 351,
- 342, 341, 346, 342, 341, 347, 342, 341,
- 348, 342, 341, 349, 342, 341, 350, 342,
- 341, 342, 80, 341, 352, 342, 341, 353,
- 342, 341, 354, 342, 341, 355, 342, 341,
- 356, 342, 341, 357, 342, 341, 358, 342,
- 341, 359, 342, 341, 360, 342, 341, 361,
- 342, 341, 362, 342, 341, 342, 80, 341,
- 364, 342, 341, 365, 342, 341, 366, 342,
- 341, 367, 342, 341, 368, 342, 341, 350,
- 342, 341, 370, 342, 341, 350, 342, 341,
- 372, 342, 341, 373, 342, 341, 374, 342,
- 341, 358, 342, 341, 376, 342, 341, 377,
- 342, 341, 378, 342, 341, 379, 342, 341,
- 380, 342, 341, 381, 342, 341, 382, 342,
- 341, 383, 342, 341, 384, 342, 341, 385,
- 342, 341, 386, 342, 341, 387, 342, 341,
- 342, 388, 80, 341, 389, 342, 341, 390,
- 342, 341, 391, 342, 341, 392, 342, 341,
- 393, 342, 341, 394, 342, 341, 395, 342,
- 341, 362, 342, 341, 397, 342, 341, 398,
- 342, 341, 399, 342, 341, 400, 342, 341,
- 401, 342, 341, 402, 342, 341, 403, 342,
- 341, 350, 342, 341, 405, 409, 350, 342,
- 341, 406, 342, 341, 407, 342, 341, 408,
- 342, 341, 350, 342, 341, 410, 342, 341,
- 411, 342, 341, 412, 342, 341, 350, 342,
- 341, 342, 414, 341, 342, 415, 341, 342,
- 416, 341, 342, 417, 341, 342, 418, 341,
- 342, 419, 341, 342, 420, 341, 342, 421,
- 341, 342, 422, 341, 342, 423, 341, 342,
- 424, 341, 342, 425, 341, 342, 426, 341,
- 342, 12, 341, 428, 0, 429, 0, 430,
- 0, 431, 0, 432, 0, 433, 0, 434,
- 0, 9, 0, 436, 0, 12, 0, 0,
- 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 29, 29, 0, 54, 0, 5, 1, 0,
- 29, 1, 35, 0, 43, 0, 0, 0,
- 0, 0, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 149, 126, 57, 110, 23,
- 0, 29, 29, 54, 0, 5, 1, 0,
- 29, 1, 35, 0, 43, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 0, 0, 43, 54, 37, 37,
- 87, 37, 37, 43, 0, 39, 0, 43,
- 0, 0, 54, 0, 0, 39, 0, 0,
- 96, 96, 54, 0, 93, 90, 41, 96,
- 90, 99, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 84, 84, 54, 0, 72, 33, 84,
- 72, 0, 0, 0, 0, 0, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 15, 0,
- 63, 63, 130, 31, 60, 57, 31, 63,
- 57, 66, 31, 43, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 15, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 15, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 15, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 84, 54, 0, 81, 81, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 21, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 54, 0, 69, 33,
- 69, 0, 0, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 13, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 13, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 84, 54, 0, 78,
- 33, 84, 78, 0, 0, 0, 0, 0,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 19, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 19, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 19, 0,
- 144, 57, 54, 0, 84, 84, 54, 0,
- 75, 33, 84, 75, 0, 0, 0, 0,
- 0, 0, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 17, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 17, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 17, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 437;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 1036 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
-
- #line 1043 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1333 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1396 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ar.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_ar()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Ar", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/ar.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/ar.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 13, 19, 21, 22, 23, 24,
- 25, 26, 27, 29, 31, 43, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 58, 60, 65, 70, 75, 80, 84,
- 88, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 110, 117, 122, 126, 132, 135, 137,
- 143, 155, 157, 158, 159, 160, 161, 162,
- 163, 164, 165, 166, 167, 168, 169, 170,
- 180, 187, 189, 191, 193, 195, 197, 199,
- 201, 213, 215, 217, 219, 221, 223, 225,
- 227, 229, 231, 233, 235, 237, 239, 241,
- 243, 245, 247, 249, 251, 253, 255, 257,
- 259, 261, 263, 265, 267, 269, 271, 274,
- 276, 278, 280, 282, 284, 286, 288, 290,
- 292, 294, 296, 298, 300, 302, 304, 306,
- 310, 312, 314, 316, 318, 320, 322, 324,
- 326, 328, 330, 332, 334, 336, 338, 340,
- 342, 344, 346, 348, 350, 352, 354, 355,
- 356, 357, 358, 359, 360, 361, 362, 363,
- 370, 372, 374, 376, 378, 380, 382, 384,
- 386, 388, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 400, 401, 402, 403,
- 404, 405, 406, 407, 408, 409, 417, 421,
- 423, 426, 428, 430, 432, 434, 436, 438,
- 440, 442, 444, 446, 448, 450, 452, 454,
- 456, 458, 460, 462, 464, 466, 468, 470,
- 472, 474, 476, 478, 480, 482, 484, 486,
- 488, 491, 493, 495, 497, 499, 501, 503,
- 505, 507, 509, 511, 513, 515, 517, 519,
- 521, 523, 525, 527, 529, 531, 533, 535,
- 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 545, 546, 547, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560,
- 570, 577, 579, 581, 583, 585, 587, 589,
- 591, 593, 595, 597, 599, 601, 603, 605,
- 607, 609, 611, 613, 615, 617, 619, 621,
- 623, 625, 627, 629, 631, 633, 635, 637,
- 639, 641, 643, 645, 647, 649, 651, 653,
- 655, 657, 659, 661, 663, 665, 669, 671,
- 673, 675, 677, 679, 681, 683, 685, 687,
- 689, 691, 693, 695, 697, 699, 701, 703,
- 705, 707, 709, 711, 713, 714, 715, 725,
- 732, 735, 737, 739, 741, 743, 745, 747,
- 749, 751, 753, 755, 757, 759, 761, 763,
- 765, 767, 769, 771, 773, 775, 777, 779,
- 781, 783, 785, 787, 789, 791, 793, 795,
- 797, 799, 801, 803, 805, 807, 809, 811,
- 813, 815, 817, 819, 822, 824, 826, 828,
- 830, 832, 834, 836, 838, 840, 842, 844,
- 846, 848, 850, 852, 854, 858, 860, 862,
- 864, 866, 868, 870, 872, 874, 876, 878,
- 880, 882, 884, 886, 888, 890, 892, 894,
- 896, 898, 900, 902, 903, 904, 905, 906,
- 907, 908, 909, 910, 911, 912
-};
-
-static const char _lexer_trans_keys[] = {
- -40, -39, -17, 10, 32, 34, 35, 37,
- 42, 64, 124, 9, 13, -89, -88, -85,
- -82, -77, -71, -40, -39, -80, -40, -89,
- -39, -117, 32, 10, 13, 10, 13, -40,
- -39, 10, 32, 34, 35, 37, 42, 64,
- 124, 9, 13, -124, -123, -120, -39, -125,
- -39, -122, -40, -86, -39, -119, 34, 34,
- 10, 13, 10, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 9, 13, 10, 32, 9, 13,
- 10, 13, 10, 95, 70, 69, 65, 84,
- 85, 82, 69, 95, 69, 78, 68, 95,
- 37, 13, 32, 64, 9, 10, 9, 10,
- 13, 32, 64, 11, 12, 10, 32, 64,
- 9, 13, 32, 124, 9, 13, 10, 32,
- 92, 124, 9, 13, 10, 92, 124, 10,
- 92, 10, 32, 92, 124, 9, 13, -40,
- -39, 10, 32, 34, 35, 37, 42, 64,
- 124, 9, 13, -124, -123, -40, -82, -39,
- -124, -39, -127, -39, -118, -40, -87, 58,
- 10, 10, -40, -39, 10, 32, 35, 37,
- 42, 64, 9, 13, -89, -88, -85, -82,
- -77, -71, 10, -40, 10, -80, 10, -40,
- 10, -89, 10, -39, 10, -117, 10, 10,
- 32, -40, -39, 10, 32, 34, 35, 37,
- 42, 64, 124, 9, 13, -39, 10, -127,
- 10, -40, 10, -79, 10, -40, 10, -74,
- 10, -39, 10, -123, 10, -40, 10, -89,
- 10, -40, 10, -75, 10, -39, 10, -118,
- 10, -40, 10, -87, 10, 10, 58, -39,
- 10, -118, 10, -39, 10, -122, 10, -40,
- 10, -89, 10, -40, 10, -79, 10, -39,
- 10, -118, 10, -39, 10, -120, 10, 10,
- 32, 58, -39, 10, -123, 10, -40, 10,
- -82, 10, -40, 10, -73, 10, -40, 10,
- -73, 10, -39, 10, -122, 10, -40, 10,
- -81, 10, -39, 10, -123, 10, -40, 10,
- -89, 10, -124, -123, -120, 10, -39, 10,
- -125, 10, -39, 10, -122, 10, -40, 10,
- -86, 10, -39, 10, -119, 10, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, -40, -85, -39, -124, -40, -87,
- 58, 10, 10, -40, 10, 32, 35, 124,
- 9, 13, -82, 10, -40, 10, -89, 10,
- -40, 10, -75, 10, -39, 10, -118, 10,
- -40, 10, -87, 10, 10, 58, -39, -127,
- -40, -79, -40, -74, -39, -123, -40, -89,
- -40, -75, -39, -118, -40, -87, 58, 10,
- 10, -40, 10, 32, 35, 37, 64, 9,
- 13, -89, -82, -77, 10, -39, 10, -124,
- -123, 10, -40, 10, -82, 10, -39, 10,
- -124, 10, -39, 10, -127, 10, -39, 10,
- -118, 10, -40, 10, -87, 10, 10, 58,
- -40, 10, -85, 10, -39, 10, -124, 10,
- -40, 10, -89, 10, -40, 10, -75, 10,
- -39, 10, -118, 10, -39, 10, -122, 10,
- -40, 10, -89, 10, -40, 10, -79, 10,
- -39, 10, -118, 10, -39, 10, -120, 10,
- 10, 32, 58, -39, 10, -123, 10, -40,
- 10, -82, 10, -40, 10, -73, 10, -40,
- 10, -73, 10, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, -39,
- -118, -39, -122, -40, -89, -40, -79, -39,
- -118, -39, -120, 32, 58, -39, -123, -40,
- -82, -40, -73, -40, -73, 58, 10, 10,
- -40, -39, 10, 32, 35, 37, 42, 64,
- 9, 13, -89, -88, -85, -82, -77, -71,
- 10, -40, 10, -80, 10, -40, 10, -89,
- 10, -39, 10, -117, 10, 10, 32, -39,
- 10, -127, 10, -40, 10, -79, 10, -40,
- 10, -74, 10, -39, 10, -123, 10, -40,
- 10, -89, 10, -40, 10, -75, 10, -39,
- 10, -118, 10, -40, 10, -87, 10, 10,
- 58, -39, 10, -118, 10, -39, 10, -122,
- 10, -40, 10, -89, 10, -40, 10, -79,
- 10, -39, 10, -118, 10, -39, 10, -120,
- 10, -39, 10, -122, 10, -40, 10, -81,
- 10, -39, 10, -123, 10, -40, 10, -89,
- 10, -124, -123, -120, 10, -39, 10, -125,
- 10, -39, 10, -122, 10, -40, 10, -86,
- 10, -39, 10, -119, 10, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 10, -40, -39, 10, 32, 35,
- 37, 42, 64, 9, 13, -89, -88, -85,
- -82, -77, -71, 10, -40, -39, 10, -80,
- 10, -40, 10, -89, 10, -39, 10, -117,
- 10, 10, 32, -124, 10, -40, 10, -82,
- 10, -39, 10, -124, 10, -39, 10, -127,
- 10, -39, 10, -118, 10, -40, 10, -87,
- 10, 10, 58, -39, 10, -127, 10, -40,
- 10, -79, 10, -40, 10, -74, 10, -39,
- 10, -123, 10, -40, 10, -89, 10, -40,
- 10, -75, 10, -39, 10, -118, 10, -39,
- 10, -122, 10, -40, 10, -89, 10, -40,
- 10, -79, 10, -39, 10, -118, 10, -39,
- 10, -120, 10, 10, 32, 58, -39, 10,
- -123, 10, -40, 10, -82, 10, -40, 10,
- -73, 10, -40, 10, -73, 10, -39, 10,
- -122, 10, -40, 10, -81, 10, -39, 10,
- -123, 10, -40, 10, -89, 10, -124, -123,
- -120, 10, -39, 10, -125, 10, -39, 10,
- -122, 10, -40, 10, -86, 10, -39, 10,
- -119, 10, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, -39, -122,
- -40, -81, -39, -123, -40, -89, -69, -65,
- 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 11, 6, 2, 1, 1, 1, 1,
- 1, 1, 2, 2, 10, 3, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 3, 3, 3, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 3, 5, 3, 2, 4, 3, 2, 4,
- 10, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 8,
- 7, 2, 2, 2, 2, 2, 2, 2,
- 10, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 4,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 5,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 6, 4, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 8,
- 7, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 1, 1, 8, 7,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 4, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 1, 1, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 1, 1, 1, 1, 0, 0, 1,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 13, 20, 23, 25, 27, 29,
- 31, 33, 35, 38, 41, 53, 57, 59,
- 61, 63, 65, 67, 69, 71, 73, 75,
- 77, 80, 83, 88, 93, 98, 103, 107,
- 111, 114, 116, 118, 120, 122, 124, 126,
- 128, 130, 132, 134, 136, 138, 140, 142,
- 144, 149, 156, 161, 165, 171, 175, 178,
- 184, 196, 199, 201, 203, 205, 207, 209,
- 211, 213, 215, 217, 219, 221, 223, 225,
- 235, 243, 246, 249, 252, 255, 258, 261,
- 264, 276, 279, 282, 285, 288, 291, 294,
- 297, 300, 303, 306, 309, 312, 315, 318,
- 321, 324, 327, 330, 333, 336, 339, 342,
- 345, 348, 351, 354, 357, 360, 363, 367,
- 370, 373, 376, 379, 382, 385, 388, 391,
- 394, 397, 400, 403, 406, 409, 412, 415,
- 420, 423, 426, 429, 432, 435, 438, 441,
- 444, 447, 450, 453, 456, 459, 462, 465,
- 468, 471, 474, 477, 480, 483, 486, 488,
- 490, 492, 494, 496, 498, 500, 502, 504,
- 511, 514, 517, 520, 523, 526, 529, 532,
- 535, 538, 541, 543, 545, 547, 549, 551,
- 553, 555, 557, 559, 561, 563, 565, 567,
- 569, 571, 573, 575, 577, 579, 587, 592,
- 595, 599, 602, 605, 608, 611, 614, 617,
- 620, 623, 626, 629, 632, 635, 638, 641,
- 644, 647, 650, 653, 656, 659, 662, 665,
- 668, 671, 674, 677, 680, 683, 686, 689,
- 692, 696, 699, 702, 705, 708, 711, 714,
- 717, 720, 723, 726, 729, 732, 735, 738,
- 741, 744, 747, 750, 753, 756, 759, 762,
- 764, 766, 768, 770, 772, 774, 776, 778,
- 780, 782, 784, 786, 789, 791, 793, 795,
- 797, 799, 801, 803, 805, 807, 809, 811,
- 821, 829, 832, 835, 838, 841, 844, 847,
- 850, 853, 856, 859, 862, 865, 868, 871,
- 874, 877, 880, 883, 886, 889, 892, 895,
- 898, 901, 904, 907, 910, 913, 916, 919,
- 922, 925, 928, 931, 934, 937, 940, 943,
- 946, 949, 952, 955, 958, 961, 966, 969,
- 972, 975, 978, 981, 984, 987, 990, 993,
- 996, 999, 1002, 1005, 1008, 1011, 1014, 1017,
- 1020, 1023, 1026, 1029, 1032, 1034, 1036, 1046,
- 1054, 1058, 1061, 1064, 1067, 1070, 1073, 1076,
- 1079, 1082, 1085, 1088, 1091, 1094, 1097, 1100,
- 1103, 1106, 1109, 1112, 1115, 1118, 1121, 1124,
- 1127, 1130, 1133, 1136, 1139, 1142, 1145, 1148,
- 1151, 1154, 1157, 1160, 1163, 1166, 1169, 1172,
- 1175, 1178, 1181, 1184, 1188, 1191, 1194, 1197,
- 1200, 1203, 1206, 1209, 1212, 1215, 1218, 1221,
- 1224, 1227, 1230, 1233, 1236, 1241, 1244, 1247,
- 1250, 1253, 1256, 1259, 1262, 1265, 1268, 1271,
- 1274, 1277, 1280, 1283, 1286, 1289, 1292, 1295,
- 1298, 1301, 1304, 1307, 1309, 1311, 1313, 1315,
- 1317, 1319, 1321, 1323, 1325, 1327
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 13, 435, 12, 12, 22, 32, 34,
- 9, 48, 51, 12, 0, 3, 170, 176,
- 178, 247, 427, 0, 4, 57, 0, 5,
- 0, 6, 0, 7, 0, 8, 0, 9,
- 0, 10, 0, 12, 33, 11, 12, 33,
- 11, 2, 13, 12, 12, 22, 32, 34,
- 9, 48, 51, 12, 0, 14, 18, 9,
- 0, 15, 0, 16, 0, 17, 0, 9,
- 0, 19, 0, 20, 0, 21, 0, 9,
- 0, 23, 0, 24, 0, 26, 25, 25,
- 26, 25, 25, 27, 27, 28, 27, 27,
- 27, 27, 28, 27, 27, 27, 27, 29,
- 27, 27, 27, 27, 30, 27, 27, 12,
- 31, 31, 0, 12, 31, 31, 0, 12,
- 33, 32, 12, 0, 35, 0, 36, 0,
- 37, 0, 38, 0, 39, 0, 40, 0,
- 41, 0, 42, 0, 43, 0, 44, 0,
- 45, 0, 46, 0, 47, 0, 437, 0,
- 0, 0, 0, 0, 49, 50, 12, 50,
- 50, 48, 49, 49, 12, 50, 48, 50,
- 0, 51, 52, 51, 0, 56, 55, 54,
- 52, 55, 53, 0, 54, 52, 53, 0,
- 54, 53, 56, 55, 54, 52, 55, 53,
- 2, 13, 56, 56, 22, 32, 34, 9,
- 48, 51, 56, 0, 58, 150, 0, 59,
- 0, 60, 0, 61, 0, 62, 0, 63,
- 0, 64, 0, 65, 0, 66, 0, 67,
- 0, 68, 0, 69, 0, 71, 70, 71,
- 70, 72, 127, 71, 71, 12, 136, 79,
- 12, 71, 70, 73, 81, 87, 89, 98,
- 119, 71, 70, 74, 71, 70, 75, 71,
- 70, 76, 71, 70, 77, 71, 70, 78,
- 71, 70, 79, 71, 70, 71, 80, 70,
- 2, 13, 12, 12, 22, 32, 34, 9,
- 48, 51, 12, 0, 82, 71, 70, 83,
- 71, 70, 84, 71, 70, 85, 71, 70,
- 86, 71, 70, 79, 71, 70, 88, 71,
- 70, 79, 71, 70, 90, 71, 70, 91,
- 71, 70, 92, 71, 70, 93, 71, 70,
- 94, 71, 70, 95, 71, 70, 96, 71,
- 70, 97, 71, 70, 71, 80, 70, 99,
- 71, 70, 100, 71, 70, 101, 71, 70,
- 102, 71, 70, 103, 71, 70, 104, 71,
- 70, 105, 71, 70, 106, 71, 70, 107,
- 71, 70, 108, 71, 70, 109, 71, 70,
- 110, 71, 70, 71, 111, 80, 70, 112,
- 71, 70, 113, 71, 70, 114, 71, 70,
- 115, 71, 70, 116, 71, 70, 117, 71,
- 70, 118, 71, 70, 97, 71, 70, 120,
- 71, 70, 121, 71, 70, 122, 71, 70,
- 123, 71, 70, 124, 71, 70, 125, 71,
- 70, 126, 71, 70, 79, 71, 70, 128,
- 132, 79, 71, 70, 129, 71, 70, 130,
- 71, 70, 131, 71, 70, 79, 71, 70,
- 133, 71, 70, 134, 71, 70, 135, 71,
- 70, 79, 71, 70, 71, 137, 70, 71,
- 138, 70, 71, 139, 70, 71, 140, 70,
- 71, 141, 70, 71, 142, 70, 71, 143,
- 70, 71, 144, 70, 71, 145, 70, 71,
- 146, 70, 71, 147, 70, 71, 148, 70,
- 71, 149, 70, 71, 12, 70, 151, 0,
- 152, 0, 153, 0, 154, 0, 155, 0,
- 156, 0, 157, 0, 159, 158, 159, 158,
- 160, 159, 159, 12, 12, 159, 158, 161,
- 159, 158, 162, 159, 158, 163, 159, 158,
- 164, 159, 158, 165, 159, 158, 166, 159,
- 158, 167, 159, 158, 168, 159, 158, 169,
- 159, 158, 159, 80, 158, 171, 0, 172,
- 0, 173, 0, 174, 0, 175, 0, 9,
- 0, 177, 0, 9, 0, 179, 0, 180,
- 0, 181, 0, 182, 0, 183, 0, 184,
- 0, 185, 0, 186, 0, 187, 0, 189,
- 188, 189, 188, 190, 189, 189, 12, 233,
- 12, 189, 188, 191, 208, 212, 189, 188,
- 192, 189, 188, 193, 204, 189, 188, 194,
- 189, 188, 195, 189, 188, 196, 189, 188,
- 197, 189, 188, 198, 189, 188, 199, 189,
- 188, 200, 189, 188, 201, 189, 188, 202,
- 189, 188, 203, 189, 188, 189, 80, 188,
- 205, 189, 188, 206, 189, 188, 207, 189,
- 188, 201, 189, 188, 209, 189, 188, 210,
- 189, 188, 211, 189, 188, 199, 189, 188,
- 213, 189, 188, 214, 189, 188, 215, 189,
- 188, 216, 189, 188, 217, 189, 188, 218,
- 189, 188, 219, 189, 188, 220, 189, 188,
- 221, 189, 188, 222, 189, 188, 223, 189,
- 188, 224, 189, 188, 189, 225, 80, 188,
- 226, 189, 188, 227, 189, 188, 228, 189,
- 188, 229, 189, 188, 230, 189, 188, 231,
- 189, 188, 232, 189, 188, 203, 189, 188,
- 189, 234, 188, 189, 235, 188, 189, 236,
- 188, 189, 237, 188, 189, 238, 188, 189,
- 239, 188, 189, 240, 188, 189, 241, 188,
- 189, 242, 188, 189, 243, 188, 189, 244,
- 188, 189, 245, 188, 189, 246, 188, 189,
- 12, 188, 248, 0, 249, 0, 250, 0,
- 251, 0, 252, 0, 253, 0, 254, 0,
- 255, 0, 256, 0, 257, 0, 258, 0,
- 259, 0, 260, 340, 0, 261, 0, 262,
- 0, 263, 0, 264, 0, 265, 0, 266,
- 0, 267, 0, 268, 0, 269, 0, 271,
- 270, 271, 270, 272, 317, 271, 271, 12,
- 326, 279, 12, 271, 270, 273, 280, 286,
- 288, 297, 309, 271, 270, 274, 271, 270,
- 275, 271, 270, 276, 271, 270, 277, 271,
- 270, 278, 271, 270, 279, 271, 270, 271,
- 80, 270, 281, 271, 270, 282, 271, 270,
- 283, 271, 270, 284, 271, 270, 285, 271,
- 270, 279, 271, 270, 287, 271, 270, 279,
- 271, 270, 289, 271, 270, 290, 271, 270,
- 291, 271, 270, 292, 271, 270, 293, 271,
- 270, 294, 271, 270, 295, 271, 270, 296,
- 271, 270, 271, 80, 270, 298, 271, 270,
- 299, 271, 270, 300, 271, 270, 301, 271,
- 270, 302, 271, 270, 303, 271, 270, 304,
- 271, 270, 305, 271, 270, 306, 271, 270,
- 307, 271, 270, 308, 271, 270, 296, 271,
- 270, 310, 271, 270, 311, 271, 270, 312,
- 271, 270, 313, 271, 270, 314, 271, 270,
- 315, 271, 270, 316, 271, 270, 279, 271,
- 270, 318, 322, 279, 271, 270, 319, 271,
- 270, 320, 271, 270, 321, 271, 270, 279,
- 271, 270, 323, 271, 270, 324, 271, 270,
- 325, 271, 270, 279, 271, 270, 271, 327,
- 270, 271, 328, 270, 271, 329, 270, 271,
- 330, 270, 271, 331, 270, 271, 332, 270,
- 271, 333, 270, 271, 334, 270, 271, 335,
- 270, 271, 336, 270, 271, 337, 270, 271,
- 338, 270, 271, 339, 270, 271, 12, 270,
- 342, 341, 342, 341, 343, 404, 342, 342,
- 12, 413, 350, 12, 342, 341, 344, 363,
- 369, 371, 375, 396, 342, 341, 345, 351,
- 342, 341, 346, 342, 341, 347, 342, 341,
- 348, 342, 341, 349, 342, 341, 350, 342,
- 341, 342, 80, 341, 352, 342, 341, 353,
- 342, 341, 354, 342, 341, 355, 342, 341,
- 356, 342, 341, 357, 342, 341, 358, 342,
- 341, 359, 342, 341, 360, 342, 341, 361,
- 342, 341, 362, 342, 341, 342, 80, 341,
- 364, 342, 341, 365, 342, 341, 366, 342,
- 341, 367, 342, 341, 368, 342, 341, 350,
- 342, 341, 370, 342, 341, 350, 342, 341,
- 372, 342, 341, 373, 342, 341, 374, 342,
- 341, 358, 342, 341, 376, 342, 341, 377,
- 342, 341, 378, 342, 341, 379, 342, 341,
- 380, 342, 341, 381, 342, 341, 382, 342,
- 341, 383, 342, 341, 384, 342, 341, 385,
- 342, 341, 386, 342, 341, 387, 342, 341,
- 342, 388, 80, 341, 389, 342, 341, 390,
- 342, 341, 391, 342, 341, 392, 342, 341,
- 393, 342, 341, 394, 342, 341, 395, 342,
- 341, 362, 342, 341, 397, 342, 341, 398,
- 342, 341, 399, 342, 341, 400, 342, 341,
- 401, 342, 341, 402, 342, 341, 403, 342,
- 341, 350, 342, 341, 405, 409, 350, 342,
- 341, 406, 342, 341, 407, 342, 341, 408,
- 342, 341, 350, 342, 341, 410, 342, 341,
- 411, 342, 341, 412, 342, 341, 350, 342,
- 341, 342, 414, 341, 342, 415, 341, 342,
- 416, 341, 342, 417, 341, 342, 418, 341,
- 342, 419, 341, 342, 420, 341, 342, 421,
- 341, 342, 422, 341, 342, 423, 341, 342,
- 424, 341, 342, 425, 341, 342, 426, 341,
- 342, 12, 341, 428, 0, 429, 0, 430,
- 0, 431, 0, 432, 0, 433, 0, 434,
- 0, 9, 0, 436, 0, 12, 0, 0,
- 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 29, 29, 0, 54, 0, 5, 1, 0,
- 29, 1, 35, 0, 43, 0, 0, 0,
- 0, 0, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 149, 126, 57, 110, 23,
- 0, 29, 29, 54, 0, 5, 1, 0,
- 29, 1, 35, 0, 43, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 0, 0, 43, 54, 37, 37,
- 87, 37, 37, 43, 0, 39, 0, 43,
- 0, 0, 54, 0, 0, 39, 0, 0,
- 96, 96, 54, 0, 93, 90, 41, 96,
- 90, 99, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 84, 84, 54, 0, 72, 33, 84,
- 72, 0, 0, 0, 0, 0, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 15, 0,
- 63, 63, 130, 31, 60, 57, 31, 63,
- 57, 66, 31, 43, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 15, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 15, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 15, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 84, 54, 0, 81, 81, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 21, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 54, 0, 69, 33,
- 69, 0, 0, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 13, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 13, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 84, 54, 0, 78,
- 33, 84, 78, 0, 0, 0, 0, 0,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 19, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 19, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 19, 0,
- 144, 57, 54, 0, 84, 84, 54, 0,
- 75, 33, 84, 75, 0, 0, 0, 0,
- 0, 0, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 17, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 17, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 17, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 437;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/ar.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 1036 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/ar.c.rl"
-
-#line 1043 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/ar.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/ar.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/ar.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/ar.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/ar.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/ar.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/ar.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/ar.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/ar.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/ar.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/ar.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/ar.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/ar.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/ar.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/ar.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/ar.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/ar.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/ar.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/ar.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/ar.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/ar.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/ar.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/ar.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/ar.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1333 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/ar.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1396 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/ar.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_ar()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Ar", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_bg/extconf.rb
index 17bcdaa,17bcdaa..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_bg/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_bg")
--have_library("c", "main")
--create_makefile("gherkin_lexer_bg")
diff --cc ext/gherkin_lexer_bg/gherkin_lexer_bg.c
index 744f5cb,b102247..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_bg/gherkin_lexer_bg.c
+++ /dev/null
@@@ -1,1655 -1,1655 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 12, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 34,
- 36, 47, 48, 49, 51, 53, 58, 63,
- 68, 73, 77, 81, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, 103, 110, 115, 119,
- 125, 128, 130, 136, 147, 148, 149, 150,
- 151, 152, 153, 154, 155, 156, 157, 158,
- 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 188, 197, 199, 201,
- 203, 205, 207, 209, 211, 213, 215, 217,
- 219, 230, 232, 234, 236, 238, 240, 242,
- 244, 246, 248, 250, 252, 254, 256, 258,
- 260, 262, 264, 266, 268, 270, 272, 274,
- 276, 278, 280, 282, 284, 286, 288, 290,
- 292, 294, 296, 298, 300, 302, 304, 306,
- 308, 310, 312, 314, 316, 318, 320, 322,
- 324, 326, 328, 330, 332, 334, 336, 338,
- 340, 342, 344, 346, 348, 350, 352, 354,
- 356, 358, 360, 362, 364, 366, 368, 370,
- 372, 374, 376, 378, 380, 382, 384, 386,
- 388, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 406, 408, 410, 412,
- 414, 416, 418, 420, 422, 424, 426, 428,
- 430, 432, 434, 436, 438, 440, 442, 444,
- 446, 448, 450, 452, 454, 456, 458, 460,
- 462, 463, 464, 465, 466, 467, 468, 469,
- 470, 471, 472, 473, 474, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 504, 512, 514, 516, 518, 520,
- 522, 524, 526, 528, 530, 532, 534, 536,
- 538, 540, 542, 544, 546, 548, 550, 552,
- 554, 556, 558, 560, 562, 564, 566, 568,
- 570, 572, 574, 576, 578, 580, 582, 584,
- 586, 588, 590, 592, 594, 596, 598, 600,
- 602, 604, 606, 608, 610, 612, 614, 616,
- 618, 620, 622, 624, 626, 628, 630, 632,
- 634, 636, 638, 640, 642, 644, 646, 648,
- 650, 652, 654, 656, 658, 660, 661, 662,
- 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, 677, 686,
- 696, 698, 700, 702, 704, 706, 708, 710,
- 712, 714, 716, 718, 720, 722, 724, 726,
- 728, 730, 732, 734, 736, 738, 740, 742,
- 744, 746, 748, 750, 752, 754, 756, 758,
- 760, 762, 764, 766, 768, 770, 772, 774,
- 776, 778, 780, 782, 784, 786, 788, 790,
- 792, 794, 796, 798, 800, 802, 804, 806,
- 808, 810, 812, 814, 816, 818, 820, 822,
- 824, 826, 828, 830, 832, 834, 836, 838,
- 840, 842, 844, 846, 848, 850, 852, 854,
- 856, 858, 860, 862, 864, 866, 868, 870,
- 872, 874, 876, 878, 880, 882, 884, 886,
- 888, 890, 892, 894, 896, 898, 900, 902,
- 904, 906, 908, 910, 912, 914, 916, 917,
- 918, 919, 920, 921, 922, 923, 924, 925,
- 926, 927, 928, 929, 930, 931, 932, 933,
- 934, 935, 936, 937, 938, 939, 940, 941,
- 942, 943, 944, 945, 953, 958, 960, 962,
- 964, 967, 969, 971, 973, 975, 977, 979,
- 981, 983, 985, 987, 989, 991, 993, 995,
- 997, 999, 1001, 1003, 1005, 1007, 1009, 1011,
- 1013, 1015, 1017, 1019, 1021, 1023, 1025, 1027,
- 1029, 1031, 1033, 1035, 1037, 1039, 1041, 1043,
- 1045, 1047, 1049, 1051, 1053, 1055, 1057, 1059,
- 1061, 1063, 1065, 1067, 1069, 1071, 1073, 1075,
- 1077, 1079, 1081, 1083, 1085, 1087, 1089, 1091,
- 1093, 1095, 1097, 1099, 1101, 1103, 1105, 1107,
- 1109, 1111, 1113, 1115, 1117, 1119, 1121, 1123,
- 1125, 1127, 1129, 1131, 1133, 1135, 1137, 1139,
- 1141, 1143, 1145, 1147, 1149, 1151, 1153, 1155,
- 1157, 1158, 1159
- };
-
- static const char _lexer_trans_keys[] = {
- -48, -17, 10, 32, 34, 35, 37, 42,
- 64, 124, 9, 13, -108, -104, -102, -99,
- -97, -96, -95, -94, -92, -48, -80, -48,
- -76, -48, -75, -48, -67, -48, -66, 32,
- 10, 13, 10, 13, -48, 10, 32, 34,
- 35, 37, 42, 64, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 13, 32, 64, 9, 10, 9,
- 10, 13, 32, 64, 11, 12, 10, 32,
- 64, 9, 13, 32, 124, 9, 13, 10,
- 32, 92, 124, 9, 13, 10, 92, 124,
- 10, 92, 10, 32, 92, 124, 9, 13,
- -48, 10, 32, 34, 35, 37, 42, 64,
- 124, 9, 13, -48, -66, -48, -77, -48,
- -80, -47, -126, -47, -128, -48, -75, -72,
- -48, -76, -48, -72, -47, -127, -47, -126,
- -48, -66, -47, -128, -48, -72, -47, -113,
- 58, 10, 10, -48, 10, 32, 35, 37,
- 42, 64, 9, 13, -108, -104, -102, -99,
- -96, -95, -94, -92, 10, -48, 10, -80,
- 10, -48, 10, -76, 10, -48, 10, -75,
- 10, -48, 10, -67, 10, -48, 10, -66,
- 10, 10, 32, -48, 10, 32, 34, 35,
- 37, 42, 64, 124, 9, 13, -48, 10,
- -66, 10, -48, 10, -77, 10, -48, 10,
- -80, 10, -47, 10, -126, 10, -48, 10,
- -80, 10, -48, 10, -68, 10, -48, 10,
- -70, 10, -48, 10, -80, 10, 10, 32,
- -48, 10, -67, 10, -48, 10, -80, 10,
- 10, 32, -47, 10, -127, 10, -47, 10,
- -122, 10, -48, 10, -75, 10, -48, 10,
- -67, 10, -48, 10, -80, 10, -47, 10,
- -128, 10, -48, 10, -72, 10, -48, 10,
- -71, 10, 10, 58, -47, 10, -125, 10,
- -48, 10, -67, 10, -48, 10, -70, 10,
- -47, 10, -122, 10, -48, 10, -72, 10,
- -48, 10, -66, 10, -48, 10, -67, 10,
- -48, 10, -80, 10, -48, 10, -69, 10,
- -48, 10, -67, 10, -48, 10, -66, 10,
- -47, 10, -127, 10, -47, 10, -126, 10,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, -48, -68, -48, -75,
- -47, -128, -48, -72, 58, 10, 10, -48,
- 10, 32, 35, 124, 9, 13, -92, 10,
- -47, 10, -125, 10, -48, 10, -67, 10,
- -48, 10, -70, 10, -47, 10, -122, 10,
- -48, 10, -72, 10, -48, 10, -66, 10,
- -48, 10, -67, 10, -48, 10, -80, 10,
- -48, 10, -69, 10, -48, 10, -67, 10,
- -48, 10, -66, 10, -47, 10, -127, 10,
- -47, 10, -126, 10, 10, 58, -48, -80,
- -48, -68, -48, -70, -48, -80, 32, -48,
- -67, -48, -80, 32, -47, -127, -47, -122,
- -48, -75, -48, -67, -48, -80, -47, -128,
- -48, -72, -48, -71, 58, 10, 10, -48,
- 10, 32, 35, 37, 42, 64, 9, 13,
- -108, -104, -102, -99, -95, -94, -92, 10,
- -48, 10, -80, 10, -48, 10, -76, 10,
- -48, 10, -75, 10, -48, 10, -67, 10,
- -48, 10, -66, 10, 10, 32, -48, 10,
- -66, 10, -48, 10, -77, 10, -48, 10,
- -80, 10, -47, 10, -126, 10, -47, 10,
- -122, 10, -48, 10, -75, 10, -48, 10,
- -67, 10, -48, 10, -80, 10, -47, 10,
- -128, 10, -48, 10, -72, 10, -48, 10,
- -71, 10, 10, 58, -47, 10, -125, 10,
- -48, 10, -67, 10, -48, 10, -70, 10,
- -47, 10, -122, 10, -48, 10, -72, 10,
- -48, 10, -66, 10, -48, 10, -67, 10,
- -48, 10, -80, 10, -48, 10, -69, 10,
- -48, 10, -67, 10, -48, 10, -66, 10,
- -47, 10, -127, 10, -47, 10, -126, 10,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, -47, -122, -48, -75,
- -48, -67, -48, -80, -47, -128, -48, -72,
- -48, -71, 58, 10, 10, -48, 10, 32,
- 35, 37, 42, 64, 9, 13, -108, -104,
- -102, -99, -97, -96, -95, -94, -92, 10,
- -48, 10, -80, 10, -48, 10, -76, 10,
- -48, 10, -75, 10, -48, 10, -67, 10,
- -48, 10, -66, 10, 10, 32, -48, 10,
- -66, 10, -48, 10, -77, 10, -48, 10,
- -80, 10, -47, 10, -126, 10, -47, 10,
- -128, 10, -48, 10, -75, 10, -48, 10,
- -76, 10, -48, 10, -72, 10, -47, 10,
- -127, 10, -47, 10, -126, 10, -48, 10,
- -66, 10, -47, 10, -128, 10, -48, 10,
- -72, 10, -47, 10, -113, 10, 10, 58,
- -48, 10, -80, 10, -48, 10, -68, 10,
- -48, 10, -70, 10, -48, 10, -80, 10,
- 10, 32, -48, 10, -67, 10, -48, 10,
- -80, 10, 10, 32, -47, 10, -127, 10,
- -47, 10, -122, 10, -48, 10, -75, 10,
- -48, 10, -67, 10, -48, 10, -80, 10,
- -47, 10, -128, 10, -48, 10, -72, 10,
- -48, 10, -71, 10, -47, 10, -125, 10,
- -48, 10, -67, 10, -48, 10, -70, 10,
- -47, 10, -122, 10, -48, 10, -72, 10,
- -48, 10, -66, 10, -48, 10, -67, 10,
- -48, 10, -80, 10, -48, 10, -69, 10,
- -48, 10, -67, 10, -48, 10, -66, 10,
- -47, 10, -127, 10, -47, 10, -126, 10,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, -47, -125, -48, -67,
- -48, -70, -47, -122, -48, -72, -48, -66,
- -48, -67, -48, -80, -48, -69, -48, -67,
- -48, -66, -47, -127, -47, -126, 58, 10,
- 10, -48, 10, 32, 35, 37, 64, 9,
- 13, -97, -96, -95, -92, 10, -47, 10,
- -128, 10, -48, 10, -75, -72, 10, -48,
- 10, -76, 10, -48, 10, -72, 10, -47,
- 10, -127, 10, -47, 10, -126, 10, -48,
- 10, -66, 10, -47, 10, -128, 10, -48,
- 10, -72, 10, -47, 10, -113, 10, 10,
- 58, -48, 10, -68, 10, -48, 10, -75,
- 10, -47, 10, -128, 10, -48, 10, -72,
- 10, -48, 10, -80, 10, -48, 10, -68,
- 10, -48, 10, -70, 10, -48, 10, -80,
- 10, 10, 32, -48, 10, -67, 10, -48,
- 10, -80, 10, 10, 32, -47, 10, -127,
- 10, -47, 10, -122, 10, -48, 10, -75,
- 10, -48, 10, -67, 10, -48, 10, -80,
- 10, -47, 10, -128, 10, -48, 10, -72,
- 10, -48, 10, -71, 10, -47, 10, -125,
- 10, -48, 10, -67, 10, -48, 10, -70,
- 10, -47, 10, -122, 10, -48, 10, -72,
- 10, -48, 10, -66, 10, -48, 10, -67,
- 10, -48, 10, -80, 10, -48, 10, -69,
- 10, -48, 10, -67, 10, -48, 10, -66,
- 10, -47, 10, -127, 10, -47, 10, -126,
- 10, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, -69, -65, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 10, 9, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 2,
- 9, 1, 1, 2, 2, 3, 3, 3,
- 3, 2, 2, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 3, 5, 3, 2, 4,
- 3, 2, 4, 9, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 7, 9, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 9, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 5, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 7, 8, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 7, 10,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 6, 5, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 1, 1, 1,
- 1, 1, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 1, 1, 1, 1,
- 0, 0, 1, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 12, 22, 24, 26, 28, 30,
- 32, 34, 36, 38, 40, 42, 44, 47,
- 50, 61, 63, 65, 68, 71, 76, 81,
- 86, 91, 95, 99, 102, 104, 106, 108,
- 110, 112, 114, 116, 118, 120, 122, 124,
- 126, 128, 130, 132, 137, 144, 149, 153,
- 159, 163, 166, 172, 183, 185, 187, 189,
- 191, 193, 195, 197, 199, 201, 203, 205,
- 208, 210, 212, 214, 216, 218, 220, 222,
- 224, 226, 228, 230, 232, 234, 236, 238,
- 240, 242, 244, 246, 255, 265, 268, 271,
- 274, 277, 280, 283, 286, 289, 292, 295,
- 298, 309, 312, 315, 318, 321, 324, 327,
- 330, 333, 336, 339, 342, 345, 348, 351,
- 354, 357, 360, 363, 366, 369, 372, 375,
- 378, 381, 384, 387, 390, 393, 396, 399,
- 402, 405, 408, 411, 414, 417, 420, 423,
- 426, 429, 432, 435, 438, 441, 444, 447,
- 450, 453, 456, 459, 462, 465, 468, 471,
- 474, 477, 480, 483, 486, 489, 492, 495,
- 498, 501, 504, 507, 510, 513, 516, 519,
- 522, 525, 528, 531, 534, 537, 540, 543,
- 546, 548, 550, 552, 554, 556, 558, 560,
- 562, 564, 566, 568, 575, 578, 581, 584,
- 587, 590, 593, 596, 599, 602, 605, 608,
- 611, 614, 617, 620, 623, 626, 629, 632,
- 635, 638, 641, 644, 647, 650, 653, 656,
- 659, 661, 663, 665, 667, 669, 671, 673,
- 675, 677, 679, 681, 683, 685, 687, 689,
- 691, 693, 695, 697, 699, 701, 703, 705,
- 707, 709, 711, 713, 715, 717, 719, 721,
- 723, 725, 734, 743, 746, 749, 752, 755,
- 758, 761, 764, 767, 770, 773, 776, 779,
- 782, 785, 788, 791, 794, 797, 800, 803,
- 806, 809, 812, 815, 818, 821, 824, 827,
- 830, 833, 836, 839, 842, 845, 848, 851,
- 854, 857, 860, 863, 866, 869, 872, 875,
- 878, 881, 884, 887, 890, 893, 896, 899,
- 902, 905, 908, 911, 914, 917, 920, 923,
- 926, 929, 932, 935, 938, 941, 944, 947,
- 950, 953, 956, 959, 962, 965, 967, 969,
- 971, 973, 975, 977, 979, 981, 983, 985,
- 987, 989, 991, 993, 995, 997, 999, 1008,
- 1019, 1022, 1025, 1028, 1031, 1034, 1037, 1040,
- 1043, 1046, 1049, 1052, 1055, 1058, 1061, 1064,
- 1067, 1070, 1073, 1076, 1079, 1082, 1085, 1088,
- 1091, 1094, 1097, 1100, 1103, 1106, 1109, 1112,
- 1115, 1118, 1121, 1124, 1127, 1130, 1133, 1136,
- 1139, 1142, 1145, 1148, 1151, 1154, 1157, 1160,
- 1163, 1166, 1169, 1172, 1175, 1178, 1181, 1184,
- 1187, 1190, 1193, 1196, 1199, 1202, 1205, 1208,
- 1211, 1214, 1217, 1220, 1223, 1226, 1229, 1232,
- 1235, 1238, 1241, 1244, 1247, 1250, 1253, 1256,
- 1259, 1262, 1265, 1268, 1271, 1274, 1277, 1280,
- 1283, 1286, 1289, 1292, 1295, 1298, 1301, 1304,
- 1307, 1310, 1313, 1316, 1319, 1322, 1325, 1328,
- 1331, 1334, 1337, 1340, 1343, 1346, 1349, 1351,
- 1353, 1355, 1357, 1359, 1361, 1363, 1365, 1367,
- 1369, 1371, 1373, 1375, 1377, 1379, 1381, 1383,
- 1385, 1387, 1389, 1391, 1393, 1395, 1397, 1399,
- 1401, 1403, 1405, 1407, 1415, 1421, 1424, 1427,
- 1430, 1434, 1437, 1440, 1443, 1446, 1449, 1452,
- 1455, 1458, 1461, 1464, 1467, 1470, 1473, 1476,
- 1479, 1482, 1485, 1488, 1491, 1494, 1497, 1500,
- 1503, 1506, 1509, 1512, 1515, 1518, 1521, 1524,
- 1527, 1530, 1533, 1536, 1539, 1542, 1545, 1548,
- 1551, 1554, 1557, 1560, 1563, 1566, 1569, 1572,
- 1575, 1578, 1581, 1584, 1587, 1590, 1593, 1596,
- 1599, 1602, 1605, 1608, 1611, 1614, 1617, 1620,
- 1623, 1626, 1629, 1632, 1635, 1638, 1641, 1644,
- 1647, 1650, 1653, 1656, 1659, 1662, 1665, 1668,
- 1671, 1674, 1677, 1680, 1683, 1686, 1689, 1692,
- 1695, 1698, 1701, 1704, 1707, 1710, 1713, 1716,
- 1719, 1721, 1723
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 584, 16, 16, 17, 27, 29, 13,
- 43, 46, 16, 0, 3, 13, 52, 11,
- 60, 216, 325, 11, 454, 0, 4, 0,
- 5, 0, 6, 0, 7, 0, 8, 0,
- 9, 0, 10, 0, 11, 0, 12, 0,
- 13, 0, 14, 0, 16, 28, 15, 16,
- 28, 15, 2, 16, 16, 17, 27, 29,
- 13, 43, 46, 16, 0, 18, 0, 19,
- 0, 21, 20, 20, 21, 20, 20, 22,
- 22, 23, 22, 22, 22, 22, 23, 22,
- 22, 22, 22, 24, 22, 22, 22, 22,
- 25, 22, 22, 16, 26, 26, 0, 16,
- 26, 26, 0, 16, 28, 27, 16, 0,
- 30, 0, 31, 0, 32, 0, 33, 0,
- 34, 0, 35, 0, 36, 0, 37, 0,
- 38, 0, 39, 0, 40, 0, 41, 0,
- 42, 0, 586, 0, 0, 0, 0, 0,
- 44, 45, 16, 45, 45, 43, 44, 44,
- 16, 45, 43, 45, 0, 46, 47, 46,
- 0, 51, 50, 49, 47, 50, 48, 0,
- 49, 47, 48, 0, 49, 48, 51, 50,
- 49, 47, 50, 48, 2, 51, 51, 17,
- 27, 29, 13, 43, 46, 51, 0, 53,
- 0, 54, 0, 55, 0, 56, 0, 57,
- 0, 58, 0, 59, 0, 11, 0, 61,
- 0, 62, 0, 63, 0, 64, 176, 0,
- 65, 0, 66, 0, 67, 0, 68, 0,
- 69, 0, 70, 0, 71, 0, 72, 0,
- 73, 0, 74, 0, 75, 0, 76, 0,
- 77, 0, 78, 0, 79, 0, 80, 0,
- 81, 0, 83, 82, 83, 82, 84, 83,
- 83, 16, 162, 95, 16, 83, 82, 85,
- 95, 97, 93, 105, 121, 93, 136, 83,
- 82, 86, 83, 82, 87, 83, 82, 88,
- 83, 82, 89, 83, 82, 90, 83, 82,
- 91, 83, 82, 92, 83, 82, 93, 83,
- 82, 94, 83, 82, 95, 83, 82, 83,
- 96, 82, 2, 16, 16, 17, 27, 29,
- 13, 43, 46, 16, 0, 98, 83, 82,
- 99, 83, 82, 100, 83, 82, 101, 83,
- 82, 102, 83, 82, 103, 83, 82, 104,
- 83, 82, 93, 83, 82, 106, 83, 82,
- 107, 83, 82, 108, 83, 82, 109, 83,
- 82, 110, 83, 82, 111, 83, 82, 112,
- 83, 82, 113, 83, 82, 83, 114, 82,
- 115, 83, 82, 116, 83, 82, 117, 83,
- 82, 118, 83, 82, 83, 119, 82, 120,
- 83, 82, 121, 83, 82, 122, 83, 82,
- 123, 83, 82, 124, 83, 82, 125, 83,
- 82, 126, 83, 82, 127, 83, 82, 128,
- 83, 82, 129, 83, 82, 130, 83, 82,
- 131, 83, 82, 132, 83, 82, 133, 83,
- 82, 134, 83, 82, 135, 83, 82, 83,
- 96, 82, 137, 83, 82, 138, 83, 82,
- 139, 83, 82, 140, 83, 82, 141, 83,
- 82, 142, 83, 82, 143, 83, 82, 144,
- 83, 82, 145, 83, 82, 146, 83, 82,
- 147, 83, 82, 148, 83, 82, 149, 83,
- 82, 150, 83, 82, 151, 83, 82, 152,
- 83, 82, 153, 83, 82, 154, 83, 82,
- 155, 83, 82, 156, 83, 82, 157, 83,
- 82, 158, 83, 82, 159, 83, 82, 160,
- 83, 82, 161, 83, 82, 135, 83, 82,
- 83, 163, 82, 83, 164, 82, 83, 165,
- 82, 83, 166, 82, 83, 167, 82, 83,
- 168, 82, 83, 169, 82, 83, 170, 82,
- 83, 171, 82, 83, 172, 82, 83, 173,
- 82, 83, 174, 82, 83, 175, 82, 83,
- 16, 82, 177, 0, 178, 0, 179, 0,
- 180, 0, 181, 0, 182, 0, 183, 0,
- 184, 0, 185, 0, 187, 186, 187, 186,
- 188, 187, 187, 16, 16, 187, 186, 189,
- 187, 186, 190, 187, 186, 191, 187, 186,
- 192, 187, 186, 193, 187, 186, 194, 187,
- 186, 195, 187, 186, 196, 187, 186, 197,
- 187, 186, 198, 187, 186, 199, 187, 186,
- 200, 187, 186, 201, 187, 186, 202, 187,
- 186, 203, 187, 186, 204, 187, 186, 205,
- 187, 186, 206, 187, 186, 207, 187, 186,
- 208, 187, 186, 209, 187, 186, 210, 187,
- 186, 211, 187, 186, 212, 187, 186, 213,
- 187, 186, 214, 187, 186, 215, 187, 186,
- 187, 96, 186, 217, 0, 218, 0, 219,
- 0, 220, 0, 221, 0, 222, 0, 223,
- 0, 224, 0, 225, 0, 226, 0, 227,
- 0, 228, 0, 229, 0, 230, 0, 231,
- 0, 232, 0, 233, 0, 234, 0, 235,
- 0, 236, 0, 237, 0, 238, 0, 239,
- 0, 240, 0, 241, 0, 242, 0, 243,
- 0, 244, 0, 245, 0, 246, 0, 247,
- 0, 249, 248, 249, 248, 250, 249, 249,
- 16, 311, 261, 16, 249, 248, 251, 261,
- 262, 259, 270, 259, 285, 249, 248, 252,
- 249, 248, 253, 249, 248, 254, 249, 248,
- 255, 249, 248, 256, 249, 248, 257, 249,
- 248, 258, 249, 248, 259, 249, 248, 260,
- 249, 248, 261, 249, 248, 249, 96, 248,
- 263, 249, 248, 264, 249, 248, 265, 249,
- 248, 266, 249, 248, 267, 249, 248, 268,
- 249, 248, 269, 249, 248, 259, 249, 248,
- 271, 249, 248, 272, 249, 248, 273, 249,
- 248, 274, 249, 248, 275, 249, 248, 276,
- 249, 248, 277, 249, 248, 278, 249, 248,
- 279, 249, 248, 280, 249, 248, 281, 249,
- 248, 282, 249, 248, 283, 249, 248, 284,
- 249, 248, 249, 96, 248, 286, 249, 248,
- 287, 249, 248, 288, 249, 248, 289, 249,
- 248, 290, 249, 248, 291, 249, 248, 292,
- 249, 248, 293, 249, 248, 294, 249, 248,
- 295, 249, 248, 296, 249, 248, 297, 249,
- 248, 298, 249, 248, 299, 249, 248, 300,
- 249, 248, 301, 249, 248, 302, 249, 248,
- 303, 249, 248, 304, 249, 248, 305, 249,
- 248, 306, 249, 248, 307, 249, 248, 308,
- 249, 248, 309, 249, 248, 310, 249, 248,
- 284, 249, 248, 249, 312, 248, 249, 313,
- 248, 249, 314, 248, 249, 315, 248, 249,
- 316, 248, 249, 317, 248, 249, 318, 248,
- 249, 319, 248, 249, 320, 248, 249, 321,
- 248, 249, 322, 248, 249, 323, 248, 249,
- 324, 248, 249, 16, 248, 326, 0, 327,
- 0, 328, 0, 329, 0, 330, 0, 331,
- 0, 332, 0, 333, 0, 334, 0, 335,
- 0, 336, 0, 337, 0, 338, 0, 339,
- 0, 340, 0, 342, 341, 342, 341, 343,
- 342, 342, 16, 440, 354, 16, 342, 341,
- 344, 354, 355, 352, 363, 384, 400, 352,
- 414, 342, 341, 345, 342, 341, 346, 342,
- 341, 347, 342, 341, 348, 342, 341, 349,
- 342, 341, 350, 342, 341, 351, 342, 341,
- 352, 342, 341, 353, 342, 341, 354, 342,
- 341, 342, 96, 341, 356, 342, 341, 357,
- 342, 341, 358, 342, 341, 359, 342, 341,
- 360, 342, 341, 361, 342, 341, 362, 342,
- 341, 352, 342, 341, 364, 342, 341, 365,
- 342, 341, 366, 342, 341, 367, 342, 341,
- 368, 342, 341, 369, 342, 341, 370, 342,
- 341, 371, 342, 341, 372, 342, 341, 373,
- 342, 341, 374, 342, 341, 375, 342, 341,
- 376, 342, 341, 377, 342, 341, 378, 342,
- 341, 379, 342, 341, 380, 342, 341, 381,
- 342, 341, 382, 342, 341, 383, 342, 341,
- 342, 96, 341, 385, 342, 341, 386, 342,
- 341, 387, 342, 341, 388, 342, 341, 389,
- 342, 341, 390, 342, 341, 391, 342, 341,
- 392, 342, 341, 342, 393, 341, 394, 342,
- 341, 395, 342, 341, 396, 342, 341, 397,
- 342, 341, 342, 398, 341, 399, 342, 341,
- 400, 342, 341, 401, 342, 341, 402, 342,
- 341, 403, 342, 341, 404, 342, 341, 405,
- 342, 341, 406, 342, 341, 407, 342, 341,
- 408, 342, 341, 409, 342, 341, 410, 342,
- 341, 411, 342, 341, 412, 342, 341, 413,
- 342, 341, 383, 342, 341, 415, 342, 341,
- 416, 342, 341, 417, 342, 341, 418, 342,
- 341, 419, 342, 341, 420, 342, 341, 421,
- 342, 341, 422, 342, 341, 423, 342, 341,
- 424, 342, 341, 425, 342, 341, 426, 342,
- 341, 427, 342, 341, 428, 342, 341, 429,
- 342, 341, 430, 342, 341, 431, 342, 341,
- 432, 342, 341, 433, 342, 341, 434, 342,
- 341, 435, 342, 341, 436, 342, 341, 437,
- 342, 341, 438, 342, 341, 439, 342, 341,
- 383, 342, 341, 342, 441, 341, 342, 442,
- 341, 342, 443, 341, 342, 444, 341, 342,
- 445, 341, 342, 446, 341, 342, 447, 341,
- 342, 448, 341, 342, 449, 341, 342, 450,
- 341, 342, 451, 341, 342, 452, 341, 342,
- 453, 341, 342, 16, 341, 455, 0, 456,
- 0, 457, 0, 458, 0, 459, 0, 460,
- 0, 461, 0, 462, 0, 463, 0, 464,
- 0, 465, 0, 466, 0, 467, 0, 468,
- 0, 469, 0, 470, 0, 471, 0, 472,
- 0, 473, 0, 474, 0, 475, 0, 476,
- 0, 477, 0, 478, 0, 479, 0, 480,
- 0, 481, 0, 483, 482, 483, 482, 484,
- 483, 483, 16, 570, 16, 483, 482, 485,
- 514, 530, 544, 483, 482, 486, 483, 482,
- 487, 483, 482, 488, 483, 482, 489, 506,
- 483, 482, 490, 483, 482, 491, 483, 482,
- 492, 483, 482, 493, 483, 482, 494, 483,
- 482, 495, 483, 482, 496, 483, 482, 497,
- 483, 482, 498, 483, 482, 499, 483, 482,
- 500, 483, 482, 501, 483, 482, 502, 483,
- 482, 503, 483, 482, 504, 483, 482, 505,
- 483, 482, 483, 96, 482, 507, 483, 482,
- 508, 483, 482, 509, 483, 482, 510, 483,
- 482, 511, 483, 482, 512, 483, 482, 513,
- 483, 482, 505, 483, 482, 515, 483, 482,
- 516, 483, 482, 517, 483, 482, 518, 483,
- 482, 519, 483, 482, 520, 483, 482, 521,
- 483, 482, 522, 483, 482, 483, 523, 482,
- 524, 483, 482, 525, 483, 482, 526, 483,
- 482, 527, 483, 482, 483, 528, 482, 529,
- 483, 482, 530, 483, 482, 531, 483, 482,
- 532, 483, 482, 533, 483, 482, 534, 483,
- 482, 535, 483, 482, 536, 483, 482, 537,
- 483, 482, 538, 483, 482, 539, 483, 482,
- 540, 483, 482, 541, 483, 482, 542, 483,
- 482, 543, 483, 482, 505, 483, 482, 545,
- 483, 482, 546, 483, 482, 547, 483, 482,
- 548, 483, 482, 549, 483, 482, 550, 483,
- 482, 551, 483, 482, 552, 483, 482, 553,
- 483, 482, 554, 483, 482, 555, 483, 482,
- 556, 483, 482, 557, 483, 482, 558, 483,
- 482, 559, 483, 482, 560, 483, 482, 561,
- 483, 482, 562, 483, 482, 563, 483, 482,
- 564, 483, 482, 565, 483, 482, 566, 483,
- 482, 567, 483, 482, 568, 483, 482, 569,
- 483, 482, 505, 483, 482, 483, 571, 482,
- 483, 572, 482, 483, 573, 482, 483, 574,
- 482, 483, 575, 482, 483, 576, 482, 483,
- 577, 482, 483, 578, 482, 483, 579, 482,
- 483, 580, 482, 483, 581, 482, 483, 582,
- 482, 483, 583, 482, 483, 16, 482, 585,
- 0, 16, 0, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 29, 0, 54, 0, 5, 1, 0, 29,
- 1, 35, 0, 43, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 149, 126, 57, 110,
- 23, 0, 29, 54, 0, 5, 1, 0,
- 29, 1, 35, 0, 43, 0, 43, 0,
- 43, 139, 48, 9, 106, 11, 0, 134,
- 45, 45, 45, 3, 122, 33, 33, 33,
- 0, 122, 33, 33, 33, 0, 122, 33,
- 0, 33, 0, 102, 7, 7, 43, 54,
- 0, 0, 43, 114, 25, 0, 54, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 43, 43, 43, 43,
- 0, 27, 118, 27, 27, 51, 27, 0,
- 54, 0, 1, 0, 43, 0, 0, 0,
- 43, 54, 37, 37, 87, 37, 37, 43,
- 0, 39, 0, 43, 0, 0, 54, 0,
- 0, 39, 0, 0, 96, 54, 0, 93,
- 90, 41, 96, 90, 99, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 84, 54,
- 0, 72, 33, 84, 72, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 15, 0, 63, 130, 31, 60, 57, 31,
- 63, 57, 66, 31, 43, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 15, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 15, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 84, 54, 0, 81, 81, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 21, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 84, 54, 0,
- 78, 33, 84, 78, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 19, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 19, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 19, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 84,
- 54, 0, 75, 33, 84, 75, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 17, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 17, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 17, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 84,
- 54, 0, 69, 33, 69, 0, 0, 0,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 13, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 0,
- 43, 0, 43, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 586;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 1259 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
-
- #line 1266 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1556 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1619 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bg.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_bg()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Bg", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/bg.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/bg.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 12, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 34,
- 36, 47, 48, 49, 51, 53, 58, 63,
- 68, 73, 77, 81, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, 103, 110, 115, 119,
- 125, 128, 130, 136, 147, 148, 149, 150,
- 151, 152, 153, 154, 155, 156, 157, 158,
- 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 188, 197, 199, 201,
- 203, 205, 207, 209, 211, 213, 215, 217,
- 219, 230, 232, 234, 236, 238, 240, 242,
- 244, 246, 248, 250, 252, 254, 256, 258,
- 260, 262, 264, 266, 268, 270, 272, 274,
- 276, 278, 280, 282, 284, 286, 288, 290,
- 292, 294, 296, 298, 300, 302, 304, 306,
- 308, 310, 312, 314, 316, 318, 320, 322,
- 324, 326, 328, 330, 332, 334, 336, 338,
- 340, 342, 344, 346, 348, 350, 352, 354,
- 356, 358, 360, 362, 364, 366, 368, 370,
- 372, 374, 376, 378, 380, 382, 384, 386,
- 388, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 406, 408, 410, 412,
- 414, 416, 418, 420, 422, 424, 426, 428,
- 430, 432, 434, 436, 438, 440, 442, 444,
- 446, 448, 450, 452, 454, 456, 458, 460,
- 462, 463, 464, 465, 466, 467, 468, 469,
- 470, 471, 472, 473, 474, 475, 476, 477,
- 478, 479, 480, 481, 482, 483, 484, 485,
- 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 504, 512, 514, 516, 518, 520,
- 522, 524, 526, 528, 530, 532, 534, 536,
- 538, 540, 542, 544, 546, 548, 550, 552,
- 554, 556, 558, 560, 562, 564, 566, 568,
- 570, 572, 574, 576, 578, 580, 582, 584,
- 586, 588, 590, 592, 594, 596, 598, 600,
- 602, 604, 606, 608, 610, 612, 614, 616,
- 618, 620, 622, 624, 626, 628, 630, 632,
- 634, 636, 638, 640, 642, 644, 646, 648,
- 650, 652, 654, 656, 658, 660, 661, 662,
- 663, 664, 665, 666, 667, 668, 669, 670,
- 671, 672, 673, 674, 675, 676, 677, 686,
- 696, 698, 700, 702, 704, 706, 708, 710,
- 712, 714, 716, 718, 720, 722, 724, 726,
- 728, 730, 732, 734, 736, 738, 740, 742,
- 744, 746, 748, 750, 752, 754, 756, 758,
- 760, 762, 764, 766, 768, 770, 772, 774,
- 776, 778, 780, 782, 784, 786, 788, 790,
- 792, 794, 796, 798, 800, 802, 804, 806,
- 808, 810, 812, 814, 816, 818, 820, 822,
- 824, 826, 828, 830, 832, 834, 836, 838,
- 840, 842, 844, 846, 848, 850, 852, 854,
- 856, 858, 860, 862, 864, 866, 868, 870,
- 872, 874, 876, 878, 880, 882, 884, 886,
- 888, 890, 892, 894, 896, 898, 900, 902,
- 904, 906, 908, 910, 912, 914, 916, 917,
- 918, 919, 920, 921, 922, 923, 924, 925,
- 926, 927, 928, 929, 930, 931, 932, 933,
- 934, 935, 936, 937, 938, 939, 940, 941,
- 942, 943, 944, 945, 953, 958, 960, 962,
- 964, 967, 969, 971, 973, 975, 977, 979,
- 981, 983, 985, 987, 989, 991, 993, 995,
- 997, 999, 1001, 1003, 1005, 1007, 1009, 1011,
- 1013, 1015, 1017, 1019, 1021, 1023, 1025, 1027,
- 1029, 1031, 1033, 1035, 1037, 1039, 1041, 1043,
- 1045, 1047, 1049, 1051, 1053, 1055, 1057, 1059,
- 1061, 1063, 1065, 1067, 1069, 1071, 1073, 1075,
- 1077, 1079, 1081, 1083, 1085, 1087, 1089, 1091,
- 1093, 1095, 1097, 1099, 1101, 1103, 1105, 1107,
- 1109, 1111, 1113, 1115, 1117, 1119, 1121, 1123,
- 1125, 1127, 1129, 1131, 1133, 1135, 1137, 1139,
- 1141, 1143, 1145, 1147, 1149, 1151, 1153, 1155,
- 1157, 1158, 1159
-};
-
-static const char _lexer_trans_keys[] = {
- -48, -17, 10, 32, 34, 35, 37, 42,
- 64, 124, 9, 13, -108, -104, -102, -99,
- -97, -96, -95, -94, -92, -48, -80, -48,
- -76, -48, -75, -48, -67, -48, -66, 32,
- 10, 13, 10, 13, -48, 10, 32, 34,
- 35, 37, 42, 64, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 13, 32, 64, 9, 10, 9,
- 10, 13, 32, 64, 11, 12, 10, 32,
- 64, 9, 13, 32, 124, 9, 13, 10,
- 32, 92, 124, 9, 13, 10, 92, 124,
- 10, 92, 10, 32, 92, 124, 9, 13,
- -48, 10, 32, 34, 35, 37, 42, 64,
- 124, 9, 13, -48, -66, -48, -77, -48,
- -80, -47, -126, -47, -128, -48, -75, -72,
- -48, -76, -48, -72, -47, -127, -47, -126,
- -48, -66, -47, -128, -48, -72, -47, -113,
- 58, 10, 10, -48, 10, 32, 35, 37,
- 42, 64, 9, 13, -108, -104, -102, -99,
- -96, -95, -94, -92, 10, -48, 10, -80,
- 10, -48, 10, -76, 10, -48, 10, -75,
- 10, -48, 10, -67, 10, -48, 10, -66,
- 10, 10, 32, -48, 10, 32, 34, 35,
- 37, 42, 64, 124, 9, 13, -48, 10,
- -66, 10, -48, 10, -77, 10, -48, 10,
- -80, 10, -47, 10, -126, 10, -48, 10,
- -80, 10, -48, 10, -68, 10, -48, 10,
- -70, 10, -48, 10, -80, 10, 10, 32,
- -48, 10, -67, 10, -48, 10, -80, 10,
- 10, 32, -47, 10, -127, 10, -47, 10,
- -122, 10, -48, 10, -75, 10, -48, 10,
- -67, 10, -48, 10, -80, 10, -47, 10,
- -128, 10, -48, 10, -72, 10, -48, 10,
- -71, 10, 10, 58, -47, 10, -125, 10,
- -48, 10, -67, 10, -48, 10, -70, 10,
- -47, 10, -122, 10, -48, 10, -72, 10,
- -48, 10, -66, 10, -48, 10, -67, 10,
- -48, 10, -80, 10, -48, 10, -69, 10,
- -48, 10, -67, 10, -48, 10, -66, 10,
- -47, 10, -127, 10, -47, 10, -126, 10,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, -48, -68, -48, -75,
- -47, -128, -48, -72, 58, 10, 10, -48,
- 10, 32, 35, 124, 9, 13, -92, 10,
- -47, 10, -125, 10, -48, 10, -67, 10,
- -48, 10, -70, 10, -47, 10, -122, 10,
- -48, 10, -72, 10, -48, 10, -66, 10,
- -48, 10, -67, 10, -48, 10, -80, 10,
- -48, 10, -69, 10, -48, 10, -67, 10,
- -48, 10, -66, 10, -47, 10, -127, 10,
- -47, 10, -126, 10, 10, 58, -48, -80,
- -48, -68, -48, -70, -48, -80, 32, -48,
- -67, -48, -80, 32, -47, -127, -47, -122,
- -48, -75, -48, -67, -48, -80, -47, -128,
- -48, -72, -48, -71, 58, 10, 10, -48,
- 10, 32, 35, 37, 42, 64, 9, 13,
- -108, -104, -102, -99, -95, -94, -92, 10,
- -48, 10, -80, 10, -48, 10, -76, 10,
- -48, 10, -75, 10, -48, 10, -67, 10,
- -48, 10, -66, 10, 10, 32, -48, 10,
- -66, 10, -48, 10, -77, 10, -48, 10,
- -80, 10, -47, 10, -126, 10, -47, 10,
- -122, 10, -48, 10, -75, 10, -48, 10,
- -67, 10, -48, 10, -80, 10, -47, 10,
- -128, 10, -48, 10, -72, 10, -48, 10,
- -71, 10, 10, 58, -47, 10, -125, 10,
- -48, 10, -67, 10, -48, 10, -70, 10,
- -47, 10, -122, 10, -48, 10, -72, 10,
- -48, 10, -66, 10, -48, 10, -67, 10,
- -48, 10, -80, 10, -48, 10, -69, 10,
- -48, 10, -67, 10, -48, 10, -66, 10,
- -47, 10, -127, 10, -47, 10, -126, 10,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, -47, -122, -48, -75,
- -48, -67, -48, -80, -47, -128, -48, -72,
- -48, -71, 58, 10, 10, -48, 10, 32,
- 35, 37, 42, 64, 9, 13, -108, -104,
- -102, -99, -97, -96, -95, -94, -92, 10,
- -48, 10, -80, 10, -48, 10, -76, 10,
- -48, 10, -75, 10, -48, 10, -67, 10,
- -48, 10, -66, 10, 10, 32, -48, 10,
- -66, 10, -48, 10, -77, 10, -48, 10,
- -80, 10, -47, 10, -126, 10, -47, 10,
- -128, 10, -48, 10, -75, 10, -48, 10,
- -76, 10, -48, 10, -72, 10, -47, 10,
- -127, 10, -47, 10, -126, 10, -48, 10,
- -66, 10, -47, 10, -128, 10, -48, 10,
- -72, 10, -47, 10, -113, 10, 10, 58,
- -48, 10, -80, 10, -48, 10, -68, 10,
- -48, 10, -70, 10, -48, 10, -80, 10,
- 10, 32, -48, 10, -67, 10, -48, 10,
- -80, 10, 10, 32, -47, 10, -127, 10,
- -47, 10, -122, 10, -48, 10, -75, 10,
- -48, 10, -67, 10, -48, 10, -80, 10,
- -47, 10, -128, 10, -48, 10, -72, 10,
- -48, 10, -71, 10, -47, 10, -125, 10,
- -48, 10, -67, 10, -48, 10, -70, 10,
- -47, 10, -122, 10, -48, 10, -72, 10,
- -48, 10, -66, 10, -48, 10, -67, 10,
- -48, 10, -80, 10, -48, 10, -69, 10,
- -48, 10, -67, 10, -48, 10, -66, 10,
- -47, 10, -127, 10, -47, 10, -126, 10,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, -47, -125, -48, -67,
- -48, -70, -47, -122, -48, -72, -48, -66,
- -48, -67, -48, -80, -48, -69, -48, -67,
- -48, -66, -47, -127, -47, -126, 58, 10,
- 10, -48, 10, 32, 35, 37, 64, 9,
- 13, -97, -96, -95, -92, 10, -47, 10,
- -128, 10, -48, 10, -75, -72, 10, -48,
- 10, -76, 10, -48, 10, -72, 10, -47,
- 10, -127, 10, -47, 10, -126, 10, -48,
- 10, -66, 10, -47, 10, -128, 10, -48,
- 10, -72, 10, -47, 10, -113, 10, 10,
- 58, -48, 10, -68, 10, -48, 10, -75,
- 10, -47, 10, -128, 10, -48, 10, -72,
- 10, -48, 10, -80, 10, -48, 10, -68,
- 10, -48, 10, -70, 10, -48, 10, -80,
- 10, 10, 32, -48, 10, -67, 10, -48,
- 10, -80, 10, 10, 32, -47, 10, -127,
- 10, -47, 10, -122, 10, -48, 10, -75,
- 10, -48, 10, -67, 10, -48, 10, -80,
- 10, -47, 10, -128, 10, -48, 10, -72,
- 10, -48, 10, -71, 10, -47, 10, -125,
- 10, -48, 10, -67, 10, -48, 10, -70,
- 10, -47, 10, -122, 10, -48, 10, -72,
- 10, -48, 10, -66, 10, -48, 10, -67,
- 10, -48, 10, -80, 10, -48, 10, -69,
- 10, -48, 10, -67, 10, -48, 10, -66,
- 10, -47, 10, -127, 10, -47, 10, -126,
- 10, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, -69, -65, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 10, 9, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 2,
- 9, 1, 1, 2, 2, 3, 3, 3,
- 3, 2, 2, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 3, 5, 3, 2, 4,
- 3, 2, 4, 9, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 7, 9, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 9, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 5, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 7, 8, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 7, 10,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 6, 5, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 1, 1, 1,
- 1, 1, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 1, 1, 1, 1,
- 0, 0, 1, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 12, 22, 24, 26, 28, 30,
- 32, 34, 36, 38, 40, 42, 44, 47,
- 50, 61, 63, 65, 68, 71, 76, 81,
- 86, 91, 95, 99, 102, 104, 106, 108,
- 110, 112, 114, 116, 118, 120, 122, 124,
- 126, 128, 130, 132, 137, 144, 149, 153,
- 159, 163, 166, 172, 183, 185, 187, 189,
- 191, 193, 195, 197, 199, 201, 203, 205,
- 208, 210, 212, 214, 216, 218, 220, 222,
- 224, 226, 228, 230, 232, 234, 236, 238,
- 240, 242, 244, 246, 255, 265, 268, 271,
- 274, 277, 280, 283, 286, 289, 292, 295,
- 298, 309, 312, 315, 318, 321, 324, 327,
- 330, 333, 336, 339, 342, 345, 348, 351,
- 354, 357, 360, 363, 366, 369, 372, 375,
- 378, 381, 384, 387, 390, 393, 396, 399,
- 402, 405, 408, 411, 414, 417, 420, 423,
- 426, 429, 432, 435, 438, 441, 444, 447,
- 450, 453, 456, 459, 462, 465, 468, 471,
- 474, 477, 480, 483, 486, 489, 492, 495,
- 498, 501, 504, 507, 510, 513, 516, 519,
- 522, 525, 528, 531, 534, 537, 540, 543,
- 546, 548, 550, 552, 554, 556, 558, 560,
- 562, 564, 566, 568, 575, 578, 581, 584,
- 587, 590, 593, 596, 599, 602, 605, 608,
- 611, 614, 617, 620, 623, 626, 629, 632,
- 635, 638, 641, 644, 647, 650, 653, 656,
- 659, 661, 663, 665, 667, 669, 671, 673,
- 675, 677, 679, 681, 683, 685, 687, 689,
- 691, 693, 695, 697, 699, 701, 703, 705,
- 707, 709, 711, 713, 715, 717, 719, 721,
- 723, 725, 734, 743, 746, 749, 752, 755,
- 758, 761, 764, 767, 770, 773, 776, 779,
- 782, 785, 788, 791, 794, 797, 800, 803,
- 806, 809, 812, 815, 818, 821, 824, 827,
- 830, 833, 836, 839, 842, 845, 848, 851,
- 854, 857, 860, 863, 866, 869, 872, 875,
- 878, 881, 884, 887, 890, 893, 896, 899,
- 902, 905, 908, 911, 914, 917, 920, 923,
- 926, 929, 932, 935, 938, 941, 944, 947,
- 950, 953, 956, 959, 962, 965, 967, 969,
- 971, 973, 975, 977, 979, 981, 983, 985,
- 987, 989, 991, 993, 995, 997, 999, 1008,
- 1019, 1022, 1025, 1028, 1031, 1034, 1037, 1040,
- 1043, 1046, 1049, 1052, 1055, 1058, 1061, 1064,
- 1067, 1070, 1073, 1076, 1079, 1082, 1085, 1088,
- 1091, 1094, 1097, 1100, 1103, 1106, 1109, 1112,
- 1115, 1118, 1121, 1124, 1127, 1130, 1133, 1136,
- 1139, 1142, 1145, 1148, 1151, 1154, 1157, 1160,
- 1163, 1166, 1169, 1172, 1175, 1178, 1181, 1184,
- 1187, 1190, 1193, 1196, 1199, 1202, 1205, 1208,
- 1211, 1214, 1217, 1220, 1223, 1226, 1229, 1232,
- 1235, 1238, 1241, 1244, 1247, 1250, 1253, 1256,
- 1259, 1262, 1265, 1268, 1271, 1274, 1277, 1280,
- 1283, 1286, 1289, 1292, 1295, 1298, 1301, 1304,
- 1307, 1310, 1313, 1316, 1319, 1322, 1325, 1328,
- 1331, 1334, 1337, 1340, 1343, 1346, 1349, 1351,
- 1353, 1355, 1357, 1359, 1361, 1363, 1365, 1367,
- 1369, 1371, 1373, 1375, 1377, 1379, 1381, 1383,
- 1385, 1387, 1389, 1391, 1393, 1395, 1397, 1399,
- 1401, 1403, 1405, 1407, 1415, 1421, 1424, 1427,
- 1430, 1434, 1437, 1440, 1443, 1446, 1449, 1452,
- 1455, 1458, 1461, 1464, 1467, 1470, 1473, 1476,
- 1479, 1482, 1485, 1488, 1491, 1494, 1497, 1500,
- 1503, 1506, 1509, 1512, 1515, 1518, 1521, 1524,
- 1527, 1530, 1533, 1536, 1539, 1542, 1545, 1548,
- 1551, 1554, 1557, 1560, 1563, 1566, 1569, 1572,
- 1575, 1578, 1581, 1584, 1587, 1590, 1593, 1596,
- 1599, 1602, 1605, 1608, 1611, 1614, 1617, 1620,
- 1623, 1626, 1629, 1632, 1635, 1638, 1641, 1644,
- 1647, 1650, 1653, 1656, 1659, 1662, 1665, 1668,
- 1671, 1674, 1677, 1680, 1683, 1686, 1689, 1692,
- 1695, 1698, 1701, 1704, 1707, 1710, 1713, 1716,
- 1719, 1721, 1723
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 584, 16, 16, 17, 27, 29, 13,
- 43, 46, 16, 0, 3, 13, 52, 11,
- 60, 216, 325, 11, 454, 0, 4, 0,
- 5, 0, 6, 0, 7, 0, 8, 0,
- 9, 0, 10, 0, 11, 0, 12, 0,
- 13, 0, 14, 0, 16, 28, 15, 16,
- 28, 15, 2, 16, 16, 17, 27, 29,
- 13, 43, 46, 16, 0, 18, 0, 19,
- 0, 21, 20, 20, 21, 20, 20, 22,
- 22, 23, 22, 22, 22, 22, 23, 22,
- 22, 22, 22, 24, 22, 22, 22, 22,
- 25, 22, 22, 16, 26, 26, 0, 16,
- 26, 26, 0, 16, 28, 27, 16, 0,
- 30, 0, 31, 0, 32, 0, 33, 0,
- 34, 0, 35, 0, 36, 0, 37, 0,
- 38, 0, 39, 0, 40, 0, 41, 0,
- 42, 0, 586, 0, 0, 0, 0, 0,
- 44, 45, 16, 45, 45, 43, 44, 44,
- 16, 45, 43, 45, 0, 46, 47, 46,
- 0, 51, 50, 49, 47, 50, 48, 0,
- 49, 47, 48, 0, 49, 48, 51, 50,
- 49, 47, 50, 48, 2, 51, 51, 17,
- 27, 29, 13, 43, 46, 51, 0, 53,
- 0, 54, 0, 55, 0, 56, 0, 57,
- 0, 58, 0, 59, 0, 11, 0, 61,
- 0, 62, 0, 63, 0, 64, 176, 0,
- 65, 0, 66, 0, 67, 0, 68, 0,
- 69, 0, 70, 0, 71, 0, 72, 0,
- 73, 0, 74, 0, 75, 0, 76, 0,
- 77, 0, 78, 0, 79, 0, 80, 0,
- 81, 0, 83, 82, 83, 82, 84, 83,
- 83, 16, 162, 95, 16, 83, 82, 85,
- 95, 97, 93, 105, 121, 93, 136, 83,
- 82, 86, 83, 82, 87, 83, 82, 88,
- 83, 82, 89, 83, 82, 90, 83, 82,
- 91, 83, 82, 92, 83, 82, 93, 83,
- 82, 94, 83, 82, 95, 83, 82, 83,
- 96, 82, 2, 16, 16, 17, 27, 29,
- 13, 43, 46, 16, 0, 98, 83, 82,
- 99, 83, 82, 100, 83, 82, 101, 83,
- 82, 102, 83, 82, 103, 83, 82, 104,
- 83, 82, 93, 83, 82, 106, 83, 82,
- 107, 83, 82, 108, 83, 82, 109, 83,
- 82, 110, 83, 82, 111, 83, 82, 112,
- 83, 82, 113, 83, 82, 83, 114, 82,
- 115, 83, 82, 116, 83, 82, 117, 83,
- 82, 118, 83, 82, 83, 119, 82, 120,
- 83, 82, 121, 83, 82, 122, 83, 82,
- 123, 83, 82, 124, 83, 82, 125, 83,
- 82, 126, 83, 82, 127, 83, 82, 128,
- 83, 82, 129, 83, 82, 130, 83, 82,
- 131, 83, 82, 132, 83, 82, 133, 83,
- 82, 134, 83, 82, 135, 83, 82, 83,
- 96, 82, 137, 83, 82, 138, 83, 82,
- 139, 83, 82, 140, 83, 82, 141, 83,
- 82, 142, 83, 82, 143, 83, 82, 144,
- 83, 82, 145, 83, 82, 146, 83, 82,
- 147, 83, 82, 148, 83, 82, 149, 83,
- 82, 150, 83, 82, 151, 83, 82, 152,
- 83, 82, 153, 83, 82, 154, 83, 82,
- 155, 83, 82, 156, 83, 82, 157, 83,
- 82, 158, 83, 82, 159, 83, 82, 160,
- 83, 82, 161, 83, 82, 135, 83, 82,
- 83, 163, 82, 83, 164, 82, 83, 165,
- 82, 83, 166, 82, 83, 167, 82, 83,
- 168, 82, 83, 169, 82, 83, 170, 82,
- 83, 171, 82, 83, 172, 82, 83, 173,
- 82, 83, 174, 82, 83, 175, 82, 83,
- 16, 82, 177, 0, 178, 0, 179, 0,
- 180, 0, 181, 0, 182, 0, 183, 0,
- 184, 0, 185, 0, 187, 186, 187, 186,
- 188, 187, 187, 16, 16, 187, 186, 189,
- 187, 186, 190, 187, 186, 191, 187, 186,
- 192, 187, 186, 193, 187, 186, 194, 187,
- 186, 195, 187, 186, 196, 187, 186, 197,
- 187, 186, 198, 187, 186, 199, 187, 186,
- 200, 187, 186, 201, 187, 186, 202, 187,
- 186, 203, 187, 186, 204, 187, 186, 205,
- 187, 186, 206, 187, 186, 207, 187, 186,
- 208, 187, 186, 209, 187, 186, 210, 187,
- 186, 211, 187, 186, 212, 187, 186, 213,
- 187, 186, 214, 187, 186, 215, 187, 186,
- 187, 96, 186, 217, 0, 218, 0, 219,
- 0, 220, 0, 221, 0, 222, 0, 223,
- 0, 224, 0, 225, 0, 226, 0, 227,
- 0, 228, 0, 229, 0, 230, 0, 231,
- 0, 232, 0, 233, 0, 234, 0, 235,
- 0, 236, 0, 237, 0, 238, 0, 239,
- 0, 240, 0, 241, 0, 242, 0, 243,
- 0, 244, 0, 245, 0, 246, 0, 247,
- 0, 249, 248, 249, 248, 250, 249, 249,
- 16, 311, 261, 16, 249, 248, 251, 261,
- 262, 259, 270, 259, 285, 249, 248, 252,
- 249, 248, 253, 249, 248, 254, 249, 248,
- 255, 249, 248, 256, 249, 248, 257, 249,
- 248, 258, 249, 248, 259, 249, 248, 260,
- 249, 248, 261, 249, 248, 249, 96, 248,
- 263, 249, 248, 264, 249, 248, 265, 249,
- 248, 266, 249, 248, 267, 249, 248, 268,
- 249, 248, 269, 249, 248, 259, 249, 248,
- 271, 249, 248, 272, 249, 248, 273, 249,
- 248, 274, 249, 248, 275, 249, 248, 276,
- 249, 248, 277, 249, 248, 278, 249, 248,
- 279, 249, 248, 280, 249, 248, 281, 249,
- 248, 282, 249, 248, 283, 249, 248, 284,
- 249, 248, 249, 96, 248, 286, 249, 248,
- 287, 249, 248, 288, 249, 248, 289, 249,
- 248, 290, 249, 248, 291, 249, 248, 292,
- 249, 248, 293, 249, 248, 294, 249, 248,
- 295, 249, 248, 296, 249, 248, 297, 249,
- 248, 298, 249, 248, 299, 249, 248, 300,
- 249, 248, 301, 249, 248, 302, 249, 248,
- 303, 249, 248, 304, 249, 248, 305, 249,
- 248, 306, 249, 248, 307, 249, 248, 308,
- 249, 248, 309, 249, 248, 310, 249, 248,
- 284, 249, 248, 249, 312, 248, 249, 313,
- 248, 249, 314, 248, 249, 315, 248, 249,
- 316, 248, 249, 317, 248, 249, 318, 248,
- 249, 319, 248, 249, 320, 248, 249, 321,
- 248, 249, 322, 248, 249, 323, 248, 249,
- 324, 248, 249, 16, 248, 326, 0, 327,
- 0, 328, 0, 329, 0, 330, 0, 331,
- 0, 332, 0, 333, 0, 334, 0, 335,
- 0, 336, 0, 337, 0, 338, 0, 339,
- 0, 340, 0, 342, 341, 342, 341, 343,
- 342, 342, 16, 440, 354, 16, 342, 341,
- 344, 354, 355, 352, 363, 384, 400, 352,
- 414, 342, 341, 345, 342, 341, 346, 342,
- 341, 347, 342, 341, 348, 342, 341, 349,
- 342, 341, 350, 342, 341, 351, 342, 341,
- 352, 342, 341, 353, 342, 341, 354, 342,
- 341, 342, 96, 341, 356, 342, 341, 357,
- 342, 341, 358, 342, 341, 359, 342, 341,
- 360, 342, 341, 361, 342, 341, 362, 342,
- 341, 352, 342, 341, 364, 342, 341, 365,
- 342, 341, 366, 342, 341, 367, 342, 341,
- 368, 342, 341, 369, 342, 341, 370, 342,
- 341, 371, 342, 341, 372, 342, 341, 373,
- 342, 341, 374, 342, 341, 375, 342, 341,
- 376, 342, 341, 377, 342, 341, 378, 342,
- 341, 379, 342, 341, 380, 342, 341, 381,
- 342, 341, 382, 342, 341, 383, 342, 341,
- 342, 96, 341, 385, 342, 341, 386, 342,
- 341, 387, 342, 341, 388, 342, 341, 389,
- 342, 341, 390, 342, 341, 391, 342, 341,
- 392, 342, 341, 342, 393, 341, 394, 342,
- 341, 395, 342, 341, 396, 342, 341, 397,
- 342, 341, 342, 398, 341, 399, 342, 341,
- 400, 342, 341, 401, 342, 341, 402, 342,
- 341, 403, 342, 341, 404, 342, 341, 405,
- 342, 341, 406, 342, 341, 407, 342, 341,
- 408, 342, 341, 409, 342, 341, 410, 342,
- 341, 411, 342, 341, 412, 342, 341, 413,
- 342, 341, 383, 342, 341, 415, 342, 341,
- 416, 342, 341, 417, 342, 341, 418, 342,
- 341, 419, 342, 341, 420, 342, 341, 421,
- 342, 341, 422, 342, 341, 423, 342, 341,
- 424, 342, 341, 425, 342, 341, 426, 342,
- 341, 427, 342, 341, 428, 342, 341, 429,
- 342, 341, 430, 342, 341, 431, 342, 341,
- 432, 342, 341, 433, 342, 341, 434, 342,
- 341, 435, 342, 341, 436, 342, 341, 437,
- 342, 341, 438, 342, 341, 439, 342, 341,
- 383, 342, 341, 342, 441, 341, 342, 442,
- 341, 342, 443, 341, 342, 444, 341, 342,
- 445, 341, 342, 446, 341, 342, 447, 341,
- 342, 448, 341, 342, 449, 341, 342, 450,
- 341, 342, 451, 341, 342, 452, 341, 342,
- 453, 341, 342, 16, 341, 455, 0, 456,
- 0, 457, 0, 458, 0, 459, 0, 460,
- 0, 461, 0, 462, 0, 463, 0, 464,
- 0, 465, 0, 466, 0, 467, 0, 468,
- 0, 469, 0, 470, 0, 471, 0, 472,
- 0, 473, 0, 474, 0, 475, 0, 476,
- 0, 477, 0, 478, 0, 479, 0, 480,
- 0, 481, 0, 483, 482, 483, 482, 484,
- 483, 483, 16, 570, 16, 483, 482, 485,
- 514, 530, 544, 483, 482, 486, 483, 482,
- 487, 483, 482, 488, 483, 482, 489, 506,
- 483, 482, 490, 483, 482, 491, 483, 482,
- 492, 483, 482, 493, 483, 482, 494, 483,
- 482, 495, 483, 482, 496, 483, 482, 497,
- 483, 482, 498, 483, 482, 499, 483, 482,
- 500, 483, 482, 501, 483, 482, 502, 483,
- 482, 503, 483, 482, 504, 483, 482, 505,
- 483, 482, 483, 96, 482, 507, 483, 482,
- 508, 483, 482, 509, 483, 482, 510, 483,
- 482, 511, 483, 482, 512, 483, 482, 513,
- 483, 482, 505, 483, 482, 515, 483, 482,
- 516, 483, 482, 517, 483, 482, 518, 483,
- 482, 519, 483, 482, 520, 483, 482, 521,
- 483, 482, 522, 483, 482, 483, 523, 482,
- 524, 483, 482, 525, 483, 482, 526, 483,
- 482, 527, 483, 482, 483, 528, 482, 529,
- 483, 482, 530, 483, 482, 531, 483, 482,
- 532, 483, 482, 533, 483, 482, 534, 483,
- 482, 535, 483, 482, 536, 483, 482, 537,
- 483, 482, 538, 483, 482, 539, 483, 482,
- 540, 483, 482, 541, 483, 482, 542, 483,
- 482, 543, 483, 482, 505, 483, 482, 545,
- 483, 482, 546, 483, 482, 547, 483, 482,
- 548, 483, 482, 549, 483, 482, 550, 483,
- 482, 551, 483, 482, 552, 483, 482, 553,
- 483, 482, 554, 483, 482, 555, 483, 482,
- 556, 483, 482, 557, 483, 482, 558, 483,
- 482, 559, 483, 482, 560, 483, 482, 561,
- 483, 482, 562, 483, 482, 563, 483, 482,
- 564, 483, 482, 565, 483, 482, 566, 483,
- 482, 567, 483, 482, 568, 483, 482, 569,
- 483, 482, 505, 483, 482, 483, 571, 482,
- 483, 572, 482, 483, 573, 482, 483, 574,
- 482, 483, 575, 482, 483, 576, 482, 483,
- 577, 482, 483, 578, 482, 483, 579, 482,
- 483, 580, 482, 483, 581, 482, 483, 582,
- 482, 483, 583, 482, 483, 16, 482, 585,
- 0, 16, 0, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 29, 0, 54, 0, 5, 1, 0, 29,
- 1, 35, 0, 43, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 149, 126, 57, 110,
- 23, 0, 29, 54, 0, 5, 1, 0,
- 29, 1, 35, 0, 43, 0, 43, 0,
- 43, 139, 48, 9, 106, 11, 0, 134,
- 45, 45, 45, 3, 122, 33, 33, 33,
- 0, 122, 33, 33, 33, 0, 122, 33,
- 0, 33, 0, 102, 7, 7, 43, 54,
- 0, 0, 43, 114, 25, 0, 54, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 43, 43, 43, 43,
- 0, 27, 118, 27, 27, 51, 27, 0,
- 54, 0, 1, 0, 43, 0, 0, 0,
- 43, 54, 37, 37, 87, 37, 37, 43,
- 0, 39, 0, 43, 0, 0, 54, 0,
- 0, 39, 0, 0, 96, 54, 0, 93,
- 90, 41, 96, 90, 99, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 84, 54,
- 0, 72, 33, 84, 72, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 15, 0, 63, 130, 31, 60, 57, 31,
- 63, 57, 66, 31, 43, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 15, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 15, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 84, 54, 0, 81, 81, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 21, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 84, 54, 0,
- 78, 33, 84, 78, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 19, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 19, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 19, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 84,
- 54, 0, 75, 33, 84, 75, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 17, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 17, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 17, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 84,
- 54, 0, 69, 33, 69, 0, 0, 0,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 13, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 0,
- 43, 0, 43, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 586;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/bg.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 1259 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/bg.c.rl"
-
-#line 1266 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/bg.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/bg.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/bg.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/bg.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/bg.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/bg.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/bg.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/bg.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/bg.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/bg.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/bg.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/bg.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/bg.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/bg.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/bg.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/bg.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/bg.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/bg.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/bg.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/bg.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/bg.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/bg.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/bg.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/bg.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1556 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/bg.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1619 "ext/gherkin_lexer_bg/gherkin_lexer_bg.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/bg.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_bg()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Bg", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_bm/extconf.rb
index 886fec7,886fec7..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_bm/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_bm")
--have_library("c", "main")
--create_makefile("gherkin_lexer_bm")
diff --cc ext/gherkin_lexer_bm/gherkin_lexer_bm.c
index 230ef00,4027548..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_bm/gherkin_lexer_bm.c
+++ /dev/null
@@@ -1,1337 -1,1516 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_bm/gherkin_lexer_bm.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 21, 22, 23, 43, 44, 45,
- 47, 49, 54, 59, 64, 69, 73, 77,
- 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 97, 99, 104, 111, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 140,
- 142, 144, 146, 148, 150, 152, 172, 173,
- 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 194, 196, 198, 200, 202, 204, 206,
- 208, 210, 212, 214, 216, 218, 220, 222,
- 224, 226, 228, 230, 232, 234, 236, 238,
- 240, 242, 244, 246, 248, 250, 252, 254,
- 256, 258, 260, 262, 264, 266, 268, 270,
- 272, 274, 276, 278, 280, 282, 284, 286,
- 288, 290, 292, 294, 296, 298, 300, 302,
- 304, 306, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, 328, 329,
- 345, 347, 349, 351, 353, 355, 357, 359,
- 361, 363, 365, 367, 369, 371, 373, 375,
- 377, 379, 381, 383, 385, 387, 389, 391,
- 393, 395, 397, 399, 401, 403, 405, 407,
- 409, 411, 413, 415, 417, 419, 421, 423,
- 425, 427, 429, 431, 433, 435, 437, 439,
- 441, 443, 445, 447, 449, 451, 453, 455,
- 457, 459, 461, 463, 465, 466, 467, 468,
- 469, 470, 471, 472, 473, 474, 475, 476,
- 477, 478, 479, 480, 481, 482, 483, 484,
- 485, 486, 487, 502, 504, 506, 508, 510,
- 512, 514, 516, 518, 520, 522, 524, 526,
- 528, 530, 532, 534, 536, 538, 540, 542,
- 544, 546, 548, 550, 552, 554, 556, 558,
- 560, 562, 564, 566, 568, 570, 572, 574,
- 576, 578, 580, 582, 584, 586, 588, 590,
- 592, 594, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 622, 624, 626, 628,
- 630, 632, 634, 636, 638, 640, 642, 644,
- 646, 648, 650, 652, 654, 656, 658, 660,
- 662, 664, 666, 668, 670, 672, 674, 676,
- 678, 680, 682, 684, 686, 688, 690, 692,
- 694, 696, 698, 700, 702, 704, 706, 708,
- 710, 712, 714, 716, 718, 720, 722, 724,
- 726, 728, 730, 732, 734, 736, 738, 740,
- 742, 744, 746, 748, 750, 752, 754, 756,
- 758, 760, 762, 764, 766, 768, 769, 770,
- 771, 772, 776, 782, 785, 787, 793, 813
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 67, 68, 70, 75, 76, 77,
- 83, 84, 124, 9, 13, -69, -65, 10,
- 32, 34, 35, 37, 42, 64, 65, 66,
- 67, 68, 70, 75, 76, 77, 83, 84,
- 124, 9, 13, 34, 34, 10, 13, 10,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 9,
- 13, 10, 32, 9, 13, 10, 13, 10,
- 95, 70, 69, 65, 84, 85, 82, 69,
- 95, 69, 78, 68, 95, 37, 32, 10,
- 13, 10, 13, 13, 32, 64, 9, 10,
- 9, 10, 13, 32, 64, 11, 12, 10,
- 32, 64, 9, 13, 112, 97, 98, 105,
- 108, 97, 97, 103, 105, 111, 110, 116,
- 111, 104, 58, 10, 10, 10, 32, 35,
- 70, 124, 9, 13, 10, 117, 10, 110,
- 10, 103, 10, 115, 10, 105, 10, 58,
- 10, 32, 34, 35, 37, 42, 64, 65,
- 66, 67, 68, 70, 75, 76, 77, 83,
- 84, 124, 9, 13, 97, 110, 117, 110,
- 103, 115, 105, 58, 10, 10, 10, 32,
- 35, 37, 64, 67, 70, 76, 77, 83,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 111,
- 10, 110, 10, 116, 10, 111, 10, 104,
- 10, 58, 10, 117, 10, 110, 10, 103,
- 10, 115, 10, 105, 10, 97, 10, 116,
- 10, 97, 10, 114, 10, 32, 10, 66,
- 10, 101, 10, 108, 10, 97, 10, 107,
- 10, 97, 10, 110, 10, 103, 10, 101,
- 10, 110, 10, 103, 10, 103, 10, 97,
- 10, 114, 10, 105, 10, 115, 10, 107,
- 10, 97, 10, 110, 10, 32, 10, 83,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 111, 101, 109, 117, 100,
- 105, 97, 116, 97, 114, 32, 66, 101,
- 108, 97, 107, 97, 110, 103, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 65,
- 66, 68, 70, 75, 77, 83, 84, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 112, 10, 97, 10, 98, 10, 105, 10,
- 108, 10, 97, 10, 97, 10, 103, 10,
- 105, 10, 97, 10, 110, 10, 117, 10,
- 110, 10, 103, 10, 115, 10, 105, 10,
- 58, 10, 101, 10, 109, 10, 117, 10,
- 100, 10, 105, 10, 101, 10, 110, 10,
- 103, 10, 103, 10, 97, 10, 114, 10,
- 105, 10, 115, 10, 107, 10, 97, 10,
- 110, 10, 32, 10, 83, 10, 101, 10,
- 110, 10, 97, 10, 114, 10, 105, 10,
- 111, 10, 101, 10, 116, 10, 97, 10,
- 112, 101, 110, 103, 103, 97, 114, 105,
- 115, 107, 97, 110, 32, 83, 101, 110,
- 97, 114, 105, 111, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 65, 66, 68,
- 70, 75, 83, 84, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 112, 10, 97,
- 10, 98, 10, 105, 10, 108, 10, 97,
- 10, 97, 10, 103, 10, 105, 10, 97,
- 10, 110, 10, 117, 10, 110, 10, 103,
- 10, 115, 10, 105, 10, 58, 10, 101,
- 10, 109, 10, 117, 10, 100, 10, 105,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 111, 10, 101, 10, 116,
- 10, 97, 10, 112, 101, 110, 97, 114,
- 105, 111, 58, 10, 10, 10, 32, 35,
- 37, 42, 64, 65, 66, 68, 70, 75,
- 76, 77, 83, 84, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 112, 10, 97,
- 10, 98, 10, 105, 10, 108, 10, 97,
- 10, 97, 10, 103, 10, 105, 10, 97,
- 10, 110, 10, 117, 10, 110, 10, 103,
- 10, 115, 10, 105, 10, 58, 10, 101,
- 10, 109, 10, 117, 10, 100, 10, 105,
- 10, 97, 10, 116, 10, 97, 10, 114,
- 10, 32, 10, 66, 10, 101, 10, 108,
- 10, 97, 10, 107, 10, 97, 10, 110,
- 10, 103, 10, 101, 10, 110, 10, 103,
- 10, 103, 10, 97, 10, 114, 10, 105,
- 10, 115, 10, 107, 10, 97, 10, 110,
- 10, 32, 10, 83, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 111,
- 10, 101, 10, 116, 10, 97, 10, 112,
- 101, 116, 97, 112, 32, 124, 9, 13,
- 10, 32, 92, 124, 9, 13, 10, 92,
- 124, 10, 92, 10, 32, 92, 124, 9,
- 13, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 67, 68, 70, 75, 76, 77,
- 83, 84, 124, 9, 13, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 19, 1, 1, 18, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 5, 2,
- 2, 2, 2, 2, 2, 18, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 10, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 14,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 13, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 15, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 2, 4, 3, 2, 4, 18, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 1, 0, 0, 1, 1, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 21, 23, 25, 45, 47, 49,
- 52, 55, 60, 65, 70, 75, 79, 83,
- 86, 88, 90, 92, 94, 96, 98, 100,
- 102, 104, 106, 108, 110, 112, 114, 116,
- 118, 121, 124, 129, 136, 141, 143, 145,
- 147, 149, 151, 153, 155, 157, 159, 161,
- 163, 165, 167, 169, 171, 173, 175, 182,
- 185, 188, 191, 194, 197, 200, 220, 222,
- 224, 226, 228, 230, 232, 234, 236, 238,
- 240, 252, 255, 258, 261, 264, 267, 270,
- 273, 276, 279, 282, 285, 288, 291, 294,
- 297, 300, 303, 306, 309, 312, 315, 318,
- 321, 324, 327, 330, 333, 336, 339, 342,
- 345, 348, 351, 354, 357, 360, 363, 366,
- 369, 372, 375, 378, 381, 384, 387, 390,
- 393, 396, 399, 402, 405, 408, 411, 414,
- 417, 420, 423, 425, 427, 429, 431, 433,
- 435, 437, 439, 441, 443, 445, 447, 449,
- 451, 453, 455, 457, 459, 461, 463, 465,
- 481, 484, 487, 490, 493, 496, 499, 502,
- 505, 508, 511, 514, 517, 520, 523, 526,
- 529, 532, 535, 538, 541, 544, 547, 550,
- 553, 556, 559, 562, 565, 568, 571, 574,
- 577, 580, 583, 586, 589, 592, 595, 598,
- 601, 604, 607, 610, 613, 616, 619, 622,
- 625, 628, 631, 634, 637, 640, 643, 646,
- 649, 652, 655, 658, 661, 663, 665, 667,
- 669, 671, 673, 675, 677, 679, 681, 683,
- 685, 687, 689, 691, 693, 695, 697, 699,
- 701, 703, 705, 720, 723, 726, 729, 732,
- 735, 738, 741, 744, 747, 750, 753, 756,
- 759, 762, 765, 768, 771, 774, 777, 780,
- 783, 786, 789, 792, 795, 798, 801, 804,
- 807, 810, 813, 816, 819, 822, 825, 828,
- 831, 834, 837, 840, 843, 846, 849, 852,
- 855, 858, 861, 863, 865, 867, 869, 871,
- 873, 875, 877, 879, 896, 899, 902, 905,
- 908, 911, 914, 917, 920, 923, 926, 929,
- 932, 935, 938, 941, 944, 947, 950, 953,
- 956, 959, 962, 965, 968, 971, 974, 977,
- 980, 983, 986, 989, 992, 995, 998, 1001,
- 1004, 1007, 1010, 1013, 1016, 1019, 1022, 1025,
- 1028, 1031, 1034, 1037, 1040, 1043, 1046, 1049,
- 1052, 1055, 1058, 1061, 1064, 1067, 1070, 1073,
- 1076, 1079, 1082, 1085, 1088, 1091, 1094, 1097,
- 1100, 1103, 1106, 1109, 1112, 1115, 1117, 1119,
- 1121, 1123, 1127, 1133, 1137, 1140, 1146, 1166
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 43, 46, 62, 64, 130, 135, 212,
- 282, 365, 369, 4, 0, 3, 0, 4,
- 0, 4, 4, 5, 15, 17, 31, 34,
- 37, 43, 46, 62, 64, 130, 135, 212,
- 282, 365, 369, 4, 0, 6, 0, 7,
- 0, 9, 8, 8, 9, 8, 8, 10,
- 10, 11, 10, 10, 10, 10, 11, 10,
- 10, 10, 10, 12, 10, 10, 10, 10,
- 13, 10, 10, 4, 14, 14, 0, 4,
- 14, 14, 0, 4, 16, 15, 4, 0,
- 18, 0, 19, 0, 20, 0, 21, 0,
- 22, 0, 23, 0, 24, 0, 25, 0,
- 26, 0, 27, 0, 28, 0, 29, 0,
- 30, 0, 375, 0, 32, 0, 4, 16,
- 33, 4, 16, 33, 0, 0, 0, 0,
- 35, 36, 4, 36, 36, 34, 35, 35,
- 4, 36, 34, 36, 0, 38, 0, 39,
- 0, 40, 0, 41, 0, 42, 0, 31,
- 0, 44, 0, 45, 0, 31, 0, 47,
- 0, 48, 0, 49, 0, 50, 0, 51,
- 0, 52, 0, 54, 53, 54, 53, 54,
- 54, 4, 55, 4, 54, 53, 54, 56,
- 53, 54, 57, 53, 54, 58, 53, 54,
- 59, 53, 54, 60, 53, 54, 61, 53,
- 4, 4, 5, 15, 17, 31, 34, 37,
- 43, 46, 62, 64, 130, 135, 212, 282,
- 365, 369, 4, 0, 63, 0, 31, 0,
- 65, 0, 66, 0, 67, 0, 68, 0,
- 69, 0, 70, 0, 72, 71, 72, 71,
- 72, 72, 4, 73, 4, 87, 93, 98,
- 111, 124, 72, 71, 72, 74, 71, 72,
- 75, 71, 72, 76, 71, 72, 77, 71,
- 72, 78, 71, 72, 79, 71, 72, 80,
- 71, 72, 81, 71, 72, 82, 71, 72,
- 83, 71, 72, 84, 71, 72, 85, 71,
- 72, 86, 71, 72, 4, 71, 72, 88,
- 71, 72, 89, 71, 72, 90, 71, 72,
- 91, 71, 72, 92, 71, 72, 61, 71,
- 72, 94, 71, 72, 95, 71, 72, 96,
- 71, 72, 97, 71, 72, 92, 71, 72,
- 99, 71, 72, 100, 71, 72, 101, 71,
- 72, 102, 71, 72, 103, 71, 72, 104,
- 71, 72, 105, 71, 72, 106, 71, 72,
- 107, 71, 72, 108, 71, 72, 109, 71,
- 72, 110, 71, 72, 92, 71, 72, 112,
- 71, 72, 113, 71, 72, 114, 71, 72,
- 115, 71, 72, 116, 71, 72, 117, 71,
- 72, 118, 71, 72, 119, 71, 72, 120,
- 71, 72, 121, 71, 72, 122, 71, 72,
- 123, 71, 72, 124, 71, 72, 125, 71,
- 72, 126, 71, 72, 127, 71, 72, 128,
- 71, 72, 129, 71, 72, 92, 71, 131,
- 0, 132, 0, 133, 0, 134, 0, 62,
- 0, 136, 0, 137, 0, 138, 0, 139,
- 0, 140, 0, 141, 0, 142, 0, 143,
- 0, 144, 0, 145, 0, 146, 0, 147,
- 0, 148, 0, 149, 0, 151, 150, 151,
- 150, 151, 151, 4, 152, 166, 4, 167,
- 173, 176, 178, 184, 189, 202, 208, 151,
- 150, 151, 153, 150, 151, 154, 150, 151,
- 155, 150, 151, 156, 150, 151, 157, 150,
- 151, 158, 150, 151, 159, 150, 151, 160,
- 150, 151, 161, 150, 151, 162, 150, 151,
- 163, 150, 151, 164, 150, 151, 165, 150,
- 151, 4, 150, 151, 61, 150, 151, 168,
- 150, 151, 169, 150, 151, 170, 150, 151,
- 171, 150, 151, 172, 150, 151, 166, 150,
- 151, 174, 150, 151, 175, 150, 151, 166,
- 150, 151, 177, 150, 151, 166, 150, 151,
- 179, 150, 151, 180, 150, 151, 181, 150,
- 151, 182, 150, 151, 183, 150, 151, 61,
- 150, 151, 185, 150, 151, 186, 150, 151,
- 187, 150, 151, 188, 150, 151, 176, 150,
- 151, 190, 150, 151, 191, 150, 151, 192,
- 150, 151, 193, 150, 151, 194, 150, 151,
- 195, 150, 151, 196, 150, 151, 197, 150,
- 151, 198, 150, 151, 199, 150, 151, 200,
- 150, 151, 201, 150, 151, 202, 150, 151,
- 203, 150, 151, 204, 150, 151, 205, 150,
- 151, 206, 150, 151, 207, 150, 151, 183,
- 150, 151, 209, 150, 151, 210, 150, 151,
- 211, 150, 151, 175, 150, 213, 0, 214,
- 0, 215, 0, 216, 0, 217, 0, 218,
- 0, 219, 0, 220, 0, 221, 0, 222,
- 0, 223, 0, 224, 0, 225, 0, 226,
- 0, 227, 0, 228, 0, 229, 0, 230,
- 0, 231, 0, 232, 0, 234, 233, 234,
- 233, 234, 234, 4, 235, 249, 4, 250,
- 256, 259, 261, 267, 272, 278, 234, 233,
- 234, 236, 233, 234, 237, 233, 234, 238,
- 233, 234, 239, 233, 234, 240, 233, 234,
- 241, 233, 234, 242, 233, 234, 243, 233,
- 234, 244, 233, 234, 245, 233, 234, 246,
- 233, 234, 247, 233, 234, 248, 233, 234,
- 4, 233, 234, 61, 233, 234, 251, 233,
- 234, 252, 233, 234, 253, 233, 234, 254,
- 233, 234, 255, 233, 234, 249, 233, 234,
- 257, 233, 234, 258, 233, 234, 249, 233,
- 234, 260, 233, 234, 249, 233, 234, 262,
- 233, 234, 263, 233, 234, 264, 233, 234,
- 265, 233, 234, 266, 233, 234, 61, 233,
- 234, 268, 233, 234, 269, 233, 234, 270,
- 233, 234, 271, 233, 234, 259, 233, 234,
- 273, 233, 234, 274, 233, 234, 275, 233,
- 234, 276, 233, 234, 277, 233, 234, 266,
- 233, 234, 279, 233, 234, 280, 233, 234,
- 281, 233, 234, 258, 233, 283, 0, 284,
- 0, 285, 0, 286, 0, 287, 0, 288,
- 0, 289, 0, 291, 290, 291, 290, 291,
- 291, 4, 292, 306, 4, 307, 313, 316,
- 318, 324, 329, 342, 355, 361, 291, 290,
- 291, 293, 290, 291, 294, 290, 291, 295,
- 290, 291, 296, 290, 291, 297, 290, 291,
- 298, 290, 291, 299, 290, 291, 300, 290,
- 291, 301, 290, 291, 302, 290, 291, 303,
- 290, 291, 304, 290, 291, 305, 290, 291,
- 4, 290, 291, 61, 290, 291, 308, 290,
- 291, 309, 290, 291, 310, 290, 291, 311,
- 290, 291, 312, 290, 291, 306, 290, 291,
- 314, 290, 291, 315, 290, 291, 306, 290,
- 291, 317, 290, 291, 306, 290, 291, 319,
- 290, 291, 320, 290, 291, 321, 290, 291,
- 322, 290, 291, 323, 290, 291, 61, 290,
- 291, 325, 290, 291, 326, 290, 291, 327,
- 290, 291, 328, 290, 291, 316, 290, 291,
- 330, 290, 291, 331, 290, 291, 332, 290,
- 291, 333, 290, 291, 334, 290, 291, 335,
- 290, 291, 336, 290, 291, 337, 290, 291,
- 338, 290, 291, 339, 290, 291, 340, 290,
- 291, 341, 290, 291, 323, 290, 291, 343,
- 290, 291, 344, 290, 291, 345, 290, 291,
- 346, 290, 291, 347, 290, 291, 348, 290,
- 291, 349, 290, 291, 350, 290, 291, 351,
- 290, 291, 352, 290, 291, 353, 290, 291,
- 354, 290, 291, 355, 290, 291, 356, 290,
- 291, 357, 290, 291, 358, 290, 291, 359,
- 290, 291, 360, 290, 291, 323, 290, 291,
- 362, 290, 291, 363, 290, 291, 364, 290,
- 291, 315, 290, 366, 0, 367, 0, 368,
- 0, 45, 0, 369, 370, 369, 0, 374,
- 373, 372, 370, 373, 371, 0, 372, 370,
- 371, 0, 372, 371, 374, 373, 372, 370,
- 373, 371, 374, 374, 5, 15, 17, 31,
- 34, 37, 43, 46, 62, 64, 130, 135,
- 212, 282, 365, 369, 374, 0, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 29, 29, 35, 0, 43, 0, 43, 0,
- 43, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 29, 29, 35, 0, 43, 0, 43, 0,
- 43, 139, 48, 9, 106, 11, 0, 134,
- 45, 45, 45, 3, 122, 33, 33, 33,
- 0, 122, 33, 33, 33, 0, 122, 33,
- 0, 33, 0, 102, 7, 7, 43, 54,
- 0, 0, 43, 114, 25, 0, 54, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 149, 126,
- 57, 110, 23, 0, 43, 43, 43, 43,
- 0, 27, 118, 27, 27, 51, 27, 0,
- 54, 0, 1, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 81, 84, 81, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 21, 0,
- 130, 31, 60, 57, 31, 63, 57, 63,
- 63, 63, 63, 63, 63, 63, 63, 63,
- 63, 66, 31, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 69, 33, 69, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 13, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 13, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 72, 33, 84, 72, 84,
- 84, 84, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 54, 15, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 78, 33, 84, 78, 84,
- 84, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 19, 0, 54, 19, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 19, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 75, 33, 84, 75, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 17, 0, 54, 17, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 0, 0, 43, 54,
- 37, 37, 87, 37, 37, 43, 0, 39,
- 0, 43, 0, 0, 54, 0, 0, 39,
- 0, 0, 54, 0, 93, 90, 41, 96,
- 90, 96, 96, 96, 96, 96, 96, 96,
- 96, 96, 96, 99, 0, 43, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 375;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 941 "ext/gherkin_lexer_bm/gherkin_lexer_bm.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
-
- #line 948 "ext/gherkin_lexer_bm/gherkin_lexer_bm.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1238 "ext/gherkin_lexer_bm/gherkin_lexer_bm.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1301 "ext/gherkin_lexer_bm/gherkin_lexer_bm.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/bm.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_bm()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Bm", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/bm.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/bm.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_bm/gherkin_lexer_bm.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 21, 22, 23, 43, 44, 45,
- 47, 49, 54, 59, 64, 69, 73, 77,
- 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 97, 99, 104, 111, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 140,
- 142, 144, 146, 148, 150, 152, 172, 174,
- 175, 176, 177, 178, 179, 180, 181, 182,
- 183, 184, 185, 186, 200, 202, 204, 206,
- 208, 210, 212, 214, 216, 218, 220, 222,
- 224, 226, 228, 230, 232, 234, 236, 238,
- 240, 242, 244, 246, 248, 250, 252, 254,
- 256, 258, 260, 262, 264, 266, 268, 270,
- 272, 274, 276, 278, 280, 282, 284, 286,
- 288, 290, 292, 294, 296, 298, 300, 302,
- 304, 306, 308, 310, 312, 314, 316, 318,
- 320, 322, 324, 326, 329, 331, 333, 335,
- 337, 339, 341, 343, 345, 347, 349, 351,
- 354, 355, 357, 358, 359, 360, 361, 362,
- 363, 364, 381, 383, 385, 387, 389, 391,
- 393, 395, 397, 399, 401, 403, 405, 407,
- 409, 411, 413, 415, 417, 419, 421, 423,
- 425, 427, 429, 432, 434, 436, 438, 440,
- 442, 444, 446, 448, 450, 452, 454, 457,
- 459, 461, 463, 465, 467, 469, 471, 473,
- 475, 477, 479, 481, 483, 485, 487, 489,
- 491, 493, 495, 497, 499, 502, 504, 506,
- 508, 510, 512, 514, 516, 518, 520, 522,
- 524, 526, 528, 530, 532, 534, 536, 538,
- 540, 543, 545, 547, 549, 552, 554, 557,
- 559, 561, 563, 565, 567, 569, 572, 574,
- 576, 578, 579, 580, 581, 582, 583, 584,
- 585, 586, 587, 588, 589, 590, 591, 592,
- 593, 594, 595, 596, 597, 598, 614, 616,
- 618, 620, 622, 624, 626, 628, 630, 632,
- 634, 636, 638, 640, 642, 644, 646, 648,
- 650, 652, 654, 656, 658, 660, 662, 665,
- 667, 669, 671, 673, 675, 677, 679, 681,
- 683, 685, 687, 690, 692, 694, 696, 698,
- 700, 702, 704, 706, 709, 711, 713, 715,
- 717, 719, 721, 723, 725, 727, 729, 731,
- 733, 735, 737, 739, 741, 743, 745, 747,
- 750, 752, 754, 756, 759, 761, 764, 766,
- 768, 770, 772, 774, 776, 779, 781, 783,
- 785, 787, 788, 789, 790, 791, 792, 793,
- 794, 795, 796, 797, 798, 799, 800, 801,
- 802, 803, 804, 805, 806, 807, 808, 809,
- 825, 827, 829, 831, 833, 835, 837, 839,
- 841, 843, 845, 847, 849, 851, 853, 855,
- 857, 859, 861, 863, 865, 867, 869, 871,
- 873, 876, 878, 880, 882, 884, 886, 888,
- 890, 892, 894, 896, 898, 901, 903, 905,
- 907, 909, 911, 913, 915, 917, 919, 921,
- 924, 926, 928, 930, 932, 934, 936, 938,
- 940, 943, 945, 947, 949, 951, 952, 953,
- 954, 955, 956, 957, 958, 959, 960, 962,
- 963, 965, 966, 967, 968, 969, 970, 971,
- 973, 974, 975, 976, 977, 978, 979, 981,
- 982, 983, 984, 985, 986, 990, 996, 999,
- 1001, 1007, 1027
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 67, 68, 70, 75, 76, 77,
- 83, 84, 124, 9, 13, -69, -65, 10,
- 32, 34, 35, 37, 42, 64, 65, 66,
- 67, 68, 70, 75, 76, 77, 83, 84,
- 124, 9, 13, 34, 34, 10, 13, 10,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 9,
- 13, 10, 32, 9, 13, 10, 13, 10,
- 95, 70, 69, 65, 84, 85, 82, 69,
- 95, 69, 78, 68, 95, 37, 32, 10,
- 13, 10, 13, 13, 32, 64, 9, 10,
- 9, 10, 13, 32, 64, 11, 12, 10,
- 32, 64, 9, 13, 112, 97, 98, 105,
- 108, 97, 97, 103, 105, 111, 110, 116,
- 111, 104, 58, 10, 10, 10, 32, 35,
- 70, 124, 9, 13, 10, 117, 10, 110,
- 10, 103, 10, 115, 10, 105, 10, 58,
- 10, 32, 34, 35, 37, 42, 64, 65,
- 66, 67, 68, 70, 75, 76, 77, 83,
- 84, 124, 9, 13, 97, 105, 110, 98,
- 101, 114, 117, 110, 103, 115, 105, 58,
- 10, 10, 10, 32, 35, 37, 64, 67,
- 70, 75, 76, 77, 83, 84, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 111, 10, 110,
- 10, 116, 10, 111, 10, 104, 10, 58,
- 10, 117, 10, 110, 10, 103, 10, 115,
- 10, 105, 10, 101, 10, 97, 10, 100,
- 10, 97, 10, 97, 10, 110, 10, 97,
- 10, 116, 10, 97, 10, 114, 10, 32,
- 10, 66, 10, 101, 10, 108, 10, 97,
- 10, 107, 10, 97, 10, 110, 10, 103,
- 10, 101, 10, 110, 10, 103, 10, 103,
- 10, 97, 10, 114, 10, 105, 10, 115,
- 10, 107, 10, 97, 10, 110, 10, 32,
- 10, 83, 10, 101, 10, 110, 10, 97,
- 10, 114, 10, 105, 10, 111, 10, 101,
- 105, 10, 116, 10, 117, 10, 97, 10,
- 101, 10, 109, 10, 112, 10, 108, 10,
- 97, 10, 116, 10, 101, 10, 32, 10,
- 75, 83, 101, 97, 109, 100, 97, 97,
- 110, 58, 10, 10, 10, 32, 35, 37,
- 42, 64, 65, 66, 68, 70, 75, 76,
- 77, 83, 84, 9, 13, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 32, 10, 112, 10, 97, 10,
- 98, 10, 105, 10, 108, 10, 97, 10,
- 97, 10, 103, 10, 105, 10, 97, 105,
- 10, 110, 10, 98, 10, 101, 10, 114,
- 10, 117, 10, 110, 10, 103, 10, 115,
- 10, 105, 10, 58, 10, 101, 10, 97,
- 109, 10, 100, 10, 97, 10, 97, 10,
- 110, 10, 117, 10, 100, 10, 105, 10,
- 97, 10, 97, 10, 116, 10, 97, 10,
- 114, 10, 32, 10, 66, 10, 101, 10,
- 108, 10, 97, 10, 107, 10, 97, 10,
- 110, 10, 103, 10, 97, 101, 10, 107,
- 10, 110, 10, 103, 10, 103, 10, 97,
- 10, 114, 10, 105, 10, 115, 10, 107,
- 10, 97, 10, 110, 10, 32, 10, 83,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 111, 10, 101, 105, 10,
- 116, 10, 117, 10, 97, 10, 97, 101,
- 10, 112, 10, 109, 116, 10, 112, 10,
- 108, 10, 97, 10, 116, 10, 101, 10,
- 32, 10, 75, 83, 10, 101, 10, 97,
- 10, 97, 117, 100, 105, 97, 97, 116,
- 97, 114, 32, 66, 101, 108, 97, 107,
- 97, 110, 103, 58, 10, 10, 10, 32,
- 35, 37, 42, 64, 65, 66, 68, 70,
- 75, 77, 83, 84, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 112, 10, 97,
- 10, 98, 10, 105, 10, 108, 10, 97,
- 10, 97, 10, 103, 10, 105, 10, 97,
- 105, 10, 110, 10, 98, 10, 101, 10,
- 114, 10, 117, 10, 110, 10, 103, 10,
- 115, 10, 105, 10, 58, 10, 101, 10,
- 97, 109, 10, 100, 10, 97, 10, 97,
- 10, 110, 10, 117, 10, 100, 10, 105,
- 10, 97, 10, 97, 101, 10, 107, 10,
- 110, 10, 103, 10, 103, 10, 97, 10,
- 114, 10, 105, 10, 115, 10, 107, 10,
- 97, 10, 110, 10, 32, 10, 83, 10,
- 101, 10, 110, 10, 97, 10, 114, 10,
- 105, 10, 111, 10, 101, 105, 10, 116,
- 10, 117, 10, 97, 10, 97, 101, 10,
- 112, 10, 109, 116, 10, 112, 10, 108,
- 10, 97, 10, 116, 10, 101, 10, 32,
- 10, 75, 83, 10, 101, 10, 97, 10,
- 97, 97, 101, 107, 110, 103, 103, 97,
- 114, 105, 115, 107, 97, 110, 32, 83,
- 101, 110, 97, 114, 105, 111, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 65,
- 66, 68, 70, 75, 77, 83, 84, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 112, 10, 97, 10, 98, 10, 105, 10,
- 108, 10, 97, 10, 97, 10, 103, 10,
- 105, 10, 97, 105, 10, 110, 10, 98,
- 10, 101, 10, 114, 10, 117, 10, 110,
- 10, 103, 10, 115, 10, 105, 10, 58,
- 10, 101, 10, 97, 109, 10, 100, 10,
- 97, 10, 97, 10, 110, 10, 117, 10,
- 100, 10, 105, 10, 97, 10, 97, 10,
- 107, 10, 101, 105, 10, 110, 10, 97,
- 10, 114, 10, 105, 10, 111, 10, 116,
- 10, 117, 10, 97, 10, 97, 101, 10,
- 112, 10, 116, 10, 97, 101, 105, 110,
- 97, 114, 105, 111, 116, 117, 97, 105,
- 97, 101, 112, 109, 116, 112, 108, 97,
- 116, 101, 32, 75, 83, 101, 97, 100,
- 97, 97, 110, 101, 105, 116, 117, 97,
- 105, 97, 32, 124, 9, 13, 10, 32,
- 92, 124, 9, 13, 10, 92, 124, 10,
- 92, 10, 32, 92, 124, 9, 13, 10,
- 32, 34, 35, 37, 42, 64, 65, 66,
- 67, 68, 70, 75, 76, 77, 83, 84,
- 124, 9, 13, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 19, 1, 1, 18, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 5, 2,
- 2, 2, 2, 2, 2, 18, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 12, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 1, 2, 1, 1, 1, 1, 1, 1,
- 1, 15, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 3, 2, 3, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 14, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 3, 2, 3, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 14,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 1,
- 2, 1, 1, 1, 1, 1, 1, 2,
- 1, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 2, 4, 3, 2,
- 4, 18, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 1, 0, 0,
- 1, 1, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 21, 23, 25, 45, 47, 49,
- 52, 55, 60, 65, 70, 75, 79, 83,
- 86, 88, 90, 92, 94, 96, 98, 100,
- 102, 104, 106, 108, 110, 112, 114, 116,
- 118, 121, 124, 129, 136, 141, 143, 145,
- 147, 149, 151, 153, 155, 157, 159, 161,
- 163, 165, 167, 169, 171, 173, 175, 182,
- 185, 188, 191, 194, 197, 200, 220, 223,
- 225, 227, 229, 231, 233, 235, 237, 239,
- 241, 243, 245, 247, 261, 264, 267, 270,
- 273, 276, 279, 282, 285, 288, 291, 294,
- 297, 300, 303, 306, 309, 312, 315, 318,
- 321, 324, 327, 330, 333, 336, 339, 342,
- 345, 348, 351, 354, 357, 360, 363, 366,
- 369, 372, 375, 378, 381, 384, 387, 390,
- 393, 396, 399, 402, 405, 408, 411, 414,
- 417, 420, 423, 426, 429, 432, 435, 438,
- 441, 444, 447, 450, 454, 457, 460, 463,
- 466, 469, 472, 475, 478, 481, 484, 487,
- 491, 493, 496, 498, 500, 502, 504, 506,
- 508, 510, 527, 530, 533, 536, 539, 542,
- 545, 548, 551, 554, 557, 560, 563, 566,
- 569, 572, 575, 578, 581, 584, 587, 590,
- 593, 596, 599, 603, 606, 609, 612, 615,
- 618, 621, 624, 627, 630, 633, 636, 640,
- 643, 646, 649, 652, 655, 658, 661, 664,
- 667, 670, 673, 676, 679, 682, 685, 688,
- 691, 694, 697, 700, 703, 707, 710, 713,
- 716, 719, 722, 725, 728, 731, 734, 737,
- 740, 743, 746, 749, 752, 755, 758, 761,
- 764, 768, 771, 774, 777, 781, 784, 788,
- 791, 794, 797, 800, 803, 806, 810, 813,
- 816, 819, 821, 823, 825, 827, 829, 831,
- 833, 835, 837, 839, 841, 843, 845, 847,
- 849, 851, 853, 855, 857, 859, 875, 878,
- 881, 884, 887, 890, 893, 896, 899, 902,
- 905, 908, 911, 914, 917, 920, 923, 926,
- 929, 932, 935, 938, 941, 944, 947, 951,
- 954, 957, 960, 963, 966, 969, 972, 975,
- 978, 981, 984, 988, 991, 994, 997, 1000,
- 1003, 1006, 1009, 1012, 1016, 1019, 1022, 1025,
- 1028, 1031, 1034, 1037, 1040, 1043, 1046, 1049,
- 1052, 1055, 1058, 1061, 1064, 1067, 1070, 1073,
- 1077, 1080, 1083, 1086, 1090, 1093, 1097, 1100,
- 1103, 1106, 1109, 1112, 1115, 1119, 1122, 1125,
- 1128, 1131, 1133, 1135, 1137, 1139, 1141, 1143,
- 1145, 1147, 1149, 1151, 1153, 1155, 1157, 1159,
- 1161, 1163, 1165, 1167, 1169, 1171, 1173, 1175,
- 1191, 1194, 1197, 1200, 1203, 1206, 1209, 1212,
- 1215, 1218, 1221, 1224, 1227, 1230, 1233, 1236,
- 1239, 1242, 1245, 1248, 1251, 1254, 1257, 1260,
- 1263, 1267, 1270, 1273, 1276, 1279, 1282, 1285,
- 1288, 1291, 1294, 1297, 1300, 1304, 1307, 1310,
- 1313, 1316, 1319, 1322, 1325, 1328, 1331, 1334,
- 1338, 1341, 1344, 1347, 1350, 1353, 1356, 1359,
- 1362, 1366, 1369, 1372, 1375, 1378, 1380, 1382,
- 1384, 1386, 1388, 1390, 1392, 1394, 1396, 1399,
- 1401, 1404, 1406, 1408, 1410, 1412, 1414, 1416,
- 1419, 1421, 1423, 1425, 1427, 1429, 1431, 1434,
- 1436, 1438, 1440, 1442, 1444, 1448, 1454, 1458,
- 1461, 1467, 1487
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 43, 46, 62, 67, 152, 261, 360,
- 444, 454, 476, 4, 0, 3, 0, 4,
- 0, 4, 4, 5, 15, 17, 31, 34,
- 37, 43, 46, 62, 67, 152, 261, 360,
- 444, 454, 476, 4, 0, 6, 0, 7,
- 0, 9, 8, 8, 9, 8, 8, 10,
- 10, 11, 10, 10, 10, 10, 11, 10,
- 10, 10, 10, 12, 10, 10, 10, 10,
- 13, 10, 10, 4, 14, 14, 0, 4,
- 14, 14, 0, 4, 16, 15, 4, 0,
- 18, 0, 19, 0, 20, 0, 21, 0,
- 22, 0, 23, 0, 24, 0, 25, 0,
- 26, 0, 27, 0, 28, 0, 29, 0,
- 30, 0, 482, 0, 32, 0, 4, 16,
- 33, 4, 16, 33, 0, 0, 0, 0,
- 35, 36, 4, 36, 36, 34, 35, 35,
- 4, 36, 34, 36, 0, 38, 0, 39,
- 0, 40, 0, 41, 0, 42, 0, 31,
- 0, 44, 0, 45, 0, 31, 0, 47,
- 0, 48, 0, 49, 0, 50, 0, 51,
- 0, 52, 0, 54, 53, 54, 53, 54,
- 54, 4, 55, 4, 54, 53, 54, 56,
- 53, 54, 57, 53, 54, 58, 53, 54,
- 59, 53, 54, 60, 53, 54, 61, 53,
- 4, 4, 5, 15, 17, 31, 34, 37,
- 43, 46, 62, 67, 152, 261, 360, 444,
- 454, 476, 4, 0, 63, 64, 0, 31,
- 0, 65, 0, 66, 0, 45, 0, 68,
- 0, 69, 0, 70, 0, 71, 0, 72,
- 0, 73, 0, 75, 74, 75, 74, 75,
- 75, 4, 76, 4, 90, 96, 101, 107,
- 120, 139, 143, 75, 74, 75, 77, 74,
- 75, 78, 74, 75, 79, 74, 75, 80,
- 74, 75, 81, 74, 75, 82, 74, 75,
- 83, 74, 75, 84, 74, 75, 85, 74,
- 75, 86, 74, 75, 87, 74, 75, 88,
- 74, 75, 89, 74, 75, 4, 74, 75,
- 91, 74, 75, 92, 74, 75, 93, 74,
- 75, 94, 74, 75, 95, 74, 75, 61,
- 74, 75, 97, 74, 75, 98, 74, 75,
- 99, 74, 75, 100, 74, 75, 95, 74,
- 75, 102, 74, 75, 103, 74, 75, 104,
- 74, 75, 105, 74, 75, 106, 74, 75,
- 95, 74, 75, 108, 74, 75, 109, 74,
- 75, 110, 74, 75, 111, 74, 75, 112,
- 74, 75, 113, 74, 75, 114, 74, 75,
- 115, 74, 75, 116, 74, 75, 117, 74,
- 75, 118, 74, 75, 119, 74, 75, 95,
- 74, 75, 121, 74, 75, 122, 74, 75,
- 123, 74, 75, 124, 74, 75, 125, 74,
- 75, 126, 74, 75, 127, 74, 75, 128,
- 74, 75, 129, 74, 75, 130, 74, 75,
- 131, 74, 75, 132, 74, 75, 133, 74,
- 75, 134, 74, 75, 135, 74, 75, 136,
- 74, 75, 137, 74, 75, 138, 74, 75,
- 95, 74, 75, 134, 140, 74, 75, 141,
- 74, 75, 142, 74, 75, 100, 74, 75,
- 144, 74, 75, 145, 74, 75, 146, 74,
- 75, 147, 74, 75, 148, 74, 75, 149,
- 74, 75, 150, 74, 75, 151, 74, 75,
- 101, 139, 74, 153, 0, 154, 257, 0,
- 155, 0, 156, 0, 157, 0, 158, 0,
- 159, 0, 161, 160, 161, 160, 161, 161,
- 4, 162, 176, 4, 177, 183, 186, 191,
- 197, 207, 220, 240, 244, 161, 160, 161,
- 163, 160, 161, 164, 160, 161, 165, 160,
- 161, 166, 160, 161, 167, 160, 161, 168,
- 160, 161, 169, 160, 161, 170, 160, 161,
- 171, 160, 161, 172, 160, 161, 173, 160,
- 161, 174, 160, 161, 175, 160, 161, 4,
- 160, 161, 61, 160, 161, 178, 160, 161,
- 179, 160, 161, 180, 160, 161, 181, 160,
- 161, 182, 160, 161, 176, 160, 161, 184,
- 160, 161, 185, 160, 161, 176, 160, 161,
- 187, 188, 160, 161, 176, 160, 161, 189,
- 160, 161, 190, 160, 161, 185, 160, 161,
- 192, 160, 161, 193, 160, 161, 194, 160,
- 161, 195, 160, 161, 196, 160, 161, 61,
- 160, 161, 198, 160, 161, 199, 203, 160,
- 161, 200, 160, 161, 201, 160, 161, 202,
- 160, 161, 196, 160, 161, 204, 160, 161,
- 205, 160, 161, 206, 160, 161, 187, 160,
- 161, 208, 160, 161, 209, 160, 161, 210,
- 160, 161, 211, 160, 161, 212, 160, 161,
- 213, 160, 161, 214, 160, 161, 215, 160,
- 161, 216, 160, 161, 217, 160, 161, 218,
- 160, 161, 219, 160, 161, 196, 160, 161,
- 221, 222, 160, 161, 182, 160, 161, 223,
- 160, 161, 224, 160, 161, 225, 160, 161,
- 226, 160, 161, 227, 160, 161, 228, 160,
- 161, 229, 160, 161, 230, 160, 161, 231,
- 160, 161, 232, 160, 161, 233, 160, 161,
- 234, 160, 161, 235, 160, 161, 236, 160,
- 161, 237, 160, 161, 238, 160, 161, 239,
- 160, 161, 196, 160, 161, 235, 241, 160,
- 161, 242, 160, 161, 243, 160, 161, 195,
- 160, 161, 245, 246, 160, 161, 185, 160,
- 161, 247, 256, 160, 161, 248, 160, 161,
- 249, 160, 161, 250, 160, 161, 251, 160,
- 161, 252, 160, 161, 253, 160, 161, 254,
- 240, 160, 161, 255, 160, 161, 199, 160,
- 161, 245, 160, 258, 0, 259, 0, 260,
- 0, 63, 0, 262, 0, 263, 0, 264,
- 0, 265, 0, 266, 0, 267, 0, 268,
- 0, 269, 0, 270, 0, 271, 0, 272,
- 0, 273, 0, 274, 0, 275, 0, 277,
- 276, 277, 276, 277, 277, 4, 278, 292,
- 4, 293, 299, 302, 307, 313, 323, 343,
- 347, 277, 276, 277, 279, 276, 277, 280,
- 276, 277, 281, 276, 277, 282, 276, 277,
- 283, 276, 277, 284, 276, 277, 285, 276,
- 277, 286, 276, 277, 287, 276, 277, 288,
- 276, 277, 289, 276, 277, 290, 276, 277,
- 291, 276, 277, 4, 276, 277, 61, 276,
- 277, 294, 276, 277, 295, 276, 277, 296,
- 276, 277, 297, 276, 277, 298, 276, 277,
- 292, 276, 277, 300, 276, 277, 301, 276,
- 277, 292, 276, 277, 303, 304, 276, 277,
- 292, 276, 277, 305, 276, 277, 306, 276,
- 277, 301, 276, 277, 308, 276, 277, 309,
- 276, 277, 310, 276, 277, 311, 276, 277,
- 312, 276, 277, 61, 276, 277, 314, 276,
- 277, 315, 319, 276, 277, 316, 276, 277,
- 317, 276, 277, 318, 276, 277, 312, 276,
- 277, 320, 276, 277, 321, 276, 277, 322,
- 276, 277, 303, 276, 277, 324, 325, 276,
- 277, 298, 276, 277, 326, 276, 277, 327,
- 276, 277, 328, 276, 277, 329, 276, 277,
- 330, 276, 277, 331, 276, 277, 332, 276,
- 277, 333, 276, 277, 334, 276, 277, 335,
- 276, 277, 336, 276, 277, 337, 276, 277,
- 338, 276, 277, 339, 276, 277, 340, 276,
- 277, 341, 276, 277, 342, 276, 277, 312,
- 276, 277, 338, 344, 276, 277, 345, 276,
- 277, 346, 276, 277, 311, 276, 277, 348,
- 349, 276, 277, 301, 276, 277, 350, 359,
- 276, 277, 351, 276, 277, 352, 276, 277,
- 353, 276, 277, 354, 276, 277, 355, 276,
- 277, 356, 276, 277, 357, 343, 276, 277,
- 358, 276, 277, 315, 276, 277, 348, 276,
- 361, 362, 0, 42, 0, 363, 0, 364,
- 0, 365, 0, 366, 0, 367, 0, 368,
- 0, 369, 0, 370, 0, 371, 0, 372,
- 0, 373, 0, 374, 0, 375, 0, 376,
- 0, 377, 0, 378, 0, 379, 0, 380,
- 0, 381, 0, 383, 382, 383, 382, 383,
- 383, 4, 384, 398, 4, 399, 405, 408,
- 413, 419, 429, 431, 440, 383, 382, 383,
- 385, 382, 383, 386, 382, 383, 387, 382,
- 383, 388, 382, 383, 389, 382, 383, 390,
- 382, 383, 391, 382, 383, 392, 382, 383,
- 393, 382, 383, 394, 382, 383, 395, 382,
- 383, 396, 382, 383, 397, 382, 383, 4,
- 382, 383, 61, 382, 383, 400, 382, 383,
- 401, 382, 383, 402, 382, 383, 403, 382,
- 383, 404, 382, 383, 398, 382, 383, 406,
- 382, 383, 407, 382, 383, 398, 382, 383,
- 409, 410, 382, 383, 398, 382, 383, 411,
- 382, 383, 412, 382, 383, 407, 382, 383,
- 414, 382, 383, 415, 382, 383, 416, 382,
- 383, 417, 382, 383, 418, 382, 383, 61,
- 382, 383, 420, 382, 383, 421, 425, 382,
- 383, 422, 382, 383, 423, 382, 383, 424,
- 382, 383, 418, 382, 383, 426, 382, 383,
- 427, 382, 383, 428, 382, 383, 409, 382,
- 383, 430, 382, 383, 404, 382, 383, 432,
- 437, 382, 383, 433, 382, 383, 434, 382,
- 383, 435, 382, 383, 436, 382, 383, 418,
- 382, 383, 438, 382, 383, 439, 382, 383,
- 417, 382, 383, 441, 442, 382, 383, 407,
- 382, 383, 443, 382, 383, 441, 382, 445,
- 450, 0, 446, 0, 447, 0, 448, 0,
- 449, 0, 158, 0, 451, 0, 452, 0,
- 453, 0, 158, 0, 455, 456, 0, 45,
- 0, 457, 475, 0, 458, 0, 459, 0,
- 460, 0, 461, 0, 462, 0, 463, 0,
- 464, 470, 0, 465, 0, 466, 0, 467,
- 0, 468, 0, 469, 0, 380, 0, 375,
- 471, 0, 472, 0, 473, 0, 474, 0,
- 380, 0, 455, 0, 476, 477, 476, 0,
- 481, 480, 479, 477, 480, 478, 0, 479,
- 477, 478, 0, 479, 478, 481, 480, 479,
- 477, 480, 478, 481, 481, 5, 15, 17,
- 31, 34, 37, 43, 46, 62, 67, 152,
- 261, 360, 444, 454, 476, 481, 0, 0,
- 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 29, 29, 35, 0, 43, 0, 43, 0,
- 43, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 29, 29, 35, 0, 43, 0, 43, 0,
- 43, 139, 48, 9, 106, 11, 0, 134,
- 45, 45, 45, 3, 122, 33, 33, 33,
- 0, 122, 33, 33, 33, 0, 122, 33,
- 0, 33, 0, 102, 7, 7, 43, 54,
- 0, 0, 43, 114, 25, 0, 54, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 149, 126,
- 57, 110, 23, 0, 43, 43, 43, 43,
- 0, 27, 118, 27, 27, 51, 27, 0,
- 54, 0, 1, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 81, 84, 81, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 21, 0,
- 130, 31, 60, 57, 31, 63, 57, 63,
- 63, 63, 63, 63, 63, 63, 63, 63,
- 63, 66, 31, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 69, 33, 69, 84, 84, 84, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 13,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 75, 33, 84, 75, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 17,
- 0, 54, 17, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 17,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 72, 33, 84,
- 72, 84, 84, 84, 84, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 15, 0, 54, 15, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 15, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 78, 33, 84, 78, 84, 84, 84,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 19,
- 0, 54, 19, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 19,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0, 0, 43,
- 54, 37, 37, 87, 37, 37, 43, 0,
- 39, 0, 43, 0, 0, 54, 0, 0,
- 39, 0, 0, 54, 0, 93, 90, 41,
- 96, 90, 96, 96, 96, 96, 96, 96,
- 96, 96, 96, 96, 99, 0, 43, 0,
- 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 482;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/bm.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 1120 "ext/gherkin_lexer_bm/gherkin_lexer_bm.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/bm.c.rl"
-
-#line 1127 "ext/gherkin_lexer_bm/gherkin_lexer_bm.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/bm.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/bm.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/bm.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/bm.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/bm.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/bm.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/bm.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/bm.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/bm.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/bm.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/bm.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/bm.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/bm.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/bm.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/bm.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/bm.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/bm.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/bm.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/bm.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/bm.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/bm.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/bm.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/bm.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/bm.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1417 "ext/gherkin_lexer_bm/gherkin_lexer_bm.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/bm.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1480 "ext/gherkin_lexer_bm/gherkin_lexer_bm.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/bm.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_bm()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Bm", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_ca/extconf.rb
index a3ee0fe,a3ee0fe..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_ca/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_ca")
--have_library("c", "main")
--create_makefile("gherkin_lexer_ca")
diff --cc ext/gherkin_lexer_ca/gherkin_lexer_ca.c
index 7b85358,a47c99a..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_ca/gherkin_lexer_ca.c
+++ /dev/null
@@@ -1,1581 -1,1581 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 20, 21, 22, 41, 42, 43,
- 45, 47, 52, 57, 62, 67, 71, 75,
- 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 95, 97, 102, 109, 114, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 152, 154, 156, 158, 160, 162,
- 164, 166, 168, 170, 172, 174, 176, 178,
- 180, 182, 201, 202, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 218, 219, 231, 233, 235, 237,
- 239, 241, 243, 245, 247, 249, 251, 253,
- 255, 257, 259, 261, 263, 265, 267, 269,
- 271, 273, 275, 277, 279, 281, 283, 285,
- 287, 289, 291, 293, 295, 297, 299, 301,
- 303, 305, 307, 309, 312, 315, 317, 319,
- 321, 323, 325, 327, 329, 331, 333, 335,
- 337, 339, 341, 343, 345, 347, 349, 351,
- 353, 355, 357, 359, 361, 363, 365, 367,
- 369, 371, 373, 375, 377, 379, 381, 383,
- 385, 387, 389, 391, 393, 395, 397, 398,
- 399, 400, 402, 403, 405, 407, 408, 409,
- 410, 411, 412, 413, 414, 415, 432, 434,
- 436, 438, 440, 442, 444, 446, 448, 450,
- 452, 454, 456, 458, 460, 462, 466, 468,
- 470, 472, 474, 476, 478, 480, 482, 484,
- 486, 488, 490, 492, 494, 496, 498, 500,
- 503, 505, 507, 509, 511, 514, 516, 518,
- 520, 522, 524, 526, 528, 530, 532, 534,
- 536, 538, 540, 542, 544, 547, 549, 552,
- 554, 556, 558, 560, 562, 564, 566, 568,
- 570, 572, 574, 576, 578, 580, 582, 584,
- 586, 588, 590, 592, 594, 596, 598, 600,
- 602, 604, 606, 608, 610, 612, 614, 616,
- 618, 620, 622, 624, 626, 628, 630, 632,
- 634, 636, 638, 639, 640, 641, 642, 643,
- 644, 645, 646, 647, 648, 649, 650, 651,
- 652, 653, 654, 655, 656, 657, 658, 659,
- 675, 677, 679, 681, 683, 685, 687, 689,
- 691, 693, 695, 697, 699, 701, 703, 705,
- 708, 710, 712, 714, 716, 718, 720, 722,
- 725, 727, 729, 731, 733, 736, 738, 740,
- 742, 744, 746, 748, 750, 752, 754, 756,
- 758, 760, 762, 764, 766, 768, 771, 773,
- 775, 777, 779, 781, 783, 785, 787, 789,
- 791, 793, 795, 797, 799, 801, 803, 805,
- 807, 809, 811, 813, 815, 817, 819, 821,
- 823, 824, 825, 826, 827, 828, 829, 830,
- 831, 832, 840, 842, 844, 846, 848, 850,
- 852, 854, 856, 858, 860, 862, 864, 866,
- 868, 870, 872, 874, 876, 878, 880, 882,
- 884, 886, 888, 890, 892, 894, 895, 896,
- 897, 898, 899, 900, 901, 902, 903, 904,
- 905, 906, 907, 908, 909, 910, 911, 912,
- 913, 914, 915, 916, 917, 918, 919, 923,
- 929, 932, 934, 940, 959, 962, 964, 966,
- 968, 970, 972, 974, 976, 979, 981, 983,
- 985, 987, 990, 992, 994, 996, 998, 1000,
- 1002, 1004, 1006, 1008, 1010, 1012, 1014, 1016,
- 1018, 1020, 1022, 1025, 1027, 1030, 1032, 1034,
- 1036, 1038, 1040, 1042, 1044, 1046, 1048, 1050,
- 1052, 1054, 1056, 1058, 1060, 1062, 1064, 1066,
- 1068, 1070, 1072, 1074, 1076, 1078, 1080, 1082,
- 1084, 1086, 1088, 1090, 1092, 1094, 1096, 1098,
- 1100, 1102, 1104, 1106, 1107, 1108
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 67, 68, 69, 70, 73, 80, 81,
- 82, 124, 9, 13, -69, -65, 10, 32,
- 34, 35, 37, 42, 64, 65, 67, 68,
- 69, 70, 73, 80, 81, 82, 124, 9,
- 13, 34, 34, 10, 13, 10, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 9, 13, 10,
- 32, 9, 13, 10, 13, 10, 95, 70,
- 69, 65, 84, 85, 82, 69, 95, 69,
- 78, 68, 95, 37, 32, 10, 13, 10,
- 13, 13, 32, 64, 9, 10, 9, 10,
- 13, 32, 64, 11, 12, 10, 32, 64,
- 9, 13, 108, 110, 116, 101, 115, 104,
- 111, 114, 101, 115, 116, 101, 99, 101,
- 100, 101, 110, 116, 115, 58, 10, 10,
- 10, 32, 35, 37, 42, 64, 65, 67,
- 68, 69, 70, 73, 80, 81, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 32,
- 34, 35, 37, 42, 64, 65, 67, 68,
- 69, 70, 73, 80, 81, 82, 124, 9,
- 13, 97, 108, 114, 97, 99, 116, 101,
- 114, -61, -83, 115, 116, 105, 99, 97,
- 58, 10, 10, 10, 32, 35, 37, 64,
- 65, 67, 69, 70, 82, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 110, 10, 116, 10,
- 101, 10, 99, 10, 101, 10, 100, 10,
- 101, 10, 110, 10, 116, 10, 115, 10,
- 58, 10, 97, 10, 114, 10, 97, 10,
- 99, 10, 116, 10, 101, 10, 114, -61,
- 10, -83, 10, 10, 115, 10, 116, 10,
- 105, 10, 99, 10, 97, 10, 115, 120,
- 10, 99, 113, 10, 101, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 117, 10,
- 101, 10, 109, 10, 97, 10, 32, 10,
- 100, 10, 101, 10, 32, 10, 108, 10,
- 39, 10, 101, 10, 115, 10, 99, 10,
- 101, 10, 109, 10, 112, 10, 108, 10,
- 101, 10, 117, 10, 110, 10, 99, 10,
- 105, 10, 111, 10, 110, 10, 97, 10,
- 108, 10, 105, 10, 116, 10, 97, 10,
- 116, 10, 101, 10, 114, 10, 101, 10,
- 102, 10, 111, 10, 110, 111, 110, 97,
- 100, 116, 97, 115, 120, 99, 113, 101,
- 110, 97, 114, 105, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 65, 67, 68,
- 69, 70, 73, 80, 81, 82, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 108,
- 110, 116, 10, 101, 10, 115, 10, 104,
- 10, 111, 10, 114, 10, 101, 10, 115,
- 10, 116, 10, 101, 10, 99, 10, 101,
- 10, 100, 10, 101, 10, 110, 10, 116,
- 10, 115, 10, 58, -61, 10, 101, -88,
- 10, 10, 115, 10, 97, 10, 97, 10,
- 108, 114, 10, 97, 10, 99, 10, 116,
- 10, 101, 10, 114, -61, 10, -83, 10,
- 10, 115, 10, 116, 10, 105, 10, 99,
- 10, 97, 10, 111, 10, 110, 10, 97,
- 10, 100, 116, 10, 115, 10, 99, 113,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 117, 10, 101, 10, 109,
- 10, 97, 10, 32, 10, 100, 10, 101,
- 10, 32, 10, 108, 10, 39, 10, 101,
- 10, 115, 10, 99, 10, 117, 10, 110,
- 10, 99, 10, 105, 10, 111, 10, 110,
- 10, 97, 10, 108, 10, 105, 10, 116,
- 10, 97, 10, 116, 10, 101, 10, 114,
- -61, 10, -78, 10, 10, 117, 10, 97,
- 10, 110, 10, 101, 10, 114, 10, 101,
- 10, 102, 10, 111, 10, 110, 117, 101,
- 109, 97, 32, 100, 101, 32, 108, 39,
- 101, 115, 99, 101, 110, 97, 114, 105,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 65, 67, 68, 69, 70, 73, 80,
- 81, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 108, 116, 10, 101, 10, 115,
- 10, 104, 10, 111, 10, 114, 10, 101,
- 10, 115, -61, 10, 101, -88, 10, 10,
- 115, 10, 97, 10, 97, 10, 108, 114,
- 10, 97, 10, 99, 10, 116, 10, 101,
- 10, 114, -61, 10, -83, 10, 10, 115,
- 10, 116, 10, 105, 10, 99, 10, 97,
- 10, 58, 10, 111, 10, 110, 10, 97,
- 10, 100, 116, 10, 115, 10, 99, 10,
- 101, 10, 110, 10, 97, 10, 114, 10,
- 105, 10, 117, 10, 110, 10, 99, 10,
- 105, 10, 111, 10, 110, 10, 97, 10,
- 108, 10, 105, 10, 116, 10, 97, 10,
- 116, 10, 101, 10, 114, -61, 10, -78,
- 10, 10, 117, 10, 97, 10, 110, 101,
- 109, 112, 108, 101, 115, 58, 10, 10,
- 10, 32, 35, 67, 70, 124, 9, 13,
- 10, 97, 10, 114, 10, 97, 10, 99,
- 10, 116, 10, 101, 10, 114, -61, 10,
- -83, 10, 10, 115, 10, 116, 10, 105,
- 10, 99, 10, 97, 10, 58, 10, 117,
- 10, 110, 10, 99, 10, 105, 10, 111,
- 10, 110, 10, 97, 10, 108, 10, 105,
- 10, 116, 10, 97, 10, 116, 117, 110,
- 99, 105, 111, 110, 97, 108, 105, 116,
- 97, 116, 101, 114, -61, -78, 117, 97,
- 110, 101, 114, 101, 102, 111, 110, 32,
- 124, 9, 13, 10, 32, 92, 124, 9,
- 13, 10, 92, 124, 10, 92, 10, 32,
- 92, 124, 9, 13, 10, 32, 34, 35,
- 37, 42, 64, 65, 67, 68, 69, 70,
- 73, 80, 81, 82, 124, 9, 13, 10,
- 108, 116, 10, 101, 10, 115, 10, 104,
- 10, 111, 10, 114, 10, 101, 10, 115,
- -61, 10, 101, -88, 10, 10, 115, 10,
- 97, 10, 97, 10, 108, 114, 10, 97,
- 10, 99, 10, 116, 10, 101, 10, 114,
- -61, 10, -83, 10, 10, 115, 10, 116,
- 10, 105, 10, 99, 10, 97, 10, 58,
- 10, 111, 10, 110, 10, 97, 10, 100,
- 116, 10, 115, 10, 99, 113, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 117, 10, 101, 10, 109, 10, 97,
- 10, 32, 10, 100, 10, 101, 10, 32,
- 10, 108, 10, 39, 10, 101, 10, 115,
- 10, 99, 10, 117, 10, 110, 10, 99,
- 10, 105, 10, 111, 10, 110, 10, 97,
- 10, 108, 10, 105, 10, 116, 10, 97,
- 10, 116, 10, 101, 10, 114, -61, 10,
- -78, 10, 10, 117, 10, 97, 10, 110,
- -61, 101, -88, 115, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 18, 1, 1, 17, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 3, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 14, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 17, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 10, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 2, 1, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 15, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 14,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 6, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 4,
- 3, 2, 4, 17, 3, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 1,
- 0, 0, 1, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 20, 22, 24, 43, 45, 47,
- 50, 53, 58, 63, 68, 73, 77, 81,
- 84, 86, 88, 90, 92, 94, 96, 98,
- 100, 102, 104, 106, 108, 110, 112, 114,
- 116, 119, 122, 127, 134, 139, 143, 145,
- 147, 149, 151, 153, 155, 157, 159, 161,
- 163, 165, 167, 169, 171, 173, 175, 177,
- 179, 181, 197, 200, 203, 206, 209, 212,
- 215, 218, 221, 224, 227, 230, 233, 236,
- 239, 242, 261, 263, 266, 268, 270, 272,
- 274, 276, 278, 280, 282, 284, 286, 288,
- 290, 292, 294, 296, 308, 311, 314, 317,
- 320, 323, 326, 329, 332, 335, 338, 341,
- 344, 347, 350, 353, 356, 359, 362, 365,
- 368, 371, 374, 377, 380, 383, 386, 389,
- 392, 395, 398, 401, 404, 407, 410, 413,
- 416, 419, 422, 425, 429, 433, 436, 439,
- 442, 445, 448, 451, 454, 457, 460, 463,
- 466, 469, 472, 475, 478, 481, 484, 487,
- 490, 493, 496, 499, 502, 505, 508, 511,
- 514, 517, 520, 523, 526, 529, 532, 535,
- 538, 541, 544, 547, 550, 553, 556, 558,
- 560, 562, 565, 567, 570, 573, 575, 577,
- 579, 581, 583, 585, 587, 589, 606, 609,
- 612, 615, 618, 621, 624, 627, 630, 633,
- 636, 639, 642, 645, 648, 651, 656, 659,
- 662, 665, 668, 671, 674, 677, 680, 683,
- 686, 689, 692, 695, 698, 701, 704, 707,
- 711, 714, 717, 720, 723, 727, 730, 733,
- 736, 739, 742, 745, 748, 751, 754, 757,
- 760, 763, 766, 769, 772, 776, 779, 783,
- 786, 789, 792, 795, 798, 801, 804, 807,
- 810, 813, 816, 819, 822, 825, 828, 831,
- 834, 837, 840, 843, 846, 849, 852, 855,
- 858, 861, 864, 867, 870, 873, 876, 879,
- 882, 885, 888, 891, 894, 897, 900, 903,
- 906, 909, 912, 914, 916, 918, 920, 922,
- 924, 926, 928, 930, 932, 934, 936, 938,
- 940, 942, 944, 946, 948, 950, 952, 954,
- 970, 973, 976, 979, 982, 985, 988, 991,
- 994, 997, 1000, 1003, 1006, 1009, 1012, 1015,
- 1019, 1022, 1025, 1028, 1031, 1034, 1037, 1040,
- 1044, 1047, 1050, 1053, 1056, 1060, 1063, 1066,
- 1069, 1072, 1075, 1078, 1081, 1084, 1087, 1090,
- 1093, 1096, 1099, 1102, 1105, 1108, 1112, 1115,
- 1118, 1121, 1124, 1127, 1130, 1133, 1136, 1139,
- 1142, 1145, 1148, 1151, 1154, 1157, 1160, 1163,
- 1166, 1169, 1172, 1175, 1178, 1181, 1184, 1187,
- 1190, 1192, 1194, 1196, 1198, 1200, 1202, 1204,
- 1206, 1208, 1216, 1219, 1222, 1225, 1228, 1231,
- 1234, 1237, 1240, 1243, 1246, 1249, 1252, 1255,
- 1258, 1261, 1264, 1267, 1270, 1273, 1276, 1279,
- 1282, 1285, 1288, 1291, 1294, 1297, 1299, 1301,
- 1303, 1305, 1307, 1309, 1311, 1313, 1315, 1317,
- 1319, 1321, 1323, 1325, 1327, 1329, 1331, 1333,
- 1335, 1337, 1339, 1341, 1343, 1345, 1347, 1351,
- 1357, 1361, 1364, 1370, 1389, 1393, 1396, 1399,
- 1402, 1405, 1408, 1411, 1414, 1418, 1421, 1424,
- 1427, 1430, 1434, 1437, 1440, 1443, 1446, 1449,
- 1452, 1455, 1458, 1461, 1464, 1467, 1470, 1473,
- 1476, 1479, 1482, 1486, 1489, 1493, 1496, 1499,
- 1502, 1505, 1508, 1511, 1514, 1517, 1520, 1523,
- 1526, 1529, 1532, 1535, 1538, 1541, 1544, 1547,
- 1550, 1553, 1556, 1559, 1562, 1565, 1568, 1571,
- 1574, 1577, 1580, 1583, 1586, 1589, 1592, 1595,
- 1598, 1601, 1604, 1607, 1609, 1611
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 74, 174, 179, 421, 31, 433, 437,
- 440, 446, 4, 0, 3, 0, 4, 0,
- 4, 4, 5, 15, 17, 31, 34, 37,
- 74, 174, 179, 421, 31, 433, 437, 440,
- 446, 4, 0, 6, 0, 7, 0, 9,
- 8, 8, 9, 8, 8, 10, 10, 11,
- 10, 10, 10, 10, 11, 10, 10, 10,
- 10, 12, 10, 10, 10, 10, 13, 10,
- 10, 4, 14, 14, 0, 4, 14, 14,
- 0, 4, 16, 15, 4, 0, 18, 0,
- 19, 0, 20, 0, 21, 0, 22, 0,
- 23, 0, 24, 0, 25, 0, 26, 0,
- 27, 0, 28, 0, 29, 0, 30, 0,
- 525, 0, 32, 0, 4, 16, 33, 4,
- 16, 33, 0, 0, 0, 0, 35, 36,
- 4, 36, 36, 34, 35, 35, 4, 36,
- 34, 36, 0, 38, 45, 522, 0, 39,
- 0, 40, 0, 41, 0, 42, 0, 43,
- 0, 44, 0, 31, 0, 46, 0, 47,
- 0, 48, 0, 49, 0, 50, 0, 51,
- 0, 52, 0, 53, 0, 54, 0, 55,
- 0, 57, 56, 57, 56, 57, 57, 4,
- 58, 72, 4, 452, 464, 479, 483, 503,
- 72, 515, 519, 57, 56, 57, 59, 56,
- 57, 60, 56, 57, 61, 56, 57, 62,
- 56, 57, 63, 56, 57, 64, 56, 57,
- 65, 56, 57, 66, 56, 57, 67, 56,
- 57, 68, 56, 57, 69, 56, 57, 70,
- 56, 57, 71, 56, 57, 4, 56, 57,
- 73, 56, 4, 4, 5, 15, 17, 31,
- 34, 37, 74, 174, 179, 421, 31, 433,
- 437, 440, 446, 4, 0, 75, 0, 31,
- 76, 0, 77, 0, 78, 0, 79, 0,
- 80, 0, 81, 0, 82, 0, 83, 0,
- 84, 0, 85, 0, 86, 0, 87, 0,
- 88, 0, 89, 0, 91, 90, 91, 90,
- 91, 91, 4, 92, 4, 106, 117, 131,
- 156, 168, 91, 90, 91, 93, 90, 91,
- 94, 90, 91, 95, 90, 91, 96, 90,
- 91, 97, 90, 91, 98, 90, 91, 99,
- 90, 91, 100, 90, 91, 101, 90, 91,
- 102, 90, 91, 103, 90, 91, 104, 90,
- 91, 105, 90, 91, 4, 90, 91, 107,
- 90, 91, 108, 90, 91, 109, 90, 91,
- 110, 90, 91, 111, 90, 91, 112, 90,
- 91, 113, 90, 91, 114, 90, 91, 115,
- 90, 91, 116, 90, 91, 73, 90, 91,
- 118, 90, 91, 119, 90, 91, 120, 90,
- 91, 121, 90, 91, 122, 90, 91, 123,
- 90, 91, 124, 90, 125, 91, 90, 126,
- 91, 90, 91, 127, 90, 91, 128, 90,
- 91, 129, 90, 91, 130, 90, 91, 116,
- 90, 91, 132, 151, 90, 91, 133, 138,
- 90, 91, 134, 90, 91, 135, 90, 91,
- 136, 90, 91, 137, 90, 91, 116, 90,
- 91, 139, 90, 91, 140, 90, 91, 141,
- 90, 91, 142, 90, 91, 143, 90, 91,
- 144, 90, 91, 145, 90, 91, 146, 90,
- 91, 147, 90, 91, 148, 90, 91, 149,
- 90, 91, 150, 90, 91, 133, 90, 91,
- 152, 90, 91, 153, 90, 91, 154, 90,
- 91, 155, 90, 91, 115, 90, 91, 157,
- 90, 91, 158, 90, 91, 159, 90, 91,
- 160, 90, 91, 161, 90, 91, 162, 90,
- 91, 163, 90, 91, 164, 90, 91, 165,
- 90, 91, 166, 90, 91, 167, 90, 91,
- 116, 90, 91, 169, 90, 91, 170, 90,
- 91, 171, 90, 91, 172, 90, 91, 173,
- 90, 91, 115, 90, 175, 0, 176, 0,
- 177, 0, 178, 31, 0, 31, 0, 180,
- 384, 0, 181, 290, 0, 182, 0, 183,
- 0, 184, 0, 185, 0, 186, 0, 187,
- 0, 189, 188, 189, 188, 189, 189, 4,
- 190, 204, 4, 205, 227, 241, 245, 265,
- 204, 277, 281, 284, 189, 188, 189, 191,
- 188, 189, 192, 188, 189, 193, 188, 189,
- 194, 188, 189, 195, 188, 189, 196, 188,
- 189, 197, 188, 189, 198, 188, 189, 199,
- 188, 189, 200, 188, 189, 201, 188, 189,
- 202, 188, 189, 203, 188, 189, 4, 188,
- 189, 73, 188, 189, 206, 213, 223, 188,
- 189, 207, 188, 189, 208, 188, 189, 209,
- 188, 189, 210, 188, 189, 211, 188, 189,
- 212, 188, 189, 204, 188, 189, 214, 188,
- 189, 215, 188, 189, 216, 188, 189, 217,
- 188, 189, 218, 188, 189, 219, 188, 189,
- 220, 188, 189, 221, 188, 189, 222, 188,
- 189, 73, 188, 224, 189, 225, 188, 212,
- 189, 188, 189, 226, 188, 189, 204, 188,
- 189, 228, 188, 189, 204, 229, 188, 189,
- 230, 188, 189, 231, 188, 189, 232, 188,
- 189, 233, 188, 189, 234, 188, 235, 189,
- 188, 236, 189, 188, 189, 237, 188, 189,
- 238, 188, 189, 239, 188, 189, 240, 188,
- 189, 222, 188, 189, 242, 188, 189, 243,
- 188, 189, 244, 188, 189, 226, 204, 188,
- 189, 246, 188, 189, 247, 252, 188, 189,
- 248, 188, 189, 249, 188, 189, 250, 188,
- 189, 251, 188, 189, 222, 188, 189, 253,
- 188, 189, 254, 188, 189, 255, 188, 189,
- 256, 188, 189, 257, 188, 189, 258, 188,
- 189, 259, 188, 189, 260, 188, 189, 261,
- 188, 189, 262, 188, 189, 263, 188, 189,
- 264, 188, 189, 247, 188, 189, 266, 188,
- 189, 267, 188, 189, 268, 188, 189, 269,
- 188, 189, 270, 188, 189, 271, 188, 189,
- 272, 188, 189, 273, 188, 189, 274, 188,
- 189, 275, 188, 189, 276, 188, 189, 222,
- 188, 189, 278, 188, 189, 279, 188, 280,
- 189, 188, 204, 189, 188, 189, 282, 188,
- 189, 283, 188, 189, 204, 188, 189, 285,
- 188, 189, 286, 188, 189, 287, 188, 189,
- 288, 188, 189, 289, 188, 189, 221, 188,
- 291, 0, 292, 0, 293, 0, 294, 0,
- 295, 0, 296, 0, 297, 0, 298, 0,
- 299, 0, 300, 0, 301, 0, 302, 0,
- 303, 0, 304, 0, 305, 0, 306, 0,
- 307, 0, 308, 0, 309, 0, 311, 310,
- 311, 310, 311, 311, 4, 312, 326, 4,
- 327, 339, 354, 358, 365, 326, 377, 381,
- 311, 310, 311, 313, 310, 311, 314, 310,
- 311, 315, 310, 311, 316, 310, 311, 317,
- 310, 311, 318, 310, 311, 319, 310, 311,
- 320, 310, 311, 321, 310, 311, 322, 310,
- 311, 323, 310, 311, 324, 310, 311, 325,
- 310, 311, 4, 310, 311, 73, 310, 311,
- 328, 335, 310, 311, 329, 310, 311, 330,
- 310, 311, 331, 310, 311, 332, 310, 311,
- 333, 310, 311, 334, 310, 311, 326, 310,
- 336, 311, 337, 310, 334, 311, 310, 311,
- 338, 310, 311, 326, 310, 311, 340, 310,
- 311, 326, 341, 310, 311, 342, 310, 311,
- 343, 310, 311, 344, 310, 311, 345, 310,
- 311, 346, 310, 347, 311, 310, 348, 311,
- 310, 311, 349, 310, 311, 350, 310, 311,
- 351, 310, 311, 352, 310, 311, 353, 310,
- 311, 73, 310, 311, 355, 310, 311, 356,
- 310, 311, 357, 310, 311, 338, 326, 310,
- 311, 359, 310, 311, 360, 310, 311, 361,
- 310, 311, 362, 310, 311, 363, 310, 311,
- 364, 310, 311, 353, 310, 311, 366, 310,
- 311, 367, 310, 311, 368, 310, 311, 369,
- 310, 311, 370, 310, 311, 371, 310, 311,
- 372, 310, 311, 373, 310, 311, 374, 310,
- 311, 375, 310, 311, 376, 310, 311, 353,
- 310, 311, 378, 310, 311, 379, 310, 380,
- 311, 310, 326, 311, 310, 311, 382, 310,
- 311, 383, 310, 311, 326, 310, 385, 0,
- 386, 0, 387, 0, 388, 0, 389, 0,
- 390, 0, 391, 0, 393, 392, 393, 392,
- 393, 393, 4, 394, 409, 4, 393, 392,
- 393, 395, 392, 393, 396, 392, 393, 397,
- 392, 393, 398, 392, 393, 399, 392, 393,
- 400, 392, 393, 401, 392, 402, 393, 392,
- 403, 393, 392, 393, 404, 392, 393, 405,
- 392, 393, 406, 392, 393, 407, 392, 393,
- 408, 392, 393, 73, 392, 393, 410, 392,
- 393, 411, 392, 393, 412, 392, 393, 413,
- 392, 393, 414, 392, 393, 415, 392, 393,
- 416, 392, 393, 417, 392, 393, 418, 392,
- 393, 419, 392, 393, 420, 392, 393, 408,
- 392, 422, 0, 423, 0, 424, 0, 425,
- 0, 426, 0, 427, 0, 428, 0, 429,
- 0, 430, 0, 431, 0, 432, 0, 88,
- 0, 434, 0, 435, 0, 436, 0, 31,
- 0, 438, 0, 439, 0, 31, 0, 441,
- 0, 442, 0, 443, 0, 444, 0, 445,
- 0, 53, 0, 446, 447, 446, 0, 451,
- 450, 449, 447, 450, 448, 0, 449, 447,
- 448, 0, 449, 448, 451, 450, 449, 447,
- 450, 448, 451, 451, 5, 15, 17, 31,
- 34, 37, 74, 174, 179, 421, 31, 433,
- 437, 440, 446, 451, 0, 57, 453, 460,
- 56, 57, 454, 56, 57, 455, 56, 57,
- 456, 56, 57, 457, 56, 57, 458, 56,
- 57, 459, 56, 57, 72, 56, 461, 57,
- 462, 56, 459, 57, 56, 57, 463, 56,
- 57, 72, 56, 57, 465, 56, 57, 72,
- 466, 56, 57, 467, 56, 57, 468, 56,
- 57, 469, 56, 57, 470, 56, 57, 471,
- 56, 472, 57, 56, 473, 57, 56, 57,
- 474, 56, 57, 475, 56, 57, 476, 56,
- 57, 477, 56, 57, 478, 56, 57, 73,
- 56, 57, 480, 56, 57, 481, 56, 57,
- 482, 56, 57, 463, 72, 56, 57, 484,
- 56, 57, 485, 490, 56, 57, 486, 56,
- 57, 487, 56, 57, 488, 56, 57, 489,
- 56, 57, 478, 56, 57, 491, 56, 57,
- 492, 56, 57, 493, 56, 57, 494, 56,
- 57, 495, 56, 57, 496, 56, 57, 497,
- 56, 57, 498, 56, 57, 499, 56, 57,
- 500, 56, 57, 501, 56, 57, 502, 56,
- 57, 485, 56, 57, 504, 56, 57, 505,
- 56, 57, 506, 56, 57, 507, 56, 57,
- 508, 56, 57, 509, 56, 57, 510, 56,
- 57, 511, 56, 57, 512, 56, 57, 513,
- 56, 57, 514, 56, 57, 478, 56, 57,
- 516, 56, 57, 517, 56, 518, 57, 56,
- 72, 57, 56, 57, 520, 56, 57, 521,
- 56, 57, 72, 56, 523, 524, 0, 44,
- 0, 178, 0, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 29, 35, 0, 43, 0, 43, 0, 43,
- 54, 0, 5, 1, 0, 29, 1, 29,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 139,
- 48, 9, 106, 11, 0, 134, 45, 45,
- 45, 3, 122, 33, 33, 33, 0, 122,
- 33, 33, 33, 0, 122, 33, 0, 33,
- 0, 102, 7, 7, 43, 54, 0, 0,
- 43, 114, 25, 0, 54, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 149, 126, 57, 110,
- 23, 0, 43, 43, 43, 43, 0, 27,
- 118, 27, 27, 51, 27, 0, 54, 0,
- 1, 0, 43, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 72,
- 33, 84, 72, 84, 84, 84, 84, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 15, 0, 130, 31, 60, 57, 31, 63,
- 57, 63, 63, 63, 63, 63, 63, 63,
- 63, 63, 66, 31, 43, 0, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 69, 33, 69, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 13, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 75,
- 33, 84, 75, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 17, 0, 54, 0, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 0, 54, 0, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 78, 33, 84, 78,
- 84, 84, 84, 84, 84, 84, 84, 84,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 19, 0, 54, 19, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 19, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 81, 84, 84, 81, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 21, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 0, 0, 43, 54,
- 37, 37, 87, 37, 37, 43, 0, 39,
- 0, 43, 0, 0, 54, 0, 0, 39,
- 0, 0, 54, 0, 93, 90, 41, 96,
- 90, 96, 96, 96, 96, 96, 96, 96,
- 96, 96, 99, 0, 43, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 525;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 1185 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
-
- #line 1192 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1482 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1545 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ca.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_ca()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Ca", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/ca.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/ca.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 20, 21, 22, 41, 42, 43,
- 45, 47, 52, 57, 62, 67, 71, 75,
- 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 95, 97, 102, 109, 114, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 152, 154, 156, 158, 160, 162,
- 164, 166, 168, 170, 172, 174, 176, 178,
- 180, 182, 201, 202, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 218, 219, 231, 233, 235, 237,
- 239, 241, 243, 245, 247, 249, 251, 253,
- 255, 257, 259, 261, 263, 265, 267, 269,
- 271, 273, 275, 277, 279, 281, 283, 285,
- 287, 289, 291, 293, 295, 297, 299, 301,
- 303, 305, 307, 309, 312, 315, 317, 319,
- 321, 323, 325, 327, 329, 331, 333, 335,
- 337, 339, 341, 343, 345, 347, 349, 351,
- 353, 355, 357, 359, 361, 363, 365, 367,
- 369, 371, 373, 375, 377, 379, 381, 383,
- 385, 387, 389, 391, 393, 395, 397, 398,
- 399, 400, 402, 403, 405, 407, 408, 409,
- 410, 411, 412, 413, 414, 415, 432, 434,
- 436, 438, 440, 442, 444, 446, 448, 450,
- 452, 454, 456, 458, 460, 462, 466, 468,
- 470, 472, 474, 476, 478, 480, 482, 484,
- 486, 488, 490, 492, 494, 496, 498, 500,
- 503, 505, 507, 509, 511, 514, 516, 518,
- 520, 522, 524, 526, 528, 530, 532, 534,
- 536, 538, 540, 542, 544, 547, 549, 552,
- 554, 556, 558, 560, 562, 564, 566, 568,
- 570, 572, 574, 576, 578, 580, 582, 584,
- 586, 588, 590, 592, 594, 596, 598, 600,
- 602, 604, 606, 608, 610, 612, 614, 616,
- 618, 620, 622, 624, 626, 628, 630, 632,
- 634, 636, 638, 639, 640, 641, 642, 643,
- 644, 645, 646, 647, 648, 649, 650, 651,
- 652, 653, 654, 655, 656, 657, 658, 659,
- 675, 677, 679, 681, 683, 685, 687, 689,
- 691, 693, 695, 697, 699, 701, 703, 705,
- 708, 710, 712, 714, 716, 718, 720, 722,
- 725, 727, 729, 731, 733, 736, 738, 740,
- 742, 744, 746, 748, 750, 752, 754, 756,
- 758, 760, 762, 764, 766, 768, 771, 773,
- 775, 777, 779, 781, 783, 785, 787, 789,
- 791, 793, 795, 797, 799, 801, 803, 805,
- 807, 809, 811, 813, 815, 817, 819, 821,
- 823, 824, 825, 826, 827, 828, 829, 830,
- 831, 832, 840, 842, 844, 846, 848, 850,
- 852, 854, 856, 858, 860, 862, 864, 866,
- 868, 870, 872, 874, 876, 878, 880, 882,
- 884, 886, 888, 890, 892, 894, 895, 896,
- 897, 898, 899, 900, 901, 902, 903, 904,
- 905, 906, 907, 908, 909, 910, 911, 912,
- 913, 914, 915, 916, 917, 918, 919, 923,
- 929, 932, 934, 940, 959, 962, 964, 966,
- 968, 970, 972, 974, 976, 979, 981, 983,
- 985, 987, 990, 992, 994, 996, 998, 1000,
- 1002, 1004, 1006, 1008, 1010, 1012, 1014, 1016,
- 1018, 1020, 1022, 1025, 1027, 1030, 1032, 1034,
- 1036, 1038, 1040, 1042, 1044, 1046, 1048, 1050,
- 1052, 1054, 1056, 1058, 1060, 1062, 1064, 1066,
- 1068, 1070, 1072, 1074, 1076, 1078, 1080, 1082,
- 1084, 1086, 1088, 1090, 1092, 1094, 1096, 1098,
- 1100, 1102, 1104, 1106, 1107, 1108
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 67, 68, 69, 70, 73, 80, 81,
- 82, 124, 9, 13, -69, -65, 10, 32,
- 34, 35, 37, 42, 64, 65, 67, 68,
- 69, 70, 73, 80, 81, 82, 124, 9,
- 13, 34, 34, 10, 13, 10, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 9, 13, 10,
- 32, 9, 13, 10, 13, 10, 95, 70,
- 69, 65, 84, 85, 82, 69, 95, 69,
- 78, 68, 95, 37, 32, 10, 13, 10,
- 13, 13, 32, 64, 9, 10, 9, 10,
- 13, 32, 64, 11, 12, 10, 32, 64,
- 9, 13, 108, 110, 116, 101, 115, 104,
- 111, 114, 101, 115, 116, 101, 99, 101,
- 100, 101, 110, 116, 115, 58, 10, 10,
- 10, 32, 35, 37, 42, 64, 65, 67,
- 68, 69, 70, 73, 80, 81, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 32,
- 34, 35, 37, 42, 64, 65, 67, 68,
- 69, 70, 73, 80, 81, 82, 124, 9,
- 13, 97, 108, 114, 97, 99, 116, 101,
- 114, -61, -83, 115, 116, 105, 99, 97,
- 58, 10, 10, 10, 32, 35, 37, 64,
- 65, 67, 69, 70, 82, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 110, 10, 116, 10,
- 101, 10, 99, 10, 101, 10, 100, 10,
- 101, 10, 110, 10, 116, 10, 115, 10,
- 58, 10, 97, 10, 114, 10, 97, 10,
- 99, 10, 116, 10, 101, 10, 114, -61,
- 10, -83, 10, 10, 115, 10, 116, 10,
- 105, 10, 99, 10, 97, 10, 115, 120,
- 10, 99, 113, 10, 101, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 117, 10,
- 101, 10, 109, 10, 97, 10, 32, 10,
- 100, 10, 101, 10, 32, 10, 108, 10,
- 39, 10, 101, 10, 115, 10, 99, 10,
- 101, 10, 109, 10, 112, 10, 108, 10,
- 101, 10, 117, 10, 110, 10, 99, 10,
- 105, 10, 111, 10, 110, 10, 97, 10,
- 108, 10, 105, 10, 116, 10, 97, 10,
- 116, 10, 101, 10, 114, 10, 101, 10,
- 102, 10, 111, 10, 110, 111, 110, 97,
- 100, 116, 97, 115, 120, 99, 113, 101,
- 110, 97, 114, 105, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 65, 67, 68,
- 69, 70, 73, 80, 81, 82, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 108,
- 110, 116, 10, 101, 10, 115, 10, 104,
- 10, 111, 10, 114, 10, 101, 10, 115,
- 10, 116, 10, 101, 10, 99, 10, 101,
- 10, 100, 10, 101, 10, 110, 10, 116,
- 10, 115, 10, 58, -61, 10, 101, -88,
- 10, 10, 115, 10, 97, 10, 97, 10,
- 108, 114, 10, 97, 10, 99, 10, 116,
- 10, 101, 10, 114, -61, 10, -83, 10,
- 10, 115, 10, 116, 10, 105, 10, 99,
- 10, 97, 10, 111, 10, 110, 10, 97,
- 10, 100, 116, 10, 115, 10, 99, 113,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 117, 10, 101, 10, 109,
- 10, 97, 10, 32, 10, 100, 10, 101,
- 10, 32, 10, 108, 10, 39, 10, 101,
- 10, 115, 10, 99, 10, 117, 10, 110,
- 10, 99, 10, 105, 10, 111, 10, 110,
- 10, 97, 10, 108, 10, 105, 10, 116,
- 10, 97, 10, 116, 10, 101, 10, 114,
- -61, 10, -78, 10, 10, 117, 10, 97,
- 10, 110, 10, 101, 10, 114, 10, 101,
- 10, 102, 10, 111, 10, 110, 117, 101,
- 109, 97, 32, 100, 101, 32, 108, 39,
- 101, 115, 99, 101, 110, 97, 114, 105,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 65, 67, 68, 69, 70, 73, 80,
- 81, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 108, 116, 10, 101, 10, 115,
- 10, 104, 10, 111, 10, 114, 10, 101,
- 10, 115, -61, 10, 101, -88, 10, 10,
- 115, 10, 97, 10, 97, 10, 108, 114,
- 10, 97, 10, 99, 10, 116, 10, 101,
- 10, 114, -61, 10, -83, 10, 10, 115,
- 10, 116, 10, 105, 10, 99, 10, 97,
- 10, 58, 10, 111, 10, 110, 10, 97,
- 10, 100, 116, 10, 115, 10, 99, 10,
- 101, 10, 110, 10, 97, 10, 114, 10,
- 105, 10, 117, 10, 110, 10, 99, 10,
- 105, 10, 111, 10, 110, 10, 97, 10,
- 108, 10, 105, 10, 116, 10, 97, 10,
- 116, 10, 101, 10, 114, -61, 10, -78,
- 10, 10, 117, 10, 97, 10, 110, 101,
- 109, 112, 108, 101, 115, 58, 10, 10,
- 10, 32, 35, 67, 70, 124, 9, 13,
- 10, 97, 10, 114, 10, 97, 10, 99,
- 10, 116, 10, 101, 10, 114, -61, 10,
- -83, 10, 10, 115, 10, 116, 10, 105,
- 10, 99, 10, 97, 10, 58, 10, 117,
- 10, 110, 10, 99, 10, 105, 10, 111,
- 10, 110, 10, 97, 10, 108, 10, 105,
- 10, 116, 10, 97, 10, 116, 117, 110,
- 99, 105, 111, 110, 97, 108, 105, 116,
- 97, 116, 101, 114, -61, -78, 117, 97,
- 110, 101, 114, 101, 102, 111, 110, 32,
- 124, 9, 13, 10, 32, 92, 124, 9,
- 13, 10, 92, 124, 10, 92, 10, 32,
- 92, 124, 9, 13, 10, 32, 34, 35,
- 37, 42, 64, 65, 67, 68, 69, 70,
- 73, 80, 81, 82, 124, 9, 13, 10,
- 108, 116, 10, 101, 10, 115, 10, 104,
- 10, 111, 10, 114, 10, 101, 10, 115,
- -61, 10, 101, -88, 10, 10, 115, 10,
- 97, 10, 97, 10, 108, 114, 10, 97,
- 10, 99, 10, 116, 10, 101, 10, 114,
- -61, 10, -83, 10, 10, 115, 10, 116,
- 10, 105, 10, 99, 10, 97, 10, 58,
- 10, 111, 10, 110, 10, 97, 10, 100,
- 116, 10, 115, 10, 99, 113, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 117, 10, 101, 10, 109, 10, 97,
- 10, 32, 10, 100, 10, 101, 10, 32,
- 10, 108, 10, 39, 10, 101, 10, 115,
- 10, 99, 10, 117, 10, 110, 10, 99,
- 10, 105, 10, 111, 10, 110, 10, 97,
- 10, 108, 10, 105, 10, 116, 10, 97,
- 10, 116, 10, 101, 10, 114, -61, 10,
- -78, 10, 10, 117, 10, 97, 10, 110,
- -61, 101, -88, 115, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 18, 1, 1, 17, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 3, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 14, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 17, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 10, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 2, 1, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 15, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 14,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 6, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 4,
- 3, 2, 4, 17, 3, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 1,
- 0, 0, 1, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 20, 22, 24, 43, 45, 47,
- 50, 53, 58, 63, 68, 73, 77, 81,
- 84, 86, 88, 90, 92, 94, 96, 98,
- 100, 102, 104, 106, 108, 110, 112, 114,
- 116, 119, 122, 127, 134, 139, 143, 145,
- 147, 149, 151, 153, 155, 157, 159, 161,
- 163, 165, 167, 169, 171, 173, 175, 177,
- 179, 181, 197, 200, 203, 206, 209, 212,
- 215, 218, 221, 224, 227, 230, 233, 236,
- 239, 242, 261, 263, 266, 268, 270, 272,
- 274, 276, 278, 280, 282, 284, 286, 288,
- 290, 292, 294, 296, 308, 311, 314, 317,
- 320, 323, 326, 329, 332, 335, 338, 341,
- 344, 347, 350, 353, 356, 359, 362, 365,
- 368, 371, 374, 377, 380, 383, 386, 389,
- 392, 395, 398, 401, 404, 407, 410, 413,
- 416, 419, 422, 425, 429, 433, 436, 439,
- 442, 445, 448, 451, 454, 457, 460, 463,
- 466, 469, 472, 475, 478, 481, 484, 487,
- 490, 493, 496, 499, 502, 505, 508, 511,
- 514, 517, 520, 523, 526, 529, 532, 535,
- 538, 541, 544, 547, 550, 553, 556, 558,
- 560, 562, 565, 567, 570, 573, 575, 577,
- 579, 581, 583, 585, 587, 589, 606, 609,
- 612, 615, 618, 621, 624, 627, 630, 633,
- 636, 639, 642, 645, 648, 651, 656, 659,
- 662, 665, 668, 671, 674, 677, 680, 683,
- 686, 689, 692, 695, 698, 701, 704, 707,
- 711, 714, 717, 720, 723, 727, 730, 733,
- 736, 739, 742, 745, 748, 751, 754, 757,
- 760, 763, 766, 769, 772, 776, 779, 783,
- 786, 789, 792, 795, 798, 801, 804, 807,
- 810, 813, 816, 819, 822, 825, 828, 831,
- 834, 837, 840, 843, 846, 849, 852, 855,
- 858, 861, 864, 867, 870, 873, 876, 879,
- 882, 885, 888, 891, 894, 897, 900, 903,
- 906, 909, 912, 914, 916, 918, 920, 922,
- 924, 926, 928, 930, 932, 934, 936, 938,
- 940, 942, 944, 946, 948, 950, 952, 954,
- 970, 973, 976, 979, 982, 985, 988, 991,
- 994, 997, 1000, 1003, 1006, 1009, 1012, 1015,
- 1019, 1022, 1025, 1028, 1031, 1034, 1037, 1040,
- 1044, 1047, 1050, 1053, 1056, 1060, 1063, 1066,
- 1069, 1072, 1075, 1078, 1081, 1084, 1087, 1090,
- 1093, 1096, 1099, 1102, 1105, 1108, 1112, 1115,
- 1118, 1121, 1124, 1127, 1130, 1133, 1136, 1139,
- 1142, 1145, 1148, 1151, 1154, 1157, 1160, 1163,
- 1166, 1169, 1172, 1175, 1178, 1181, 1184, 1187,
- 1190, 1192, 1194, 1196, 1198, 1200, 1202, 1204,
- 1206, 1208, 1216, 1219, 1222, 1225, 1228, 1231,
- 1234, 1237, 1240, 1243, 1246, 1249, 1252, 1255,
- 1258, 1261, 1264, 1267, 1270, 1273, 1276, 1279,
- 1282, 1285, 1288, 1291, 1294, 1297, 1299, 1301,
- 1303, 1305, 1307, 1309, 1311, 1313, 1315, 1317,
- 1319, 1321, 1323, 1325, 1327, 1329, 1331, 1333,
- 1335, 1337, 1339, 1341, 1343, 1345, 1347, 1351,
- 1357, 1361, 1364, 1370, 1389, 1393, 1396, 1399,
- 1402, 1405, 1408, 1411, 1414, 1418, 1421, 1424,
- 1427, 1430, 1434, 1437, 1440, 1443, 1446, 1449,
- 1452, 1455, 1458, 1461, 1464, 1467, 1470, 1473,
- 1476, 1479, 1482, 1486, 1489, 1493, 1496, 1499,
- 1502, 1505, 1508, 1511, 1514, 1517, 1520, 1523,
- 1526, 1529, 1532, 1535, 1538, 1541, 1544, 1547,
- 1550, 1553, 1556, 1559, 1562, 1565, 1568, 1571,
- 1574, 1577, 1580, 1583, 1586, 1589, 1592, 1595,
- 1598, 1601, 1604, 1607, 1609, 1611
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 74, 174, 179, 421, 31, 433, 437,
- 440, 446, 4, 0, 3, 0, 4, 0,
- 4, 4, 5, 15, 17, 31, 34, 37,
- 74, 174, 179, 421, 31, 433, 437, 440,
- 446, 4, 0, 6, 0, 7, 0, 9,
- 8, 8, 9, 8, 8, 10, 10, 11,
- 10, 10, 10, 10, 11, 10, 10, 10,
- 10, 12, 10, 10, 10, 10, 13, 10,
- 10, 4, 14, 14, 0, 4, 14, 14,
- 0, 4, 16, 15, 4, 0, 18, 0,
- 19, 0, 20, 0, 21, 0, 22, 0,
- 23, 0, 24, 0, 25, 0, 26, 0,
- 27, 0, 28, 0, 29, 0, 30, 0,
- 525, 0, 32, 0, 4, 16, 33, 4,
- 16, 33, 0, 0, 0, 0, 35, 36,
- 4, 36, 36, 34, 35, 35, 4, 36,
- 34, 36, 0, 38, 45, 522, 0, 39,
- 0, 40, 0, 41, 0, 42, 0, 43,
- 0, 44, 0, 31, 0, 46, 0, 47,
- 0, 48, 0, 49, 0, 50, 0, 51,
- 0, 52, 0, 53, 0, 54, 0, 55,
- 0, 57, 56, 57, 56, 57, 57, 4,
- 58, 72, 4, 452, 464, 479, 483, 503,
- 72, 515, 519, 57, 56, 57, 59, 56,
- 57, 60, 56, 57, 61, 56, 57, 62,
- 56, 57, 63, 56, 57, 64, 56, 57,
- 65, 56, 57, 66, 56, 57, 67, 56,
- 57, 68, 56, 57, 69, 56, 57, 70,
- 56, 57, 71, 56, 57, 4, 56, 57,
- 73, 56, 4, 4, 5, 15, 17, 31,
- 34, 37, 74, 174, 179, 421, 31, 433,
- 437, 440, 446, 4, 0, 75, 0, 31,
- 76, 0, 77, 0, 78, 0, 79, 0,
- 80, 0, 81, 0, 82, 0, 83, 0,
- 84, 0, 85, 0, 86, 0, 87, 0,
- 88, 0, 89, 0, 91, 90, 91, 90,
- 91, 91, 4, 92, 4, 106, 117, 131,
- 156, 168, 91, 90, 91, 93, 90, 91,
- 94, 90, 91, 95, 90, 91, 96, 90,
- 91, 97, 90, 91, 98, 90, 91, 99,
- 90, 91, 100, 90, 91, 101, 90, 91,
- 102, 90, 91, 103, 90, 91, 104, 90,
- 91, 105, 90, 91, 4, 90, 91, 107,
- 90, 91, 108, 90, 91, 109, 90, 91,
- 110, 90, 91, 111, 90, 91, 112, 90,
- 91, 113, 90, 91, 114, 90, 91, 115,
- 90, 91, 116, 90, 91, 73, 90, 91,
- 118, 90, 91, 119, 90, 91, 120, 90,
- 91, 121, 90, 91, 122, 90, 91, 123,
- 90, 91, 124, 90, 125, 91, 90, 126,
- 91, 90, 91, 127, 90, 91, 128, 90,
- 91, 129, 90, 91, 130, 90, 91, 116,
- 90, 91, 132, 151, 90, 91, 133, 138,
- 90, 91, 134, 90, 91, 135, 90, 91,
- 136, 90, 91, 137, 90, 91, 116, 90,
- 91, 139, 90, 91, 140, 90, 91, 141,
- 90, 91, 142, 90, 91, 143, 90, 91,
- 144, 90, 91, 145, 90, 91, 146, 90,
- 91, 147, 90, 91, 148, 90, 91, 149,
- 90, 91, 150, 90, 91, 133, 90, 91,
- 152, 90, 91, 153, 90, 91, 154, 90,
- 91, 155, 90, 91, 115, 90, 91, 157,
- 90, 91, 158, 90, 91, 159, 90, 91,
- 160, 90, 91, 161, 90, 91, 162, 90,
- 91, 163, 90, 91, 164, 90, 91, 165,
- 90, 91, 166, 90, 91, 167, 90, 91,
- 116, 90, 91, 169, 90, 91, 170, 90,
- 91, 171, 90, 91, 172, 90, 91, 173,
- 90, 91, 115, 90, 175, 0, 176, 0,
- 177, 0, 178, 31, 0, 31, 0, 180,
- 384, 0, 181, 290, 0, 182, 0, 183,
- 0, 184, 0, 185, 0, 186, 0, 187,
- 0, 189, 188, 189, 188, 189, 189, 4,
- 190, 204, 4, 205, 227, 241, 245, 265,
- 204, 277, 281, 284, 189, 188, 189, 191,
- 188, 189, 192, 188, 189, 193, 188, 189,
- 194, 188, 189, 195, 188, 189, 196, 188,
- 189, 197, 188, 189, 198, 188, 189, 199,
- 188, 189, 200, 188, 189, 201, 188, 189,
- 202, 188, 189, 203, 188, 189, 4, 188,
- 189, 73, 188, 189, 206, 213, 223, 188,
- 189, 207, 188, 189, 208, 188, 189, 209,
- 188, 189, 210, 188, 189, 211, 188, 189,
- 212, 188, 189, 204, 188, 189, 214, 188,
- 189, 215, 188, 189, 216, 188, 189, 217,
- 188, 189, 218, 188, 189, 219, 188, 189,
- 220, 188, 189, 221, 188, 189, 222, 188,
- 189, 73, 188, 224, 189, 225, 188, 212,
- 189, 188, 189, 226, 188, 189, 204, 188,
- 189, 228, 188, 189, 204, 229, 188, 189,
- 230, 188, 189, 231, 188, 189, 232, 188,
- 189, 233, 188, 189, 234, 188, 235, 189,
- 188, 236, 189, 188, 189, 237, 188, 189,
- 238, 188, 189, 239, 188, 189, 240, 188,
- 189, 222, 188, 189, 242, 188, 189, 243,
- 188, 189, 244, 188, 189, 226, 204, 188,
- 189, 246, 188, 189, 247, 252, 188, 189,
- 248, 188, 189, 249, 188, 189, 250, 188,
- 189, 251, 188, 189, 222, 188, 189, 253,
- 188, 189, 254, 188, 189, 255, 188, 189,
- 256, 188, 189, 257, 188, 189, 258, 188,
- 189, 259, 188, 189, 260, 188, 189, 261,
- 188, 189, 262, 188, 189, 263, 188, 189,
- 264, 188, 189, 247, 188, 189, 266, 188,
- 189, 267, 188, 189, 268, 188, 189, 269,
- 188, 189, 270, 188, 189, 271, 188, 189,
- 272, 188, 189, 273, 188, 189, 274, 188,
- 189, 275, 188, 189, 276, 188, 189, 222,
- 188, 189, 278, 188, 189, 279, 188, 280,
- 189, 188, 204, 189, 188, 189, 282, 188,
- 189, 283, 188, 189, 204, 188, 189, 285,
- 188, 189, 286, 188, 189, 287, 188, 189,
- 288, 188, 189, 289, 188, 189, 221, 188,
- 291, 0, 292, 0, 293, 0, 294, 0,
- 295, 0, 296, 0, 297, 0, 298, 0,
- 299, 0, 300, 0, 301, 0, 302, 0,
- 303, 0, 304, 0, 305, 0, 306, 0,
- 307, 0, 308, 0, 309, 0, 311, 310,
- 311, 310, 311, 311, 4, 312, 326, 4,
- 327, 339, 354, 358, 365, 326, 377, 381,
- 311, 310, 311, 313, 310, 311, 314, 310,
- 311, 315, 310, 311, 316, 310, 311, 317,
- 310, 311, 318, 310, 311, 319, 310, 311,
- 320, 310, 311, 321, 310, 311, 322, 310,
- 311, 323, 310, 311, 324, 310, 311, 325,
- 310, 311, 4, 310, 311, 73, 310, 311,
- 328, 335, 310, 311, 329, 310, 311, 330,
- 310, 311, 331, 310, 311, 332, 310, 311,
- 333, 310, 311, 334, 310, 311, 326, 310,
- 336, 311, 337, 310, 334, 311, 310, 311,
- 338, 310, 311, 326, 310, 311, 340, 310,
- 311, 326, 341, 310, 311, 342, 310, 311,
- 343, 310, 311, 344, 310, 311, 345, 310,
- 311, 346, 310, 347, 311, 310, 348, 311,
- 310, 311, 349, 310, 311, 350, 310, 311,
- 351, 310, 311, 352, 310, 311, 353, 310,
- 311, 73, 310, 311, 355, 310, 311, 356,
- 310, 311, 357, 310, 311, 338, 326, 310,
- 311, 359, 310, 311, 360, 310, 311, 361,
- 310, 311, 362, 310, 311, 363, 310, 311,
- 364, 310, 311, 353, 310, 311, 366, 310,
- 311, 367, 310, 311, 368, 310, 311, 369,
- 310, 311, 370, 310, 311, 371, 310, 311,
- 372, 310, 311, 373, 310, 311, 374, 310,
- 311, 375, 310, 311, 376, 310, 311, 353,
- 310, 311, 378, 310, 311, 379, 310, 380,
- 311, 310, 326, 311, 310, 311, 382, 310,
- 311, 383, 310, 311, 326, 310, 385, 0,
- 386, 0, 387, 0, 388, 0, 389, 0,
- 390, 0, 391, 0, 393, 392, 393, 392,
- 393, 393, 4, 394, 409, 4, 393, 392,
- 393, 395, 392, 393, 396, 392, 393, 397,
- 392, 393, 398, 392, 393, 399, 392, 393,
- 400, 392, 393, 401, 392, 402, 393, 392,
- 403, 393, 392, 393, 404, 392, 393, 405,
- 392, 393, 406, 392, 393, 407, 392, 393,
- 408, 392, 393, 73, 392, 393, 410, 392,
- 393, 411, 392, 393, 412, 392, 393, 413,
- 392, 393, 414, 392, 393, 415, 392, 393,
- 416, 392, 393, 417, 392, 393, 418, 392,
- 393, 419, 392, 393, 420, 392, 393, 408,
- 392, 422, 0, 423, 0, 424, 0, 425,
- 0, 426, 0, 427, 0, 428, 0, 429,
- 0, 430, 0, 431, 0, 432, 0, 88,
- 0, 434, 0, 435, 0, 436, 0, 31,
- 0, 438, 0, 439, 0, 31, 0, 441,
- 0, 442, 0, 443, 0, 444, 0, 445,
- 0, 53, 0, 446, 447, 446, 0, 451,
- 450, 449, 447, 450, 448, 0, 449, 447,
- 448, 0, 449, 448, 451, 450, 449, 447,
- 450, 448, 451, 451, 5, 15, 17, 31,
- 34, 37, 74, 174, 179, 421, 31, 433,
- 437, 440, 446, 451, 0, 57, 453, 460,
- 56, 57, 454, 56, 57, 455, 56, 57,
- 456, 56, 57, 457, 56, 57, 458, 56,
- 57, 459, 56, 57, 72, 56, 461, 57,
- 462, 56, 459, 57, 56, 57, 463, 56,
- 57, 72, 56, 57, 465, 56, 57, 72,
- 466, 56, 57, 467, 56, 57, 468, 56,
- 57, 469, 56, 57, 470, 56, 57, 471,
- 56, 472, 57, 56, 473, 57, 56, 57,
- 474, 56, 57, 475, 56, 57, 476, 56,
- 57, 477, 56, 57, 478, 56, 57, 73,
- 56, 57, 480, 56, 57, 481, 56, 57,
- 482, 56, 57, 463, 72, 56, 57, 484,
- 56, 57, 485, 490, 56, 57, 486, 56,
- 57, 487, 56, 57, 488, 56, 57, 489,
- 56, 57, 478, 56, 57, 491, 56, 57,
- 492, 56, 57, 493, 56, 57, 494, 56,
- 57, 495, 56, 57, 496, 56, 57, 497,
- 56, 57, 498, 56, 57, 499, 56, 57,
- 500, 56, 57, 501, 56, 57, 502, 56,
- 57, 485, 56, 57, 504, 56, 57, 505,
- 56, 57, 506, 56, 57, 507, 56, 57,
- 508, 56, 57, 509, 56, 57, 510, 56,
- 57, 511, 56, 57, 512, 56, 57, 513,
- 56, 57, 514, 56, 57, 478, 56, 57,
- 516, 56, 57, 517, 56, 518, 57, 56,
- 72, 57, 56, 57, 520, 56, 57, 521,
- 56, 57, 72, 56, 523, 524, 0, 44,
- 0, 178, 0, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 29, 35, 0, 43, 0, 43, 0, 43,
- 54, 0, 5, 1, 0, 29, 1, 29,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 139,
- 48, 9, 106, 11, 0, 134, 45, 45,
- 45, 3, 122, 33, 33, 33, 0, 122,
- 33, 33, 33, 0, 122, 33, 0, 33,
- 0, 102, 7, 7, 43, 54, 0, 0,
- 43, 114, 25, 0, 54, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 149, 126, 57, 110,
- 23, 0, 43, 43, 43, 43, 0, 27,
- 118, 27, 27, 51, 27, 0, 54, 0,
- 1, 0, 43, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 72,
- 33, 84, 72, 84, 84, 84, 84, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 15, 0, 130, 31, 60, 57, 31, 63,
- 57, 63, 63, 63, 63, 63, 63, 63,
- 63, 63, 66, 31, 43, 0, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 69, 33, 69, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 13, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 75,
- 33, 84, 75, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 17, 0, 54, 0, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 0, 54, 0, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 78, 33, 84, 78,
- 84, 84, 84, 84, 84, 84, 84, 84,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 19, 0, 54, 19, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 19, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 81, 84, 84, 81, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 21, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 0, 0, 43, 54,
- 37, 37, 87, 37, 37, 43, 0, 39,
- 0, 43, 0, 0, 54, 0, 0, 39,
- 0, 0, 54, 0, 93, 90, 41, 96,
- 90, 96, 96, 96, 96, 96, 96, 96,
- 96, 96, 99, 0, 43, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 525;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/ca.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 1185 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/ca.c.rl"
-
-#line 1192 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/ca.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/ca.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/ca.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/ca.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/ca.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/ca.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/ca.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/ca.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/ca.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/ca.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/ca.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/ca.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/ca.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/ca.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/ca.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/ca.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/ca.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/ca.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/ca.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/ca.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/ca.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/ca.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/ca.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/ca.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1482 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/ca.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1545 "ext/gherkin_lexer_ca/gherkin_lexer_ca.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/ca.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_ca()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Ca", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_cs/extconf.rb
index a5272a1,a5272a1..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_cs/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_cs")
--have_library("c", "main")
--create_makefile("gherkin_lexer_cs")
diff --cc ext/gherkin_lexer_cs/gherkin_lexer_cs.c
index 72e4b20,34e9b4d..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_cs/gherkin_lexer_cs.c
+++ /dev/null
@@@ -1,1427 -1,1515 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 17, 18, 19, 35, 36, 37,
- 39, 41, 46, 51, 56, 61, 65, 69,
- 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 89, 91, 96, 103, 108, 110, 113,
- 116, 119, 122, 125, 128, 129, 131, 132,
- 133, 134, 135, 136, 137, 138, 139, 140,
- 141, 142, 156, 158, 160, 162, 164, 166,
- 168, 170, 172, 174, 176, 178, 180, 182,
- 184, 186, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 218, 219, 220, 221, 222, 234,
- 236, 238, 240, 242, 244, 246, 248, 250,
- 252, 254, 256, 258, 260, 262, 264, 267,
- 284, 285, 286, 287, 288, 289, 290, 291,
- 294, 295, 296, 297, 298, 299, 300, 301,
- 302, 303, 304, 305, 312, 314, 316, 318,
- 320, 322, 324, 326, 328, 330, 332, 333,
- 336, 337, 338, 339, 340, 341, 342, 343,
- 344, 345, 346, 358, 360, 362, 364, 366,
- 368, 370, 372, 374, 376, 378, 380, 382,
- 384, 386, 388, 390, 392, 394, 396, 398,
- 400, 402, 404, 406, 408, 410, 412, 414,
- 416, 418, 420, 422, 424, 426, 428, 430,
- 432, 434, 436, 438, 440, 442, 444, 446,
- 448, 451, 453, 455, 457, 459, 461, 463,
- 465, 467, 470, 472, 474, 476, 478, 480,
- 482, 484, 486, 488, 490, 492, 494, 496,
- 498, 500, 502, 504, 506, 508, 509, 510,
- 511, 512, 513, 514, 515, 516, 517, 518,
- 519, 520, 521, 522, 523, 524, 525, 539,
- 541, 543, 545, 547, 549, 551, 553, 555,
- 557, 559, 561, 563, 565, 567, 569, 572,
- 589, 590, 591, 592, 593, 594, 598, 604,
- 607, 609, 615, 631, 633, 636, 638, 640,
- 642, 644, 646, 648, 650, 652, 654, 656,
- 658, 660, 662, 664, 666, 668, 670, 672,
- 674, 676, 678, 680, 682, 684, 686, 688,
- 690, 692, 694, 696, 698, 700, 702, 705,
- 707, 711, 713, 715, 717, 719, 721, 723,
- 725, 727, 729, 731, 733, 735, 737, 739,
- 741, 743, 745, 747, 749, 751, 753, 754,
- 755, 756, 757, 758, 760, 762, 764, 766,
- 768, 771, 773, 776, 778, 780, 782, 784,
- 786, 788, 790, 792, 794, 796, 798, 800,
- 802, 804, 806, 808, 810, 812, 815, 832,
- 833, 834, 835, 836, 837, 839, 841, 843,
- 845, 847, 849, 851, 853, 855, 857, 859,
- 861, 863, 865, 867, 869, 871, 873, 875,
- 877, 879, 881, 883, 885, 887, 889, 891,
- 893, 895, 897, 900, 902, 905, 907, 909,
- 911, 913, 915, 917, 919, 921, 923, 925,
- 927, 929, 931, 933, 935, 937, 939
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 75, 78, 79, 80, 83, 124, 9,
- 13, -69, -65, 10, 32, 34, 35, 37,
- 42, 64, 65, 75, 78, 79, 80, 83,
- 124, 9, 13, 34, 34, 10, 13, 10,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 9,
- 13, 10, 32, 9, 13, 10, 13, 10,
- 95, 70, 69, 65, 84, 85, 82, 69,
- 95, 69, 78, 68, 95, 37, 32, 10,
- 13, 10, 13, 13, 32, 64, 9, 10,
- 9, 10, 13, 32, 64, 11, 12, 10,
- 32, 64, 9, 13, 32, 108, 10, 13,
- 116, 10, 13, 97, 10, 13, 107, -61,
- 10, 13, -87, 10, 13, 10, 13, 32,
- 101, 100, 111, 121, -59, -66, 110, 116,
- 101, 120, 116, 58, 10, 10, 10, 32,
- 35, 37, 42, 64, 65, 75, 78, 79,
- 80, 83, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, 10, 32, 34, 35, 37, 42,
- 64, 65, 75, 78, 79, 80, 83, 124,
- 9, 13, -61, -95, -60, -115, 114, 116,
- 32, 83, 99, -61, -87, 110, -61, -95,
- -59, -103, 101, 58, 10, 10, 10, 32,
- 35, 37, 42, 64, 65, 75, 80, 83,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 32,
- 10, 32, 108, 10, 32, 34, 35, 37,
- 42, 64, 65, 75, 78, 79, 80, 83,
- 116, 124, 9, 13, 115, 110, 111, 118,
- 97, 32, 115, -59, 97, 111, -103, -61,
- -83, 107, 108, 97, 100, 121, 58, 10,
- 10, 10, 32, 35, 80, 124, 9, 13,
- 10, 111, -59, 10, -66, 10, 10, 97,
- 10, 100, 10, 97, 10, 118, 10, 101,
- 10, 107, 10, 58, 107, -59, 107, 122,
- -66, 97, 100, 97, 118, 101, 107, 58,
- 10, 10, 10, 32, 35, 37, 64, 75,
- 78, 79, 80, 83, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 111, 10, 110, 10, 116,
- 10, 101, 10, 120, 10, 116, 10, 58,
- -61, 10, -95, 10, -60, 10, -115, 10,
- 10, 114, 10, 116, 10, 32, 10, 83,
- 10, 99, -61, 10, -87, 10, 10, 110,
- -61, 10, -95, 10, -59, 10, -103, 10,
- 10, 101, 10, 115, 10, 110, 10, 111,
- 10, 118, 10, 97, 10, 32, 10, 115,
- -59, 10, 111, -103, 10, -61, 10, -83,
- 10, 10, 107, 10, 108, 10, 97, 10,
- 100, 10, 121, -59, 10, 122, -66, 10,
- 10, 97, 10, 100, 10, 97, 10, 118,
- 10, 101, 10, 107, 10, 97, 10, 100,
- -61, 10, -83, 10, 10, 99, -61, 10,
- -87, 10, 10, 110, -61, 10, -95, 10,
- -59, 10, -103, 10, 117, 100, 97, 100,
- -61, -83, 99, -61, -87, 110, -61, -95,
- -59, -103, 58, 10, 10, 10, 32, 35,
- 37, 42, 64, 65, 75, 78, 79, 80,
- 83, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 32, 108, 10, 32, 34, 35,
- 37, 42, 64, 65, 75, 78, 79, 80,
- 83, 116, 124, 9, 13, 97, 107, -61,
- -87, 32, 32, 124, 9, 13, 10, 32,
- 92, 124, 9, 13, 10, 92, 124, 10,
- 92, 10, 32, 92, 124, 9, 13, 10,
- 32, 34, 35, 37, 42, 64, 65, 75,
- 78, 79, 80, 83, 124, 9, 13, 10,
- 101, 10, 100, 111, 10, 121, -59, 10,
- -66, 10, 10, 110, 10, 116, 10, 101,
- 10, 120, 10, 116, 10, 58, -61, 10,
- -95, 10, -60, 10, -115, 10, 10, 114,
- 10, 116, 10, 32, 10, 83, 10, 99,
- -61, 10, -87, 10, 10, 110, -61, 10,
- -95, 10, -59, 10, -103, 10, 10, 101,
- 10, 115, 10, 110, 10, 111, 10, 118,
- 10, 97, 10, 32, 10, 115, 10, 97,
- 111, 10, 107, -59, 10, 107, 122, -66,
- 10, 10, 97, 10, 100, 10, 97, 10,
- 118, 10, 101, 10, 107, 10, 117, 10,
- 100, 10, 97, 10, 100, -61, 10, -83,
- 10, 10, 99, -61, 10, -87, 10, 10,
- 110, -61, 10, -95, 10, -59, 10, -103,
- 10, 97, 107, -61, -87, 32, 10, 101,
- 10, 100, 10, 121, -59, 10, -66, 10,
- 10, 97, 111, 10, 107, -59, 10, 107,
- -66, 10, 10, 97, 10, 100, 10, 97,
- 10, 118, 10, 101, 10, 107, 10, 58,
- 10, 117, 10, 100, 10, 99, -61, 10,
- -87, 10, 10, 110, -61, 10, -95, 10,
- -59, 10, -103, 10, 10, 32, 108, 10,
- 32, 34, 35, 37, 42, 64, 65, 75,
- 78, 79, 80, 83, 116, 124, 9, 13,
- 97, 107, -61, -87, 32, 10, 101, 10,
- 100, 10, 121, -59, 10, -66, 10, -61,
- 10, -95, 10, -60, 10, -115, 10, 10,
- 114, 10, 116, 10, 32, 10, 83, 10,
- 99, -61, 10, -87, 10, 10, 110, -61,
- 10, -95, 10, -59, 10, -103, 10, 10,
- 101, 10, 58, 10, 115, 10, 110, 10,
- 111, 10, 118, 10, 97, 10, 32, 10,
- 115, 10, 97, 111, 10, 107, -59, 10,
- 107, -66, 10, 10, 97, 10, 100, 10,
- 97, 10, 118, 10, 101, 10, 107, 10,
- 117, 10, 100, 10, 99, -61, 10, -87,
- 10, 10, 110, -61, 10, -95, 10, -59,
- 10, -103, 10, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 15, 1, 1, 14, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 2, 3, 3,
- 3, 3, 3, 3, 1, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 12, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 14, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 10, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 15,
- 1, 1, 1, 1, 1, 1, 1, 3,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 5, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 3,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 10, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 12, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 15,
- 1, 1, 1, 1, 1, 2, 4, 3,
- 2, 4, 14, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 4, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 2, 2, 2, 2, 2,
- 3, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 15, 1,
- 1, 1, 1, 1, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 1, 1, 0,
- 0, 1, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 17, 19, 21, 37, 39, 41,
- 44, 47, 52, 57, 62, 67, 71, 75,
- 78, 80, 82, 84, 86, 88, 90, 92,
- 94, 96, 98, 100, 102, 104, 106, 108,
- 110, 113, 116, 121, 128, 133, 136, 140,
- 144, 148, 152, 156, 160, 162, 165, 167,
- 169, 171, 173, 175, 177, 179, 181, 183,
- 185, 187, 201, 204, 207, 210, 213, 216,
- 219, 222, 225, 228, 231, 234, 237, 240,
- 243, 246, 262, 264, 266, 268, 270, 272,
- 274, 276, 278, 280, 282, 284, 286, 288,
- 290, 292, 294, 296, 298, 300, 302, 314,
- 317, 320, 323, 326, 329, 332, 335, 338,
- 341, 344, 347, 350, 353, 356, 359, 363,
- 380, 382, 384, 386, 388, 390, 392, 394,
- 398, 400, 402, 404, 406, 408, 410, 412,
- 414, 416, 418, 420, 427, 430, 433, 436,
- 439, 442, 445, 448, 451, 454, 457, 459,
- 463, 465, 467, 469, 471, 473, 475, 477,
- 479, 481, 483, 495, 498, 501, 504, 507,
- 510, 513, 516, 519, 522, 525, 528, 531,
- 534, 537, 540, 543, 546, 549, 552, 555,
- 558, 561, 564, 567, 570, 573, 576, 579,
- 582, 585, 588, 591, 594, 597, 600, 603,
- 606, 609, 612, 615, 618, 621, 624, 627,
- 630, 634, 637, 640, 643, 646, 649, 652,
- 655, 658, 662, 665, 668, 671, 674, 677,
- 680, 683, 686, 689, 692, 695, 698, 701,
- 704, 707, 710, 713, 716, 719, 721, 723,
- 725, 727, 729, 731, 733, 735, 737, 739,
- 741, 743, 745, 747, 749, 751, 753, 767,
- 770, 773, 776, 779, 782, 785, 788, 791,
- 794, 797, 800, 803, 806, 809, 812, 816,
- 833, 835, 837, 839, 841, 843, 847, 853,
- 857, 860, 866, 882, 885, 889, 892, 895,
- 898, 901, 904, 907, 910, 913, 916, 919,
- 922, 925, 928, 931, 934, 937, 940, 943,
- 946, 949, 952, 955, 958, 961, 964, 967,
- 970, 973, 976, 979, 982, 985, 988, 992,
- 995, 1000, 1003, 1006, 1009, 1012, 1015, 1018,
- 1021, 1024, 1027, 1030, 1033, 1036, 1039, 1042,
- 1045, 1048, 1051, 1054, 1057, 1060, 1063, 1065,
- 1067, 1069, 1071, 1073, 1076, 1079, 1082, 1085,
- 1088, 1092, 1095, 1099, 1102, 1105, 1108, 1111,
- 1114, 1117, 1120, 1123, 1126, 1129, 1132, 1135,
- 1138, 1141, 1144, 1147, 1150, 1153, 1157, 1174,
- 1176, 1178, 1180, 1182, 1184, 1187, 1190, 1193,
- 1196, 1199, 1202, 1205, 1208, 1211, 1214, 1217,
- 1220, 1223, 1226, 1229, 1232, 1235, 1238, 1241,
- 1244, 1247, 1250, 1253, 1256, 1259, 1262, 1265,
- 1268, 1271, 1274, 1278, 1281, 1285, 1288, 1291,
- 1294, 1297, 1300, 1303, 1306, 1309, 1312, 1315,
- 1318, 1321, 1324, 1327, 1330, 1333, 1336
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 45, 74, 112, 119, 235, 269, 4,
- 0, 3, 0, 4, 0, 4, 4, 5,
- 15, 17, 31, 34, 37, 45, 74, 112,
- 119, 235, 269, 4, 0, 6, 0, 7,
- 0, 9, 8, 8, 9, 8, 8, 10,
- 10, 11, 10, 10, 10, 10, 11, 10,
- 10, 10, 10, 12, 10, 10, 10, 10,
- 13, 10, 10, 4, 14, 14, 0, 4,
- 14, 14, 0, 4, 16, 15, 4, 0,
- 18, 0, 19, 0, 20, 0, 21, 0,
- 22, 0, 23, 0, 24, 0, 25, 0,
- 26, 0, 27, 0, 28, 0, 29, 0,
- 30, 0, 422, 0, 32, 0, 4, 16,
- 33, 4, 16, 33, 0, 0, 0, 0,
- 35, 36, 4, 36, 36, 34, 35, 35,
- 4, 36, 34, 36, 0, 38, 44, 0,
- 4, 16, 39, 33, 4, 16, 40, 33,
- 4, 16, 41, 33, 42, 4, 16, 33,
- 43, 4, 16, 33, 4, 16, 32, 33,
- 31, 0, 46, 49, 0, 47, 0, 48,
- 0, 31, 0, 50, 0, 51, 0, 52,
- 0, 53, 0, 54, 0, 55, 0, 57,
- 56, 57, 56, 57, 57, 4, 58, 72,
- 4, 365, 373, 377, 395, 402, 414, 57,
- 56, 57, 59, 56, 57, 60, 56, 57,
- 61, 56, 57, 62, 56, 57, 63, 56,
- 57, 64, 56, 57, 65, 56, 57, 66,
- 56, 57, 67, 56, 57, 68, 56, 57,
- 69, 56, 57, 70, 56, 57, 71, 56,
- 57, 4, 56, 57, 73, 56, 4, 4,
- 5, 15, 17, 31, 34, 37, 45, 74,
- 112, 119, 235, 269, 4, 0, 75, 0,
- 76, 0, 77, 0, 78, 0, 79, 0,
- 80, 0, 81, 0, 82, 0, 83, 0,
- 84, 0, 85, 0, 86, 0, 87, 0,
- 88, 0, 89, 0, 90, 0, 91, 0,
- 92, 0, 94, 93, 94, 93, 94, 94,
- 4, 95, 109, 4, 110, 340, 344, 357,
- 94, 93, 94, 96, 93, 94, 97, 93,
- 94, 98, 93, 94, 99, 93, 94, 100,
- 93, 94, 101, 93, 94, 102, 93, 94,
- 103, 93, 94, 104, 93, 94, 105, 93,
- 94, 106, 93, 94, 107, 93, 94, 108,
- 93, 94, 4, 93, 94, 73, 93, 94,
- 111, 339, 93, 4, 4, 5, 15, 17,
- 31, 34, 37, 45, 74, 112, 119, 235,
- 334, 269, 4, 0, 113, 0, 114, 0,
- 115, 0, 116, 0, 117, 0, 118, 0,
- 82, 0, 120, 142, 143, 0, 121, 0,
- 122, 0, 123, 0, 124, 0, 125, 0,
- 126, 0, 127, 0, 128, 0, 129, 0,
- 131, 130, 131, 130, 131, 131, 4, 132,
- 4, 131, 130, 131, 133, 130, 134, 131,
- 130, 135, 131, 130, 131, 136, 130, 131,
- 137, 130, 131, 138, 130, 131, 139, 130,
- 131, 140, 130, 131, 141, 130, 131, 73,
- 130, 31, 0, 144, 229, 231, 0, 145,
- 0, 146, 0, 147, 0, 148, 0, 149,
- 0, 150, 0, 151, 0, 152, 0, 154,
- 153, 154, 153, 154, 154, 4, 155, 4,
- 169, 176, 193, 200, 221, 154, 153, 154,
- 156, 153, 154, 157, 153, 154, 158, 153,
- 154, 159, 153, 154, 160, 153, 154, 161,
- 153, 154, 162, 153, 154, 163, 153, 154,
- 164, 153, 154, 165, 153, 154, 166, 153,
- 154, 167, 153, 154, 168, 153, 154, 4,
- 153, 154, 170, 153, 154, 171, 153, 154,
- 172, 153, 154, 173, 153, 154, 174, 153,
- 154, 175, 153, 154, 73, 153, 177, 154,
- 153, 178, 154, 153, 179, 154, 153, 180,
- 154, 153, 154, 181, 153, 154, 182, 153,
- 154, 183, 153, 154, 184, 153, 154, 185,
- 153, 186, 154, 153, 187, 154, 153, 154,
- 188, 153, 189, 154, 153, 190, 154, 153,
- 191, 154, 153, 192, 154, 153, 154, 175,
- 153, 154, 194, 153, 154, 195, 153, 154,
- 196, 153, 154, 197, 153, 154, 198, 153,
- 154, 199, 153, 154, 184, 153, 201, 154,
- 209, 153, 202, 154, 153, 203, 154, 153,
- 204, 154, 153, 154, 205, 153, 154, 206,
- 153, 154, 207, 153, 154, 208, 153, 154,
- 175, 153, 210, 154, 217, 153, 211, 154,
- 153, 154, 212, 153, 154, 213, 153, 154,
- 214, 153, 154, 215, 153, 154, 216, 153,
- 154, 175, 153, 154, 218, 153, 154, 219,
- 153, 220, 154, 153, 175, 154, 153, 154,
- 222, 153, 223, 154, 153, 224, 154, 153,
- 154, 225, 153, 226, 154, 153, 227, 154,
- 153, 228, 154, 153, 175, 154, 153, 230,
- 0, 31, 0, 232, 0, 233, 0, 234,
- 0, 54, 0, 236, 0, 237, 0, 238,
- 0, 239, 0, 240, 0, 241, 0, 242,
- 0, 243, 0, 244, 0, 246, 245, 246,
- 245, 246, 246, 4, 247, 261, 4, 262,
- 276, 286, 303, 310, 326, 246, 245, 246,
- 248, 245, 246, 249, 245, 246, 250, 245,
- 246, 251, 245, 246, 252, 245, 246, 253,
- 245, 246, 254, 245, 246, 255, 245, 246,
- 256, 245, 246, 257, 245, 246, 258, 245,
- 246, 259, 245, 246, 260, 245, 246, 4,
- 245, 246, 73, 245, 246, 263, 275, 245,
- 4, 4, 5, 15, 17, 31, 34, 37,
- 45, 74, 112, 119, 235, 264, 269, 4,
- 0, 265, 0, 266, 0, 267, 0, 268,
- 0, 73, 0, 269, 270, 269, 0, 274,
- 273, 272, 270, 273, 271, 0, 272, 270,
- 271, 0, 272, 271, 274, 273, 272, 270,
- 273, 271, 274, 274, 5, 15, 17, 31,
- 34, 37, 45, 74, 112, 119, 235, 269,
- 274, 0, 246, 261, 245, 246, 277, 280,
- 245, 246, 278, 245, 279, 246, 245, 261,
- 246, 245, 246, 281, 245, 246, 282, 245,
- 246, 283, 245, 246, 284, 245, 246, 285,
- 245, 246, 73, 245, 287, 246, 245, 288,
- 246, 245, 289, 246, 245, 290, 246, 245,
- 246, 291, 245, 246, 292, 245, 246, 293,
- 245, 246, 294, 245, 246, 295, 245, 296,
- 246, 245, 297, 246, 245, 246, 298, 245,
- 299, 246, 245, 300, 246, 245, 301, 246,
- 245, 302, 246, 245, 246, 285, 245, 246,
- 304, 245, 246, 305, 245, 246, 306, 245,
- 246, 307, 245, 246, 308, 245, 246, 309,
- 245, 246, 294, 245, 246, 311, 312, 245,
- 246, 261, 245, 313, 246, 320, 322, 245,
- 314, 246, 245, 246, 315, 245, 246, 316,
- 245, 246, 317, 245, 246, 318, 245, 246,
- 319, 245, 246, 285, 245, 246, 321, 245,
- 246, 261, 245, 246, 323, 245, 246, 324,
- 245, 325, 246, 245, 285, 246, 245, 246,
- 327, 245, 328, 246, 245, 329, 246, 245,
- 246, 330, 245, 331, 246, 245, 332, 246,
- 245, 333, 246, 245, 285, 246, 245, 335,
- 0, 336, 0, 337, 0, 338, 0, 73,
- 0, 94, 109, 93, 94, 341, 93, 94,
- 342, 93, 343, 94, 93, 109, 94, 93,
- 94, 345, 346, 93, 94, 109, 93, 347,
- 94, 355, 93, 348, 94, 93, 94, 349,
- 93, 94, 350, 93, 94, 351, 93, 94,
- 352, 93, 94, 353, 93, 94, 354, 93,
- 94, 73, 93, 94, 356, 93, 94, 109,
- 93, 94, 358, 93, 359, 94, 93, 360,
- 94, 93, 94, 361, 93, 362, 94, 93,
- 363, 94, 93, 364, 94, 93, 354, 94,
- 93, 57, 366, 372, 56, 4, 4, 5,
- 15, 17, 31, 34, 37, 45, 74, 112,
- 119, 235, 367, 269, 4, 0, 368, 0,
- 369, 0, 370, 0, 371, 0, 73, 0,
- 57, 72, 56, 57, 374, 56, 57, 375,
- 56, 376, 57, 56, 72, 57, 56, 378,
- 57, 56, 379, 57, 56, 380, 57, 56,
- 381, 57, 56, 57, 382, 56, 57, 383,
- 56, 57, 384, 56, 57, 385, 56, 57,
- 386, 56, 387, 57, 56, 388, 57, 56,
- 57, 389, 56, 390, 57, 56, 391, 57,
- 56, 392, 57, 56, 393, 57, 56, 57,
- 394, 56, 57, 73, 56, 57, 396, 56,
- 57, 397, 56, 57, 398, 56, 57, 399,
- 56, 57, 400, 56, 57, 401, 56, 57,
- 385, 56, 57, 403, 404, 56, 57, 72,
- 56, 405, 57, 412, 56, 406, 57, 56,
- 57, 407, 56, 57, 408, 56, 57, 409,
- 56, 57, 410, 56, 57, 411, 56, 57,
- 394, 56, 57, 413, 56, 57, 72, 56,
- 57, 415, 56, 416, 57, 56, 417, 57,
- 56, 57, 418, 56, 419, 57, 56, 420,
- 57, 56, 421, 57, 56, 394, 57, 56,
- 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 54, 0, 5,
- 1, 0, 29, 1, 29, 29, 29, 29,
- 29, 29, 35, 0, 43, 0, 43, 0,
- 43, 139, 48, 9, 106, 11, 0, 134,
- 45, 45, 45, 3, 122, 33, 33, 33,
- 0, 122, 33, 33, 33, 0, 122, 33,
- 0, 33, 0, 102, 7, 7, 43, 54,
- 0, 0, 43, 114, 25, 0, 54, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 149, 126,
- 57, 110, 23, 0, 43, 43, 43, 43,
- 0, 27, 118, 27, 27, 51, 27, 0,
- 54, 0, 1, 0, 43, 0, 0, 43,
- 149, 126, 57, 57, 110, 23, 0, 0,
- 110, 23, 0, 0, 0, 110, 23, 0,
- 0, 110, 23, 0, 110, 23, 0, 0,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 72, 33, 84,
- 72, 84, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 54, 15, 0, 130, 31,
- 60, 57, 31, 63, 57, 63, 63, 63,
- 63, 63, 63, 66, 31, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 78, 33, 84, 78, 84, 84, 84, 84,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 19, 0, 54, 19, 0, 54,
- 19, 0, 0, 130, 31, 60, 57, 31,
- 63, 57, 63, 63, 63, 63, 63, 63,
- 0, 66, 31, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 81, 84,
- 81, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 21,
- 0, 0, 43, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 69, 33, 69,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 13,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 13, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 75, 33, 84, 75, 84,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 17,
- 0, 54, 17, 0, 54, 17, 0, 0,
- 130, 31, 60, 57, 31, 63, 57, 63,
- 63, 63, 63, 63, 63, 0, 66, 31,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 17, 43, 0, 0, 0, 43, 54,
- 37, 37, 87, 37, 37, 43, 0, 39,
- 0, 43, 0, 0, 54, 0, 0, 39,
- 0, 0, 54, 0, 93, 90, 41, 96,
- 90, 96, 96, 96, 96, 96, 96, 99,
- 0, 43, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 17, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 19,
- 43, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 19, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 15, 0, 0, 130, 31, 60,
- 57, 31, 63, 57, 63, 63, 63, 63,
- 63, 63, 0, 66, 31, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 15, 43,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 15, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 422;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 1031 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
-
- #line 1038 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1328 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1391 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cs.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_cs()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Cs", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/cs.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/cs.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 18, 19, 20, 37, 38, 39,
- 41, 43, 48, 53, 58, 63, 67, 71,
- 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 91, 93, 98, 105, 110, 112, 115,
- 118, 121, 124, 127, 130, 131, 133, 134,
- 135, 136, 137, 138, 139, 140, 141, 142,
- 143, 144, 159, 161, 163, 165, 167, 169,
- 171, 173, 175, 177, 179, 181, 183, 185,
- 187, 189, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 239,
- 241, 243, 245, 247, 249, 251, 253, 255,
- 257, 259, 261, 263, 265, 267, 269, 272,
- 290, 291, 292, 293, 294, 295, 296, 297,
- 300, 301, 302, 303, 304, 305, 306, 307,
- 308, 309, 310, 311, 318, 320, 322, 324,
- 326, 328, 330, 332, 334, 336, 338, 339,
- 342, 343, 344, 345, 346, 347, 348, 349,
- 350, 351, 352, 364, 366, 368, 370, 372,
- 374, 376, 378, 380, 382, 384, 386, 388,
- 390, 392, 394, 396, 398, 400, 402, 404,
- 406, 408, 410, 412, 414, 416, 418, 420,
- 422, 424, 426, 428, 430, 432, 434, 436,
- 438, 440, 442, 444, 446, 448, 450, 452,
- 454, 457, 459, 461, 463, 465, 467, 469,
- 471, 473, 476, 478, 480, 482, 484, 486,
- 488, 490, 492, 494, 496, 498, 500, 502,
- 504, 506, 508, 510, 512, 514, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 531, 546,
- 548, 550, 552, 554, 556, 558, 560, 562,
- 564, 566, 568, 570, 572, 574, 576, 579,
- 597, 598, 599, 600, 601, 602, 603, 604,
- 605, 606, 607, 608, 609, 610, 611, 612,
- 613, 614, 615, 616, 620, 626, 629, 631,
- 637, 654, 656, 659, 661, 663, 665, 667,
- 669, 671, 673, 675, 677, 679, 681, 683,
- 685, 687, 689, 691, 693, 695, 697, 699,
- 701, 703, 705, 707, 709, 711, 713, 715,
- 717, 719, 721, 723, 725, 728, 730, 734,
- 736, 738, 740, 742, 744, 746, 748, 750,
- 752, 754, 756, 758, 760, 762, 764, 766,
- 768, 770, 772, 774, 776, 778, 780, 782,
- 784, 786, 788, 790, 792, 794, 796, 798,
- 800, 802, 804, 805, 806, 807, 808, 809,
- 811, 813, 815, 817, 819, 822, 824, 827,
- 829, 831, 833, 835, 837, 839, 841, 843,
- 845, 847, 849, 851, 853, 855, 857, 859,
- 861, 863, 865, 867, 869, 871, 873, 875,
- 877, 879, 881, 883, 885, 887, 889, 891,
- 894, 912, 913, 914, 915, 916, 917, 919,
- 921, 923, 925, 927, 929, 931, 933, 935,
- 937, 939, 941, 943, 945, 947, 949, 951,
- 953, 955, 957, 959, 961, 963, 965, 967,
- 969, 971, 973, 975, 977, 980, 982, 985,
- 987, 989, 991, 993, 995, 997, 999, 1001,
- 1003, 1005, 1007, 1009, 1011, 1013, 1015, 1017,
- 1019, 1021, 1023, 1025, 1027, 1029, 1031, 1033,
- 1035, 1037, 1039, 1041, 1043, 1045, 1047
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 75, 78, 79, 80, 83, 90, 124,
- 9, 13, -69, -65, 10, 32, 34, 35,
- 37, 42, 64, 65, 75, 78, 79, 80,
- 83, 90, 124, 9, 13, 34, 34, 10,
- 13, 10, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 9, 13, 10, 32, 9, 13, 10,
- 13, 10, 95, 70, 69, 65, 84, 85,
- 82, 69, 95, 69, 78, 68, 95, 37,
- 32, 10, 13, 10, 13, 13, 32, 64,
- 9, 10, 9, 10, 13, 32, 64, 11,
- 12, 10, 32, 64, 9, 13, 32, 108,
- 10, 13, 116, 10, 13, 97, 10, 13,
- 107, -61, 10, 13, -87, 10, 13, 10,
- 13, 32, 101, 100, 111, 121, -59, -66,
- 110, 116, 101, 120, 116, 58, 10, 10,
- 10, 32, 35, 37, 42, 64, 65, 75,
- 78, 79, 80, 83, 90, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 32, 10, 32, 34,
- 35, 37, 42, 64, 65, 75, 78, 79,
- 80, 83, 90, 124, 9, 13, -61, -95,
- -60, -115, 114, 116, 32, 83, 99, -61,
- -87, 110, -61, -95, -59, -103, 101, 58,
- 10, 10, 10, 32, 35, 37, 42, 64,
- 65, 75, 80, 83, 90, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 32, 10, 32, 108,
- 10, 32, 34, 35, 37, 42, 64, 65,
- 75, 78, 79, 80, 83, 90, 116, 124,
- 9, 13, 115, 110, 111, 118, 97, 32,
- 115, -59, 97, 111, -103, -61, -83, 107,
- 108, 97, 100, 121, 58, 10, 10, 10,
- 32, 35, 80, 124, 9, 13, 10, 111,
- -59, 10, -66, 10, 10, 97, 10, 100,
- 10, 97, 10, 118, 10, 101, 10, 107,
- 10, 58, 107, -59, 107, 122, -66, 97,
- 100, 97, 118, 101, 107, 58, 10, 10,
- 10, 32, 35, 37, 64, 75, 78, 79,
- 80, 83, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 111, 10, 110, 10, 116, 10, 101,
- 10, 120, 10, 116, 10, 58, -61, 10,
- -95, 10, -60, 10, -115, 10, 10, 114,
- 10, 116, 10, 32, 10, 83, 10, 99,
- -61, 10, -87, 10, 10, 110, -61, 10,
- -95, 10, -59, 10, -103, 10, 10, 101,
- 10, 115, 10, 110, 10, 111, 10, 118,
- 10, 97, 10, 32, 10, 115, -59, 10,
- 111, -103, 10, -61, 10, -83, 10, 10,
- 107, 10, 108, 10, 97, 10, 100, 10,
- 121, -59, 10, 122, -66, 10, 10, 97,
- 10, 100, 10, 97, 10, 118, 10, 101,
- 10, 107, 10, 97, 10, 100, -61, 10,
- -83, 10, 10, 99, -61, 10, -87, 10,
- 10, 110, -61, 10, -95, 10, -59, 10,
- -103, 10, 117, 100, 97, 100, -61, -83,
- 99, -61, -87, 110, -61, -95, -59, -103,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 65, 75, 78, 79, 80, 83, 90,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 32,
- 10, 32, 108, 10, 32, 34, 35, 37,
- 42, 64, 65, 75, 78, 79, 80, 83,
- 90, 116, 124, 9, 13, 97, 32, 112,
- -59, -103, 101, 100, 112, 111, 107, 108,
- 97, 100, 117, 97, 107, -61, -87, 32,
- 32, 124, 9, 13, 10, 32, 92, 124,
- 9, 13, 10, 92, 124, 10, 92, 10,
- 32, 92, 124, 9, 13, 10, 32, 34,
- 35, 37, 42, 64, 65, 75, 78, 79,
- 80, 83, 90, 124, 9, 13, 10, 101,
- 10, 100, 111, 10, 121, -59, 10, -66,
- 10, 10, 110, 10, 116, 10, 101, 10,
- 120, 10, 116, 10, 58, -61, 10, -95,
- 10, -60, 10, -115, 10, 10, 114, 10,
- 116, 10, 32, 10, 83, 10, 99, -61,
- 10, -87, 10, 10, 110, -61, 10, -95,
- 10, -59, 10, -103, 10, 10, 101, 10,
- 115, 10, 110, 10, 111, 10, 118, 10,
- 97, 10, 32, 10, 115, 10, 97, 111,
- 10, 107, -59, 10, 107, 122, -66, 10,
- 10, 97, 10, 100, 10, 97, 10, 118,
- 10, 101, 10, 107, 10, 117, 10, 100,
- 10, 97, 10, 100, -61, 10, -83, 10,
- 10, 99, -61, 10, -87, 10, 10, 110,
- -61, 10, -95, 10, -59, 10, -103, 10,
- 10, 97, 10, 32, 10, 112, -59, 10,
- -103, 10, 10, 101, 10, 100, 10, 112,
- 10, 111, 10, 107, 10, 108, 10, 97,
- 10, 100, 10, 117, 97, 107, -61, -87,
- 32, 10, 101, 10, 100, 10, 121, -59,
- 10, -66, 10, 10, 97, 111, 10, 107,
- -59, 10, 107, -66, 10, 10, 97, 10,
- 100, 10, 97, 10, 118, 10, 101, 10,
- 107, 10, 58, 10, 117, 10, 100, 10,
- 99, -61, 10, -87, 10, 10, 110, -61,
- 10, -95, 10, -59, 10, -103, 10, 10,
- 97, 10, 32, 10, 112, -59, 10, -103,
- 10, 10, 101, 10, 100, 10, 112, 10,
- 111, 10, 107, 10, 108, 10, 97, 10,
- 100, 10, 117, 10, 32, 108, 10, 32,
- 34, 35, 37, 42, 64, 65, 75, 78,
- 79, 80, 83, 90, 116, 124, 9, 13,
- 97, 107, -61, -87, 32, 10, 101, 10,
- 100, 10, 121, -59, 10, -66, 10, -61,
- 10, -95, 10, -60, 10, -115, 10, 10,
- 114, 10, 116, 10, 32, 10, 83, 10,
- 99, -61, 10, -87, 10, 10, 110, -61,
- 10, -95, 10, -59, 10, -103, 10, 10,
- 101, 10, 58, 10, 115, 10, 110, 10,
- 111, 10, 118, 10, 97, 10, 32, 10,
- 115, 10, 97, 111, 10, 107, -59, 10,
- 107, -66, 10, 10, 97, 10, 100, 10,
- 97, 10, 118, 10, 101, 10, 107, 10,
- 117, 10, 100, 10, 99, -61, 10, -87,
- 10, 10, 110, -61, 10, -95, 10, -59,
- 10, -103, 10, 10, 97, 10, 32, 10,
- 112, -59, 10, -103, 10, 10, 101, 10,
- 100, 10, 112, 10, 111, 10, 107, 10,
- 108, 10, 97, 10, 100, 10, 117, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 16, 1, 1, 15, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 2, 3, 3,
- 3, 3, 3, 3, 1, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 13, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 15, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 11, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 16,
- 1, 1, 1, 1, 1, 1, 1, 3,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 5, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 3,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 10, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 13, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 16,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 2, 4, 3, 2, 4,
- 15, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 4, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 2,
- 2, 2, 2, 2, 3, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 16, 1, 1, 1, 1, 1, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 1, 0, 0, 1,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 18, 20, 22, 39, 41, 43,
- 46, 49, 54, 59, 64, 69, 73, 77,
- 80, 82, 84, 86, 88, 90, 92, 94,
- 96, 98, 100, 102, 104, 106, 108, 110,
- 112, 115, 118, 123, 130, 135, 138, 142,
- 146, 150, 154, 158, 162, 164, 167, 169,
- 171, 173, 175, 177, 179, 181, 183, 185,
- 187, 189, 204, 207, 210, 213, 216, 219,
- 222, 225, 228, 231, 234, 237, 240, 243,
- 246, 249, 266, 268, 270, 272, 274, 276,
- 278, 280, 282, 284, 286, 288, 290, 292,
- 294, 296, 298, 300, 302, 304, 306, 319,
- 322, 325, 328, 331, 334, 337, 340, 343,
- 346, 349, 352, 355, 358, 361, 364, 368,
- 386, 388, 390, 392, 394, 396, 398, 400,
- 404, 406, 408, 410, 412, 414, 416, 418,
- 420, 422, 424, 426, 433, 436, 439, 442,
- 445, 448, 451, 454, 457, 460, 463, 465,
- 469, 471, 473, 475, 477, 479, 481, 483,
- 485, 487, 489, 501, 504, 507, 510, 513,
- 516, 519, 522, 525, 528, 531, 534, 537,
- 540, 543, 546, 549, 552, 555, 558, 561,
- 564, 567, 570, 573, 576, 579, 582, 585,
- 588, 591, 594, 597, 600, 603, 606, 609,
- 612, 615, 618, 621, 624, 627, 630, 633,
- 636, 640, 643, 646, 649, 652, 655, 658,
- 661, 664, 668, 671, 674, 677, 680, 683,
- 686, 689, 692, 695, 698, 701, 704, 707,
- 710, 713, 716, 719, 722, 725, 727, 729,
- 731, 733, 735, 737, 739, 741, 743, 745,
- 747, 749, 751, 753, 755, 757, 759, 774,
- 777, 780, 783, 786, 789, 792, 795, 798,
- 801, 804, 807, 810, 813, 816, 819, 823,
- 841, 843, 845, 847, 849, 851, 853, 855,
- 857, 859, 861, 863, 865, 867, 869, 871,
- 873, 875, 877, 879, 883, 889, 893, 896,
- 902, 919, 922, 926, 929, 932, 935, 938,
- 941, 944, 947, 950, 953, 956, 959, 962,
- 965, 968, 971, 974, 977, 980, 983, 986,
- 989, 992, 995, 998, 1001, 1004, 1007, 1010,
- 1013, 1016, 1019, 1022, 1025, 1029, 1032, 1037,
- 1040, 1043, 1046, 1049, 1052, 1055, 1058, 1061,
- 1064, 1067, 1070, 1073, 1076, 1079, 1082, 1085,
- 1088, 1091, 1094, 1097, 1100, 1103, 1106, 1109,
- 1112, 1115, 1118, 1121, 1124, 1127, 1130, 1133,
- 1136, 1139, 1142, 1144, 1146, 1148, 1150, 1152,
- 1155, 1158, 1161, 1164, 1167, 1171, 1174, 1178,
- 1181, 1184, 1187, 1190, 1193, 1196, 1199, 1202,
- 1205, 1208, 1211, 1214, 1217, 1220, 1223, 1226,
- 1229, 1232, 1235, 1238, 1241, 1244, 1247, 1250,
- 1253, 1256, 1259, 1262, 1265, 1268, 1271, 1274,
- 1278, 1296, 1298, 1300, 1302, 1304, 1306, 1309,
- 1312, 1315, 1318, 1321, 1324, 1327, 1330, 1333,
- 1336, 1339, 1342, 1345, 1348, 1351, 1354, 1357,
- 1360, 1363, 1366, 1369, 1372, 1375, 1378, 1381,
- 1384, 1387, 1390, 1393, 1396, 1400, 1403, 1407,
- 1410, 1413, 1416, 1419, 1422, 1425, 1428, 1431,
- 1434, 1437, 1440, 1443, 1446, 1449, 1452, 1455,
- 1458, 1461, 1464, 1467, 1470, 1473, 1476, 1479,
- 1482, 1485, 1488, 1491, 1494, 1497, 1500
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 45, 74, 112, 119, 235, 264, 283,
- 4, 0, 3, 0, 4, 0, 4, 4,
- 5, 15, 17, 31, 34, 37, 45, 74,
- 112, 119, 235, 264, 283, 4, 0, 6,
- 0, 7, 0, 9, 8, 8, 9, 8,
- 8, 10, 10, 11, 10, 10, 10, 10,
- 11, 10, 10, 10, 10, 12, 10, 10,
- 10, 10, 13, 10, 10, 4, 14, 14,
- 0, 4, 14, 14, 0, 4, 16, 15,
- 4, 0, 18, 0, 19, 0, 20, 0,
- 21, 0, 22, 0, 23, 0, 24, 0,
- 25, 0, 26, 0, 27, 0, 28, 0,
- 29, 0, 30, 0, 478, 0, 32, 0,
- 4, 16, 33, 4, 16, 33, 0, 0,
- 0, 0, 35, 36, 4, 36, 36, 34,
- 35, 35, 4, 36, 34, 36, 0, 38,
- 44, 0, 4, 16, 39, 33, 4, 16,
- 40, 33, 4, 16, 41, 33, 42, 4,
- 16, 33, 43, 4, 16, 33, 4, 16,
- 32, 33, 31, 0, 46, 49, 0, 47,
- 0, 48, 0, 31, 0, 50, 0, 51,
- 0, 52, 0, 53, 0, 54, 0, 55,
- 0, 57, 56, 57, 56, 57, 57, 4,
- 58, 72, 4, 407, 415, 419, 437, 444,
- 456, 464, 57, 56, 57, 59, 56, 57,
- 60, 56, 57, 61, 56, 57, 62, 56,
- 57, 63, 56, 57, 64, 56, 57, 65,
- 56, 57, 66, 56, 57, 67, 56, 57,
- 68, 56, 57, 69, 56, 57, 70, 56,
- 57, 71, 56, 57, 4, 56, 57, 73,
- 56, 4, 4, 5, 15, 17, 31, 34,
- 37, 45, 74, 112, 119, 235, 264, 283,
- 4, 0, 75, 0, 76, 0, 77, 0,
- 78, 0, 79, 0, 80, 0, 81, 0,
- 82, 0, 83, 0, 84, 0, 85, 0,
- 86, 0, 87, 0, 88, 0, 89, 0,
- 90, 0, 91, 0, 92, 0, 94, 93,
- 94, 93, 94, 94, 4, 95, 109, 4,
- 110, 368, 372, 385, 393, 94, 93, 94,
- 96, 93, 94, 97, 93, 94, 98, 93,
- 94, 99, 93, 94, 100, 93, 94, 101,
- 93, 94, 102, 93, 94, 103, 93, 94,
- 104, 93, 94, 105, 93, 94, 106, 93,
- 94, 107, 93, 94, 108, 93, 94, 4,
- 93, 94, 73, 93, 94, 111, 367, 93,
- 4, 4, 5, 15, 17, 31, 34, 37,
- 45, 74, 112, 119, 235, 264, 362, 283,
- 4, 0, 113, 0, 114, 0, 115, 0,
- 116, 0, 117, 0, 118, 0, 82, 0,
- 120, 142, 143, 0, 121, 0, 122, 0,
- 123, 0, 124, 0, 125, 0, 126, 0,
- 127, 0, 128, 0, 129, 0, 131, 130,
- 131, 130, 131, 131, 4, 132, 4, 131,
- 130, 131, 133, 130, 134, 131, 130, 135,
- 131, 130, 131, 136, 130, 131, 137, 130,
- 131, 138, 130, 131, 139, 130, 131, 140,
- 130, 131, 141, 130, 131, 73, 130, 31,
- 0, 144, 229, 231, 0, 145, 0, 146,
- 0, 147, 0, 148, 0, 149, 0, 150,
- 0, 151, 0, 152, 0, 154, 153, 154,
- 153, 154, 154, 4, 155, 4, 169, 176,
- 193, 200, 221, 154, 153, 154, 156, 153,
- 154, 157, 153, 154, 158, 153, 154, 159,
- 153, 154, 160, 153, 154, 161, 153, 154,
- 162, 153, 154, 163, 153, 154, 164, 153,
- 154, 165, 153, 154, 166, 153, 154, 167,
- 153, 154, 168, 153, 154, 4, 153, 154,
- 170, 153, 154, 171, 153, 154, 172, 153,
- 154, 173, 153, 154, 174, 153, 154, 175,
- 153, 154, 73, 153, 177, 154, 153, 178,
- 154, 153, 179, 154, 153, 180, 154, 153,
- 154, 181, 153, 154, 182, 153, 154, 183,
- 153, 154, 184, 153, 154, 185, 153, 186,
- 154, 153, 187, 154, 153, 154, 188, 153,
- 189, 154, 153, 190, 154, 153, 191, 154,
- 153, 192, 154, 153, 154, 175, 153, 154,
- 194, 153, 154, 195, 153, 154, 196, 153,
- 154, 197, 153, 154, 198, 153, 154, 199,
- 153, 154, 184, 153, 201, 154, 209, 153,
- 202, 154, 153, 203, 154, 153, 204, 154,
- 153, 154, 205, 153, 154, 206, 153, 154,
- 207, 153, 154, 208, 153, 154, 175, 153,
- 210, 154, 217, 153, 211, 154, 153, 154,
- 212, 153, 154, 213, 153, 154, 214, 153,
- 154, 215, 153, 154, 216, 153, 154, 175,
- 153, 154, 218, 153, 154, 219, 153, 220,
- 154, 153, 175, 154, 153, 154, 222, 153,
- 223, 154, 153, 224, 154, 153, 154, 225,
- 153, 226, 154, 153, 227, 154, 153, 228,
- 154, 153, 175, 154, 153, 230, 0, 31,
- 0, 232, 0, 233, 0, 234, 0, 54,
- 0, 236, 0, 237, 0, 238, 0, 239,
- 0, 240, 0, 241, 0, 242, 0, 243,
- 0, 244, 0, 246, 245, 246, 245, 246,
- 246, 4, 247, 261, 4, 262, 290, 300,
- 317, 324, 340, 348, 246, 245, 246, 248,
- 245, 246, 249, 245, 246, 250, 245, 246,
- 251, 245, 246, 252, 245, 246, 253, 245,
- 246, 254, 245, 246, 255, 245, 246, 256,
- 245, 246, 257, 245, 246, 258, 245, 246,
- 259, 245, 246, 260, 245, 246, 4, 245,
- 246, 73, 245, 246, 263, 289, 245, 4,
- 4, 5, 15, 17, 31, 34, 37, 45,
- 74, 112, 119, 235, 264, 278, 283, 4,
- 0, 265, 0, 266, 0, 267, 0, 268,
- 0, 269, 0, 270, 0, 271, 0, 272,
- 0, 273, 0, 274, 0, 275, 0, 276,
- 0, 277, 0, 31, 0, 279, 0, 280,
- 0, 281, 0, 282, 0, 73, 0, 283,
- 284, 283, 0, 288, 287, 286, 284, 287,
- 285, 0, 286, 284, 285, 0, 286, 285,
- 288, 287, 286, 284, 287, 285, 288, 288,
- 5, 15, 17, 31, 34, 37, 45, 74,
- 112, 119, 235, 264, 283, 288, 0, 246,
- 261, 245, 246, 291, 294, 245, 246, 292,
- 245, 293, 246, 245, 261, 246, 245, 246,
- 295, 245, 246, 296, 245, 246, 297, 245,
- 246, 298, 245, 246, 299, 245, 246, 73,
- 245, 301, 246, 245, 302, 246, 245, 303,
- 246, 245, 304, 246, 245, 246, 305, 245,
- 246, 306, 245, 246, 307, 245, 246, 308,
- 245, 246, 309, 245, 310, 246, 245, 311,
- 246, 245, 246, 312, 245, 313, 246, 245,
- 314, 246, 245, 315, 246, 245, 316, 246,
- 245, 246, 299, 245, 246, 318, 245, 246,
- 319, 245, 246, 320, 245, 246, 321, 245,
- 246, 322, 245, 246, 323, 245, 246, 308,
- 245, 246, 325, 326, 245, 246, 261, 245,
- 327, 246, 334, 336, 245, 328, 246, 245,
- 246, 329, 245, 246, 330, 245, 246, 331,
- 245, 246, 332, 245, 246, 333, 245, 246,
- 299, 245, 246, 335, 245, 246, 261, 245,
- 246, 337, 245, 246, 338, 245, 339, 246,
- 245, 299, 246, 245, 246, 341, 245, 342,
- 246, 245, 343, 246, 245, 246, 344, 245,
- 345, 246, 245, 346, 246, 245, 347, 246,
- 245, 299, 246, 245, 246, 349, 245, 246,
- 350, 245, 246, 351, 245, 352, 246, 245,
- 353, 246, 245, 246, 354, 245, 246, 355,
- 245, 246, 356, 245, 246, 357, 245, 246,
- 358, 245, 246, 359, 245, 246, 360, 245,
- 246, 361, 245, 246, 261, 245, 363, 0,
- 364, 0, 365, 0, 366, 0, 73, 0,
- 94, 109, 93, 94, 369, 93, 94, 370,
- 93, 371, 94, 93, 109, 94, 93, 94,
- 373, 374, 93, 94, 109, 93, 375, 94,
- 383, 93, 376, 94, 93, 94, 377, 93,
- 94, 378, 93, 94, 379, 93, 94, 380,
- 93, 94, 381, 93, 94, 382, 93, 94,
- 73, 93, 94, 384, 93, 94, 109, 93,
- 94, 386, 93, 387, 94, 93, 388, 94,
- 93, 94, 389, 93, 390, 94, 93, 391,
- 94, 93, 392, 94, 93, 382, 94, 93,
- 94, 394, 93, 94, 395, 93, 94, 396,
- 93, 397, 94, 93, 398, 94, 93, 94,
- 399, 93, 94, 400, 93, 94, 401, 93,
- 94, 402, 93, 94, 403, 93, 94, 404,
- 93, 94, 405, 93, 94, 406, 93, 94,
- 109, 93, 57, 408, 414, 56, 4, 4,
- 5, 15, 17, 31, 34, 37, 45, 74,
- 112, 119, 235, 264, 409, 283, 4, 0,
- 410, 0, 411, 0, 412, 0, 413, 0,
- 73, 0, 57, 72, 56, 57, 416, 56,
- 57, 417, 56, 418, 57, 56, 72, 57,
- 56, 420, 57, 56, 421, 57, 56, 422,
- 57, 56, 423, 57, 56, 57, 424, 56,
- 57, 425, 56, 57, 426, 56, 57, 427,
- 56, 57, 428, 56, 429, 57, 56, 430,
- 57, 56, 57, 431, 56, 432, 57, 56,
- 433, 57, 56, 434, 57, 56, 435, 57,
- 56, 57, 436, 56, 57, 73, 56, 57,
- 438, 56, 57, 439, 56, 57, 440, 56,
- 57, 441, 56, 57, 442, 56, 57, 443,
- 56, 57, 427, 56, 57, 445, 446, 56,
- 57, 72, 56, 447, 57, 454, 56, 448,
- 57, 56, 57, 449, 56, 57, 450, 56,
- 57, 451, 56, 57, 452, 56, 57, 453,
- 56, 57, 436, 56, 57, 455, 56, 57,
- 72, 56, 57, 457, 56, 458, 57, 56,
- 459, 57, 56, 57, 460, 56, 461, 57,
- 56, 462, 57, 56, 463, 57, 56, 436,
- 57, 56, 57, 465, 56, 57, 466, 56,
- 57, 467, 56, 468, 57, 56, 469, 57,
- 56, 57, 470, 56, 57, 471, 56, 57,
- 472, 56, 57, 473, 56, 57, 474, 56,
- 57, 475, 56, 57, 476, 56, 57, 477,
- 56, 57, 72, 56, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 35,
- 0, 43, 0, 43, 0, 43, 54, 0,
- 5, 1, 0, 29, 1, 29, 29, 29,
- 29, 29, 29, 29, 35, 0, 43, 0,
- 43, 0, 43, 139, 48, 9, 106, 11,
- 0, 134, 45, 45, 45, 3, 122, 33,
- 33, 33, 0, 122, 33, 33, 33, 0,
- 122, 33, 0, 33, 0, 102, 7, 7,
- 43, 54, 0, 0, 43, 114, 25, 0,
- 54, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 149, 126, 57, 110, 23, 0, 43, 43,
- 43, 43, 0, 27, 118, 27, 27, 51,
- 27, 0, 54, 0, 1, 0, 43, 0,
- 0, 43, 149, 126, 57, 57, 110, 23,
- 0, 0, 110, 23, 0, 0, 0, 110,
- 23, 0, 0, 110, 23, 0, 110, 23,
- 0, 0, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 72,
- 33, 84, 72, 84, 84, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 15, 0, 54, 15,
- 0, 130, 31, 60, 57, 31, 63, 57,
- 63, 63, 63, 63, 63, 63, 63, 66,
- 31, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 78, 33, 84, 78,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 19,
- 0, 54, 19, 0, 54, 19, 0, 0,
- 130, 31, 60, 57, 31, 63, 57, 63,
- 63, 63, 63, 63, 63, 63, 0, 66,
- 31, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 81, 84, 81, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 21, 0, 0,
- 43, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 69, 33, 69, 84, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 13, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 75, 33, 84, 75, 84, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 17, 0, 54, 17, 0, 0, 130,
- 31, 60, 57, 31, 63, 57, 63, 63,
- 63, 63, 63, 63, 63, 0, 66, 31,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 17, 43, 0,
- 0, 0, 43, 54, 37, 37, 87, 37,
- 37, 43, 0, 39, 0, 43, 0, 0,
- 54, 0, 0, 39, 0, 0, 54, 0,
- 93, 90, 41, 96, 90, 96, 96, 96,
- 96, 96, 96, 96, 99, 0, 43, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 17,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 19, 43,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 19, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 15, 0, 0, 130, 31,
- 60, 57, 31, 63, 57, 63, 63, 63,
- 63, 63, 63, 63, 0, 66, 31, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 15, 43, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 478;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/cs.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 1119 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/cs.c.rl"
-
-#line 1126 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/cs.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/cs.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/cs.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/cs.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/cs.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/cs.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/cs.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/cs.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/cs.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/cs.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/cs.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/cs.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/cs.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/cs.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/cs.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/cs.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/cs.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/cs.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/cs.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/cs.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/cs.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/cs.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/cs.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/cs.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1416 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/cs.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1479 "ext/gherkin_lexer_cs/gherkin_lexer_cs.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/cs.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_cs()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Cs", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_cy_gb/extconf.rb
index 9482f02,9482f02..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_cy_gb/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_cy_gb")
--have_library("c", "main")
--create_makefile("gherkin_lexer_cy_gb")
diff --cc ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c
index d1e5105,a939a28..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c
+++ /dev/null
@@@ -1,1282 -1,1282 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 18, 19, 20, 37, 38, 39,
- 41, 43, 48, 53, 58, 63, 67, 71,
- 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 91, 93, 98, 105, 110, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 128, 129, 130,
- 141, 143, 145, 147, 149, 151, 153, 155,
- 157, 159, 161, 163, 165, 167, 169, 171,
- 173, 175, 177, 179, 181, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 220,
- 222, 224, 226, 228, 230, 232, 234, 236,
- 238, 240, 242, 244, 246, 248, 250, 254,
- 256, 258, 260, 262, 264, 266, 268, 270,
- 272, 274, 276, 278, 280, 282, 284, 286,
- 288, 290, 292, 294, 296, 298, 300, 302,
- 304, 306, 309, 311, 313, 315, 317, 319,
- 321, 323, 325, 327, 329, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 353, 355, 357,
- 359, 361, 363, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 378,
- 379, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 389, 390, 391, 404, 406, 408,
- 410, 412, 414, 416, 418, 420, 422, 424,
- 426, 428, 430, 432, 434, 438, 440, 442,
- 444, 446, 448, 450, 452, 454, 456, 458,
- 460, 462, 464, 466, 468, 470, 472, 474,
- 476, 478, 480, 482, 484, 486, 488, 490,
- 492, 493, 494, 508, 510, 512, 514, 516,
- 518, 520, 522, 524, 526, 528, 530, 532,
- 534, 536, 538, 542, 544, 546, 548, 550,
- 552, 554, 556, 558, 560, 562, 564, 566,
- 568, 570, 572, 574, 576, 578, 580, 582,
- 584, 586, 588, 590, 592, 594, 596, 598,
- 600, 602, 604, 606, 609, 611, 613, 615,
- 617, 619, 621, 623, 625, 627, 629, 631,
- 632, 636, 642, 645, 647, 653, 670, 672,
- 674, 676, 678, 680, 682, 684, 686, 688,
- 690, 692, 694, 696, 698, 700, 702, 704,
- 706, 708, 710, 712, 714, 716, 718, 720,
- 723, 725, 727, 729, 731, 733, 735, 737,
- 739, 741, 743
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 67, 69, 79, 80, 83, 89, 124,
- 9, 13, -69, -65, 10, 32, 34, 35,
- 37, 42, 64, 65, 67, 69, 79, 80,
- 83, 89, 124, 9, 13, 34, 34, 10,
- 13, 10, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 9, 13, 10, 32, 9, 13, 10,
- 13, 10, 95, 70, 69, 65, 84, 85,
- 82, 69, 95, 69, 78, 68, 95, 37,
- 32, 10, 13, 10, 13, 13, 32, 64,
- 9, 10, 9, 10, 13, 32, 64, 11,
- 12, 10, 32, 64, 9, 13, 32, 110,
- 114, 114, 104, 101, 103, 101, 100, 105,
- 103, 32, 97, 119, 101, 100, 100, 58,
- 10, 10, 10, 32, 35, 37, 64, 65,
- 67, 69, 83, 9, 13, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 114, 10, 119, 10, 101, 10,
- 100, 10, 100, 10, 58, 10, 32, 34,
- 35, 37, 42, 64, 65, 67, 69, 79,
- 80, 83, 89, 124, 9, 13, 101, 102,
- 110, 100, 105, 114, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 65, 79, 80,
- 83, 89, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, 10, 32, 110, 114, 10, 114,
- 10, 104, 10, 101, 10, 103, 10, 101,
- 10, 100, 10, 105, 10, 103, 10, 32,
- 10, 97, 10, 119, 10, 101, 10, 100,
- 10, 100, 10, 58, 10, 110, 10, 100,
- 10, 114, 10, 121, 10, 99, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 111, 10, 32, 58, 10, 65, 10,
- 109, 10, 108, 10, 105, 10, 110, 10,
- 101, 10, 108, 10, 108, 10, 111, 10,
- 108, 10, 110, 110, 103, 104, 114, 101,
- 105, 102, 102, 116, 105, 97, 117, 58,
- 10, 10, 10, 32, 35, 65, 124, 9,
- 13, 10, 114, 10, 119, 10, 101, 10,
- 100, 10, 100, 10, 58, 110, 100, 114,
- 121, 99, 101, 110, 97, 114, 105, 111,
- 32, 58, 65, 109, 108, 105, 110, 101,
- 108, 108, 111, 108, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 65, 79, 80,
- 83, 89, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, 10, 32, 110, 114, 10, 114,
- 10, 104, 10, 101, 10, 103, 10, 101,
- 10, 100, 10, 105, 10, 103, 10, 32,
- 10, 97, 10, 119, 10, 101, 10, 100,
- 10, 100, 10, 58, 10, 110, 10, 100,
- 10, 114, 10, 121, 10, 99, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 111, 10, 110, 10, 10, 10, 32,
- 35, 37, 42, 64, 65, 67, 79, 80,
- 83, 89, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, 10, 32, 110, 114, 10, 114,
- 10, 104, 10, 101, 10, 103, 10, 101,
- 10, 100, 10, 105, 10, 103, 10, 32,
- 10, 97, 10, 119, 10, 101, 10, 100,
- 10, 100, 10, 58, 10, 101, 10, 102,
- 10, 110, 10, 100, 10, 105, 10, 114,
- 10, 110, 10, 100, 10, 114, 10, 121,
- 10, 99, 10, 101, 10, 110, 10, 97,
- 10, 114, 10, 105, 10, 111, 10, 32,
- 58, 10, 65, 10, 109, 10, 108, 10,
- 105, 10, 110, 10, 101, 10, 108, 10,
- 108, 10, 111, 10, 108, 10, 110, 110,
- 32, 124, 9, 13, 10, 32, 92, 124,
- 9, 13, 10, 92, 124, 10, 92, 10,
- 32, 92, 124, 9, 13, 10, 32, 34,
- 35, 37, 42, 64, 65, 67, 69, 79,
- 80, 83, 89, 124, 9, 13, 10, 101,
- 10, 102, 10, 110, 10, 100, 10, 105,
- 10, 114, 10, 110, 10, 103, 10, 104,
- 10, 114, 10, 101, 10, 105, 10, 102,
- 10, 102, 10, 116, 10, 105, 10, 97,
- 10, 117, 10, 99, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 111,
- 10, 32, 58, 10, 65, 10, 109, 10,
- 108, 10, 105, 10, 110, 10, 101, 10,
- 108, 10, 108, 10, 111, 10, 108, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 16, 1, 1, 15, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 3, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 9,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 15, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 11, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 4, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 5, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 11, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 4, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 12, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 4, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 2, 4, 3, 2, 4, 15, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 1, 0, 0, 1, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 18, 20, 22, 39, 41, 43,
- 46, 49, 54, 59, 64, 69, 73, 77,
- 80, 82, 84, 86, 88, 90, 92, 94,
- 96, 98, 100, 102, 104, 106, 108, 110,
- 112, 115, 118, 123, 130, 135, 139, 141,
- 143, 145, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 165, 167, 169, 171, 173,
- 184, 187, 190, 193, 196, 199, 202, 205,
- 208, 211, 214, 217, 220, 223, 226, 229,
- 232, 235, 238, 241, 244, 261, 263, 265,
- 267, 269, 271, 273, 275, 277, 279, 292,
- 295, 298, 301, 304, 307, 310, 313, 316,
- 319, 322, 325, 328, 331, 334, 337, 342,
- 345, 348, 351, 354, 357, 360, 363, 366,
- 369, 372, 375, 378, 381, 384, 387, 390,
- 393, 396, 399, 402, 405, 408, 411, 414,
- 417, 420, 424, 427, 430, 433, 436, 439,
- 442, 445, 448, 451, 454, 457, 459, 461,
- 463, 465, 467, 469, 471, 473, 475, 477,
- 479, 481, 483, 485, 487, 494, 497, 500,
- 503, 506, 509, 512, 514, 516, 518, 520,
- 522, 524, 526, 528, 530, 532, 534, 537,
- 539, 541, 543, 545, 547, 549, 551, 553,
- 555, 557, 559, 561, 563, 576, 579, 582,
- 585, 588, 591, 594, 597, 600, 603, 606,
- 609, 612, 615, 618, 621, 626, 629, 632,
- 635, 638, 641, 644, 647, 650, 653, 656,
- 659, 662, 665, 668, 671, 674, 677, 680,
- 683, 686, 689, 692, 695, 698, 701, 704,
- 707, 709, 711, 725, 728, 731, 734, 737,
- 740, 743, 746, 749, 752, 755, 758, 761,
- 764, 767, 770, 775, 778, 781, 784, 787,
- 790, 793, 796, 799, 802, 805, 808, 811,
- 814, 817, 820, 823, 826, 829, 832, 835,
- 838, 841, 844, 847, 850, 853, 856, 859,
- 862, 865, 868, 871, 875, 878, 881, 884,
- 887, 890, 893, 896, 899, 902, 905, 908,
- 910, 914, 920, 924, 927, 933, 950, 953,
- 956, 959, 962, 965, 968, 971, 974, 977,
- 980, 983, 986, 989, 992, 995, 998, 1001,
- 1004, 1007, 1010, 1013, 1016, 1019, 1022, 1025,
- 1029, 1032, 1035, 1038, 1041, 1044, 1047, 1050,
- 1053, 1056, 1059
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 77, 141, 163, 165, 167, 295, 296,
- 4, 0, 3, 0, 4, 0, 4, 4,
- 5, 15, 17, 31, 34, 37, 77, 141,
- 163, 165, 167, 295, 296, 4, 0, 6,
- 0, 7, 0, 9, 8, 8, 9, 8,
- 8, 10, 10, 11, 10, 10, 10, 10,
- 11, 10, 10, 10, 10, 12, 10, 10,
- 10, 10, 13, 10, 10, 4, 14, 14,
- 0, 4, 14, 14, 0, 4, 16, 15,
- 4, 0, 18, 0, 19, 0, 20, 0,
- 21, 0, 22, 0, 23, 0, 24, 0,
- 25, 0, 26, 0, 27, 0, 28, 0,
- 29, 0, 30, 0, 338, 0, 32, 0,
- 4, 16, 33, 4, 16, 33, 0, 0,
- 0, 0, 35, 36, 4, 36, 36, 34,
- 35, 35, 4, 36, 34, 36, 0, 32,
- 38, 48, 0, 39, 0, 40, 0, 41,
- 0, 42, 0, 43, 0, 44, 0, 45,
- 0, 46, 0, 47, 0, 31, 0, 49,
- 0, 50, 0, 51, 0, 52, 0, 53,
- 0, 55, 54, 55, 54, 55, 55, 4,
- 56, 4, 70, 302, 308, 320, 55, 54,
- 55, 57, 54, 55, 58, 54, 55, 59,
- 54, 55, 60, 54, 55, 61, 54, 55,
- 62, 54, 55, 63, 54, 55, 64, 54,
- 55, 65, 54, 55, 66, 54, 55, 67,
- 54, 55, 68, 54, 55, 69, 54, 55,
- 4, 54, 55, 71, 54, 55, 72, 54,
- 55, 73, 54, 55, 74, 54, 55, 75,
- 54, 55, 76, 54, 4, 4, 5, 15,
- 17, 31, 34, 37, 77, 141, 163, 165,
- 167, 295, 296, 4, 0, 78, 0, 79,
- 0, 80, 0, 81, 0, 82, 0, 83,
- 0, 84, 0, 86, 85, 86, 85, 86,
- 86, 4, 87, 101, 4, 102, 118, 120,
- 122, 140, 86, 85, 86, 88, 85, 86,
- 89, 85, 86, 90, 85, 86, 91, 85,
- 86, 92, 85, 86, 93, 85, 86, 94,
- 85, 86, 95, 85, 86, 96, 85, 86,
- 97, 85, 86, 98, 85, 86, 99, 85,
- 86, 100, 85, 86, 4, 85, 86, 76,
- 85, 86, 76, 103, 113, 85, 86, 104,
- 85, 86, 105, 85, 86, 106, 85, 86,
- 107, 85, 86, 108, 85, 86, 109, 85,
- 86, 110, 85, 86, 111, 85, 86, 112,
- 85, 86, 101, 85, 86, 114, 85, 86,
- 115, 85, 86, 116, 85, 86, 117, 85,
- 86, 76, 85, 86, 119, 85, 86, 101,
- 85, 86, 121, 85, 86, 119, 85, 86,
- 123, 85, 86, 124, 85, 86, 125, 85,
- 86, 126, 85, 86, 127, 85, 86, 128,
- 85, 86, 129, 85, 86, 130, 76, 85,
- 86, 131, 85, 86, 132, 85, 86, 133,
- 85, 86, 134, 85, 86, 135, 85, 86,
- 136, 85, 86, 137, 85, 86, 138, 85,
- 86, 139, 85, 86, 117, 85, 86, 112,
- 85, 142, 0, 143, 0, 144, 0, 145,
- 0, 146, 0, 147, 0, 148, 0, 149,
- 0, 150, 0, 151, 0, 152, 0, 153,
- 0, 154, 0, 156, 155, 156, 155, 156,
- 156, 4, 157, 4, 156, 155, 156, 158,
- 155, 156, 159, 155, 156, 160, 155, 156,
- 161, 155, 156, 162, 155, 156, 76, 155,
- 164, 0, 31, 0, 166, 0, 164, 0,
- 168, 0, 169, 0, 170, 0, 171, 0,
- 172, 0, 173, 0, 174, 0, 175, 232,
- 0, 176, 0, 177, 0, 178, 0, 179,
- 0, 180, 0, 181, 0, 182, 0, 183,
- 0, 184, 0, 185, 0, 186, 0, 188,
- 187, 188, 187, 188, 188, 4, 189, 203,
- 4, 204, 220, 222, 224, 231, 188, 187,
- 188, 190, 187, 188, 191, 187, 188, 192,
- 187, 188, 193, 187, 188, 194, 187, 188,
- 195, 187, 188, 196, 187, 188, 197, 187,
- 188, 198, 187, 188, 199, 187, 188, 200,
- 187, 188, 201, 187, 188, 202, 187, 188,
- 4, 187, 188, 76, 187, 188, 76, 205,
- 215, 187, 188, 206, 187, 188, 207, 187,
- 188, 208, 187, 188, 209, 187, 188, 210,
- 187, 188, 211, 187, 188, 212, 187, 188,
- 213, 187, 188, 214, 187, 188, 203, 187,
- 188, 216, 187, 188, 217, 187, 188, 218,
- 187, 188, 219, 187, 188, 76, 187, 188,
- 221, 187, 188, 203, 187, 188, 223, 187,
- 188, 221, 187, 188, 225, 187, 188, 226,
- 187, 188, 227, 187, 188, 228, 187, 188,
- 229, 187, 188, 230, 187, 188, 219, 187,
- 188, 214, 187, 234, 233, 234, 233, 234,
- 234, 4, 235, 249, 4, 250, 266, 272,
- 274, 276, 294, 234, 233, 234, 236, 233,
- 234, 237, 233, 234, 238, 233, 234, 239,
- 233, 234, 240, 233, 234, 241, 233, 234,
- 242, 233, 234, 243, 233, 234, 244, 233,
- 234, 245, 233, 234, 246, 233, 234, 247,
- 233, 234, 248, 233, 234, 4, 233, 234,
- 76, 233, 234, 76, 251, 261, 233, 234,
- 252, 233, 234, 253, 233, 234, 254, 233,
- 234, 255, 233, 234, 256, 233, 234, 257,
- 233, 234, 258, 233, 234, 259, 233, 234,
- 260, 233, 234, 249, 233, 234, 262, 233,
- 234, 263, 233, 234, 264, 233, 234, 265,
- 233, 234, 76, 233, 234, 267, 233, 234,
- 268, 233, 234, 269, 233, 234, 270, 233,
- 234, 271, 233, 234, 265, 233, 234, 273,
- 233, 234, 249, 233, 234, 275, 233, 234,
- 273, 233, 234, 277, 233, 234, 278, 233,
- 234, 279, 233, 234, 280, 233, 234, 281,
- 233, 234, 282, 233, 234, 283, 233, 234,
- 284, 76, 233, 234, 285, 233, 234, 286,
- 233, 234, 287, 233, 234, 288, 233, 234,
- 289, 233, 234, 290, 233, 234, 291, 233,
- 234, 292, 233, 234, 293, 233, 234, 265,
- 233, 234, 260, 233, 47, 0, 296, 297,
- 296, 0, 301, 300, 299, 297, 300, 298,
- 0, 299, 297, 298, 0, 299, 298, 301,
- 300, 299, 297, 300, 298, 301, 301, 5,
- 15, 17, 31, 34, 37, 77, 141, 163,
- 165, 167, 295, 296, 301, 0, 55, 303,
- 54, 55, 304, 54, 55, 305, 54, 55,
- 306, 54, 55, 307, 54, 55, 75, 54,
- 55, 309, 54, 55, 310, 54, 55, 311,
- 54, 55, 312, 54, 55, 313, 54, 55,
- 314, 54, 55, 315, 54, 55, 316, 54,
- 55, 317, 54, 55, 318, 54, 55, 319,
- 54, 55, 75, 54, 55, 321, 54, 55,
- 322, 54, 55, 323, 54, 55, 324, 54,
- 55, 325, 54, 55, 326, 54, 55, 327,
- 54, 55, 328, 76, 54, 55, 329, 54,
- 55, 330, 54, 55, 331, 54, 55, 332,
- 54, 55, 333, 54, 55, 334, 54, 55,
- 335, 54, 55, 336, 54, 55, 337, 54,
- 55, 75, 54, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 35,
- 0, 43, 0, 43, 0, 43, 54, 0,
- 5, 1, 0, 29, 1, 29, 29, 29,
- 29, 29, 29, 29, 35, 0, 43, 0,
- 43, 0, 43, 139, 48, 9, 106, 11,
- 0, 134, 45, 45, 45, 3, 122, 33,
- 33, 33, 0, 122, 33, 33, 33, 0,
- 122, 33, 0, 33, 0, 102, 7, 7,
- 43, 54, 0, 0, 43, 114, 25, 0,
- 54, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 149, 126, 57, 110, 23, 0, 43, 43,
- 43, 43, 0, 27, 118, 27, 27, 51,
- 27, 0, 54, 0, 1, 0, 43, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 69,
- 33, 69, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 13, 0, 130, 31, 60, 57,
- 31, 63, 57, 63, 63, 63, 63, 63,
- 63, 63, 66, 31, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 72, 33, 84, 72, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 15, 0, 54, 15,
- 0, 54, 15, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 15, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 81, 84, 81, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 21, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 78, 33, 84,
- 78, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 19, 0, 54, 19, 0, 54, 19, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 144, 57, 54, 0, 54,
- 0, 75, 33, 84, 75, 84, 84, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 54,
- 17, 0, 54, 17, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 17, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 17, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 43, 0, 0,
- 0, 43, 54, 37, 37, 87, 37, 37,
- 43, 0, 39, 0, 43, 0, 0, 54,
- 0, 0, 39, 0, 0, 54, 0, 93,
- 90, 41, 96, 90, 96, 96, 96, 96,
- 96, 96, 96, 99, 0, 43, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 13, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 338;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 886 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
-
- #line 893 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1183 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1246 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/cy_gb.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_cy_gb()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Cy_gb", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/cy_gb.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/cy_gb.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 18, 19, 20, 37, 38, 39,
- 41, 43, 48, 53, 58, 63, 67, 71,
- 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 91, 93, 98, 105, 110, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 128, 129, 130,
- 141, 143, 145, 147, 149, 151, 153, 155,
- 157, 159, 161, 163, 165, 167, 169, 171,
- 173, 175, 177, 179, 181, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 220,
- 222, 224, 226, 228, 230, 232, 234, 236,
- 238, 240, 242, 244, 246, 248, 250, 254,
- 256, 258, 260, 262, 264, 266, 268, 270,
- 272, 274, 276, 278, 280, 282, 284, 286,
- 288, 290, 292, 294, 296, 298, 300, 302,
- 304, 306, 309, 311, 313, 315, 317, 319,
- 321, 323, 325, 327, 329, 331, 332, 333,
- 334, 335, 336, 337, 338, 339, 340, 341,
- 342, 343, 344, 345, 346, 353, 355, 357,
- 359, 361, 363, 365, 366, 367, 368, 369,
- 370, 371, 372, 373, 374, 375, 376, 378,
- 379, 380, 381, 382, 383, 384, 385, 386,
- 387, 388, 389, 390, 391, 404, 406, 408,
- 410, 412, 414, 416, 418, 420, 422, 424,
- 426, 428, 430, 432, 434, 438, 440, 442,
- 444, 446, 448, 450, 452, 454, 456, 458,
- 460, 462, 464, 466, 468, 470, 472, 474,
- 476, 478, 480, 482, 484, 486, 488, 490,
- 492, 493, 494, 508, 510, 512, 514, 516,
- 518, 520, 522, 524, 526, 528, 530, 532,
- 534, 536, 538, 542, 544, 546, 548, 550,
- 552, 554, 556, 558, 560, 562, 564, 566,
- 568, 570, 572, 574, 576, 578, 580, 582,
- 584, 586, 588, 590, 592, 594, 596, 598,
- 600, 602, 604, 606, 609, 611, 613, 615,
- 617, 619, 621, 623, 625, 627, 629, 631,
- 632, 636, 642, 645, 647, 653, 670, 672,
- 674, 676, 678, 680, 682, 684, 686, 688,
- 690, 692, 694, 696, 698, 700, 702, 704,
- 706, 708, 710, 712, 714, 716, 718, 720,
- 723, 725, 727, 729, 731, 733, 735, 737,
- 739, 741, 743
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 67, 69, 79, 80, 83, 89, 124,
- 9, 13, -69, -65, 10, 32, 34, 35,
- 37, 42, 64, 65, 67, 69, 79, 80,
- 83, 89, 124, 9, 13, 34, 34, 10,
- 13, 10, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 9, 13, 10, 32, 9, 13, 10,
- 13, 10, 95, 70, 69, 65, 84, 85,
- 82, 69, 95, 69, 78, 68, 95, 37,
- 32, 10, 13, 10, 13, 13, 32, 64,
- 9, 10, 9, 10, 13, 32, 64, 11,
- 12, 10, 32, 64, 9, 13, 32, 110,
- 114, 114, 104, 101, 103, 101, 100, 105,
- 103, 32, 97, 119, 101, 100, 100, 58,
- 10, 10, 10, 32, 35, 37, 64, 65,
- 67, 69, 83, 9, 13, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 114, 10, 119, 10, 101, 10,
- 100, 10, 100, 10, 58, 10, 32, 34,
- 35, 37, 42, 64, 65, 67, 69, 79,
- 80, 83, 89, 124, 9, 13, 101, 102,
- 110, 100, 105, 114, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 65, 79, 80,
- 83, 89, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, 10, 32, 110, 114, 10, 114,
- 10, 104, 10, 101, 10, 103, 10, 101,
- 10, 100, 10, 105, 10, 103, 10, 32,
- 10, 97, 10, 119, 10, 101, 10, 100,
- 10, 100, 10, 58, 10, 110, 10, 100,
- 10, 114, 10, 121, 10, 99, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 111, 10, 32, 58, 10, 65, 10,
- 109, 10, 108, 10, 105, 10, 110, 10,
- 101, 10, 108, 10, 108, 10, 111, 10,
- 108, 10, 110, 110, 103, 104, 114, 101,
- 105, 102, 102, 116, 105, 97, 117, 58,
- 10, 10, 10, 32, 35, 65, 124, 9,
- 13, 10, 114, 10, 119, 10, 101, 10,
- 100, 10, 100, 10, 58, 110, 100, 114,
- 121, 99, 101, 110, 97, 114, 105, 111,
- 32, 58, 65, 109, 108, 105, 110, 101,
- 108, 108, 111, 108, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 65, 79, 80,
- 83, 89, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, 10, 32, 110, 114, 10, 114,
- 10, 104, 10, 101, 10, 103, 10, 101,
- 10, 100, 10, 105, 10, 103, 10, 32,
- 10, 97, 10, 119, 10, 101, 10, 100,
- 10, 100, 10, 58, 10, 110, 10, 100,
- 10, 114, 10, 121, 10, 99, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 111, 10, 110, 10, 10, 10, 32,
- 35, 37, 42, 64, 65, 67, 79, 80,
- 83, 89, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, 10, 32, 110, 114, 10, 114,
- 10, 104, 10, 101, 10, 103, 10, 101,
- 10, 100, 10, 105, 10, 103, 10, 32,
- 10, 97, 10, 119, 10, 101, 10, 100,
- 10, 100, 10, 58, 10, 101, 10, 102,
- 10, 110, 10, 100, 10, 105, 10, 114,
- 10, 110, 10, 100, 10, 114, 10, 121,
- 10, 99, 10, 101, 10, 110, 10, 97,
- 10, 114, 10, 105, 10, 111, 10, 32,
- 58, 10, 65, 10, 109, 10, 108, 10,
- 105, 10, 110, 10, 101, 10, 108, 10,
- 108, 10, 111, 10, 108, 10, 110, 110,
- 32, 124, 9, 13, 10, 32, 92, 124,
- 9, 13, 10, 92, 124, 10, 92, 10,
- 32, 92, 124, 9, 13, 10, 32, 34,
- 35, 37, 42, 64, 65, 67, 69, 79,
- 80, 83, 89, 124, 9, 13, 10, 101,
- 10, 102, 10, 110, 10, 100, 10, 105,
- 10, 114, 10, 110, 10, 103, 10, 104,
- 10, 114, 10, 101, 10, 105, 10, 102,
- 10, 102, 10, 116, 10, 105, 10, 97,
- 10, 117, 10, 99, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 111,
- 10, 32, 58, 10, 65, 10, 109, 10,
- 108, 10, 105, 10, 110, 10, 101, 10,
- 108, 10, 108, 10, 111, 10, 108, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 16, 1, 1, 15, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 3, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 9,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 15, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 11, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 4, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 5, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 11, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 4, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 12, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 4, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 2, 4, 3, 2, 4, 15, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 1, 0, 0, 1, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 18, 20, 22, 39, 41, 43,
- 46, 49, 54, 59, 64, 69, 73, 77,
- 80, 82, 84, 86, 88, 90, 92, 94,
- 96, 98, 100, 102, 104, 106, 108, 110,
- 112, 115, 118, 123, 130, 135, 139, 141,
- 143, 145, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 165, 167, 169, 171, 173,
- 184, 187, 190, 193, 196, 199, 202, 205,
- 208, 211, 214, 217, 220, 223, 226, 229,
- 232, 235, 238, 241, 244, 261, 263, 265,
- 267, 269, 271, 273, 275, 277, 279, 292,
- 295, 298, 301, 304, 307, 310, 313, 316,
- 319, 322, 325, 328, 331, 334, 337, 342,
- 345, 348, 351, 354, 357, 360, 363, 366,
- 369, 372, 375, 378, 381, 384, 387, 390,
- 393, 396, 399, 402, 405, 408, 411, 414,
- 417, 420, 424, 427, 430, 433, 436, 439,
- 442, 445, 448, 451, 454, 457, 459, 461,
- 463, 465, 467, 469, 471, 473, 475, 477,
- 479, 481, 483, 485, 487, 494, 497, 500,
- 503, 506, 509, 512, 514, 516, 518, 520,
- 522, 524, 526, 528, 530, 532, 534, 537,
- 539, 541, 543, 545, 547, 549, 551, 553,
- 555, 557, 559, 561, 563, 576, 579, 582,
- 585, 588, 591, 594, 597, 600, 603, 606,
- 609, 612, 615, 618, 621, 626, 629, 632,
- 635, 638, 641, 644, 647, 650, 653, 656,
- 659, 662, 665, 668, 671, 674, 677, 680,
- 683, 686, 689, 692, 695, 698, 701, 704,
- 707, 709, 711, 725, 728, 731, 734, 737,
- 740, 743, 746, 749, 752, 755, 758, 761,
- 764, 767, 770, 775, 778, 781, 784, 787,
- 790, 793, 796, 799, 802, 805, 808, 811,
- 814, 817, 820, 823, 826, 829, 832, 835,
- 838, 841, 844, 847, 850, 853, 856, 859,
- 862, 865, 868, 871, 875, 878, 881, 884,
- 887, 890, 893, 896, 899, 902, 905, 908,
- 910, 914, 920, 924, 927, 933, 950, 953,
- 956, 959, 962, 965, 968, 971, 974, 977,
- 980, 983, 986, 989, 992, 995, 998, 1001,
- 1004, 1007, 1010, 1013, 1016, 1019, 1022, 1025,
- 1029, 1032, 1035, 1038, 1041, 1044, 1047, 1050,
- 1053, 1056, 1059
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 77, 141, 163, 165, 167, 295, 296,
- 4, 0, 3, 0, 4, 0, 4, 4,
- 5, 15, 17, 31, 34, 37, 77, 141,
- 163, 165, 167, 295, 296, 4, 0, 6,
- 0, 7, 0, 9, 8, 8, 9, 8,
- 8, 10, 10, 11, 10, 10, 10, 10,
- 11, 10, 10, 10, 10, 12, 10, 10,
- 10, 10, 13, 10, 10, 4, 14, 14,
- 0, 4, 14, 14, 0, 4, 16, 15,
- 4, 0, 18, 0, 19, 0, 20, 0,
- 21, 0, 22, 0, 23, 0, 24, 0,
- 25, 0, 26, 0, 27, 0, 28, 0,
- 29, 0, 30, 0, 338, 0, 32, 0,
- 4, 16, 33, 4, 16, 33, 0, 0,
- 0, 0, 35, 36, 4, 36, 36, 34,
- 35, 35, 4, 36, 34, 36, 0, 32,
- 38, 48, 0, 39, 0, 40, 0, 41,
- 0, 42, 0, 43, 0, 44, 0, 45,
- 0, 46, 0, 47, 0, 31, 0, 49,
- 0, 50, 0, 51, 0, 52, 0, 53,
- 0, 55, 54, 55, 54, 55, 55, 4,
- 56, 4, 70, 302, 308, 320, 55, 54,
- 55, 57, 54, 55, 58, 54, 55, 59,
- 54, 55, 60, 54, 55, 61, 54, 55,
- 62, 54, 55, 63, 54, 55, 64, 54,
- 55, 65, 54, 55, 66, 54, 55, 67,
- 54, 55, 68, 54, 55, 69, 54, 55,
- 4, 54, 55, 71, 54, 55, 72, 54,
- 55, 73, 54, 55, 74, 54, 55, 75,
- 54, 55, 76, 54, 4, 4, 5, 15,
- 17, 31, 34, 37, 77, 141, 163, 165,
- 167, 295, 296, 4, 0, 78, 0, 79,
- 0, 80, 0, 81, 0, 82, 0, 83,
- 0, 84, 0, 86, 85, 86, 85, 86,
- 86, 4, 87, 101, 4, 102, 118, 120,
- 122, 140, 86, 85, 86, 88, 85, 86,
- 89, 85, 86, 90, 85, 86, 91, 85,
- 86, 92, 85, 86, 93, 85, 86, 94,
- 85, 86, 95, 85, 86, 96, 85, 86,
- 97, 85, 86, 98, 85, 86, 99, 85,
- 86, 100, 85, 86, 4, 85, 86, 76,
- 85, 86, 76, 103, 113, 85, 86, 104,
- 85, 86, 105, 85, 86, 106, 85, 86,
- 107, 85, 86, 108, 85, 86, 109, 85,
- 86, 110, 85, 86, 111, 85, 86, 112,
- 85, 86, 101, 85, 86, 114, 85, 86,
- 115, 85, 86, 116, 85, 86, 117, 85,
- 86, 76, 85, 86, 119, 85, 86, 101,
- 85, 86, 121, 85, 86, 119, 85, 86,
- 123, 85, 86, 124, 85, 86, 125, 85,
- 86, 126, 85, 86, 127, 85, 86, 128,
- 85, 86, 129, 85, 86, 130, 76, 85,
- 86, 131, 85, 86, 132, 85, 86, 133,
- 85, 86, 134, 85, 86, 135, 85, 86,
- 136, 85, 86, 137, 85, 86, 138, 85,
- 86, 139, 85, 86, 117, 85, 86, 112,
- 85, 142, 0, 143, 0, 144, 0, 145,
- 0, 146, 0, 147, 0, 148, 0, 149,
- 0, 150, 0, 151, 0, 152, 0, 153,
- 0, 154, 0, 156, 155, 156, 155, 156,
- 156, 4, 157, 4, 156, 155, 156, 158,
- 155, 156, 159, 155, 156, 160, 155, 156,
- 161, 155, 156, 162, 155, 156, 76, 155,
- 164, 0, 31, 0, 166, 0, 164, 0,
- 168, 0, 169, 0, 170, 0, 171, 0,
- 172, 0, 173, 0, 174, 0, 175, 232,
- 0, 176, 0, 177, 0, 178, 0, 179,
- 0, 180, 0, 181, 0, 182, 0, 183,
- 0, 184, 0, 185, 0, 186, 0, 188,
- 187, 188, 187, 188, 188, 4, 189, 203,
- 4, 204, 220, 222, 224, 231, 188, 187,
- 188, 190, 187, 188, 191, 187, 188, 192,
- 187, 188, 193, 187, 188, 194, 187, 188,
- 195, 187, 188, 196, 187, 188, 197, 187,
- 188, 198, 187, 188, 199, 187, 188, 200,
- 187, 188, 201, 187, 188, 202, 187, 188,
- 4, 187, 188, 76, 187, 188, 76, 205,
- 215, 187, 188, 206, 187, 188, 207, 187,
- 188, 208, 187, 188, 209, 187, 188, 210,
- 187, 188, 211, 187, 188, 212, 187, 188,
- 213, 187, 188, 214, 187, 188, 203, 187,
- 188, 216, 187, 188, 217, 187, 188, 218,
- 187, 188, 219, 187, 188, 76, 187, 188,
- 221, 187, 188, 203, 187, 188, 223, 187,
- 188, 221, 187, 188, 225, 187, 188, 226,
- 187, 188, 227, 187, 188, 228, 187, 188,
- 229, 187, 188, 230, 187, 188, 219, 187,
- 188, 214, 187, 234, 233, 234, 233, 234,
- 234, 4, 235, 249, 4, 250, 266, 272,
- 274, 276, 294, 234, 233, 234, 236, 233,
- 234, 237, 233, 234, 238, 233, 234, 239,
- 233, 234, 240, 233, 234, 241, 233, 234,
- 242, 233, 234, 243, 233, 234, 244, 233,
- 234, 245, 233, 234, 246, 233, 234, 247,
- 233, 234, 248, 233, 234, 4, 233, 234,
- 76, 233, 234, 76, 251, 261, 233, 234,
- 252, 233, 234, 253, 233, 234, 254, 233,
- 234, 255, 233, 234, 256, 233, 234, 257,
- 233, 234, 258, 233, 234, 259, 233, 234,
- 260, 233, 234, 249, 233, 234, 262, 233,
- 234, 263, 233, 234, 264, 233, 234, 265,
- 233, 234, 76, 233, 234, 267, 233, 234,
- 268, 233, 234, 269, 233, 234, 270, 233,
- 234, 271, 233, 234, 265, 233, 234, 273,
- 233, 234, 249, 233, 234, 275, 233, 234,
- 273, 233, 234, 277, 233, 234, 278, 233,
- 234, 279, 233, 234, 280, 233, 234, 281,
- 233, 234, 282, 233, 234, 283, 233, 234,
- 284, 76, 233, 234, 285, 233, 234, 286,
- 233, 234, 287, 233, 234, 288, 233, 234,
- 289, 233, 234, 290, 233, 234, 291, 233,
- 234, 292, 233, 234, 293, 233, 234, 265,
- 233, 234, 260, 233, 47, 0, 296, 297,
- 296, 0, 301, 300, 299, 297, 300, 298,
- 0, 299, 297, 298, 0, 299, 298, 301,
- 300, 299, 297, 300, 298, 301, 301, 5,
- 15, 17, 31, 34, 37, 77, 141, 163,
- 165, 167, 295, 296, 301, 0, 55, 303,
- 54, 55, 304, 54, 55, 305, 54, 55,
- 306, 54, 55, 307, 54, 55, 75, 54,
- 55, 309, 54, 55, 310, 54, 55, 311,
- 54, 55, 312, 54, 55, 313, 54, 55,
- 314, 54, 55, 315, 54, 55, 316, 54,
- 55, 317, 54, 55, 318, 54, 55, 319,
- 54, 55, 75, 54, 55, 321, 54, 55,
- 322, 54, 55, 323, 54, 55, 324, 54,
- 55, 325, 54, 55, 326, 54, 55, 327,
- 54, 55, 328, 76, 54, 55, 329, 54,
- 55, 330, 54, 55, 331, 54, 55, 332,
- 54, 55, 333, 54, 55, 334, 54, 55,
- 335, 54, 55, 336, 54, 55, 337, 54,
- 55, 75, 54, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 35,
- 0, 43, 0, 43, 0, 43, 54, 0,
- 5, 1, 0, 29, 1, 29, 29, 29,
- 29, 29, 29, 29, 35, 0, 43, 0,
- 43, 0, 43, 139, 48, 9, 106, 11,
- 0, 134, 45, 45, 45, 3, 122, 33,
- 33, 33, 0, 122, 33, 33, 33, 0,
- 122, 33, 0, 33, 0, 102, 7, 7,
- 43, 54, 0, 0, 43, 114, 25, 0,
- 54, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 149, 126, 57, 110, 23, 0, 43, 43,
- 43, 43, 0, 27, 118, 27, 27, 51,
- 27, 0, 54, 0, 1, 0, 43, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 69,
- 33, 69, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 13, 0, 130, 31, 60, 57,
- 31, 63, 57, 63, 63, 63, 63, 63,
- 63, 63, 66, 31, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 72, 33, 84, 72, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 15, 0, 54, 15,
- 0, 54, 15, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 15, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 81, 84, 81, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 21, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 78, 33, 84,
- 78, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 19, 0, 54, 19, 0, 54, 19, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 144, 57, 54, 0, 54,
- 0, 75, 33, 84, 75, 84, 84, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 54,
- 17, 0, 54, 17, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 17, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 17, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 43, 0, 0,
- 0, 43, 54, 37, 37, 87, 37, 37,
- 43, 0, 39, 0, 43, 0, 0, 54,
- 0, 0, 39, 0, 0, 54, 0, 93,
- 90, 41, 96, 90, 96, 96, 96, 96,
- 96, 96, 96, 99, 0, 43, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 13, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 338;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/cy_gb.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 886 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/cy_gb.c.rl"
-
-#line 893 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/cy_gb.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/cy_gb.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/cy_gb.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/cy_gb.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/cy_gb.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/cy_gb.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/cy_gb.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/cy_gb.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/cy_gb.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/cy_gb.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/cy_gb.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/cy_gb.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/cy_gb.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/cy_gb.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/cy_gb.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/cy_gb.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/cy_gb.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/cy_gb.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/cy_gb.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/cy_gb.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/cy_gb.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/cy_gb.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/cy_gb.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/cy_gb.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1183 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/cy_gb.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1246 "ext/gherkin_lexer_cy_gb/gherkin_lexer_cy_gb.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/cy_gb.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_cy_gb()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Cy_gb", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_da/extconf.rb
index 440e180,440e180..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_da/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_da")
--have_library("c", "main")
--create_makefile("gherkin_lexer_da")
diff --cc ext/gherkin_lexer_da/gherkin_lexer_da.c
index a3e1739,55e54d1..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_da/gherkin_lexer_da.c
+++ /dev/null
@@@ -1,1298 -1,1298 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 128, 129, 130,
- 131, 145, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 165, 167, 169, 171, 173,
- 175, 193, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 218, 220, 222, 224,
- 226, 228, 230, 232, 234, 236, 238, 240,
- 242, 244, 246, 248, 250, 252, 254, 256,
- 258, 260, 262, 264, 266, 268, 270, 272,
- 274, 276, 278, 280, 282, 284, 286, 288,
- 290, 292, 294, 296, 298, 300, 302, 304,
- 306, 308, 310, 312, 314, 316, 319, 321,
- 323, 325, 327, 329, 331, 333, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344,
- 355, 357, 359, 361, 363, 365, 367, 369,
- 371, 373, 375, 377, 379, 381, 383, 385,
- 387, 389, 391, 393, 395, 397, 399, 401,
- 403, 405, 407, 409, 411, 413, 415, 417,
- 419, 421, 423, 425, 427, 429, 431, 434,
- 436, 438, 440, 442, 444, 446, 448, 450,
- 452, 454, 456, 458, 460, 462, 464, 466,
- 468, 470, 472, 474, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 491, 493,
- 495, 497, 499, 501, 503, 505, 507, 508,
- 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 545, 547, 549, 551,
- 553, 555, 557, 559, 561, 563, 565, 567,
- 569, 571, 573, 575, 577, 579, 581, 583,
- 585, 587, 589, 591, 593, 595, 597, 599,
- 601, 603, 605, 607, 609, 611, 613, 615,
- 617, 619, 621, 623, 625, 627, 629, 631,
- 633, 635, 637, 639, 641, 643, 645, 647,
- 649, 651, 653, 655, 657, 660, 662, 664,
- 666, 668, 670, 672, 674, 678, 684, 687,
- 689, 695, 713, 715, 717, 719, 721, 723,
- 725, 727, 729, 731, 733, 735, 737, 739,
- 741, 743, 745, 747, 749, 752, 754, 756,
- 758, 760, 762, 764, 766
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 69, 71, 77, 78, 79, 83,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 65, 66, 69, 71,
- 77, 78, 79, 83, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 98, 115, 116, 114, 97, 107, 116, 32,
- 83, 99, 101, 110, 97, 114, 105, 111,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 69, 71, 77, 78, 79, 83, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 32, 34, 35, 37, 42, 64, 65, 66,
- 69, 71, 77, 78, 79, 83, 124, 9,
- 13, 97, 103, 103, 114, 117, 110, 100,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 65, 69, 71, 77, 78, 79, 83,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 32,
- 10, 98, 10, 115, 10, 116, 10, 114,
- 10, 97, 10, 107, 10, 116, 10, 32,
- 10, 83, 10, 99, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 111,
- 10, 58, 10, 103, 10, 101, 10, 110,
- 10, 115, 10, 107, 10, 97, 10, 98,
- 10, 105, 10, 118, 10, 101, 10, 116,
- 10, 101, 10, 110, -61, 10, -91, 10,
- 10, 114, 10, 103, -61, 10, 99, -91,
- 10, 10, 101, 10, 110, 10, 97, 10,
- 114, 10, 105, 10, 101, 103, 107, 101,
- 110, 115, 107, 97, 98, 58, 10, 10,
- 10, 32, 35, 37, 64, 65, 66, 69,
- 83, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 98, 10, 115, 10, 116, 10, 114, 10,
- 97, 10, 107, 10, 116, 10, 32, 10,
- 83, 10, 99, 10, 101, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 111, 10,
- 58, 10, 97, 10, 103, 10, 103, 10,
- 114, 10, 117, 10, 110, 10, 100, 10,
- 103, 107, 10, 101, 10, 110, 10, 115,
- 10, 107, 10, 97, 10, 98, 10, 115,
- 10, 101, 10, 109, 10, 112, 10, 108,
- 10, 101, 10, 114, 10, 99, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 101, 115, 101, 109, 112, 108, 101,
- 114, 58, 10, 10, 10, 32, 35, 69,
- 124, 9, 13, 10, 103, 10, 101, 10,
- 110, 10, 115, 10, 107, 10, 97, 10,
- 98, 10, 58, 105, 118, 101, 116, 101,
- 110, -61, -91, 114, 103, -61, 99, -91,
- 101, 110, 97, 114, 105, 101, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 65,
- 66, 69, 71, 77, 78, 79, 83, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 98, 10, 115, 10, 116, 10, 114, 10,
- 97, 10, 107, 10, 116, 10, 32, 10,
- 83, 10, 99, 10, 101, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 111, 10,
- 58, 10, 97, 10, 103, 10, 103, 10,
- 114, 10, 117, 10, 110, 10, 100, 10,
- 103, 10, 101, 10, 110, 10, 115, 10,
- 107, 10, 97, 10, 98, 10, 105, 10,
- 118, 10, 101, 10, 116, 10, 101, 10,
- 110, -61, 10, -91, 10, 10, 114, 10,
- 103, -61, 10, 99, -91, 10, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 101, 32, 124, 9, 13, 10, 32,
- 92, 124, 9, 13, 10, 92, 124, 10,
- 92, 10, 32, 92, 124, 9, 13, 10,
- 32, 34, 35, 37, 42, 64, 65, 66,
- 69, 71, 77, 78, 79, 83, 124, 9,
- 13, 10, 103, 10, 101, 10, 110, 10,
- 115, 10, 107, 10, 97, 10, 98, 10,
- 58, 10, 105, 10, 118, 10, 101, 10,
- 116, 10, 101, 10, 110, -61, 10, -91,
- 10, 10, 114, 10, 103, -61, 10, 99,
- -91, 10, 10, 101, 10, 110, 10, 97,
- 10, 114, 10, 105, 10, 101, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 12, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 16, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 13, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 9,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 5, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 14, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 3, 2,
- 4, 16, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 1, 0, 0,
- 1, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 139, 141,
- 143, 145, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 165, 167, 169, 171, 173,
- 175, 189, 192, 195, 198, 201, 204, 207,
- 210, 213, 216, 219, 222, 225, 228, 231,
- 234, 252, 254, 256, 258, 260, 262, 264,
- 266, 268, 270, 272, 287, 290, 293, 296,
- 299, 302, 305, 308, 311, 314, 317, 320,
- 323, 326, 329, 332, 335, 338, 341, 344,
- 347, 350, 353, 356, 359, 362, 365, 368,
- 371, 374, 377, 380, 383, 386, 389, 392,
- 395, 398, 401, 404, 407, 410, 413, 416,
- 419, 422, 425, 428, 431, 434, 438, 441,
- 444, 447, 450, 453, 456, 459, 462, 464,
- 466, 468, 470, 472, 474, 476, 478, 480,
- 491, 494, 497, 500, 503, 506, 509, 512,
- 515, 518, 521, 524, 527, 530, 533, 536,
- 539, 542, 545, 548, 551, 554, 557, 560,
- 563, 566, 569, 572, 575, 578, 581, 584,
- 587, 590, 593, 596, 599, 602, 605, 609,
- 612, 615, 618, 621, 624, 627, 630, 633,
- 636, 639, 642, 645, 648, 651, 654, 657,
- 660, 663, 666, 669, 671, 673, 675, 677,
- 679, 681, 683, 685, 687, 689, 696, 699,
- 702, 705, 708, 711, 714, 717, 720, 722,
- 724, 726, 728, 730, 732, 734, 736, 738,
- 740, 743, 745, 747, 749, 751, 753, 755,
- 757, 759, 761, 763, 779, 782, 785, 788,
- 791, 794, 797, 800, 803, 806, 809, 812,
- 815, 818, 821, 824, 827, 830, 833, 836,
- 839, 842, 845, 848, 851, 854, 857, 860,
- 863, 866, 869, 872, 875, 878, 881, 884,
- 887, 890, 893, 896, 899, 902, 905, 908,
- 911, 914, 917, 920, 923, 926, 929, 932,
- 935, 938, 941, 944, 947, 951, 954, 957,
- 960, 963, 966, 969, 972, 976, 982, 986,
- 989, 995, 1013, 1016, 1019, 1022, 1025, 1028,
- 1031, 1034, 1037, 1040, 1043, 1046, 1049, 1052,
- 1055, 1058, 1061, 1064, 1067, 1071, 1074, 1077,
- 1080, 1083, 1086, 1089, 1092
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 73, 141, 230, 234, 236, 239, 240,
- 316, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 73,
- 141, 230, 234, 236, 239, 240, 316, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 348, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 0, 39, 0, 40, 0, 41,
- 0, 42, 0, 43, 0, 44, 0, 45,
- 0, 46, 0, 47, 0, 48, 0, 49,
- 0, 50, 0, 51, 0, 52, 0, 53,
- 0, 54, 0, 56, 55, 56, 55, 56,
- 56, 4, 57, 71, 4, 322, 330, 334,
- 336, 339, 340, 56, 55, 56, 58, 55,
- 56, 59, 55, 56, 60, 55, 56, 61,
- 55, 56, 62, 55, 56, 63, 55, 56,
- 64, 55, 56, 65, 55, 56, 66, 55,
- 56, 67, 55, 56, 68, 55, 56, 69,
- 55, 56, 70, 55, 56, 4, 55, 56,
- 72, 55, 4, 4, 5, 15, 17, 31,
- 34, 37, 73, 141, 230, 234, 236, 239,
- 240, 316, 4, 0, 74, 0, 75, 0,
- 76, 0, 77, 0, 78, 0, 79, 0,
- 80, 0, 81, 0, 83, 82, 83, 82,
- 83, 83, 4, 84, 98, 4, 99, 116,
- 123, 127, 129, 132, 133, 83, 82, 83,
- 85, 82, 83, 86, 82, 83, 87, 82,
- 83, 88, 82, 83, 89, 82, 83, 90,
- 82, 83, 91, 82, 83, 92, 82, 83,
- 93, 82, 83, 94, 82, 83, 95, 82,
- 83, 96, 82, 83, 97, 82, 83, 4,
- 82, 83, 72, 82, 83, 100, 82, 83,
- 101, 82, 83, 102, 82, 83, 103, 82,
- 83, 104, 82, 83, 105, 82, 83, 106,
- 82, 83, 107, 82, 83, 108, 82, 83,
- 109, 82, 83, 110, 82, 83, 111, 82,
- 83, 112, 82, 83, 113, 82, 83, 114,
- 82, 83, 115, 82, 83, 72, 82, 83,
- 117, 82, 83, 118, 82, 83, 119, 82,
- 83, 120, 82, 83, 121, 82, 83, 122,
- 82, 83, 115, 82, 83, 124, 82, 83,
- 125, 82, 83, 126, 82, 83, 98, 82,
- 83, 128, 82, 83, 98, 82, 130, 83,
- 82, 131, 83, 82, 83, 98, 82, 83,
- 98, 82, 134, 83, 135, 82, 98, 83,
- 82, 83, 136, 82, 83, 137, 82, 83,
- 138, 82, 83, 139, 82, 83, 140, 82,
- 83, 115, 82, 142, 211, 0, 143, 0,
- 144, 0, 145, 0, 146, 0, 147, 0,
- 148, 0, 149, 0, 151, 150, 151, 150,
- 151, 151, 4, 152, 4, 166, 183, 190,
- 204, 151, 150, 151, 153, 150, 151, 154,
- 150, 151, 155, 150, 151, 156, 150, 151,
- 157, 150, 151, 158, 150, 151, 159, 150,
- 151, 160, 150, 151, 161, 150, 151, 162,
- 150, 151, 163, 150, 151, 164, 150, 151,
- 165, 150, 151, 4, 150, 151, 167, 150,
- 151, 168, 150, 151, 169, 150, 151, 170,
- 150, 151, 171, 150, 151, 172, 150, 151,
- 173, 150, 151, 174, 150, 151, 175, 150,
- 151, 176, 150, 151, 177, 150, 151, 178,
- 150, 151, 179, 150, 151, 180, 150, 151,
- 181, 150, 151, 182, 150, 151, 72, 150,
- 151, 184, 150, 151, 185, 150, 151, 186,
- 150, 151, 187, 150, 151, 188, 150, 151,
- 189, 150, 151, 182, 150, 151, 191, 197,
- 150, 151, 192, 150, 151, 193, 150, 151,
- 194, 150, 151, 195, 150, 151, 196, 150,
- 151, 182, 150, 151, 198, 150, 151, 199,
- 150, 151, 200, 150, 151, 201, 150, 151,
- 202, 150, 151, 203, 150, 151, 182, 150,
- 151, 205, 150, 151, 206, 150, 151, 207,
- 150, 151, 208, 150, 151, 209, 150, 151,
- 210, 150, 151, 182, 150, 212, 0, 213,
- 0, 214, 0, 215, 0, 216, 0, 217,
- 0, 218, 0, 219, 0, 221, 220, 221,
- 220, 221, 221, 4, 222, 4, 221, 220,
- 221, 223, 220, 221, 224, 220, 221, 225,
- 220, 221, 226, 220, 221, 227, 220, 221,
- 228, 220, 221, 229, 220, 221, 72, 220,
- 231, 0, 232, 0, 233, 0, 31, 0,
- 235, 0, 31, 0, 237, 0, 238, 0,
- 31, 0, 31, 0, 241, 242, 0, 31,
- 0, 243, 0, 244, 0, 245, 0, 246,
- 0, 247, 0, 248, 0, 249, 0, 251,
- 250, 251, 250, 251, 251, 4, 252, 266,
- 4, 267, 284, 291, 298, 302, 304, 307,
- 308, 251, 250, 251, 253, 250, 251, 254,
- 250, 251, 255, 250, 251, 256, 250, 251,
- 257, 250, 251, 258, 250, 251, 259, 250,
- 251, 260, 250, 251, 261, 250, 251, 262,
- 250, 251, 263, 250, 251, 264, 250, 251,
- 265, 250, 251, 4, 250, 251, 72, 250,
- 251, 268, 250, 251, 269, 250, 251, 270,
- 250, 251, 271, 250, 251, 272, 250, 251,
- 273, 250, 251, 274, 250, 251, 275, 250,
- 251, 276, 250, 251, 277, 250, 251, 278,
- 250, 251, 279, 250, 251, 280, 250, 251,
- 281, 250, 251, 282, 250, 251, 283, 250,
- 251, 72, 250, 251, 285, 250, 251, 286,
- 250, 251, 287, 250, 251, 288, 250, 251,
- 289, 250, 251, 290, 250, 251, 283, 250,
- 251, 292, 250, 251, 293, 250, 251, 294,
- 250, 251, 295, 250, 251, 296, 250, 251,
- 297, 250, 251, 283, 250, 251, 299, 250,
- 251, 300, 250, 251, 301, 250, 251, 266,
- 250, 251, 303, 250, 251, 266, 250, 305,
- 251, 250, 306, 251, 250, 251, 266, 250,
- 251, 266, 250, 309, 251, 310, 250, 266,
- 251, 250, 251, 311, 250, 251, 312, 250,
- 251, 313, 250, 251, 314, 250, 251, 315,
- 250, 251, 283, 250, 316, 317, 316, 0,
- 321, 320, 319, 317, 320, 318, 0, 319,
- 317, 318, 0, 319, 318, 321, 320, 319,
- 317, 320, 318, 321, 321, 5, 15, 17,
- 31, 34, 37, 73, 141, 230, 234, 236,
- 239, 240, 316, 321, 0, 56, 323, 55,
- 56, 324, 55, 56, 325, 55, 56, 326,
- 55, 56, 327, 55, 56, 328, 55, 56,
- 329, 55, 56, 72, 55, 56, 331, 55,
- 56, 332, 55, 56, 333, 55, 56, 71,
- 55, 56, 335, 55, 56, 71, 55, 337,
- 56, 55, 338, 56, 55, 56, 71, 55,
- 56, 71, 55, 341, 56, 342, 55, 71,
- 56, 55, 56, 343, 55, 56, 344, 55,
- 56, 345, 55, 56, 346, 55, 56, 347,
- 55, 56, 329, 55, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 78, 33, 84, 78, 84, 84, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 54,
- 19, 0, 130, 31, 60, 57, 31, 63,
- 57, 63, 63, 63, 63, 63, 63, 63,
- 63, 66, 31, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 72, 33, 84, 72, 84, 84,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 54, 15, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 69, 33, 69, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 13, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 13, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 81, 84, 81, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 21, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 75, 33, 84,
- 75, 84, 84, 84, 84, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 17, 0, 54, 17, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0, 0, 43,
- 54, 37, 37, 87, 37, 37, 43, 0,
- 39, 0, 43, 0, 0, 54, 0, 0,
- 39, 0, 0, 54, 0, 93, 90, 41,
- 96, 90, 96, 96, 96, 96, 96, 96,
- 96, 96, 99, 0, 43, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 19, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 348;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 902 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
-
- #line 909 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1199 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1262 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/da.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_da()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Da", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/da.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/da.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 128, 129, 130,
- 131, 145, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 165, 167, 169, 171, 173,
- 175, 193, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 218, 220, 222, 224,
- 226, 228, 230, 232, 234, 236, 238, 240,
- 242, 244, 246, 248, 250, 252, 254, 256,
- 258, 260, 262, 264, 266, 268, 270, 272,
- 274, 276, 278, 280, 282, 284, 286, 288,
- 290, 292, 294, 296, 298, 300, 302, 304,
- 306, 308, 310, 312, 314, 316, 319, 321,
- 323, 325, 327, 329, 331, 333, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344,
- 355, 357, 359, 361, 363, 365, 367, 369,
- 371, 373, 375, 377, 379, 381, 383, 385,
- 387, 389, 391, 393, 395, 397, 399, 401,
- 403, 405, 407, 409, 411, 413, 415, 417,
- 419, 421, 423, 425, 427, 429, 431, 434,
- 436, 438, 440, 442, 444, 446, 448, 450,
- 452, 454, 456, 458, 460, 462, 464, 466,
- 468, 470, 472, 474, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 491, 493,
- 495, 497, 499, 501, 503, 505, 507, 508,
- 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 519, 520, 521, 522, 523, 524, 525,
- 526, 527, 528, 529, 545, 547, 549, 551,
- 553, 555, 557, 559, 561, 563, 565, 567,
- 569, 571, 573, 575, 577, 579, 581, 583,
- 585, 587, 589, 591, 593, 595, 597, 599,
- 601, 603, 605, 607, 609, 611, 613, 615,
- 617, 619, 621, 623, 625, 627, 629, 631,
- 633, 635, 637, 639, 641, 643, 645, 647,
- 649, 651, 653, 655, 657, 660, 662, 664,
- 666, 668, 670, 672, 674, 678, 684, 687,
- 689, 695, 713, 715, 717, 719, 721, 723,
- 725, 727, 729, 731, 733, 735, 737, 739,
- 741, 743, 745, 747, 749, 752, 754, 756,
- 758, 760, 762, 764, 766
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 69, 71, 77, 78, 79, 83,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 65, 66, 69, 71,
- 77, 78, 79, 83, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 98, 115, 116, 114, 97, 107, 116, 32,
- 83, 99, 101, 110, 97, 114, 105, 111,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 69, 71, 77, 78, 79, 83, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 32, 34, 35, 37, 42, 64, 65, 66,
- 69, 71, 77, 78, 79, 83, 124, 9,
- 13, 97, 103, 103, 114, 117, 110, 100,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 65, 69, 71, 77, 78, 79, 83,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 32,
- 10, 98, 10, 115, 10, 116, 10, 114,
- 10, 97, 10, 107, 10, 116, 10, 32,
- 10, 83, 10, 99, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 111,
- 10, 58, 10, 103, 10, 101, 10, 110,
- 10, 115, 10, 107, 10, 97, 10, 98,
- 10, 105, 10, 118, 10, 101, 10, 116,
- 10, 101, 10, 110, -61, 10, -91, 10,
- 10, 114, 10, 103, -61, 10, 99, -91,
- 10, 10, 101, 10, 110, 10, 97, 10,
- 114, 10, 105, 10, 101, 103, 107, 101,
- 110, 115, 107, 97, 98, 58, 10, 10,
- 10, 32, 35, 37, 64, 65, 66, 69,
- 83, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 98, 10, 115, 10, 116, 10, 114, 10,
- 97, 10, 107, 10, 116, 10, 32, 10,
- 83, 10, 99, 10, 101, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 111, 10,
- 58, 10, 97, 10, 103, 10, 103, 10,
- 114, 10, 117, 10, 110, 10, 100, 10,
- 103, 107, 10, 101, 10, 110, 10, 115,
- 10, 107, 10, 97, 10, 98, 10, 115,
- 10, 101, 10, 109, 10, 112, 10, 108,
- 10, 101, 10, 114, 10, 99, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 101, 115, 101, 109, 112, 108, 101,
- 114, 58, 10, 10, 10, 32, 35, 69,
- 124, 9, 13, 10, 103, 10, 101, 10,
- 110, 10, 115, 10, 107, 10, 97, 10,
- 98, 10, 58, 105, 118, 101, 116, 101,
- 110, -61, -91, 114, 103, -61, 99, -91,
- 101, 110, 97, 114, 105, 101, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 65,
- 66, 69, 71, 77, 78, 79, 83, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 98, 10, 115, 10, 116, 10, 114, 10,
- 97, 10, 107, 10, 116, 10, 32, 10,
- 83, 10, 99, 10, 101, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 111, 10,
- 58, 10, 97, 10, 103, 10, 103, 10,
- 114, 10, 117, 10, 110, 10, 100, 10,
- 103, 10, 101, 10, 110, 10, 115, 10,
- 107, 10, 97, 10, 98, 10, 105, 10,
- 118, 10, 101, 10, 116, 10, 101, 10,
- 110, -61, 10, -91, 10, 10, 114, 10,
- 103, -61, 10, 99, -91, 10, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 101, 32, 124, 9, 13, 10, 32,
- 92, 124, 9, 13, 10, 92, 124, 10,
- 92, 10, 32, 92, 124, 9, 13, 10,
- 32, 34, 35, 37, 42, 64, 65, 66,
- 69, 71, 77, 78, 79, 83, 124, 9,
- 13, 10, 103, 10, 101, 10, 110, 10,
- 115, 10, 107, 10, 97, 10, 98, 10,
- 58, 10, 105, 10, 118, 10, 101, 10,
- 116, 10, 101, 10, 110, -61, 10, -91,
- 10, 10, 114, 10, 103, -61, 10, 99,
- -91, 10, 10, 101, 10, 110, 10, 97,
- 10, 114, 10, 105, 10, 101, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 12, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 16, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 13, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 9,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 5, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 14, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 3, 2,
- 4, 16, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 1, 0, 0,
- 1, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 139, 141,
- 143, 145, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 165, 167, 169, 171, 173,
- 175, 189, 192, 195, 198, 201, 204, 207,
- 210, 213, 216, 219, 222, 225, 228, 231,
- 234, 252, 254, 256, 258, 260, 262, 264,
- 266, 268, 270, 272, 287, 290, 293, 296,
- 299, 302, 305, 308, 311, 314, 317, 320,
- 323, 326, 329, 332, 335, 338, 341, 344,
- 347, 350, 353, 356, 359, 362, 365, 368,
- 371, 374, 377, 380, 383, 386, 389, 392,
- 395, 398, 401, 404, 407, 410, 413, 416,
- 419, 422, 425, 428, 431, 434, 438, 441,
- 444, 447, 450, 453, 456, 459, 462, 464,
- 466, 468, 470, 472, 474, 476, 478, 480,
- 491, 494, 497, 500, 503, 506, 509, 512,
- 515, 518, 521, 524, 527, 530, 533, 536,
- 539, 542, 545, 548, 551, 554, 557, 560,
- 563, 566, 569, 572, 575, 578, 581, 584,
- 587, 590, 593, 596, 599, 602, 605, 609,
- 612, 615, 618, 621, 624, 627, 630, 633,
- 636, 639, 642, 645, 648, 651, 654, 657,
- 660, 663, 666, 669, 671, 673, 675, 677,
- 679, 681, 683, 685, 687, 689, 696, 699,
- 702, 705, 708, 711, 714, 717, 720, 722,
- 724, 726, 728, 730, 732, 734, 736, 738,
- 740, 743, 745, 747, 749, 751, 753, 755,
- 757, 759, 761, 763, 779, 782, 785, 788,
- 791, 794, 797, 800, 803, 806, 809, 812,
- 815, 818, 821, 824, 827, 830, 833, 836,
- 839, 842, 845, 848, 851, 854, 857, 860,
- 863, 866, 869, 872, 875, 878, 881, 884,
- 887, 890, 893, 896, 899, 902, 905, 908,
- 911, 914, 917, 920, 923, 926, 929, 932,
- 935, 938, 941, 944, 947, 951, 954, 957,
- 960, 963, 966, 969, 972, 976, 982, 986,
- 989, 995, 1013, 1016, 1019, 1022, 1025, 1028,
- 1031, 1034, 1037, 1040, 1043, 1046, 1049, 1052,
- 1055, 1058, 1061, 1064, 1067, 1071, 1074, 1077,
- 1080, 1083, 1086, 1089, 1092
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 73, 141, 230, 234, 236, 239, 240,
- 316, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 73,
- 141, 230, 234, 236, 239, 240, 316, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 348, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 0, 39, 0, 40, 0, 41,
- 0, 42, 0, 43, 0, 44, 0, 45,
- 0, 46, 0, 47, 0, 48, 0, 49,
- 0, 50, 0, 51, 0, 52, 0, 53,
- 0, 54, 0, 56, 55, 56, 55, 56,
- 56, 4, 57, 71, 4, 322, 330, 334,
- 336, 339, 340, 56, 55, 56, 58, 55,
- 56, 59, 55, 56, 60, 55, 56, 61,
- 55, 56, 62, 55, 56, 63, 55, 56,
- 64, 55, 56, 65, 55, 56, 66, 55,
- 56, 67, 55, 56, 68, 55, 56, 69,
- 55, 56, 70, 55, 56, 4, 55, 56,
- 72, 55, 4, 4, 5, 15, 17, 31,
- 34, 37, 73, 141, 230, 234, 236, 239,
- 240, 316, 4, 0, 74, 0, 75, 0,
- 76, 0, 77, 0, 78, 0, 79, 0,
- 80, 0, 81, 0, 83, 82, 83, 82,
- 83, 83, 4, 84, 98, 4, 99, 116,
- 123, 127, 129, 132, 133, 83, 82, 83,
- 85, 82, 83, 86, 82, 83, 87, 82,
- 83, 88, 82, 83, 89, 82, 83, 90,
- 82, 83, 91, 82, 83, 92, 82, 83,
- 93, 82, 83, 94, 82, 83, 95, 82,
- 83, 96, 82, 83, 97, 82, 83, 4,
- 82, 83, 72, 82, 83, 100, 82, 83,
- 101, 82, 83, 102, 82, 83, 103, 82,
- 83, 104, 82, 83, 105, 82, 83, 106,
- 82, 83, 107, 82, 83, 108, 82, 83,
- 109, 82, 83, 110, 82, 83, 111, 82,
- 83, 112, 82, 83, 113, 82, 83, 114,
- 82, 83, 115, 82, 83, 72, 82, 83,
- 117, 82, 83, 118, 82, 83, 119, 82,
- 83, 120, 82, 83, 121, 82, 83, 122,
- 82, 83, 115, 82, 83, 124, 82, 83,
- 125, 82, 83, 126, 82, 83, 98, 82,
- 83, 128, 82, 83, 98, 82, 130, 83,
- 82, 131, 83, 82, 83, 98, 82, 83,
- 98, 82, 134, 83, 135, 82, 98, 83,
- 82, 83, 136, 82, 83, 137, 82, 83,
- 138, 82, 83, 139, 82, 83, 140, 82,
- 83, 115, 82, 142, 211, 0, 143, 0,
- 144, 0, 145, 0, 146, 0, 147, 0,
- 148, 0, 149, 0, 151, 150, 151, 150,
- 151, 151, 4, 152, 4, 166, 183, 190,
- 204, 151, 150, 151, 153, 150, 151, 154,
- 150, 151, 155, 150, 151, 156, 150, 151,
- 157, 150, 151, 158, 150, 151, 159, 150,
- 151, 160, 150, 151, 161, 150, 151, 162,
- 150, 151, 163, 150, 151, 164, 150, 151,
- 165, 150, 151, 4, 150, 151, 167, 150,
- 151, 168, 150, 151, 169, 150, 151, 170,
- 150, 151, 171, 150, 151, 172, 150, 151,
- 173, 150, 151, 174, 150, 151, 175, 150,
- 151, 176, 150, 151, 177, 150, 151, 178,
- 150, 151, 179, 150, 151, 180, 150, 151,
- 181, 150, 151, 182, 150, 151, 72, 150,
- 151, 184, 150, 151, 185, 150, 151, 186,
- 150, 151, 187, 150, 151, 188, 150, 151,
- 189, 150, 151, 182, 150, 151, 191, 197,
- 150, 151, 192, 150, 151, 193, 150, 151,
- 194, 150, 151, 195, 150, 151, 196, 150,
- 151, 182, 150, 151, 198, 150, 151, 199,
- 150, 151, 200, 150, 151, 201, 150, 151,
- 202, 150, 151, 203, 150, 151, 182, 150,
- 151, 205, 150, 151, 206, 150, 151, 207,
- 150, 151, 208, 150, 151, 209, 150, 151,
- 210, 150, 151, 182, 150, 212, 0, 213,
- 0, 214, 0, 215, 0, 216, 0, 217,
- 0, 218, 0, 219, 0, 221, 220, 221,
- 220, 221, 221, 4, 222, 4, 221, 220,
- 221, 223, 220, 221, 224, 220, 221, 225,
- 220, 221, 226, 220, 221, 227, 220, 221,
- 228, 220, 221, 229, 220, 221, 72, 220,
- 231, 0, 232, 0, 233, 0, 31, 0,
- 235, 0, 31, 0, 237, 0, 238, 0,
- 31, 0, 31, 0, 241, 242, 0, 31,
- 0, 243, 0, 244, 0, 245, 0, 246,
- 0, 247, 0, 248, 0, 249, 0, 251,
- 250, 251, 250, 251, 251, 4, 252, 266,
- 4, 267, 284, 291, 298, 302, 304, 307,
- 308, 251, 250, 251, 253, 250, 251, 254,
- 250, 251, 255, 250, 251, 256, 250, 251,
- 257, 250, 251, 258, 250, 251, 259, 250,
- 251, 260, 250, 251, 261, 250, 251, 262,
- 250, 251, 263, 250, 251, 264, 250, 251,
- 265, 250, 251, 4, 250, 251, 72, 250,
- 251, 268, 250, 251, 269, 250, 251, 270,
- 250, 251, 271, 250, 251, 272, 250, 251,
- 273, 250, 251, 274, 250, 251, 275, 250,
- 251, 276, 250, 251, 277, 250, 251, 278,
- 250, 251, 279, 250, 251, 280, 250, 251,
- 281, 250, 251, 282, 250, 251, 283, 250,
- 251, 72, 250, 251, 285, 250, 251, 286,
- 250, 251, 287, 250, 251, 288, 250, 251,
- 289, 250, 251, 290, 250, 251, 283, 250,
- 251, 292, 250, 251, 293, 250, 251, 294,
- 250, 251, 295, 250, 251, 296, 250, 251,
- 297, 250, 251, 283, 250, 251, 299, 250,
- 251, 300, 250, 251, 301, 250, 251, 266,
- 250, 251, 303, 250, 251, 266, 250, 305,
- 251, 250, 306, 251, 250, 251, 266, 250,
- 251, 266, 250, 309, 251, 310, 250, 266,
- 251, 250, 251, 311, 250, 251, 312, 250,
- 251, 313, 250, 251, 314, 250, 251, 315,
- 250, 251, 283, 250, 316, 317, 316, 0,
- 321, 320, 319, 317, 320, 318, 0, 319,
- 317, 318, 0, 319, 318, 321, 320, 319,
- 317, 320, 318, 321, 321, 5, 15, 17,
- 31, 34, 37, 73, 141, 230, 234, 236,
- 239, 240, 316, 321, 0, 56, 323, 55,
- 56, 324, 55, 56, 325, 55, 56, 326,
- 55, 56, 327, 55, 56, 328, 55, 56,
- 329, 55, 56, 72, 55, 56, 331, 55,
- 56, 332, 55, 56, 333, 55, 56, 71,
- 55, 56, 335, 55, 56, 71, 55, 337,
- 56, 55, 338, 56, 55, 56, 71, 55,
- 56, 71, 55, 341, 56, 342, 55, 71,
- 56, 55, 56, 343, 55, 56, 344, 55,
- 56, 345, 55, 56, 346, 55, 56, 347,
- 55, 56, 329, 55, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 78, 33, 84, 78, 84, 84, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 54,
- 19, 0, 130, 31, 60, 57, 31, 63,
- 57, 63, 63, 63, 63, 63, 63, 63,
- 63, 66, 31, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 72, 33, 84, 72, 84, 84,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 54, 15, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 69, 33, 69, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 13, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 13, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 81, 84, 81, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 21, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 75, 33, 84,
- 75, 84, 84, 84, 84, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 17, 0, 54, 17, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0, 0, 43,
- 54, 37, 37, 87, 37, 37, 43, 0,
- 39, 0, 43, 0, 0, 54, 0, 0,
- 39, 0, 0, 54, 0, 93, 90, 41,
- 96, 90, 96, 96, 96, 96, 96, 96,
- 96, 96, 99, 0, 43, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 19, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 348;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/da.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 902 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/da.c.rl"
-
-#line 909 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/da.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/da.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/da.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/da.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/da.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/da.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/da.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/da.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/da.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/da.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/da.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/da.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/da.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/da.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/da.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/da.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/da.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/da.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/da.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/da.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/da.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/da.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/da.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/da.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1199 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/da.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1262 "ext/gherkin_lexer_da/gherkin_lexer_da.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/da.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_da()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Da", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_de/extconf.rb
index 47e8049,47e8049..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_de/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_de")
--have_library("c", "main")
--create_makefile("gherkin_lexer_de")
diff --cc ext/gherkin_lexer_de/gherkin_lexer_de.c
index 705a428,6dfc355..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_de/gherkin_lexer_de.c
+++ /dev/null
@@@ -1,1415 -1,1425 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 142, 144, 146, 148,
- 150, 152, 154, 156, 158, 160, 162, 164,
- 166, 168, 170, 172, 190, 191, 192, 193,
- 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209,
- 220, 222, 224, 226, 228, 230, 232, 234,
- 236, 238, 240, 242, 244, 246, 248, 250,
- 252, 254, 256, 258, 260, 262, 264, 266,
- 268, 270, 272, 274, 276, 278, 280, 282,
- 284, 286, 288, 290, 292, 294, 296, 298,
- 300, 302, 304, 306, 308, 310, 312, 314,
- 316, 318, 320, 322, 325, 327, 329, 331,
- 333, 335, 337, 339, 341, 343, 344, 345,
- 346, 347, 348, 349, 350, 351, 352, 353,
- 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 377, 379, 381, 383, 385, 387, 389,
- 391, 393, 395, 397, 399, 401, 403, 405,
- 407, 410, 412, 414, 416, 418, 420, 422,
- 424, 426, 428, 430, 432, 434, 436, 438,
- 440, 442, 444, 446, 448, 450, 452, 454,
- 456, 458, 460, 462, 464, 466, 468, 470,
- 472, 474, 476, 478, 480, 482, 484, 486,
- 488, 490, 492, 494, 496, 498, 501, 503,
- 505, 507, 509, 511, 513, 515, 517, 519,
- 521, 523, 524, 525, 526, 527, 528, 529,
- 530, 532, 533, 534, 549, 551, 553, 555,
- 557, 559, 561, 563, 565, 567, 569, 571,
- 573, 575, 577, 579, 582, 584, 586, 588,
- 590, 592, 594, 596, 598, 600, 602, 604,
- 606, 608, 610, 612, 614, 616, 618, 620,
- 622, 624, 626, 628, 630, 632, 634, 636,
- 639, 641, 643, 645, 647, 649, 651, 653,
- 655, 657, 659, 661, 663, 665, 667, 669,
- 671, 673, 675, 677, 679, 681, 683, 685,
- 688, 690, 692, 694, 696, 698, 700, 702,
- 704, 706, 708, 710, 711, 712, 713, 714,
- 715, 716, 717, 718, 719, 720, 721, 736,
- 738, 740, 742, 744, 746, 748, 750, 752,
- 754, 756, 758, 760, 762, 764, 766, 769,
- 771, 773, 775, 777, 779, 781, 783, 785,
- 787, 789, 791, 793, 795, 797, 799, 801,
- 803, 805, 807, 809, 811, 813, 815, 817,
- 819, 821, 823, 825, 827, 829, 831, 833,
- 835, 837, 839, 841, 843, 845, 847, 849,
- 851, 853, 855, 857, 859, 861, 863, 864,
- 865, 866, 870, 876, 879, 881, 887, 905
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 68, 70, 71, 83, 85, 87,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 65, 66, 68, 70,
- 71, 83, 85, 87, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 98, 110, 101, 114, 103, 101, 110, 111,
- 109, 109, 101, 110, 101, 105, 115, 112,
- 105, 101, 108, 101, 58, 10, 10, 10,
- 32, 35, 70, 124, 9, 13, 10, 117,
- 10, 110, 10, 107, 10, 116, 10, 105,
- 10, 111, 10, 110, 10, 97, 10, 108,
- 10, 105, 10, 116, -61, 10, -92, 10,
- 10, 116, 10, 58, 10, 32, 34, 35,
- 37, 42, 64, 65, 66, 68, 70, 71,
- 83, 85, 87, 124, 9, 13, 97, 110,
- 117, 110, 107, 116, 105, 111, 110, 97,
- 108, 105, 116, -61, -92, 116, 58, 10,
- 10, 10, 32, 35, 37, 64, 66, 70,
- 71, 83, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 101, 10, 105, 10, 115, 10, 112,
- 10, 105, 10, 101, 10, 108, 10, 101,
- 10, 58, 10, 117, 10, 110, 10, 107,
- 10, 116, 10, 105, 10, 111, 10, 110,
- 10, 97, 10, 108, 10, 105, 10, 116,
- -61, 10, -92, 10, 10, 116, 10, 114,
- 10, 117, 10, 110, 10, 100, 10, 108,
- 10, 97, 10, 103, 10, 122, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 111, 10, 58, 103, 10, 114, 10,
- 117, 10, 110, 10, 100, 10, 114, 10,
- 105, 10, 115, 10, 115, 101, 114, 103,
- 101, 98, 101, 110, 32, 115, 101, 105,
- 117, 110, 100, 108, 97, 103, 101, 58,
- 10, 10, 10, 32, 35, 37, 42, 64,
- 65, 68, 70, 71, 83, 85, 87, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 98, 110, 10, 101, 10, 114, 10, 103,
- 10, 101, 10, 110, 10, 111, 10, 109,
- 10, 109, 10, 101, 10, 110, 10, 97,
- 10, 110, 10, 117, 10, 110, 10, 107,
- 10, 116, 10, 105, 10, 111, 10, 110,
- 10, 97, 10, 108, 10, 105, 10, 116,
- -61, 10, -92, 10, 10, 116, 10, 58,
- 10, 101, 10, 103, 10, 101, 10, 98,
- 10, 101, 10, 110, 10, 32, 10, 115,
- 10, 101, 10, 105, 10, 122, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 111, 10, 58, 103, 10, 114, 10,
- 117, 10, 110, 10, 100, 10, 114, 10,
- 105, 10, 115, 10, 115, 10, 110, 10,
- 100, 10, 101, 122, 101, 110, 97, 114,
- 105, 111, 58, 103, 10, 10, 10, 32,
- 35, 37, 42, 64, 65, 68, 70, 71,
- 83, 85, 87, 9, 13, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 32, 10, 98, 110, 10, 101,
- 10, 114, 10, 103, 10, 101, 10, 110,
- 10, 111, 10, 109, 10, 109, 10, 101,
- 10, 110, 10, 97, 10, 110, 10, 117,
- 10, 110, 10, 107, 10, 116, 10, 105,
- 10, 111, 10, 110, 10, 97, 10, 108,
- 10, 105, 10, 116, -61, 10, -92, 10,
- 10, 116, 10, 58, 10, 101, 114, 10,
- 103, 10, 101, 10, 98, 10, 101, 10,
- 110, 10, 32, 10, 115, 10, 101, 10,
- 105, 10, 117, 10, 110, 10, 100, 10,
- 108, 10, 97, 10, 103, 10, 101, 10,
- 122, 10, 101, 10, 110, 10, 97, 10,
- 114, 10, 105, 10, 111, 10, 58, 103,
- 10, 114, 10, 117, 10, 110, 10, 100,
- 10, 114, 10, 105, 10, 115, 10, 115,
- 10, 110, 10, 100, 10, 101, 114, 117,
- 110, 100, 114, 105, 115, 115, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 65,
- 68, 70, 71, 83, 85, 87, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 98,
- 110, 10, 101, 10, 114, 10, 103, 10,
- 101, 10, 110, 10, 111, 10, 109, 10,
- 109, 10, 101, 10, 110, 10, 97, 10,
- 110, 10, 117, 10, 110, 10, 107, 10,
- 116, 10, 105, 10, 111, 10, 110, 10,
- 97, 10, 108, 10, 105, 10, 116, -61,
- 10, -92, 10, 10, 116, 10, 58, 10,
- 101, 10, 103, 10, 101, 10, 98, 10,
- 101, 10, 110, 10, 32, 10, 115, 10,
- 101, 10, 105, 10, 122, 10, 101, 10,
- 110, 10, 97, 10, 114, 10, 105, 10,
- 111, 10, 110, 10, 100, 10, 101, 110,
- 100, 101, 32, 124, 9, 13, 10, 32,
- 92, 124, 9, 13, 10, 92, 124, 10,
- 92, 10, 32, 92, 124, 9, 13, 10,
- 32, 34, 35, 37, 42, 64, 65, 66,
- 68, 70, 71, 83, 85, 87, 124, 9,
- 13, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 5, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 16, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 9,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 13, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 2, 1, 1, 13, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 13, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 2, 4, 3, 2, 4, 16, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 1, 0, 0, 1, 1, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 140, 142,
- 144, 146, 148, 150, 152, 154, 156, 158,
- 160, 162, 164, 166, 168, 170, 172, 174,
- 176, 178, 180, 182, 189, 192, 195, 198,
- 201, 204, 207, 210, 213, 216, 219, 222,
- 225, 228, 231, 234, 252, 254, 256, 258,
- 260, 262, 264, 266, 268, 270, 272, 274,
- 276, 278, 280, 282, 284, 286, 288, 290,
- 301, 304, 307, 310, 313, 316, 319, 322,
- 325, 328, 331, 334, 337, 340, 343, 346,
- 349, 352, 355, 358, 361, 364, 367, 370,
- 373, 376, 379, 382, 385, 388, 391, 394,
- 397, 400, 403, 406, 409, 412, 415, 418,
- 421, 424, 427, 430, 433, 436, 439, 442,
- 445, 448, 451, 454, 458, 461, 464, 467,
- 470, 473, 476, 479, 482, 485, 487, 489,
- 491, 493, 495, 497, 499, 501, 503, 505,
- 507, 509, 511, 513, 515, 517, 519, 521,
- 523, 538, 541, 544, 547, 550, 553, 556,
- 559, 562, 565, 568, 571, 574, 577, 580,
- 583, 587, 590, 593, 596, 599, 602, 605,
- 608, 611, 614, 617, 620, 623, 626, 629,
- 632, 635, 638, 641, 644, 647, 650, 653,
- 656, 659, 662, 665, 668, 671, 674, 677,
- 680, 683, 686, 689, 692, 695, 698, 701,
- 704, 707, 710, 713, 716, 719, 723, 726,
- 729, 732, 735, 738, 741, 744, 747, 750,
- 753, 756, 758, 760, 762, 764, 766, 768,
- 770, 773, 775, 777, 792, 795, 798, 801,
- 804, 807, 810, 813, 816, 819, 822, 825,
- 828, 831, 834, 837, 841, 844, 847, 850,
- 853, 856, 859, 862, 865, 868, 871, 874,
- 877, 880, 883, 886, 889, 892, 895, 898,
- 901, 904, 907, 910, 913, 916, 919, 922,
- 926, 929, 932, 935, 938, 941, 944, 947,
- 950, 953, 956, 959, 962, 965, 968, 971,
- 974, 977, 980, 983, 986, 989, 992, 995,
- 999, 1002, 1005, 1008, 1011, 1014, 1017, 1020,
- 1023, 1026, 1029, 1032, 1034, 1036, 1038, 1040,
- 1042, 1044, 1046, 1048, 1050, 1052, 1054, 1069,
- 1072, 1075, 1078, 1081, 1084, 1087, 1090, 1093,
- 1096, 1099, 1102, 1105, 1108, 1111, 1114, 1118,
- 1121, 1124, 1127, 1130, 1133, 1136, 1139, 1142,
- 1145, 1148, 1151, 1154, 1157, 1160, 1163, 1166,
- 1169, 1172, 1175, 1178, 1181, 1184, 1187, 1190,
- 1193, 1196, 1199, 1202, 1205, 1208, 1211, 1214,
- 1217, 1220, 1223, 1226, 1229, 1232, 1235, 1238,
- 1241, 1244, 1247, 1250, 1253, 1256, 1259, 1261,
- 1263, 1265, 1269, 1275, 1279, 1282, 1288, 1306
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 48, 76, 78, 156, 249, 414, 416,
- 417, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 48,
- 76, 78, 156, 249, 414, 416, 417, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 423, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 40, 0, 39, 0, 31, 0,
- 41, 0, 42, 0, 43, 0, 44, 0,
- 45, 0, 46, 0, 47, 0, 31, 0,
- 49, 0, 50, 0, 51, 0, 52, 0,
- 53, 0, 54, 0, 55, 0, 56, 0,
- 57, 0, 59, 58, 59, 58, 59, 59,
- 4, 60, 4, 59, 58, 59, 61, 58,
- 59, 62, 58, 59, 63, 58, 59, 64,
- 58, 59, 65, 58, 59, 66, 58, 59,
- 67, 58, 59, 68, 58, 59, 69, 58,
- 59, 70, 58, 59, 71, 58, 72, 59,
- 58, 73, 59, 58, 59, 74, 58, 59,
- 75, 58, 4, 4, 5, 15, 17, 31,
- 34, 37, 48, 76, 78, 156, 249, 414,
- 416, 417, 4, 0, 77, 0, 47, 0,
- 79, 0, 80, 0, 81, 0, 82, 0,
- 83, 0, 84, 0, 85, 0, 86, 0,
- 87, 0, 88, 0, 89, 0, 90, 0,
- 91, 0, 92, 0, 93, 0, 95, 94,
- 95, 94, 95, 95, 4, 96, 4, 110,
- 119, 133, 140, 95, 94, 95, 97, 94,
- 95, 98, 94, 95, 99, 94, 95, 100,
- 94, 95, 101, 94, 95, 102, 94, 95,
- 103, 94, 95, 104, 94, 95, 105, 94,
- 95, 106, 94, 95, 107, 94, 95, 108,
- 94, 95, 109, 94, 95, 4, 94, 95,
- 111, 94, 95, 112, 94, 95, 113, 94,
- 95, 114, 94, 95, 115, 94, 95, 116,
- 94, 95, 117, 94, 95, 118, 94, 95,
- 75, 94, 95, 120, 94, 95, 121, 94,
- 95, 122, 94, 95, 123, 94, 95, 124,
- 94, 95, 125, 94, 95, 126, 94, 95,
- 127, 94, 95, 128, 94, 95, 129, 94,
- 95, 130, 94, 131, 95, 94, 132, 95,
- 94, 95, 118, 94, 95, 134, 94, 95,
- 135, 94, 95, 136, 94, 95, 137, 94,
- 95, 138, 94, 95, 139, 94, 95, 117,
- 94, 95, 141, 94, 95, 142, 94, 95,
- 143, 94, 95, 144, 94, 95, 145, 94,
- 95, 146, 94, 95, 147, 94, 95, 75,
- 148, 94, 95, 149, 94, 95, 150, 94,
- 95, 151, 94, 95, 152, 94, 95, 153,
- 94, 95, 154, 94, 95, 155, 94, 95,
- 118, 94, 157, 166, 0, 158, 0, 159,
- 0, 160, 0, 161, 0, 162, 0, 163,
- 0, 164, 0, 165, 0, 31, 0, 167,
- 0, 168, 0, 169, 0, 170, 0, 171,
- 0, 172, 0, 173, 0, 174, 0, 176,
- 175, 176, 175, 176, 176, 4, 177, 191,
- 4, 192, 203, 205, 220, 230, 246, 248,
- 176, 175, 176, 178, 175, 176, 179, 175,
- 176, 180, 175, 176, 181, 175, 176, 182,
- 175, 176, 183, 175, 176, 184, 175, 176,
- 185, 175, 176, 186, 175, 176, 187, 175,
- 176, 188, 175, 176, 189, 175, 176, 190,
- 175, 176, 4, 175, 176, 75, 175, 176,
- 193, 195, 175, 176, 194, 175, 176, 191,
- 175, 176, 196, 175, 176, 197, 175, 176,
- 198, 175, 176, 199, 175, 176, 200, 175,
- 176, 201, 175, 176, 202, 175, 176, 191,
- 175, 176, 204, 175, 176, 202, 175, 176,
- 206, 175, 176, 207, 175, 176, 208, 175,
- 176, 209, 175, 176, 210, 175, 176, 211,
- 175, 176, 212, 175, 176, 213, 175, 176,
- 214, 175, 176, 215, 175, 176, 216, 175,
- 217, 176, 175, 218, 176, 175, 176, 219,
- 175, 176, 75, 175, 176, 221, 175, 176,
- 222, 175, 176, 223, 175, 176, 224, 175,
- 176, 225, 175, 176, 226, 175, 176, 227,
- 175, 176, 228, 175, 176, 229, 175, 176,
- 191, 175, 176, 231, 175, 176, 232, 175,
- 176, 233, 175, 176, 234, 175, 176, 235,
- 175, 176, 236, 175, 176, 237, 175, 176,
- 75, 238, 175, 176, 239, 175, 176, 240,
- 175, 176, 241, 175, 176, 242, 175, 176,
- 243, 175, 176, 244, 175, 176, 245, 175,
- 176, 219, 175, 176, 247, 175, 176, 191,
- 175, 176, 204, 175, 250, 0, 251, 0,
- 252, 0, 253, 0, 254, 0, 255, 0,
- 256, 0, 257, 339, 0, 259, 258, 259,
- 258, 259, 259, 4, 260, 274, 4, 275,
- 286, 288, 303, 320, 336, 338, 259, 258,
- 259, 261, 258, 259, 262, 258, 259, 263,
- 258, 259, 264, 258, 259, 265, 258, 259,
- 266, 258, 259, 267, 258, 259, 268, 258,
- 259, 269, 258, 259, 270, 258, 259, 271,
- 258, 259, 272, 258, 259, 273, 258, 259,
- 4, 258, 259, 75, 258, 259, 276, 278,
- 258, 259, 277, 258, 259, 274, 258, 259,
- 279, 258, 259, 280, 258, 259, 281, 258,
- 259, 282, 258, 259, 283, 258, 259, 284,
- 258, 259, 285, 258, 259, 274, 258, 259,
- 287, 258, 259, 285, 258, 259, 289, 258,
- 259, 290, 258, 259, 291, 258, 259, 292,
- 258, 259, 293, 258, 259, 294, 258, 259,
- 295, 258, 259, 296, 258, 259, 297, 258,
- 259, 298, 258, 259, 299, 258, 300, 259,
- 258, 301, 259, 258, 259, 302, 258, 259,
- 75, 258, 259, 304, 313, 258, 259, 305,
- 258, 259, 306, 258, 259, 307, 258, 259,
- 308, 258, 259, 309, 258, 259, 310, 258,
- 259, 311, 258, 259, 312, 258, 259, 274,
- 258, 259, 314, 258, 259, 315, 258, 259,
- 316, 258, 259, 317, 258, 259, 318, 258,
- 259, 319, 258, 259, 302, 258, 259, 321,
- 258, 259, 322, 258, 259, 323, 258, 259,
- 324, 258, 259, 325, 258, 259, 326, 258,
- 259, 327, 258, 259, 75, 328, 258, 259,
- 329, 258, 259, 330, 258, 259, 331, 258,
- 259, 332, 258, 259, 333, 258, 259, 334,
- 258, 259, 335, 258, 259, 302, 258, 259,
- 337, 258, 259, 274, 258, 259, 287, 258,
- 340, 0, 341, 0, 342, 0, 343, 0,
- 344, 0, 345, 0, 346, 0, 347, 0,
- 348, 0, 350, 349, 350, 349, 350, 350,
- 4, 351, 365, 4, 366, 377, 379, 394,
- 404, 411, 413, 350, 349, 350, 352, 349,
- 350, 353, 349, 350, 354, 349, 350, 355,
- 349, 350, 356, 349, 350, 357, 349, 350,
- 358, 349, 350, 359, 349, 350, 360, 349,
- 350, 361, 349, 350, 362, 349, 350, 363,
- 349, 350, 364, 349, 350, 4, 349, 350,
- 75, 349, 350, 367, 369, 349, 350, 368,
- 349, 350, 365, 349, 350, 370, 349, 350,
- 371, 349, 350, 372, 349, 350, 373, 349,
- 350, 374, 349, 350, 375, 349, 350, 376,
- 349, 350, 365, 349, 350, 378, 349, 350,
- 376, 349, 350, 380, 349, 350, 381, 349,
- 350, 382, 349, 350, 383, 349, 350, 384,
- 349, 350, 385, 349, 350, 386, 349, 350,
- 387, 349, 350, 388, 349, 350, 389, 349,
- 350, 390, 349, 391, 350, 349, 392, 350,
- 349, 350, 393, 349, 350, 75, 349, 350,
- 395, 349, 350, 396, 349, 350, 397, 349,
- 350, 398, 349, 350, 399, 349, 350, 400,
- 349, 350, 401, 349, 350, 402, 349, 350,
- 403, 349, 350, 365, 349, 350, 405, 349,
- 350, 406, 349, 350, 407, 349, 350, 408,
- 349, 350, 409, 349, 350, 410, 349, 350,
- 393, 349, 350, 412, 349, 350, 365, 349,
- 350, 378, 349, 415, 0, 31, 0, 77,
- 0, 417, 418, 417, 0, 422, 421, 420,
- 418, 421, 419, 0, 420, 418, 419, 0,
- 420, 419, 422, 421, 420, 418, 421, 419,
- 422, 422, 5, 15, 17, 31, 34, 37,
- 48, 76, 78, 156, 249, 414, 416, 417,
- 422, 0, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 81, 84, 81, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 21, 0, 130, 31, 60, 57, 31, 63,
- 57, 63, 63, 63, 63, 63, 63, 63,
- 63, 66, 31, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 69, 33, 69, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 13,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 72, 33, 84,
- 72, 84, 84, 84, 84, 84, 84, 84,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 15, 0, 54, 15, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 15, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 15, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0, 43, 144, 57, 54,
- 0, 54, 0, 75, 33, 84, 75, 84,
- 84, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 17, 0, 54, 17, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 17, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 17, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 78, 33, 84, 78, 84, 84, 84, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 54,
- 19, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 19, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 0, 0, 43, 54, 37, 37,
- 87, 37, 37, 43, 0, 39, 0, 43,
- 0, 0, 54, 0, 0, 39, 0, 0,
- 54, 0, 93, 90, 41, 96, 90, 96,
- 96, 96, 96, 96, 96, 96, 96, 99,
- 0, 43, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 423;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 1019 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
-
- #line 1026 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1316 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1379 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/de.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_de()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "De", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/de.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/de.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 142, 144, 146, 148,
- 150, 152, 154, 156, 158, 160, 162, 164,
- 166, 168, 170, 172, 190, 191, 192, 193,
- 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209,
- 220, 222, 224, 226, 228, 230, 232, 234,
- 236, 238, 240, 242, 244, 246, 248, 250,
- 252, 254, 256, 258, 260, 262, 264, 266,
- 268, 270, 272, 274, 276, 278, 280, 282,
- 284, 286, 288, 290, 292, 294, 296, 298,
- 300, 302, 304, 306, 308, 310, 312, 314,
- 316, 318, 320, 322, 325, 327, 329, 331,
- 333, 335, 337, 339, 341, 343, 344, 345,
- 346, 347, 348, 349, 350, 351, 352, 354,
- 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 379, 381, 383, 385, 387, 389,
- 391, 393, 395, 397, 399, 401, 403, 405,
- 407, 409, 412, 414, 416, 418, 420, 422,
- 424, 426, 428, 430, 432, 434, 436, 438,
- 440, 442, 444, 446, 448, 450, 452, 454,
- 456, 458, 460, 462, 464, 466, 468, 470,
- 472, 474, 476, 478, 480, 482, 484, 486,
- 489, 491, 493, 495, 497, 499, 501, 503,
- 506, 508, 510, 512, 514, 516, 518, 520,
- 522, 524, 526, 528, 529, 530, 531, 532,
- 533, 534, 535, 537, 538, 539, 554, 556,
- 558, 560, 562, 564, 566, 568, 570, 572,
- 574, 576, 578, 580, 582, 584, 587, 589,
- 591, 593, 595, 597, 599, 601, 603, 605,
- 607, 609, 611, 613, 615, 617, 619, 621,
- 623, 625, 627, 629, 631, 633, 635, 637,
- 639, 641, 644, 646, 648, 650, 652, 654,
- 656, 658, 660, 662, 665, 667, 669, 671,
- 673, 675, 677, 679, 681, 683, 685, 687,
- 689, 691, 693, 696, 698, 700, 702, 704,
- 706, 708, 710, 712, 714, 716, 718, 719,
- 720, 721, 722, 723, 724, 725, 726, 727,
- 728, 729, 744, 746, 748, 750, 752, 754,
- 756, 758, 760, 762, 764, 766, 768, 770,
- 772, 774, 777, 779, 781, 783, 785, 787,
- 789, 791, 793, 795, 797, 799, 801, 803,
- 805, 807, 809, 811, 813, 815, 817, 819,
- 821, 823, 825, 827, 829, 831, 833, 835,
- 837, 839, 841, 843, 845, 847, 849, 851,
- 854, 856, 858, 860, 862, 864, 866, 868,
- 870, 872, 874, 875, 876, 877, 881, 887,
- 890, 892, 898, 916
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 68, 70, 71, 83, 85, 87,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 65, 66, 68, 70,
- 71, 83, 85, 87, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 98, 110, 101, 114, 103, 101, 110, 111,
- 109, 109, 101, 110, 101, 105, 115, 112,
- 105, 101, 108, 101, 58, 10, 10, 10,
- 32, 35, 70, 124, 9, 13, 10, 117,
- 10, 110, 10, 107, 10, 116, 10, 105,
- 10, 111, 10, 110, 10, 97, 10, 108,
- 10, 105, 10, 116, -61, 10, -92, 10,
- 10, 116, 10, 58, 10, 32, 34, 35,
- 37, 42, 64, 65, 66, 68, 70, 71,
- 83, 85, 87, 124, 9, 13, 97, 110,
- 117, 110, 107, 116, 105, 111, 110, 97,
- 108, 105, 116, -61, -92, 116, 58, 10,
- 10, 10, 32, 35, 37, 64, 66, 70,
- 71, 83, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 101, 10, 105, 10, 115, 10, 112,
- 10, 105, 10, 101, 10, 108, 10, 101,
- 10, 58, 10, 117, 10, 110, 10, 107,
- 10, 116, 10, 105, 10, 111, 10, 110,
- 10, 97, 10, 108, 10, 105, 10, 116,
- -61, 10, -92, 10, 10, 116, 10, 114,
- 10, 117, 10, 110, 10, 100, 10, 108,
- 10, 97, 10, 103, 10, 122, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 111, 10, 58, 103, 10, 114, 10,
- 117, 10, 110, 10, 100, 10, 114, 10,
- 105, 10, 115, 10, 115, 101, 114, 103,
- 101, 98, 101, 110, 32, 115, 101, 105,
- 32, 101, 117, 110, 100, 108, 97, 103,
- 101, 58, 10, 10, 10, 32, 35, 37,
- 42, 64, 65, 68, 70, 71, 83, 85,
- 87, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 98, 110, 10, 101, 10, 114,
- 10, 103, 10, 101, 10, 110, 10, 111,
- 10, 109, 10, 109, 10, 101, 10, 110,
- 10, 97, 10, 110, 10, 117, 10, 110,
- 10, 107, 10, 116, 10, 105, 10, 111,
- 10, 110, 10, 97, 10, 108, 10, 105,
- 10, 116, -61, 10, -92, 10, 10, 116,
- 10, 58, 10, 101, 10, 103, 10, 101,
- 10, 98, 10, 101, 10, 110, 10, 32,
- 10, 115, 10, 101, 10, 105, 10, 32,
- 101, 10, 122, 10, 101, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 111, 10,
- 58, 103, 10, 114, 10, 117, 10, 110,
- 10, 100, 10, 114, 10, 105, 10, 115,
- 10, 115, 10, 110, 10, 100, 10, 101,
- 122, 101, 110, 97, 114, 105, 111, 58,
- 103, 10, 10, 10, 32, 35, 37, 42,
- 64, 65, 68, 70, 71, 83, 85, 87,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 32,
- 10, 98, 110, 10, 101, 10, 114, 10,
- 103, 10, 101, 10, 110, 10, 111, 10,
- 109, 10, 109, 10, 101, 10, 110, 10,
- 97, 10, 110, 10, 117, 10, 110, 10,
- 107, 10, 116, 10, 105, 10, 111, 10,
- 110, 10, 97, 10, 108, 10, 105, 10,
- 116, -61, 10, -92, 10, 10, 116, 10,
- 58, 10, 101, 114, 10, 103, 10, 101,
- 10, 98, 10, 101, 10, 110, 10, 32,
- 10, 115, 10, 101, 10, 105, 10, 32,
- 101, 10, 117, 10, 110, 10, 100, 10,
- 108, 10, 97, 10, 103, 10, 101, 10,
- 122, 10, 101, 10, 110, 10, 97, 10,
- 114, 10, 105, 10, 111, 10, 58, 103,
- 10, 114, 10, 117, 10, 110, 10, 100,
- 10, 114, 10, 105, 10, 115, 10, 115,
- 10, 110, 10, 100, 10, 101, 114, 117,
- 110, 100, 114, 105, 115, 115, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 65,
- 68, 70, 71, 83, 85, 87, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 98,
- 110, 10, 101, 10, 114, 10, 103, 10,
- 101, 10, 110, 10, 111, 10, 109, 10,
- 109, 10, 101, 10, 110, 10, 97, 10,
- 110, 10, 117, 10, 110, 10, 107, 10,
- 116, 10, 105, 10, 111, 10, 110, 10,
- 97, 10, 108, 10, 105, 10, 116, -61,
- 10, -92, 10, 10, 116, 10, 58, 10,
- 101, 10, 103, 10, 101, 10, 98, 10,
- 101, 10, 110, 10, 32, 10, 115, 10,
- 101, 10, 105, 10, 32, 101, 10, 122,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 111, 10, 110, 10, 100,
- 10, 101, 110, 100, 101, 32, 124, 9,
- 13, 10, 32, 92, 124, 9, 13, 10,
- 92, 124, 10, 92, 10, 32, 92, 124,
- 9, 13, 10, 32, 34, 35, 37, 42,
- 64, 65, 66, 68, 70, 71, 83, 85,
- 87, 124, 9, 13, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 5, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 16, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 9,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 13, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 2, 1, 1, 13, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 13, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 2, 4, 3,
- 2, 4, 16, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 1, 0,
- 0, 1, 1, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 140, 142,
- 144, 146, 148, 150, 152, 154, 156, 158,
- 160, 162, 164, 166, 168, 170, 172, 174,
- 176, 178, 180, 182, 189, 192, 195, 198,
- 201, 204, 207, 210, 213, 216, 219, 222,
- 225, 228, 231, 234, 252, 254, 256, 258,
- 260, 262, 264, 266, 268, 270, 272, 274,
- 276, 278, 280, 282, 284, 286, 288, 290,
- 301, 304, 307, 310, 313, 316, 319, 322,
- 325, 328, 331, 334, 337, 340, 343, 346,
- 349, 352, 355, 358, 361, 364, 367, 370,
- 373, 376, 379, 382, 385, 388, 391, 394,
- 397, 400, 403, 406, 409, 412, 415, 418,
- 421, 424, 427, 430, 433, 436, 439, 442,
- 445, 448, 451, 454, 458, 461, 464, 467,
- 470, 473, 476, 479, 482, 485, 487, 489,
- 491, 493, 495, 497, 499, 501, 503, 506,
- 508, 510, 512, 514, 516, 518, 520, 522,
- 524, 526, 541, 544, 547, 550, 553, 556,
- 559, 562, 565, 568, 571, 574, 577, 580,
- 583, 586, 590, 593, 596, 599, 602, 605,
- 608, 611, 614, 617, 620, 623, 626, 629,
- 632, 635, 638, 641, 644, 647, 650, 653,
- 656, 659, 662, 665, 668, 671, 674, 677,
- 680, 683, 686, 689, 692, 695, 698, 701,
- 705, 708, 711, 714, 717, 720, 723, 726,
- 730, 733, 736, 739, 742, 745, 748, 751,
- 754, 757, 760, 763, 765, 767, 769, 771,
- 773, 775, 777, 780, 782, 784, 799, 802,
- 805, 808, 811, 814, 817, 820, 823, 826,
- 829, 832, 835, 838, 841, 844, 848, 851,
- 854, 857, 860, 863, 866, 869, 872, 875,
- 878, 881, 884, 887, 890, 893, 896, 899,
- 902, 905, 908, 911, 914, 917, 920, 923,
- 926, 929, 933, 936, 939, 942, 945, 948,
- 951, 954, 957, 960, 964, 967, 970, 973,
- 976, 979, 982, 985, 988, 991, 994, 997,
- 1000, 1003, 1006, 1010, 1013, 1016, 1019, 1022,
- 1025, 1028, 1031, 1034, 1037, 1040, 1043, 1045,
- 1047, 1049, 1051, 1053, 1055, 1057, 1059, 1061,
- 1063, 1065, 1080, 1083, 1086, 1089, 1092, 1095,
- 1098, 1101, 1104, 1107, 1110, 1113, 1116, 1119,
- 1122, 1125, 1129, 1132, 1135, 1138, 1141, 1144,
- 1147, 1150, 1153, 1156, 1159, 1162, 1165, 1168,
- 1171, 1174, 1177, 1180, 1183, 1186, 1189, 1192,
- 1195, 1198, 1201, 1204, 1207, 1210, 1213, 1216,
- 1219, 1222, 1225, 1228, 1231, 1234, 1237, 1240,
- 1244, 1247, 1250, 1253, 1256, 1259, 1262, 1265,
- 1268, 1271, 1274, 1276, 1278, 1280, 1284, 1290,
- 1294, 1297, 1303, 1321
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 48, 76, 78, 156, 251, 418, 420,
- 421, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 48,
- 76, 78, 156, 251, 418, 420, 421, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 427, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 40, 0, 39, 0, 31, 0,
- 41, 0, 42, 0, 43, 0, 44, 0,
- 45, 0, 46, 0, 47, 0, 31, 0,
- 49, 0, 50, 0, 51, 0, 52, 0,
- 53, 0, 54, 0, 55, 0, 56, 0,
- 57, 0, 59, 58, 59, 58, 59, 59,
- 4, 60, 4, 59, 58, 59, 61, 58,
- 59, 62, 58, 59, 63, 58, 59, 64,
- 58, 59, 65, 58, 59, 66, 58, 59,
- 67, 58, 59, 68, 58, 59, 69, 58,
- 59, 70, 58, 59, 71, 58, 72, 59,
- 58, 73, 59, 58, 59, 74, 58, 59,
- 75, 58, 4, 4, 5, 15, 17, 31,
- 34, 37, 48, 76, 78, 156, 251, 418,
- 420, 421, 4, 0, 77, 0, 47, 0,
- 79, 0, 80, 0, 81, 0, 82, 0,
- 83, 0, 84, 0, 85, 0, 86, 0,
- 87, 0, 88, 0, 89, 0, 90, 0,
- 91, 0, 92, 0, 93, 0, 95, 94,
- 95, 94, 95, 95, 4, 96, 4, 110,
- 119, 133, 140, 95, 94, 95, 97, 94,
- 95, 98, 94, 95, 99, 94, 95, 100,
- 94, 95, 101, 94, 95, 102, 94, 95,
- 103, 94, 95, 104, 94, 95, 105, 94,
- 95, 106, 94, 95, 107, 94, 95, 108,
- 94, 95, 109, 94, 95, 4, 94, 95,
- 111, 94, 95, 112, 94, 95, 113, 94,
- 95, 114, 94, 95, 115, 94, 95, 116,
- 94, 95, 117, 94, 95, 118, 94, 95,
- 75, 94, 95, 120, 94, 95, 121, 94,
- 95, 122, 94, 95, 123, 94, 95, 124,
- 94, 95, 125, 94, 95, 126, 94, 95,
- 127, 94, 95, 128, 94, 95, 129, 94,
- 95, 130, 94, 131, 95, 94, 132, 95,
- 94, 95, 118, 94, 95, 134, 94, 95,
- 135, 94, 95, 136, 94, 95, 137, 94,
- 95, 138, 94, 95, 139, 94, 95, 117,
- 94, 95, 141, 94, 95, 142, 94, 95,
- 143, 94, 95, 144, 94, 95, 145, 94,
- 95, 146, 94, 95, 147, 94, 95, 75,
- 148, 94, 95, 149, 94, 95, 150, 94,
- 95, 151, 94, 95, 152, 94, 95, 153,
- 94, 95, 154, 94, 95, 155, 94, 95,
- 118, 94, 157, 167, 0, 158, 0, 159,
- 0, 160, 0, 161, 0, 162, 0, 163,
- 0, 164, 0, 165, 0, 166, 0, 32,
- 47, 0, 168, 0, 169, 0, 170, 0,
- 171, 0, 172, 0, 173, 0, 174, 0,
- 175, 0, 177, 176, 177, 176, 177, 177,
- 4, 178, 192, 4, 193, 204, 206, 221,
- 232, 248, 250, 177, 176, 177, 179, 176,
- 177, 180, 176, 177, 181, 176, 177, 182,
- 176, 177, 183, 176, 177, 184, 176, 177,
- 185, 176, 177, 186, 176, 177, 187, 176,
- 177, 188, 176, 177, 189, 176, 177, 190,
- 176, 177, 191, 176, 177, 4, 176, 177,
- 75, 176, 177, 194, 196, 176, 177, 195,
- 176, 177, 192, 176, 177, 197, 176, 177,
- 198, 176, 177, 199, 176, 177, 200, 176,
- 177, 201, 176, 177, 202, 176, 177, 203,
- 176, 177, 192, 176, 177, 205, 176, 177,
- 203, 176, 177, 207, 176, 177, 208, 176,
- 177, 209, 176, 177, 210, 176, 177, 211,
- 176, 177, 212, 176, 177, 213, 176, 177,
- 214, 176, 177, 215, 176, 177, 216, 176,
- 177, 217, 176, 218, 177, 176, 219, 177,
- 176, 177, 220, 176, 177, 75, 176, 177,
- 222, 176, 177, 223, 176, 177, 224, 176,
- 177, 225, 176, 177, 226, 176, 177, 227,
- 176, 177, 228, 176, 177, 229, 176, 177,
- 230, 176, 177, 231, 176, 177, 75, 203,
- 176, 177, 233, 176, 177, 234, 176, 177,
- 235, 176, 177, 236, 176, 177, 237, 176,
- 177, 238, 176, 177, 239, 176, 177, 75,
- 240, 176, 177, 241, 176, 177, 242, 176,
- 177, 243, 176, 177, 244, 176, 177, 245,
- 176, 177, 246, 176, 177, 247, 176, 177,
- 220, 176, 177, 249, 176, 177, 192, 176,
- 177, 205, 176, 252, 0, 253, 0, 254,
- 0, 255, 0, 256, 0, 257, 0, 258,
- 0, 259, 342, 0, 261, 260, 261, 260,
- 261, 261, 4, 262, 276, 4, 277, 288,
- 290, 305, 323, 339, 341, 261, 260, 261,
- 263, 260, 261, 264, 260, 261, 265, 260,
- 261, 266, 260, 261, 267, 260, 261, 268,
- 260, 261, 269, 260, 261, 270, 260, 261,
- 271, 260, 261, 272, 260, 261, 273, 260,
- 261, 274, 260, 261, 275, 260, 261, 4,
- 260, 261, 75, 260, 261, 278, 280, 260,
- 261, 279, 260, 261, 276, 260, 261, 281,
- 260, 261, 282, 260, 261, 283, 260, 261,
- 284, 260, 261, 285, 260, 261, 286, 260,
- 261, 287, 260, 261, 276, 260, 261, 289,
- 260, 261, 287, 260, 261, 291, 260, 261,
- 292, 260, 261, 293, 260, 261, 294, 260,
- 261, 295, 260, 261, 296, 260, 261, 297,
- 260, 261, 298, 260, 261, 299, 260, 261,
- 300, 260, 261, 301, 260, 302, 261, 260,
- 303, 261, 260, 261, 304, 260, 261, 75,
- 260, 261, 306, 316, 260, 261, 307, 260,
- 261, 308, 260, 261, 309, 260, 261, 310,
- 260, 261, 311, 260, 261, 312, 260, 261,
- 313, 260, 261, 314, 260, 261, 315, 260,
- 261, 75, 287, 260, 261, 317, 260, 261,
- 318, 260, 261, 319, 260, 261, 320, 260,
- 261, 321, 260, 261, 322, 260, 261, 304,
- 260, 261, 324, 260, 261, 325, 260, 261,
- 326, 260, 261, 327, 260, 261, 328, 260,
- 261, 329, 260, 261, 330, 260, 261, 75,
- 331, 260, 261, 332, 260, 261, 333, 260,
- 261, 334, 260, 261, 335, 260, 261, 336,
- 260, 261, 337, 260, 261, 338, 260, 261,
- 304, 260, 261, 340, 260, 261, 276, 260,
- 261, 289, 260, 343, 0, 344, 0, 345,
- 0, 346, 0, 347, 0, 348, 0, 349,
- 0, 350, 0, 351, 0, 353, 352, 353,
- 352, 353, 353, 4, 354, 368, 4, 369,
- 380, 382, 397, 408, 415, 417, 353, 352,
- 353, 355, 352, 353, 356, 352, 353, 357,
- 352, 353, 358, 352, 353, 359, 352, 353,
- 360, 352, 353, 361, 352, 353, 362, 352,
- 353, 363, 352, 353, 364, 352, 353, 365,
- 352, 353, 366, 352, 353, 367, 352, 353,
- 4, 352, 353, 75, 352, 353, 370, 372,
- 352, 353, 371, 352, 353, 368, 352, 353,
- 373, 352, 353, 374, 352, 353, 375, 352,
- 353, 376, 352, 353, 377, 352, 353, 378,
- 352, 353, 379, 352, 353, 368, 352, 353,
- 381, 352, 353, 379, 352, 353, 383, 352,
- 353, 384, 352, 353, 385, 352, 353, 386,
- 352, 353, 387, 352, 353, 388, 352, 353,
- 389, 352, 353, 390, 352, 353, 391, 352,
- 353, 392, 352, 353, 393, 352, 394, 353,
- 352, 395, 353, 352, 353, 396, 352, 353,
- 75, 352, 353, 398, 352, 353, 399, 352,
- 353, 400, 352, 353, 401, 352, 353, 402,
- 352, 353, 403, 352, 353, 404, 352, 353,
- 405, 352, 353, 406, 352, 353, 407, 352,
- 353, 75, 379, 352, 353, 409, 352, 353,
- 410, 352, 353, 411, 352, 353, 412, 352,
- 353, 413, 352, 353, 414, 352, 353, 396,
- 352, 353, 416, 352, 353, 368, 352, 353,
- 381, 352, 419, 0, 31, 0, 77, 0,
- 421, 422, 421, 0, 426, 425, 424, 422,
- 425, 423, 0, 424, 422, 423, 0, 424,
- 423, 426, 425, 424, 422, 425, 423, 426,
- 426, 5, 15, 17, 31, 34, 37, 48,
- 76, 78, 156, 251, 418, 420, 421, 426,
- 0, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 81, 84, 81, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 21, 0, 130, 31, 60, 57, 31, 63,
- 57, 63, 63, 63, 63, 63, 63, 63,
- 63, 66, 31, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 69, 33, 69, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 13,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 72, 33, 84, 72, 84, 84, 84, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 15, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 15, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 144, 57, 54, 0,
- 54, 0, 75, 33, 84, 75, 84, 84,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 17,
- 0, 54, 17, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 17,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 17,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 78, 33, 84, 78, 84,
- 84, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 19, 0, 54, 19, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 19, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 19, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 43, 0, 43, 0, 43,
- 0, 0, 0, 43, 54, 37, 37, 87,
- 37, 37, 43, 0, 39, 0, 43, 0,
- 0, 54, 0, 0, 39, 0, 0, 54,
- 0, 93, 90, 41, 96, 90, 96, 96,
- 96, 96, 96, 96, 96, 96, 99, 0,
- 43, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 427;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/de.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 1029 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/de.c.rl"
-
-#line 1036 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/de.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/de.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/de.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/de.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/de.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/de.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/de.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/de.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/de.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/de.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/de.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/de.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/de.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/de.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/de.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/de.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/de.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/de.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/de.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/de.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/de.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/de.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/de.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/de.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1326 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/de.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1389 "ext/gherkin_lexer_de/gherkin_lexer_de.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/de.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_de()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "De", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_en/extconf.rb
index d6981a8,d6981a8..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_en/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_en")
--have_library("c", "main")
--create_makefile("gherkin_lexer_en")
diff --cc ext/gherkin_lexer_en/gherkin_lexer_en.c
index 0812514,7a2ea5c..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_en/gherkin_lexer_en.c
+++ /dev/null
@@@ -1,1418 -1,1418 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 134,
- 136, 138, 140, 142, 144, 146, 148, 150,
- 152, 154, 156, 158, 160, 162, 164, 166,
- 168, 170, 172, 174, 176, 194, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 222, 224, 226, 228, 230, 232,
- 234, 236, 238, 240, 242, 244, 246, 248,
- 250, 252, 255, 257, 259, 261, 263, 265,
- 267, 269, 271, 274, 276, 278, 280, 282,
- 284, 286, 288, 290, 292, 294, 296, 298,
- 300, 302, 304, 306, 308, 310, 312, 314,
- 316, 318, 320, 322, 324, 326, 328, 331,
- 334, 336, 338, 340, 342, 344, 346, 348,
- 350, 352, 354, 356, 358, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 389, 391, 393, 395, 397, 399,
- 401, 403, 405, 407, 409, 411, 413, 415,
- 417, 419, 421, 423, 425, 427, 429, 431,
- 433, 435, 437, 439, 440, 441, 442, 443,
- 444, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 459, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470,
- 485, 487, 489, 491, 493, 495, 497, 499,
- 501, 503, 505, 507, 509, 511, 513, 515,
- 518, 520, 522, 524, 526, 528, 530, 532,
- 534, 537, 539, 541, 543, 545, 547, 549,
- 551, 553, 555, 557, 559, 561, 563, 565,
- 567, 569, 571, 573, 575, 577, 579, 581,
- 583, 585, 587, 589, 591, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 616, 618,
- 620, 622, 624, 626, 628, 630, 632, 634,
- 636, 638, 640, 642, 644, 646, 649, 651,
- 653, 655, 657, 659, 661, 663, 666, 668,
- 670, 672, 674, 676, 678, 680, 682, 685,
- 687, 689, 691, 693, 695, 697, 699, 701,
- 703, 705, 707, 709, 711, 713, 715, 717,
- 719, 721, 723, 725, 727, 729, 731, 733,
- 735, 737, 740, 743, 745, 747, 749, 751,
- 753, 755, 757, 759, 761, 763, 765, 767,
- 768, 772, 778, 781, 783, 789, 807, 810,
- 812, 814, 816, 818, 820, 822, 824, 826,
- 828, 830, 832, 834, 836, 838, 840, 842,
- 844, 846, 848, 850, 852, 854, 856, 858,
- 860, 862, 864, 866, 868, 870, 872, 874,
- 876, 878, 880, 882, 884, 886, 890, 893,
- 895, 897, 899, 901, 903, 905, 907, 909,
- 911, 913, 915, 916
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 69, 70, 71, 83, 84, 87,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 65, 66, 69, 70,
- 71, 83, 84, 87, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 98, 110, 105, 108, 105, 116, 121, 58,
- 10, 10, 10, 32, 35, 37, 64, 65,
- 66, 69, 70, 83, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 98, 10, 105, 10, 108,
- 10, 105, 10, 116, 10, 121, 10, 58,
- 10, 32, 34, 35, 37, 42, 64, 65,
- 66, 69, 70, 71, 83, 84, 87, 124,
- 9, 13, 97, 117, 99, 107, 103, 114,
- 111, 117, 110, 100, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 65, 66, 70,
- 71, 83, 84, 87, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 98, 110, 10,
- 105, 10, 108, 10, 105, 10, 116, 10,
- 121, 10, 58, 10, 100, 10, 117, 10,
- 115, 116, 10, 105, 10, 110, 10, 101,
- 10, 115, 10, 115, 10, 32, 10, 78,
- 10, 101, 10, 101, 10, 100, 10, 101,
- 10, 97, 10, 116, 10, 117, 10, 114,
- 10, 101, 10, 105, 10, 118, 10, 101,
- 10, 110, 10, 99, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 111,
- 10, 32, 58, 10, 79, 84, 10, 117,
- 10, 116, 10, 108, 10, 105, 10, 110,
- 10, 101, 10, 109, 10, 112, 10, 108,
- 10, 97, 10, 116, 10, 104, 115, 116,
- 105, 110, 101, 115, 115, 32, 78, 101,
- 101, 100, 120, 97, 109, 112, 108, 101,
- 115, 58, 10, 10, 10, 32, 35, 65,
- 66, 70, 124, 9, 13, 10, 98, 10,
- 105, 10, 108, 10, 105, 10, 116, 10,
- 121, 10, 58, 10, 117, 10, 115, 10,
- 105, 10, 110, 10, 101, 10, 115, 10,
- 115, 10, 32, 10, 78, 10, 101, 10,
- 101, 10, 100, 10, 101, 10, 97, 10,
- 116, 10, 117, 10, 114, 10, 101, 101,
- 97, 116, 117, 114, 101, 105, 118, 101,
- 110, 99, 101, 110, 97, 114, 105, 111,
- 32, 58, 115, 79, 84, 117, 116, 108,
- 105, 110, 101, 58, 10, 10, 10, 32,
- 35, 37, 42, 64, 65, 66, 70, 71,
- 83, 84, 87, 9, 13, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 32, 10, 98, 110, 10, 105,
- 10, 108, 10, 105, 10, 116, 10, 121,
- 10, 58, 10, 100, 10, 117, 10, 115,
- 116, 10, 105, 10, 110, 10, 101, 10,
- 115, 10, 115, 10, 32, 10, 78, 10,
- 101, 10, 101, 10, 100, 10, 101, 10,
- 97, 10, 116, 10, 117, 10, 114, 10,
- 101, 10, 105, 10, 118, 10, 101, 10,
- 110, 10, 99, 10, 101, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 111, 10,
- 104, 101, 109, 112, 108, 97, 116, 10,
- 10, 10, 32, 35, 37, 42, 64, 65,
- 66, 70, 71, 83, 84, 87, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 98,
- 110, 10, 105, 10, 108, 10, 105, 10,
- 116, 10, 121, 10, 58, 10, 100, 10,
- 97, 117, 10, 99, 10, 107, 10, 103,
- 10, 114, 10, 111, 10, 117, 10, 110,
- 10, 100, 10, 115, 116, 10, 105, 10,
- 110, 10, 101, 10, 115, 10, 115, 10,
- 32, 10, 78, 10, 101, 10, 101, 10,
- 101, 10, 97, 10, 116, 10, 117, 10,
- 114, 10, 101, 10, 105, 10, 118, 10,
- 101, 10, 110, 10, 99, 10, 101, 10,
- 110, 10, 97, 10, 114, 10, 105, 10,
- 111, 10, 32, 58, 10, 79, 84, 10,
- 117, 10, 116, 10, 108, 10, 105, 10,
- 110, 10, 101, 10, 109, 10, 112, 10,
- 108, 10, 97, 10, 116, 10, 104, 104,
- 32, 124, 9, 13, 10, 32, 92, 124,
- 9, 13, 10, 92, 124, 10, 92, 10,
- 32, 92, 124, 9, 13, 10, 32, 34,
- 35, 37, 42, 64, 65, 66, 69, 70,
- 71, 83, 84, 87, 124, 9, 13, 10,
- 97, 117, 10, 99, 10, 107, 10, 103,
- 10, 114, 10, 111, 10, 117, 10, 110,
- 10, 100, 10, 115, 10, 105, 10, 110,
- 10, 101, 10, 115, 10, 115, 10, 32,
- 10, 78, 10, 101, 10, 101, 10, 120,
- 10, 97, 10, 109, 10, 112, 10, 108,
- 10, 101, 10, 115, 10, 101, 10, 97,
- 10, 116, 10, 117, 10, 114, 10, 101,
- 10, 99, 10, 101, 10, 110, 10, 97,
- 10, 114, 10, 105, 10, 111, 10, 32,
- 58, 115, 10, 79, 84, 10, 117, 10,
- 116, 10, 108, 10, 105, 10, 110, 10,
- 101, 10, 109, 10, 112, 10, 108, 10,
- 97, 10, 116, 100, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 10, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 16, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 13, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 7, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 3, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 13,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 13, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 2, 4, 3, 2, 4, 16, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 1, 0, 0, 1, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 140, 142,
- 144, 146, 148, 150, 152, 154, 156, 168,
- 171, 174, 177, 180, 183, 186, 189, 192,
- 195, 198, 201, 204, 207, 210, 213, 216,
- 219, 222, 225, 228, 231, 249, 252, 254,
- 256, 258, 260, 262, 264, 266, 268, 270,
- 272, 274, 289, 292, 295, 298, 301, 304,
- 307, 310, 313, 316, 319, 322, 325, 328,
- 331, 334, 338, 341, 344, 347, 350, 353,
- 356, 359, 362, 366, 369, 372, 375, 378,
- 381, 384, 387, 390, 393, 396, 399, 402,
- 405, 408, 411, 414, 417, 420, 423, 426,
- 429, 432, 435, 438, 441, 444, 447, 451,
- 455, 458, 461, 464, 467, 470, 473, 476,
- 479, 482, 485, 488, 491, 494, 496, 498,
- 500, 502, 504, 506, 508, 510, 512, 514,
- 516, 518, 520, 522, 524, 526, 528, 530,
- 532, 534, 543, 546, 549, 552, 555, 558,
- 561, 564, 567, 570, 573, 576, 579, 582,
- 585, 588, 591, 594, 597, 600, 603, 606,
- 609, 612, 615, 618, 620, 622, 624, 626,
- 628, 630, 632, 634, 636, 638, 640, 642,
- 644, 646, 648, 650, 652, 656, 659, 661,
- 663, 665, 667, 669, 671, 673, 675, 677,
- 692, 695, 698, 701, 704, 707, 710, 713,
- 716, 719, 722, 725, 728, 731, 734, 737,
- 741, 744, 747, 750, 753, 756, 759, 762,
- 765, 769, 772, 775, 778, 781, 784, 787,
- 790, 793, 796, 799, 802, 805, 808, 811,
- 814, 817, 820, 823, 826, 829, 832, 835,
- 838, 841, 844, 847, 850, 853, 855, 857,
- 859, 861, 863, 865, 867, 869, 884, 887,
- 890, 893, 896, 899, 902, 905, 908, 911,
- 914, 917, 920, 923, 926, 929, 933, 936,
- 939, 942, 945, 948, 951, 954, 958, 961,
- 964, 967, 970, 973, 976, 979, 982, 986,
- 989, 992, 995, 998, 1001, 1004, 1007, 1010,
- 1013, 1016, 1019, 1022, 1025, 1028, 1031, 1034,
- 1037, 1040, 1043, 1046, 1049, 1052, 1055, 1058,
- 1061, 1064, 1068, 1072, 1075, 1078, 1081, 1084,
- 1087, 1090, 1093, 1096, 1099, 1102, 1105, 1108,
- 1110, 1114, 1120, 1124, 1127, 1133, 1151, 1155,
- 1158, 1161, 1164, 1167, 1170, 1173, 1176, 1179,
- 1182, 1185, 1188, 1191, 1194, 1197, 1200, 1203,
- 1206, 1209, 1212, 1215, 1218, 1221, 1224, 1227,
- 1230, 1233, 1236, 1239, 1242, 1245, 1248, 1251,
- 1254, 1257, 1260, 1263, 1266, 1269, 1274, 1278,
- 1281, 1284, 1287, 1290, 1293, 1296, 1299, 1302,
- 1305, 1308, 1311, 1313
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 69, 159, 195, 201, 205, 359, 359,
- 360, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 69,
- 159, 195, 201, 205, 359, 359, 360, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 419, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 418, 0, 39, 0, 40, 0,
- 41, 0, 42, 0, 43, 0, 44, 0,
- 46, 45, 46, 45, 46, 46, 4, 47,
- 4, 61, 366, 385, 392, 398, 46, 45,
- 46, 48, 45, 46, 49, 45, 46, 50,
- 45, 46, 51, 45, 46, 52, 45, 46,
- 53, 45, 46, 54, 45, 46, 55, 45,
- 46, 56, 45, 46, 57, 45, 46, 58,
- 45, 46, 59, 45, 46, 60, 45, 46,
- 4, 45, 46, 62, 45, 46, 63, 45,
- 46, 64, 45, 46, 65, 45, 46, 66,
- 45, 46, 67, 45, 46, 68, 45, 4,
- 4, 5, 15, 17, 31, 34, 37, 69,
- 159, 195, 201, 205, 359, 359, 360, 4,
- 0, 70, 148, 0, 71, 0, 72, 0,
- 73, 0, 74, 0, 75, 0, 76, 0,
- 77, 0, 78, 0, 79, 0, 81, 80,
- 81, 80, 81, 81, 4, 82, 96, 4,
- 97, 105, 117, 123, 127, 147, 147, 81,
- 80, 81, 83, 80, 81, 84, 80, 81,
- 85, 80, 81, 86, 80, 81, 87, 80,
- 81, 88, 80, 81, 89, 80, 81, 90,
- 80, 81, 91, 80, 81, 92, 80, 81,
- 93, 80, 81, 94, 80, 81, 95, 80,
- 81, 4, 80, 81, 68, 80, 81, 98,
- 104, 80, 81, 99, 80, 81, 100, 80,
- 81, 101, 80, 81, 102, 80, 81, 103,
- 80, 81, 68, 80, 81, 96, 80, 81,
- 106, 80, 81, 107, 96, 80, 81, 108,
- 80, 81, 109, 80, 81, 110, 80, 81,
- 111, 80, 81, 112, 80, 81, 113, 80,
- 81, 114, 80, 81, 115, 80, 81, 116,
- 80, 81, 103, 80, 81, 118, 80, 81,
- 119, 80, 81, 120, 80, 81, 121, 80,
- 81, 122, 80, 81, 103, 80, 81, 124,
- 80, 81, 125, 80, 81, 126, 80, 81,
- 96, 80, 81, 128, 80, 81, 129, 80,
- 81, 130, 80, 81, 131, 80, 81, 132,
- 80, 81, 133, 80, 81, 134, 80, 81,
- 135, 68, 80, 81, 136, 141, 80, 81,
- 137, 80, 81, 138, 80, 81, 139, 80,
- 81, 140, 80, 81, 122, 80, 81, 142,
- 80, 81, 143, 80, 81, 144, 80, 81,
- 145, 80, 81, 146, 80, 81, 122, 80,
- 81, 125, 80, 149, 31, 0, 150, 0,
- 151, 0, 152, 0, 153, 0, 154, 0,
- 155, 0, 156, 0, 157, 0, 158, 0,
- 43, 0, 160, 0, 161, 0, 162, 0,
- 163, 0, 164, 0, 165, 0, 166, 0,
- 167, 0, 169, 168, 169, 168, 169, 169,
- 4, 170, 177, 189, 4, 169, 168, 169,
- 171, 168, 169, 172, 168, 169, 173, 168,
- 169, 174, 168, 169, 175, 168, 169, 176,
- 168, 169, 68, 168, 169, 178, 168, 169,
- 179, 168, 169, 180, 168, 169, 181, 168,
- 169, 182, 168, 169, 183, 168, 169, 184,
- 168, 169, 185, 168, 169, 186, 168, 169,
- 187, 168, 169, 188, 168, 169, 176, 168,
- 169, 190, 168, 169, 191, 168, 169, 192,
- 168, 169, 193, 168, 169, 194, 168, 169,
- 176, 168, 196, 0, 197, 0, 198, 0,
- 199, 0, 200, 0, 43, 0, 202, 0,
- 203, 0, 204, 0, 31, 0, 206, 0,
- 207, 0, 208, 0, 209, 0, 210, 0,
- 211, 0, 212, 0, 213, 283, 166, 0,
- 214, 277, 0, 215, 0, 216, 0, 217,
- 0, 218, 0, 219, 0, 220, 0, 221,
- 0, 223, 222, 223, 222, 223, 223, 4,
- 224, 238, 4, 239, 247, 259, 265, 269,
- 276, 276, 223, 222, 223, 225, 222, 223,
- 226, 222, 223, 227, 222, 223, 228, 222,
- 223, 229, 222, 223, 230, 222, 223, 231,
- 222, 223, 232, 222, 223, 233, 222, 223,
- 234, 222, 223, 235, 222, 223, 236, 222,
- 223, 237, 222, 223, 4, 222, 223, 68,
- 222, 223, 240, 246, 222, 223, 241, 222,
- 223, 242, 222, 223, 243, 222, 223, 244,
- 222, 223, 245, 222, 223, 68, 222, 223,
- 238, 222, 223, 248, 222, 223, 249, 238,
- 222, 223, 250, 222, 223, 251, 222, 223,
- 252, 222, 223, 253, 222, 223, 254, 222,
- 223, 255, 222, 223, 256, 222, 223, 257,
- 222, 223, 258, 222, 223, 245, 222, 223,
- 260, 222, 223, 261, 222, 223, 262, 222,
- 223, 263, 222, 223, 264, 222, 223, 245,
- 222, 223, 266, 222, 223, 267, 222, 223,
- 268, 222, 223, 238, 222, 223, 270, 222,
- 223, 271, 222, 223, 272, 222, 223, 273,
- 222, 223, 274, 222, 223, 275, 222, 223,
- 245, 222, 223, 267, 222, 278, 0, 279,
- 0, 280, 0, 281, 0, 282, 0, 219,
- 0, 285, 284, 285, 284, 285, 285, 4,
- 286, 300, 4, 301, 309, 328, 334, 338,
- 358, 358, 285, 284, 285, 287, 284, 285,
- 288, 284, 285, 289, 284, 285, 290, 284,
- 285, 291, 284, 285, 292, 284, 285, 293,
- 284, 285, 294, 284, 285, 295, 284, 285,
- 296, 284, 285, 297, 284, 285, 298, 284,
- 285, 299, 284, 285, 4, 284, 285, 68,
- 284, 285, 302, 308, 284, 285, 303, 284,
- 285, 304, 284, 285, 305, 284, 285, 306,
- 284, 285, 307, 284, 285, 68, 284, 285,
- 300, 284, 285, 310, 318, 284, 285, 311,
- 284, 285, 312, 284, 285, 313, 284, 285,
- 314, 284, 285, 315, 284, 285, 316, 284,
- 285, 317, 284, 285, 307, 284, 285, 319,
- 300, 284, 285, 320, 284, 285, 321, 284,
- 285, 322, 284, 285, 323, 284, 285, 324,
- 284, 285, 325, 284, 285, 326, 284, 285,
- 327, 284, 285, 317, 284, 285, 329, 284,
- 285, 330, 284, 285, 331, 284, 285, 332,
- 284, 285, 333, 284, 285, 307, 284, 285,
- 335, 284, 285, 336, 284, 285, 337, 284,
- 285, 300, 284, 285, 339, 284, 285, 340,
- 284, 285, 341, 284, 285, 342, 284, 285,
- 343, 284, 285, 344, 284, 285, 345, 284,
- 285, 346, 68, 284, 285, 347, 352, 284,
- 285, 348, 284, 285, 349, 284, 285, 350,
- 284, 285, 351, 284, 285, 333, 284, 285,
- 353, 284, 285, 354, 284, 285, 355, 284,
- 285, 356, 284, 285, 357, 284, 285, 333,
- 284, 285, 336, 284, 203, 0, 360, 361,
- 360, 0, 365, 364, 363, 361, 364, 362,
- 0, 363, 361, 362, 0, 363, 362, 365,
- 364, 363, 361, 364, 362, 365, 365, 5,
- 15, 17, 31, 34, 37, 69, 159, 195,
- 201, 205, 359, 359, 360, 365, 0, 46,
- 367, 375, 45, 46, 368, 45, 46, 369,
- 45, 46, 370, 45, 46, 371, 45, 46,
- 372, 45, 46, 373, 45, 46, 374, 45,
- 46, 67, 45, 46, 376, 45, 46, 377,
- 45, 46, 378, 45, 46, 379, 45, 46,
- 380, 45, 46, 381, 45, 46, 382, 45,
- 46, 383, 45, 46, 384, 45, 46, 374,
- 45, 46, 386, 45, 46, 387, 45, 46,
- 388, 45, 46, 389, 45, 46, 390, 45,
- 46, 391, 45, 46, 67, 45, 46, 393,
- 45, 46, 394, 45, 46, 395, 45, 46,
- 396, 45, 46, 397, 45, 46, 67, 45,
- 46, 399, 45, 46, 400, 45, 46, 401,
- 45, 46, 402, 45, 46, 403, 45, 46,
- 404, 45, 46, 405, 45, 46, 406, 68,
- 67, 45, 46, 407, 412, 45, 46, 408,
- 45, 46, 409, 45, 46, 410, 45, 46,
- 411, 45, 46, 397, 45, 46, 413, 45,
- 46, 414, 45, 46, 415, 45, 46, 416,
- 45, 46, 417, 45, 46, 397, 45, 31,
- 0, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 69, 33,
- 69, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 130,
- 31, 60, 57, 31, 63, 57, 63, 63,
- 63, 63, 63, 63, 63, 63, 66, 31,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 72, 33, 84, 72,
- 84, 84, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 54, 15, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 15, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 15, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 81, 84, 84, 84, 81, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 21, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0, 0, 43,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 78,
- 33, 84, 78, 84, 84, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 19, 0, 54, 19,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 75,
- 33, 84, 75, 84, 84, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 17, 0, 54, 17,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 17, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 43, 0, 0,
- 0, 43, 54, 37, 37, 87, 37, 37,
- 43, 0, 39, 0, 43, 0, 0, 54,
- 0, 0, 39, 0, 0, 54, 0, 93,
- 90, 41, 96, 90, 96, 96, 96, 96,
- 96, 96, 96, 96, 99, 0, 43, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 13,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 419;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 1022 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
-
- #line 1029 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1319 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1382 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_en()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "En", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/en.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/en.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 134,
- 136, 138, 140, 142, 144, 146, 148, 150,
- 152, 154, 156, 158, 160, 162, 164, 166,
- 168, 170, 172, 174, 176, 194, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 222, 224, 226, 228, 230, 232,
- 234, 236, 238, 240, 242, 244, 246, 248,
- 250, 252, 255, 257, 259, 261, 263, 265,
- 267, 269, 271, 274, 276, 278, 280, 282,
- 284, 286, 288, 290, 292, 294, 296, 298,
- 300, 302, 304, 306, 308, 310, 312, 314,
- 316, 318, 320, 322, 324, 326, 328, 331,
- 334, 336, 338, 340, 342, 344, 346, 348,
- 350, 352, 354, 356, 358, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 389, 391, 393, 395, 397, 399,
- 401, 403, 405, 407, 409, 411, 413, 415,
- 417, 419, 421, 423, 425, 427, 429, 431,
- 433, 435, 437, 439, 440, 441, 442, 443,
- 444, 445, 446, 447, 448, 449, 450, 451,
- 452, 453, 454, 455, 456, 459, 461, 462,
- 463, 464, 465, 466, 467, 468, 469, 470,
- 485, 487, 489, 491, 493, 495, 497, 499,
- 501, 503, 505, 507, 509, 511, 513, 515,
- 518, 520, 522, 524, 526, 528, 530, 532,
- 534, 537, 539, 541, 543, 545, 547, 549,
- 551, 553, 555, 557, 559, 561, 563, 565,
- 567, 569, 571, 573, 575, 577, 579, 581,
- 583, 585, 587, 589, 591, 593, 594, 595,
- 596, 597, 598, 599, 600, 601, 616, 618,
- 620, 622, 624, 626, 628, 630, 632, 634,
- 636, 638, 640, 642, 644, 646, 649, 651,
- 653, 655, 657, 659, 661, 663, 666, 668,
- 670, 672, 674, 676, 678, 680, 682, 685,
- 687, 689, 691, 693, 695, 697, 699, 701,
- 703, 705, 707, 709, 711, 713, 715, 717,
- 719, 721, 723, 725, 727, 729, 731, 733,
- 735, 737, 740, 743, 745, 747, 749, 751,
- 753, 755, 757, 759, 761, 763, 765, 767,
- 768, 772, 778, 781, 783, 789, 807, 810,
- 812, 814, 816, 818, 820, 822, 824, 826,
- 828, 830, 832, 834, 836, 838, 840, 842,
- 844, 846, 848, 850, 852, 854, 856, 858,
- 860, 862, 864, 866, 868, 870, 872, 874,
- 876, 878, 880, 882, 884, 886, 890, 893,
- 895, 897, 899, 901, 903, 905, 907, 909,
- 911, 913, 915, 916
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 69, 70, 71, 83, 84, 87,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 65, 66, 69, 70,
- 71, 83, 84, 87, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 98, 110, 105, 108, 105, 116, 121, 58,
- 10, 10, 10, 32, 35, 37, 64, 65,
- 66, 69, 70, 83, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 98, 10, 105, 10, 108,
- 10, 105, 10, 116, 10, 121, 10, 58,
- 10, 32, 34, 35, 37, 42, 64, 65,
- 66, 69, 70, 71, 83, 84, 87, 124,
- 9, 13, 97, 117, 99, 107, 103, 114,
- 111, 117, 110, 100, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 65, 66, 70,
- 71, 83, 84, 87, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 98, 110, 10,
- 105, 10, 108, 10, 105, 10, 116, 10,
- 121, 10, 58, 10, 100, 10, 117, 10,
- 115, 116, 10, 105, 10, 110, 10, 101,
- 10, 115, 10, 115, 10, 32, 10, 78,
- 10, 101, 10, 101, 10, 100, 10, 101,
- 10, 97, 10, 116, 10, 117, 10, 114,
- 10, 101, 10, 105, 10, 118, 10, 101,
- 10, 110, 10, 99, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 111,
- 10, 32, 58, 10, 79, 84, 10, 117,
- 10, 116, 10, 108, 10, 105, 10, 110,
- 10, 101, 10, 109, 10, 112, 10, 108,
- 10, 97, 10, 116, 10, 104, 115, 116,
- 105, 110, 101, 115, 115, 32, 78, 101,
- 101, 100, 120, 97, 109, 112, 108, 101,
- 115, 58, 10, 10, 10, 32, 35, 65,
- 66, 70, 124, 9, 13, 10, 98, 10,
- 105, 10, 108, 10, 105, 10, 116, 10,
- 121, 10, 58, 10, 117, 10, 115, 10,
- 105, 10, 110, 10, 101, 10, 115, 10,
- 115, 10, 32, 10, 78, 10, 101, 10,
- 101, 10, 100, 10, 101, 10, 97, 10,
- 116, 10, 117, 10, 114, 10, 101, 101,
- 97, 116, 117, 114, 101, 105, 118, 101,
- 110, 99, 101, 110, 97, 114, 105, 111,
- 32, 58, 115, 79, 84, 117, 116, 108,
- 105, 110, 101, 58, 10, 10, 10, 32,
- 35, 37, 42, 64, 65, 66, 70, 71,
- 83, 84, 87, 9, 13, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 32, 10, 98, 110, 10, 105,
- 10, 108, 10, 105, 10, 116, 10, 121,
- 10, 58, 10, 100, 10, 117, 10, 115,
- 116, 10, 105, 10, 110, 10, 101, 10,
- 115, 10, 115, 10, 32, 10, 78, 10,
- 101, 10, 101, 10, 100, 10, 101, 10,
- 97, 10, 116, 10, 117, 10, 114, 10,
- 101, 10, 105, 10, 118, 10, 101, 10,
- 110, 10, 99, 10, 101, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 111, 10,
- 104, 101, 109, 112, 108, 97, 116, 10,
- 10, 10, 32, 35, 37, 42, 64, 65,
- 66, 70, 71, 83, 84, 87, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 98,
- 110, 10, 105, 10, 108, 10, 105, 10,
- 116, 10, 121, 10, 58, 10, 100, 10,
- 97, 117, 10, 99, 10, 107, 10, 103,
- 10, 114, 10, 111, 10, 117, 10, 110,
- 10, 100, 10, 115, 116, 10, 105, 10,
- 110, 10, 101, 10, 115, 10, 115, 10,
- 32, 10, 78, 10, 101, 10, 101, 10,
- 101, 10, 97, 10, 116, 10, 117, 10,
- 114, 10, 101, 10, 105, 10, 118, 10,
- 101, 10, 110, 10, 99, 10, 101, 10,
- 110, 10, 97, 10, 114, 10, 105, 10,
- 111, 10, 32, 58, 10, 79, 84, 10,
- 117, 10, 116, 10, 108, 10, 105, 10,
- 110, 10, 101, 10, 109, 10, 112, 10,
- 108, 10, 97, 10, 116, 10, 104, 104,
- 32, 124, 9, 13, 10, 32, 92, 124,
- 9, 13, 10, 92, 124, 10, 92, 10,
- 32, 92, 124, 9, 13, 10, 32, 34,
- 35, 37, 42, 64, 65, 66, 69, 70,
- 71, 83, 84, 87, 124, 9, 13, 10,
- 97, 117, 10, 99, 10, 107, 10, 103,
- 10, 114, 10, 111, 10, 117, 10, 110,
- 10, 100, 10, 115, 10, 105, 10, 110,
- 10, 101, 10, 115, 10, 115, 10, 32,
- 10, 78, 10, 101, 10, 101, 10, 120,
- 10, 97, 10, 109, 10, 112, 10, 108,
- 10, 101, 10, 115, 10, 101, 10, 97,
- 10, 116, 10, 117, 10, 114, 10, 101,
- 10, 99, 10, 101, 10, 110, 10, 97,
- 10, 114, 10, 105, 10, 111, 10, 32,
- 58, 115, 10, 79, 84, 10, 117, 10,
- 116, 10, 108, 10, 105, 10, 110, 10,
- 101, 10, 109, 10, 112, 10, 108, 10,
- 97, 10, 116, 100, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 10, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 16, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 13, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 7, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 3, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 13,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 13, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 2, 4, 3, 2, 4, 16, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 1, 0, 0, 1, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 140, 142,
- 144, 146, 148, 150, 152, 154, 156, 168,
- 171, 174, 177, 180, 183, 186, 189, 192,
- 195, 198, 201, 204, 207, 210, 213, 216,
- 219, 222, 225, 228, 231, 249, 252, 254,
- 256, 258, 260, 262, 264, 266, 268, 270,
- 272, 274, 289, 292, 295, 298, 301, 304,
- 307, 310, 313, 316, 319, 322, 325, 328,
- 331, 334, 338, 341, 344, 347, 350, 353,
- 356, 359, 362, 366, 369, 372, 375, 378,
- 381, 384, 387, 390, 393, 396, 399, 402,
- 405, 408, 411, 414, 417, 420, 423, 426,
- 429, 432, 435, 438, 441, 444, 447, 451,
- 455, 458, 461, 464, 467, 470, 473, 476,
- 479, 482, 485, 488, 491, 494, 496, 498,
- 500, 502, 504, 506, 508, 510, 512, 514,
- 516, 518, 520, 522, 524, 526, 528, 530,
- 532, 534, 543, 546, 549, 552, 555, 558,
- 561, 564, 567, 570, 573, 576, 579, 582,
- 585, 588, 591, 594, 597, 600, 603, 606,
- 609, 612, 615, 618, 620, 622, 624, 626,
- 628, 630, 632, 634, 636, 638, 640, 642,
- 644, 646, 648, 650, 652, 656, 659, 661,
- 663, 665, 667, 669, 671, 673, 675, 677,
- 692, 695, 698, 701, 704, 707, 710, 713,
- 716, 719, 722, 725, 728, 731, 734, 737,
- 741, 744, 747, 750, 753, 756, 759, 762,
- 765, 769, 772, 775, 778, 781, 784, 787,
- 790, 793, 796, 799, 802, 805, 808, 811,
- 814, 817, 820, 823, 826, 829, 832, 835,
- 838, 841, 844, 847, 850, 853, 855, 857,
- 859, 861, 863, 865, 867, 869, 884, 887,
- 890, 893, 896, 899, 902, 905, 908, 911,
- 914, 917, 920, 923, 926, 929, 933, 936,
- 939, 942, 945, 948, 951, 954, 958, 961,
- 964, 967, 970, 973, 976, 979, 982, 986,
- 989, 992, 995, 998, 1001, 1004, 1007, 1010,
- 1013, 1016, 1019, 1022, 1025, 1028, 1031, 1034,
- 1037, 1040, 1043, 1046, 1049, 1052, 1055, 1058,
- 1061, 1064, 1068, 1072, 1075, 1078, 1081, 1084,
- 1087, 1090, 1093, 1096, 1099, 1102, 1105, 1108,
- 1110, 1114, 1120, 1124, 1127, 1133, 1151, 1155,
- 1158, 1161, 1164, 1167, 1170, 1173, 1176, 1179,
- 1182, 1185, 1188, 1191, 1194, 1197, 1200, 1203,
- 1206, 1209, 1212, 1215, 1218, 1221, 1224, 1227,
- 1230, 1233, 1236, 1239, 1242, 1245, 1248, 1251,
- 1254, 1257, 1260, 1263, 1266, 1269, 1274, 1278,
- 1281, 1284, 1287, 1290, 1293, 1296, 1299, 1302,
- 1305, 1308, 1311, 1313
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 69, 159, 195, 201, 205, 359, 359,
- 360, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 69,
- 159, 195, 201, 205, 359, 359, 360, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 419, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 418, 0, 39, 0, 40, 0,
- 41, 0, 42, 0, 43, 0, 44, 0,
- 46, 45, 46, 45, 46, 46, 4, 47,
- 4, 61, 366, 385, 392, 398, 46, 45,
- 46, 48, 45, 46, 49, 45, 46, 50,
- 45, 46, 51, 45, 46, 52, 45, 46,
- 53, 45, 46, 54, 45, 46, 55, 45,
- 46, 56, 45, 46, 57, 45, 46, 58,
- 45, 46, 59, 45, 46, 60, 45, 46,
- 4, 45, 46, 62, 45, 46, 63, 45,
- 46, 64, 45, 46, 65, 45, 46, 66,
- 45, 46, 67, 45, 46, 68, 45, 4,
- 4, 5, 15, 17, 31, 34, 37, 69,
- 159, 195, 201, 205, 359, 359, 360, 4,
- 0, 70, 148, 0, 71, 0, 72, 0,
- 73, 0, 74, 0, 75, 0, 76, 0,
- 77, 0, 78, 0, 79, 0, 81, 80,
- 81, 80, 81, 81, 4, 82, 96, 4,
- 97, 105, 117, 123, 127, 147, 147, 81,
- 80, 81, 83, 80, 81, 84, 80, 81,
- 85, 80, 81, 86, 80, 81, 87, 80,
- 81, 88, 80, 81, 89, 80, 81, 90,
- 80, 81, 91, 80, 81, 92, 80, 81,
- 93, 80, 81, 94, 80, 81, 95, 80,
- 81, 4, 80, 81, 68, 80, 81, 98,
- 104, 80, 81, 99, 80, 81, 100, 80,
- 81, 101, 80, 81, 102, 80, 81, 103,
- 80, 81, 68, 80, 81, 96, 80, 81,
- 106, 80, 81, 107, 96, 80, 81, 108,
- 80, 81, 109, 80, 81, 110, 80, 81,
- 111, 80, 81, 112, 80, 81, 113, 80,
- 81, 114, 80, 81, 115, 80, 81, 116,
- 80, 81, 103, 80, 81, 118, 80, 81,
- 119, 80, 81, 120, 80, 81, 121, 80,
- 81, 122, 80, 81, 103, 80, 81, 124,
- 80, 81, 125, 80, 81, 126, 80, 81,
- 96, 80, 81, 128, 80, 81, 129, 80,
- 81, 130, 80, 81, 131, 80, 81, 132,
- 80, 81, 133, 80, 81, 134, 80, 81,
- 135, 68, 80, 81, 136, 141, 80, 81,
- 137, 80, 81, 138, 80, 81, 139, 80,
- 81, 140, 80, 81, 122, 80, 81, 142,
- 80, 81, 143, 80, 81, 144, 80, 81,
- 145, 80, 81, 146, 80, 81, 122, 80,
- 81, 125, 80, 149, 31, 0, 150, 0,
- 151, 0, 152, 0, 153, 0, 154, 0,
- 155, 0, 156, 0, 157, 0, 158, 0,
- 43, 0, 160, 0, 161, 0, 162, 0,
- 163, 0, 164, 0, 165, 0, 166, 0,
- 167, 0, 169, 168, 169, 168, 169, 169,
- 4, 170, 177, 189, 4, 169, 168, 169,
- 171, 168, 169, 172, 168, 169, 173, 168,
- 169, 174, 168, 169, 175, 168, 169, 176,
- 168, 169, 68, 168, 169, 178, 168, 169,
- 179, 168, 169, 180, 168, 169, 181, 168,
- 169, 182, 168, 169, 183, 168, 169, 184,
- 168, 169, 185, 168, 169, 186, 168, 169,
- 187, 168, 169, 188, 168, 169, 176, 168,
- 169, 190, 168, 169, 191, 168, 169, 192,
- 168, 169, 193, 168, 169, 194, 168, 169,
- 176, 168, 196, 0, 197, 0, 198, 0,
- 199, 0, 200, 0, 43, 0, 202, 0,
- 203, 0, 204, 0, 31, 0, 206, 0,
- 207, 0, 208, 0, 209, 0, 210, 0,
- 211, 0, 212, 0, 213, 283, 166, 0,
- 214, 277, 0, 215, 0, 216, 0, 217,
- 0, 218, 0, 219, 0, 220, 0, 221,
- 0, 223, 222, 223, 222, 223, 223, 4,
- 224, 238, 4, 239, 247, 259, 265, 269,
- 276, 276, 223, 222, 223, 225, 222, 223,
- 226, 222, 223, 227, 222, 223, 228, 222,
- 223, 229, 222, 223, 230, 222, 223, 231,
- 222, 223, 232, 222, 223, 233, 222, 223,
- 234, 222, 223, 235, 222, 223, 236, 222,
- 223, 237, 222, 223, 4, 222, 223, 68,
- 222, 223, 240, 246, 222, 223, 241, 222,
- 223, 242, 222, 223, 243, 222, 223, 244,
- 222, 223, 245, 222, 223, 68, 222, 223,
- 238, 222, 223, 248, 222, 223, 249, 238,
- 222, 223, 250, 222, 223, 251, 222, 223,
- 252, 222, 223, 253, 222, 223, 254, 222,
- 223, 255, 222, 223, 256, 222, 223, 257,
- 222, 223, 258, 222, 223, 245, 222, 223,
- 260, 222, 223, 261, 222, 223, 262, 222,
- 223, 263, 222, 223, 264, 222, 223, 245,
- 222, 223, 266, 222, 223, 267, 222, 223,
- 268, 222, 223, 238, 222, 223, 270, 222,
- 223, 271, 222, 223, 272, 222, 223, 273,
- 222, 223, 274, 222, 223, 275, 222, 223,
- 245, 222, 223, 267, 222, 278, 0, 279,
- 0, 280, 0, 281, 0, 282, 0, 219,
- 0, 285, 284, 285, 284, 285, 285, 4,
- 286, 300, 4, 301, 309, 328, 334, 338,
- 358, 358, 285, 284, 285, 287, 284, 285,
- 288, 284, 285, 289, 284, 285, 290, 284,
- 285, 291, 284, 285, 292, 284, 285, 293,
- 284, 285, 294, 284, 285, 295, 284, 285,
- 296, 284, 285, 297, 284, 285, 298, 284,
- 285, 299, 284, 285, 4, 284, 285, 68,
- 284, 285, 302, 308, 284, 285, 303, 284,
- 285, 304, 284, 285, 305, 284, 285, 306,
- 284, 285, 307, 284, 285, 68, 284, 285,
- 300, 284, 285, 310, 318, 284, 285, 311,
- 284, 285, 312, 284, 285, 313, 284, 285,
- 314, 284, 285, 315, 284, 285, 316, 284,
- 285, 317, 284, 285, 307, 284, 285, 319,
- 300, 284, 285, 320, 284, 285, 321, 284,
- 285, 322, 284, 285, 323, 284, 285, 324,
- 284, 285, 325, 284, 285, 326, 284, 285,
- 327, 284, 285, 317, 284, 285, 329, 284,
- 285, 330, 284, 285, 331, 284, 285, 332,
- 284, 285, 333, 284, 285, 307, 284, 285,
- 335, 284, 285, 336, 284, 285, 337, 284,
- 285, 300, 284, 285, 339, 284, 285, 340,
- 284, 285, 341, 284, 285, 342, 284, 285,
- 343, 284, 285, 344, 284, 285, 345, 284,
- 285, 346, 68, 284, 285, 347, 352, 284,
- 285, 348, 284, 285, 349, 284, 285, 350,
- 284, 285, 351, 284, 285, 333, 284, 285,
- 353, 284, 285, 354, 284, 285, 355, 284,
- 285, 356, 284, 285, 357, 284, 285, 333,
- 284, 285, 336, 284, 203, 0, 360, 361,
- 360, 0, 365, 364, 363, 361, 364, 362,
- 0, 363, 361, 362, 0, 363, 362, 365,
- 364, 363, 361, 364, 362, 365, 365, 5,
- 15, 17, 31, 34, 37, 69, 159, 195,
- 201, 205, 359, 359, 360, 365, 0, 46,
- 367, 375, 45, 46, 368, 45, 46, 369,
- 45, 46, 370, 45, 46, 371, 45, 46,
- 372, 45, 46, 373, 45, 46, 374, 45,
- 46, 67, 45, 46, 376, 45, 46, 377,
- 45, 46, 378, 45, 46, 379, 45, 46,
- 380, 45, 46, 381, 45, 46, 382, 45,
- 46, 383, 45, 46, 384, 45, 46, 374,
- 45, 46, 386, 45, 46, 387, 45, 46,
- 388, 45, 46, 389, 45, 46, 390, 45,
- 46, 391, 45, 46, 67, 45, 46, 393,
- 45, 46, 394, 45, 46, 395, 45, 46,
- 396, 45, 46, 397, 45, 46, 67, 45,
- 46, 399, 45, 46, 400, 45, 46, 401,
- 45, 46, 402, 45, 46, 403, 45, 46,
- 404, 45, 46, 405, 45, 46, 406, 68,
- 67, 45, 46, 407, 412, 45, 46, 408,
- 45, 46, 409, 45, 46, 410, 45, 46,
- 411, 45, 46, 397, 45, 46, 413, 45,
- 46, 414, 45, 46, 415, 45, 46, 416,
- 45, 46, 417, 45, 46, 397, 45, 31,
- 0, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 69, 33,
- 69, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 130,
- 31, 60, 57, 31, 63, 57, 63, 63,
- 63, 63, 63, 63, 63, 63, 66, 31,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 72, 33, 84, 72,
- 84, 84, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 54, 15, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 15, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 15, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 81, 84, 84, 84, 81, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 21, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0, 0, 43,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 78,
- 33, 84, 78, 84, 84, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 19, 0, 54, 19,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 75,
- 33, 84, 75, 84, 84, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 17, 0, 54, 17,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 17, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 43, 0, 0,
- 0, 43, 54, 37, 37, 87, 37, 37,
- 43, 0, 39, 0, 43, 0, 0, 54,
- 0, 0, 39, 0, 0, 54, 0, 93,
- 90, 41, 96, 90, 96, 96, 96, 96,
- 96, 96, 96, 96, 99, 0, 43, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 13,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 419;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/en.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 1022 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/en.c.rl"
-
-#line 1029 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/en.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/en.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/en.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/en.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/en.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/en.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/en.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/en.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/en.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/en.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/en.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/en.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/en.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/en.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/en.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/en.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/en.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/en.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/en.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/en.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/en.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/en.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/en.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/en.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1319 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/en.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1382 "ext/gherkin_lexer_en/gherkin_lexer_en.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/en.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_en()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "En", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_en_au/extconf.rb
index ee6eaf9,ee6eaf9..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_en_au/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_en_au")
--have_library("c", "main")
--create_makefile("gherkin_lexer_en_au")
diff --cc ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c
index f8ca3c4,87b7bb7..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c
+++ /dev/null
@@@ -1,1223 -1,1765 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 17, 18, 19, 35, 36, 37,
- 39, 41, 46, 51, 56, 61, 65, 69,
- 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 89, 91, 96, 103, 108, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 135, 137, 139, 141, 143, 145,
- 147, 149, 151, 153, 155, 157, 159, 161,
- 163, 165, 181, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 200, 202, 204,
- 206, 208, 210, 212, 213, 214, 215, 216,
- 217, 218, 219, 229, 231, 233, 235, 237,
- 239, 241, 243, 245, 247, 249, 251, 253,
- 255, 257, 260, 262, 264, 266, 268, 270,
- 272, 274, 276, 278, 280, 282, 284, 286,
- 289, 291, 293, 295, 297, 299, 301, 303,
- 305, 307, 309, 311, 312, 313, 314, 315,
- 316, 317, 331, 333, 335, 337, 339, 341,
- 343, 345, 347, 349, 351, 353, 355, 357,
- 359, 361, 364, 366, 368, 370, 372, 374,
- 376, 378, 380, 382, 384, 386, 388, 390,
- 393, 395, 397, 399, 401, 403, 405, 407,
- 409, 411, 413, 415, 417, 419, 421, 424,
- 426, 428, 430, 432, 434, 436, 438, 440,
- 442, 444, 446, 447, 448, 449, 450, 451,
- 453, 454, 455, 456, 457, 458, 459, 460,
- 461, 462, 463, 464, 468, 474, 477, 479,
- 485, 501, 503, 505, 507, 509, 511, 513,
- 516, 518, 520, 522, 524, 526, 528, 530,
- 532, 534, 536, 538, 540, 542, 544, 547,
- 549, 551, 553, 555, 557, 559, 561, 563,
- 565, 567, 569, 570, 571, 572, 573, 574,
- 575, 576, 589, 591, 593, 595, 597, 599,
- 601, 603, 605, 607, 609, 611, 613, 615,
- 617, 619, 622, 624, 626, 628, 630, 632,
- 634, 636, 638, 640, 642, 644, 646, 648,
- 650, 652, 655, 657, 659, 661, 663, 665,
- 667, 669, 671, 673, 675, 677
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 66, 67, 77, 78, 87, 89, 124, 9,
- 13, -69, -65, 10, 32, 34, 35, 37,
- 42, 64, 66, 67, 77, 78, 87, 89,
- 124, 9, 13, 34, 34, 10, 13, 10,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 9,
- 13, 10, 32, 9, 13, 10, 13, 10,
- 95, 70, 69, 65, 84, 85, 82, 69,
- 95, 69, 78, 68, 95, 37, 32, 10,
- 13, 10, 13, 13, 32, 64, 9, 10,
- 9, 10, 13, 32, 64, 11, 12, 10,
- 32, 64, 9, 13, 97, 108, 99, 107,
- 103, 114, 111, 117, 110, 100, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 66,
- 67, 77, 78, 87, 89, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 32, 10, 32, 34,
- 35, 37, 42, 64, 66, 67, 77, 78,
- 87, 89, 124, 9, 13, 101, 111, 114,
- 112, 116, 98, 98, 101, 114, 58, 10,
- 10, 10, 32, 35, 67, 124, 9, 13,
- 10, 114, 10, 105, 10, 107, 10, 101,
- 10, 121, 10, 58, 105, 107, 101, 121,
- 58, 10, 10, 10, 32, 35, 37, 64,
- 66, 67, 77, 9, 13, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 97, 108, 10, 99, 10, 107,
- 10, 103, 10, 114, 10, 111, 10, 117,
- 10, 110, 10, 100, 10, 58, 10, 111,
- 10, 107, 10, 101, 10, 115, 10, 111,
- 114, 10, 98, 10, 98, 10, 101, 10,
- 114, 10, 105, 10, 107, 10, 101, 10,
- 121, 10, 97, 10, 116, 10, 101, 97,
- 116, 101, 58, 10, 10, 10, 32, 35,
- 37, 42, 64, 66, 67, 77, 78, 87,
- 89, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 97, 108, 10, 99, 10, 107,
- 10, 103, 10, 114, 10, 111, 10, 117,
- 10, 110, 10, 100, 10, 58, 10, 111,
- 10, 107, 10, 101, 10, 115, 10, 101,
- 114, 10, 112, 10, 116, 10, 105, 10,
- 107, 10, 101, 10, 121, 10, 97, 10,
- 116, 10, 101, 10, 104, 10, 101, 10,
- 110, 10, 97, 10, 32, 10, 103, 107,
- 10, 111, 10, 116, 10, 116, 10, 97,
- 10, 110, 10, 111, 10, 119, 10, 32,
- 10, 104, 10, 111, 10, 119, 104, 101,
- 110, 97, 32, 103, 107, 111, 116, 116,
- 97, 110, 111, 119, 32, 104, 111, 119,
- 32, 124, 9, 13, 10, 32, 92, 124,
- 9, 13, 10, 92, 124, 10, 92, 10,
- 32, 92, 124, 9, 13, 10, 32, 34,
- 35, 37, 42, 64, 66, 67, 77, 78,
- 87, 89, 124, 9, 13, 10, 108, 10,
- 111, 10, 107, 10, 101, 10, 115, 10,
- 58, 10, 101, 114, 10, 112, 10, 116,
- 10, 105, 10, 107, 10, 101, 10, 121,
- 10, 97, 10, 116, 10, 101, 10, 104,
- 10, 101, 10, 110, 10, 97, 10, 32,
- 10, 103, 107, 10, 111, 10, 116, 10,
- 116, 10, 97, 10, 110, 10, 111, 10,
- 119, 10, 32, 10, 104, 10, 111, 10,
- 119, 111, 107, 101, 115, 58, 10, 10,
- 10, 32, 35, 37, 42, 64, 67, 77,
- 78, 87, 89, 9, 13, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 32, 10, 101, 114, 10, 112,
- 10, 116, 10, 105, 10, 107, 10, 101,
- 10, 121, 10, 58, 10, 97, 10, 116,
- 10, 101, 10, 104, 10, 101, 10, 110,
- 10, 97, 10, 32, 10, 103, 107, 10,
- 111, 10, 116, 10, 116, 10, 97, 10,
- 110, 10, 111, 10, 119, 10, 32, 10,
- 104, 10, 111, 10, 119, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 15, 1, 1, 14, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 12, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 14, 3, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 5, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 8, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 12, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 2, 4, 3, 2, 4,
- 14, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 11, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 1, 0, 0, 1,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 17, 19, 21, 37, 39, 41,
- 44, 47, 52, 57, 62, 67, 71, 75,
- 78, 80, 82, 84, 86, 88, 90, 92,
- 94, 96, 98, 100, 102, 104, 106, 108,
- 110, 113, 116, 121, 128, 133, 136, 138,
- 140, 142, 144, 146, 148, 150, 152, 154,
- 156, 158, 172, 175, 178, 181, 184, 187,
- 190, 193, 196, 199, 202, 205, 208, 211,
- 214, 217, 233, 237, 239, 241, 243, 245,
- 247, 249, 251, 253, 255, 262, 265, 268,
- 271, 274, 277, 280, 282, 284, 286, 288,
- 290, 292, 294, 304, 307, 310, 313, 316,
- 319, 322, 325, 328, 331, 334, 337, 340,
- 343, 346, 350, 353, 356, 359, 362, 365,
- 368, 371, 374, 377, 380, 383, 386, 389,
- 393, 396, 399, 402, 405, 408, 411, 414,
- 417, 420, 423, 426, 428, 430, 432, 434,
- 436, 438, 452, 455, 458, 461, 464, 467,
- 470, 473, 476, 479, 482, 485, 488, 491,
- 494, 497, 501, 504, 507, 510, 513, 516,
- 519, 522, 525, 528, 531, 534, 537, 540,
- 544, 547, 550, 553, 556, 559, 562, 565,
- 568, 571, 574, 577, 580, 583, 586, 590,
- 593, 596, 599, 602, 605, 608, 611, 614,
- 617, 620, 623, 625, 627, 629, 631, 633,
- 636, 638, 640, 642, 644, 646, 648, 650,
- 652, 654, 656, 658, 662, 668, 672, 675,
- 681, 697, 700, 703, 706, 709, 712, 715,
- 719, 722, 725, 728, 731, 734, 737, 740,
- 743, 746, 749, 752, 755, 758, 761, 765,
- 768, 771, 774, 777, 780, 783, 786, 789,
- 792, 795, 798, 800, 802, 804, 806, 808,
- 810, 812, 825, 828, 831, 834, 837, 840,
- 843, 846, 849, 852, 855, 858, 861, 864,
- 867, 870, 874, 877, 880, 883, 886, 889,
- 892, 895, 898, 901, 904, 907, 910, 913,
- 916, 919, 923, 926, 929, 932, 935, 938,
- 941, 944, 947, 950, 953, 956
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 66, 131, 31, 194, 197, 211, 4,
- 0, 3, 0, 4, 0, 4, 4, 5,
- 15, 17, 31, 34, 37, 66, 131, 31,
- 194, 197, 211, 4, 0, 6, 0, 7,
- 0, 9, 8, 8, 9, 8, 8, 10,
- 10, 11, 10, 10, 10, 10, 11, 10,
- 10, 10, 10, 12, 10, 10, 10, 10,
- 13, 10, 10, 4, 14, 14, 0, 4,
- 14, 14, 0, 4, 16, 15, 4, 0,
- 18, 0, 19, 0, 20, 0, 21, 0,
- 22, 0, 23, 0, 24, 0, 25, 0,
- 26, 0, 27, 0, 28, 0, 29, 0,
- 30, 0, 301, 0, 32, 0, 4, 16,
- 33, 4, 16, 33, 0, 0, 0, 0,
- 35, 36, 4, 36, 36, 34, 35, 35,
- 4, 36, 34, 36, 0, 38, 250, 0,
- 39, 0, 40, 0, 41, 0, 42, 0,
- 43, 0, 44, 0, 45, 0, 46, 0,
- 47, 0, 49, 48, 49, 48, 49, 49,
- 4, 50, 64, 4, 217, 223, 230, 64,
- 233, 236, 49, 48, 49, 51, 48, 49,
- 52, 48, 49, 53, 48, 49, 54, 48,
- 49, 55, 48, 49, 56, 48, 49, 57,
- 48, 49, 58, 48, 49, 59, 48, 49,
- 60, 48, 49, 61, 48, 49, 62, 48,
- 49, 63, 48, 49, 4, 48, 49, 65,
- 48, 4, 4, 5, 15, 17, 31, 34,
- 37, 66, 131, 31, 194, 197, 211, 4,
- 0, 67, 69, 83, 0, 68, 0, 31,
- 0, 70, 0, 71, 0, 72, 0, 73,
- 0, 74, 0, 76, 75, 76, 75, 76,
- 76, 4, 77, 4, 76, 75, 76, 78,
- 75, 76, 79, 75, 76, 80, 75, 76,
- 81, 75, 76, 82, 75, 76, 65, 75,
- 84, 0, 85, 0, 86, 0, 87, 0,
- 88, 0, 90, 89, 90, 89, 90, 90,
- 4, 91, 4, 105, 119, 128, 90, 89,
- 90, 92, 89, 90, 93, 89, 90, 94,
- 89, 90, 95, 89, 90, 96, 89, 90,
- 97, 89, 90, 98, 89, 90, 99, 89,
- 90, 100, 89, 90, 101, 89, 90, 102,
- 89, 90, 103, 89, 90, 104, 89, 90,
- 4, 89, 90, 106, 115, 89, 90, 107,
- 89, 90, 108, 89, 90, 109, 89, 90,
- 110, 89, 90, 111, 89, 90, 112, 89,
- 90, 113, 89, 90, 114, 89, 90, 65,
- 89, 90, 116, 89, 90, 117, 89, 90,
- 118, 89, 90, 114, 89, 90, 120, 124,
- 89, 90, 121, 89, 90, 122, 89, 90,
- 123, 89, 90, 114, 89, 90, 125, 89,
- 90, 126, 89, 90, 127, 89, 90, 114,
- 89, 90, 129, 89, 90, 130, 89, 90,
- 114, 89, 132, 0, 133, 0, 134, 0,
- 135, 0, 137, 136, 137, 136, 137, 137,
- 4, 138, 152, 4, 153, 167, 174, 152,
- 177, 180, 137, 136, 137, 139, 136, 137,
- 140, 136, 137, 141, 136, 137, 142, 136,
- 137, 143, 136, 137, 144, 136, 137, 145,
- 136, 137, 146, 136, 137, 147, 136, 137,
- 148, 136, 137, 149, 136, 137, 150, 136,
- 137, 151, 136, 137, 4, 136, 137, 65,
- 136, 137, 154, 163, 136, 137, 155, 136,
- 137, 156, 136, 137, 157, 136, 137, 158,
- 136, 137, 159, 136, 137, 160, 136, 137,
- 161, 136, 137, 162, 136, 137, 65, 136,
- 137, 164, 136, 137, 165, 136, 137, 166,
- 136, 137, 162, 136, 137, 168, 170, 136,
- 137, 169, 136, 137, 152, 136, 137, 171,
- 136, 137, 172, 136, 137, 173, 136, 137,
- 162, 136, 137, 175, 136, 137, 176, 136,
- 137, 162, 136, 137, 178, 136, 137, 179,
- 136, 137, 152, 136, 137, 181, 136, 137,
- 182, 136, 137, 183, 187, 136, 137, 184,
- 136, 137, 185, 136, 137, 186, 136, 137,
- 152, 136, 137, 188, 136, 137, 189, 136,
- 137, 190, 136, 137, 191, 136, 137, 192,
- 136, 137, 193, 136, 137, 152, 136, 195,
- 0, 196, 0, 31, 0, 198, 0, 199,
- 0, 200, 204, 0, 201, 0, 202, 0,
- 203, 0, 31, 0, 205, 0, 206, 0,
- 207, 0, 208, 0, 209, 0, 210, 0,
- 31, 0, 211, 212, 211, 0, 216, 215,
- 214, 212, 215, 213, 0, 214, 212, 213,
- 0, 214, 213, 216, 215, 214, 212, 215,
- 213, 216, 216, 5, 15, 17, 31, 34,
- 37, 66, 131, 31, 194, 197, 211, 216,
- 0, 49, 218, 48, 49, 219, 48, 49,
- 220, 48, 49, 221, 48, 49, 222, 48,
- 49, 65, 48, 49, 224, 226, 48, 49,
- 225, 48, 49, 64, 48, 49, 227, 48,
- 49, 228, 48, 49, 229, 48, 49, 222,
- 48, 49, 231, 48, 49, 232, 48, 49,
- 222, 48, 49, 234, 48, 49, 235, 48,
- 49, 64, 48, 49, 237, 48, 49, 238,
- 48, 49, 239, 243, 48, 49, 240, 48,
- 49, 241, 48, 49, 242, 48, 49, 64,
- 48, 49, 244, 48, 49, 245, 48, 49,
- 246, 48, 49, 247, 48, 49, 248, 48,
- 49, 249, 48, 49, 64, 48, 251, 0,
- 252, 0, 253, 0, 254, 0, 255, 0,
- 257, 256, 257, 256, 257, 257, 4, 258,
- 272, 4, 273, 281, 272, 284, 287, 257,
- 256, 257, 259, 256, 257, 260, 256, 257,
- 261, 256, 257, 262, 256, 257, 263, 256,
- 257, 264, 256, 257, 265, 256, 257, 266,
- 256, 257, 267, 256, 257, 268, 256, 257,
- 269, 256, 257, 270, 256, 257, 271, 256,
- 257, 4, 256, 257, 65, 256, 257, 274,
- 276, 256, 257, 275, 256, 257, 272, 256,
- 257, 277, 256, 257, 278, 256, 257, 279,
- 256, 257, 280, 256, 257, 65, 256, 257,
- 282, 256, 257, 283, 256, 257, 280, 256,
- 257, 285, 256, 257, 286, 256, 257, 272,
- 256, 257, 288, 256, 257, 289, 256, 257,
- 290, 294, 256, 257, 291, 256, 257, 292,
- 256, 257, 293, 256, 257, 272, 256, 257,
- 295, 256, 257, 296, 256, 257, 297, 256,
- 257, 298, 256, 257, 299, 256, 257, 300,
- 256, 257, 272, 256, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 54, 0, 5,
- 1, 0, 29, 1, 29, 29, 29, 29,
- 29, 29, 35, 0, 43, 0, 43, 0,
- 43, 139, 48, 9, 106, 11, 0, 134,
- 45, 45, 45, 3, 122, 33, 33, 33,
- 0, 122, 33, 33, 33, 0, 122, 33,
- 0, 33, 0, 102, 7, 7, 43, 54,
- 0, 0, 43, 114, 25, 0, 54, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 149, 126,
- 57, 110, 23, 0, 43, 43, 43, 43,
- 0, 27, 118, 27, 27, 51, 27, 0,
- 54, 0, 1, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 72, 33, 84, 72, 84, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 15, 0, 54, 15,
- 0, 130, 31, 60, 57, 31, 63, 57,
- 63, 63, 63, 63, 63, 63, 66, 31,
- 43, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 81, 84, 81, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 21, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 69, 33, 69, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 13,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 75, 33, 84, 75, 84, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 17, 0, 54, 17,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0, 0, 43, 54, 37,
- 37, 87, 37, 37, 43, 0, 39, 0,
- 43, 0, 0, 54, 0, 0, 39, 0,
- 0, 54, 0, 93, 90, 41, 96, 90,
- 96, 96, 96, 96, 96, 96, 99, 0,
- 43, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 78, 33,
- 84, 78, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 19, 0, 54, 19, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 301;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 827 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
-
- #line 834 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1124 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1187 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_au.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_en_au()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "En_au", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/en_au.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/en_au.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 128, 129, 145,
- 147, 149, 151, 153, 155, 157, 159, 161,
- 163, 165, 167, 169, 171, 173, 175, 193,
- 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 252, 254, 256, 258,
- 260, 262, 264, 266, 268, 270, 272, 274,
- 276, 278, 280, 282, 284, 286, 288, 290,
- 292, 294, 296, 298, 300, 302, 304, 306,
- 308, 310, 312, 314, 316, 318, 320, 322,
- 324, 326, 328, 330, 332, 334, 336, 338,
- 340, 342, 344, 346, 348, 350, 352, 354,
- 356, 358, 360, 362, 364, 366, 368, 370,
- 372, 374, 376, 378, 380, 382, 384, 386,
- 388, 390, 392, 394, 396, 398, 400, 402,
- 404, 406, 408, 410, 412, 414, 416, 418,
- 420, 422, 424, 426, 428, 430, 432, 434,
- 436, 438, 440, 442, 444, 446, 448, 450,
- 452, 454, 456, 458, 460, 462, 464, 466,
- 468, 470, 472, 474, 476, 478, 480, 482,
- 484, 487, 489, 491, 493, 495, 497, 499,
- 501, 503, 505, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 519,
- 520, 521, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, 532, 533, 534, 535,
- 536, 537, 538, 539, 540, 541, 553, 555,
- 557, 559, 561, 563, 565, 567, 569, 571,
- 573, 575, 577, 579, 581, 583, 585, 587,
- 589, 591, 593, 595, 597, 599, 601, 603,
- 605, 607, 609, 611, 613, 615, 617, 619,
- 621, 623, 625, 627, 629, 631, 633, 635,
- 637, 639, 641, 643, 645, 647, 649, 651,
- 653, 655, 657, 659, 661, 663, 665, 667,
- 669, 671, 673, 675, 677, 679, 681, 683,
- 685, 687, 689, 691, 693, 695, 697, 698,
- 699, 700, 701, 702, 703, 704, 705, 706,
- 707, 708, 709, 710, 711, 712, 713, 714,
- 715, 729, 731, 733, 735, 737, 739, 741,
- 743, 745, 747, 749, 751, 753, 755, 757,
- 759, 761, 763, 765, 767, 769, 771, 773,
- 775, 777, 779, 781, 783, 785, 787, 789,
- 791, 793, 795, 797, 799, 801, 803, 805,
- 807, 809, 811, 813, 815, 817, 819, 821,
- 823, 825, 827, 829, 831, 833, 835, 837,
- 839, 841, 843, 845, 847, 849, 851, 853,
- 855, 857, 859, 861, 863, 865, 867, 869,
- 871, 873, 875, 877, 879, 881, 883, 885,
- 887, 889, 891, 893, 895, 897, 899, 901,
- 903, 905, 907, 909, 911, 913, 915, 917,
- 919, 921, 923, 925, 927, 929, 931, 933,
- 936, 938, 940, 942, 944, 946, 948, 950,
- 952, 954, 956, 957, 958, 959, 960, 961,
- 962, 963, 964, 967, 968, 969, 970, 971,
- 972, 973, 974, 975, 976, 977, 978, 979,
- 980, 981, 982, 983, 984, 985, 986, 987,
- 988, 989, 990, 997, 999, 1001, 1003, 1005,
- 1007, 1009, 1011, 1013, 1015, 1017, 1019, 1023,
- 1029, 1032, 1034, 1040, 1058, 1060, 1062, 1064,
- 1066, 1068, 1070, 1072, 1074, 1076, 1078, 1080,
- 1082, 1084, 1086, 1088, 1090, 1092, 1094, 1096,
- 1098, 1100, 1102, 1104, 1106, 1108, 1110, 1112,
- 1114, 1116, 1118, 1120, 1122, 1124, 1126, 1128,
- 1130, 1132, 1134, 1136, 1138, 1140, 1142, 1144,
- 1146, 1148, 1150, 1152, 1154, 1156, 1158, 1160,
- 1162, 1164, 1166, 1168, 1170, 1172, 1174, 1176,
- 1178, 1180, 1182, 1184, 1186, 1188, 1190, 1192,
- 1194, 1196, 1198, 1200, 1202, 1204, 1206, 1208,
- 1210, 1212, 1214, 1216, 1218, 1220, 1222, 1224,
- 1226, 1228, 1230, 1232, 1234, 1236, 1238, 1240,
- 1242, 1244, 1246, 1248, 1250, 1252, 1254, 1256,
- 1258, 1260, 1262, 1264, 1266, 1268, 1270, 1272,
- 1274, 1276, 1279, 1281, 1283, 1285, 1287, 1289,
- 1291, 1293, 1295, 1297, 1299
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 70, 73, 80, 82, 84, 89,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 65, 66, 70, 73,
- 80, 82, 84, 89, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 119, 119, 119, 44, 32, 108, 111, 111,
- 107, 32, 109, 97, 116, 101, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 65,
- 66, 70, 73, 80, 82, 84, 89, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 32, 34, 35, 37, 42, 64, 65, 66,
- 70, 73, 80, 82, 84, 89, 124, 9,
- 13, 117, 116, 32, 97, 116, 32, 116,
- 104, 101, 32, 101, 110, 100, 32, 111,
- 102, 32, 116, 104, 101, 32, 100, 97,
- 121, 32, 73, 32, 114, 101, 99, 107,
- 111, 110, 105, 114, 115, 116, 32, 111,
- 102, 102, 58, 10, 10, 10, 32, 35,
- 37, 42, 64, 65, 66, 73, 80, 82,
- 84, 89, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, 10, 119, 10, 119, 10, 119,
- 10, 44, 10, 32, 10, 108, 10, 111,
- 10, 111, 10, 107, 10, 32, 10, 109,
- 10, 97, 10, 116, 10, 101, 10, 58,
- 10, 117, 10, 116, 10, 32, 10, 97,
- 10, 116, 10, 32, 10, 116, 10, 104,
- 10, 101, 10, 32, 10, 101, 10, 110,
- 10, 100, 10, 32, 10, 111, 10, 102,
- 10, 32, 10, 116, 10, 104, 10, 101,
- 10, 32, 10, 100, 10, 97, 10, 121,
- 10, 32, 10, 73, 10, 32, 10, 114,
- 10, 101, 10, 99, 10, 107, 10, 111,
- 10, 110, 10, 116, 10, 39, 10, 115,
- 10, 32, 10, 106, 10, 117, 10, 115,
- 10, 116, 10, 32, 10, 117, 10, 110,
- 10, 98, 10, 101, 10, 108, 10, 105,
- 10, 101, 10, 118, 10, 97, 10, 98,
- 10, 108, 10, 101, 10, 114, 10, 101,
- 10, 116, 10, 116, 10, 121, 10, 32,
- 10, 109, 10, 117, 10, 99, 10, 104,
- 10, 101, 10, 99, 10, 107, 10, 111,
- 10, 110, 10, 32, 10, 105, 10, 116,
- 10, 39, 10, 115, 10, 32, 10, 108,
- 10, 105, 10, 107, 10, 111, 10, 111,
- 10, 32, 10, 114, 10, 105, 10, 103,
- 10, 104, 10, 116, 10, 39, 101, 10,
- 107, 10, 110, 10, 111, 10, 119, 10,
- 97, 10, 104, 10, 32, 10, 110, 10,
- 97, 10, 104, 116, 39, 115, 32, 106,
- 117, 115, 116, 32, 117, 110, 98, 101,
- 108, 105, 101, 118, 97, 98, 108, 101,
- 114, 101, 116, 116, 121, 32, 109, 117,
- 99, 104, 58, 10, 10, 10, 32, 35,
- 37, 64, 65, 70, 80, 82, 89, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 119, 10,
- 119, 10, 119, 10, 44, 10, 32, 10,
- 108, 10, 111, 10, 111, 10, 107, 10,
- 32, 10, 109, 10, 97, 10, 116, 10,
- 101, 10, 58, 10, 105, 10, 114, 10,
- 115, 10, 116, 10, 32, 10, 111, 10,
- 102, 10, 102, 10, 114, 10, 101, 10,
- 116, 10, 116, 10, 121, 10, 32, 10,
- 109, 10, 117, 10, 99, 10, 104, 10,
- 101, 10, 99, 10, 107, 10, 111, 10,
- 110, 10, 32, 10, 105, 10, 116, 10,
- 39, 10, 115, 10, 32, 10, 108, 10,
- 105, 10, 107, 10, 111, 10, 117, 10,
- 39, 10, 108, 10, 108, 10, 32, 10,
- 119, 10, 97, 10, 110, 10, 110, 10,
- 97, 101, 99, 107, 111, 110, 32, 105,
- 116, 39, 115, 32, 108, 105, 107, 101,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 65, 66, 73, 80, 84, 89, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 119, 10, 119, 10, 119, 10, 44, 10,
- 32, 10, 108, 10, 111, 10, 111, 10,
- 107, 10, 32, 10, 109, 10, 97, 10,
- 116, 10, 101, 10, 58, 10, 117, 10,
- 116, 10, 32, 10, 97, 10, 116, 10,
- 32, 10, 116, 10, 104, 10, 101, 10,
- 32, 10, 101, 10, 110, 10, 100, 10,
- 32, 10, 111, 10, 102, 10, 32, 10,
- 116, 10, 104, 10, 101, 10, 32, 10,
- 100, 10, 97, 10, 121, 10, 32, 10,
- 73, 10, 32, 10, 114, 10, 101, 10,
- 99, 10, 107, 10, 111, 10, 110, 10,
- 116, 10, 39, 10, 115, 10, 32, 10,
- 106, 10, 117, 10, 115, 10, 116, 10,
- 32, 10, 117, 10, 110, 10, 98, 10,
- 101, 10, 108, 10, 105, 10, 101, 10,
- 118, 10, 97, 10, 98, 10, 108, 10,
- 101, 10, 114, 10, 101, 10, 116, 10,
- 116, 10, 121, 10, 32, 10, 109, 10,
- 117, 10, 99, 10, 104, 10, 111, 10,
- 111, 10, 32, 10, 114, 10, 105, 10,
- 103, 10, 104, 10, 116, 10, 39, 101,
- 10, 107, 10, 110, 10, 111, 10, 119,
- 10, 97, 10, 104, 10, 32, 10, 110,
- 10, 97, 10, 104, 111, 111, 32, 114,
- 105, 103, 104, 116, 39, 101, 111, 107,
- 110, 111, 119, 97, 104, 32, 110, 97,
- 104, 117, 39, 108, 108, 32, 119, 97,
- 110, 110, 97, 58, 10, 10, 10, 32,
- 35, 80, 124, 9, 13, 10, 114, 10,
- 101, 10, 116, 10, 116, 10, 121, 10,
- 32, 10, 109, 10, 117, 10, 99, 10,
- 104, 10, 58, 32, 124, 9, 13, 10,
- 32, 92, 124, 9, 13, 10, 92, 124,
- 10, 92, 10, 32, 92, 124, 9, 13,
- 10, 32, 34, 35, 37, 42, 64, 65,
- 66, 70, 73, 80, 82, 84, 89, 124,
- 9, 13, 10, 119, 10, 119, 10, 119,
- 10, 44, 10, 32, 10, 108, 10, 111,
- 10, 111, 10, 107, 10, 32, 10, 109,
- 10, 97, 10, 116, 10, 101, 10, 58,
- 10, 117, 10, 116, 10, 32, 10, 97,
- 10, 116, 10, 32, 10, 116, 10, 104,
- 10, 101, 10, 32, 10, 101, 10, 110,
- 10, 100, 10, 32, 10, 111, 10, 102,
- 10, 32, 10, 116, 10, 104, 10, 101,
- 10, 32, 10, 100, 10, 97, 10, 121,
- 10, 32, 10, 73, 10, 32, 10, 114,
- 10, 101, 10, 99, 10, 107, 10, 111,
- 10, 110, 10, 105, 10, 114, 10, 115,
- 10, 116, 10, 32, 10, 111, 10, 102,
- 10, 102, 10, 116, 10, 39, 10, 115,
- 10, 32, 10, 106, 10, 117, 10, 115,
- 10, 116, 10, 32, 10, 117, 10, 110,
- 10, 98, 10, 101, 10, 108, 10, 105,
- 10, 101, 10, 118, 10, 97, 10, 98,
- 10, 108, 10, 101, 10, 114, 10, 101,
- 10, 116, 10, 116, 10, 121, 10, 32,
- 10, 109, 10, 117, 10, 99, 10, 104,
- 10, 101, 10, 99, 10, 107, 10, 111,
- 10, 110, 10, 32, 10, 105, 10, 116,
- 10, 39, 10, 115, 10, 32, 10, 108,
- 10, 105, 10, 107, 10, 111, 10, 111,
- 10, 32, 10, 114, 10, 105, 10, 103,
- 10, 104, 10, 116, 10, 39, 101, 10,
- 107, 10, 110, 10, 111, 10, 119, 10,
- 97, 10, 104, 10, 32, 10, 110, 10,
- 97, 10, 104, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 14, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 16, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 13, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 10, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 12, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 3, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 5, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 4,
- 3, 2, 4, 16, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 1,
- 0, 0, 1, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 139, 141,
- 143, 145, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 165, 167, 169, 171, 187,
- 190, 193, 196, 199, 202, 205, 208, 211,
- 214, 217, 220, 223, 226, 229, 232, 250,
- 252, 254, 256, 258, 260, 262, 264, 266,
- 268, 270, 272, 274, 276, 278, 280, 282,
- 284, 286, 288, 290, 292, 294, 296, 298,
- 300, 302, 304, 306, 308, 310, 312, 314,
- 316, 318, 320, 322, 324, 326, 328, 330,
- 332, 334, 336, 338, 353, 356, 359, 362,
- 365, 368, 371, 374, 377, 380, 383, 386,
- 389, 392, 395, 398, 401, 404, 407, 410,
- 413, 416, 419, 422, 425, 428, 431, 434,
- 437, 440, 443, 446, 449, 452, 455, 458,
- 461, 464, 467, 470, 473, 476, 479, 482,
- 485, 488, 491, 494, 497, 500, 503, 506,
- 509, 512, 515, 518, 521, 524, 527, 530,
- 533, 536, 539, 542, 545, 548, 551, 554,
- 557, 560, 563, 566, 569, 572, 575, 578,
- 581, 584, 587, 590, 593, 596, 599, 602,
- 605, 608, 611, 614, 617, 620, 623, 626,
- 629, 632, 635, 638, 641, 644, 647, 650,
- 653, 656, 659, 662, 665, 668, 671, 674,
- 677, 680, 683, 686, 689, 692, 695, 698,
- 701, 705, 708, 711, 714, 717, 720, 723,
- 726, 729, 732, 735, 737, 739, 741, 743,
- 745, 747, 749, 751, 753, 755, 757, 759,
- 761, 763, 765, 767, 769, 771, 773, 775,
- 777, 779, 781, 783, 785, 787, 789, 791,
- 793, 795, 797, 799, 801, 803, 815, 818,
- 821, 824, 827, 830, 833, 836, 839, 842,
- 845, 848, 851, 854, 857, 860, 863, 866,
- 869, 872, 875, 878, 881, 884, 887, 890,
- 893, 896, 899, 902, 905, 908, 911, 914,
- 917, 920, 923, 926, 929, 932, 935, 938,
- 941, 944, 947, 950, 953, 956, 959, 962,
- 965, 968, 971, 974, 977, 980, 983, 986,
- 989, 992, 995, 998, 1001, 1004, 1007, 1010,
- 1013, 1016, 1019, 1022, 1025, 1028, 1031, 1033,
- 1035, 1037, 1039, 1041, 1043, 1045, 1047, 1049,
- 1051, 1053, 1055, 1057, 1059, 1061, 1063, 1065,
- 1067, 1081, 1084, 1087, 1090, 1093, 1096, 1099,
- 1102, 1105, 1108, 1111, 1114, 1117, 1120, 1123,
- 1126, 1129, 1132, 1135, 1138, 1141, 1144, 1147,
- 1150, 1153, 1156, 1159, 1162, 1165, 1168, 1171,
- 1174, 1177, 1180, 1183, 1186, 1189, 1192, 1195,
- 1198, 1201, 1204, 1207, 1210, 1213, 1216, 1219,
- 1222, 1225, 1228, 1231, 1234, 1237, 1240, 1243,
- 1246, 1249, 1252, 1255, 1258, 1261, 1264, 1267,
- 1270, 1273, 1276, 1279, 1282, 1285, 1288, 1291,
- 1294, 1297, 1300, 1303, 1306, 1309, 1312, 1315,
- 1318, 1321, 1324, 1327, 1330, 1333, 1336, 1339,
- 1342, 1345, 1348, 1351, 1354, 1357, 1360, 1363,
- 1366, 1369, 1372, 1375, 1378, 1381, 1384, 1387,
- 1391, 1394, 1397, 1400, 1403, 1406, 1409, 1412,
- 1415, 1418, 1421, 1423, 1425, 1427, 1429, 1431,
- 1433, 1435, 1437, 1441, 1443, 1445, 1447, 1449,
- 1451, 1453, 1455, 1457, 1459, 1461, 1463, 1465,
- 1467, 1469, 1471, 1473, 1475, 1477, 1479, 1481,
- 1483, 1485, 1487, 1494, 1497, 1500, 1503, 1506,
- 1509, 1512, 1515, 1518, 1521, 1524, 1527, 1531,
- 1537, 1541, 1544, 1550, 1568, 1571, 1574, 1577,
- 1580, 1583, 1586, 1589, 1592, 1595, 1598, 1601,
- 1604, 1607, 1610, 1613, 1616, 1619, 1622, 1625,
- 1628, 1631, 1634, 1637, 1640, 1643, 1646, 1649,
- 1652, 1655, 1658, 1661, 1664, 1667, 1670, 1673,
- 1676, 1679, 1682, 1685, 1688, 1691, 1694, 1697,
- 1700, 1703, 1706, 1709, 1712, 1715, 1718, 1721,
- 1724, 1727, 1730, 1733, 1736, 1739, 1742, 1745,
- 1748, 1751, 1754, 1757, 1760, 1763, 1766, 1769,
- 1772, 1775, 1778, 1781, 1784, 1787, 1790, 1793,
- 1796, 1799, 1802, 1805, 1808, 1811, 1814, 1817,
- 1820, 1823, 1826, 1829, 1832, 1835, 1838, 1841,
- 1844, 1847, 1850, 1853, 1856, 1859, 1862, 1865,
- 1868, 1871, 1874, 1877, 1880, 1883, 1886, 1889,
- 1892, 1895, 1899, 1902, 1905, 1908, 1911, 1914,
- 1917, 1920, 1923, 1926, 1929
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 71, 104, 243, 264, 350, 482, 490,
- 526, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 71,
- 104, 243, 264, 350, 482, 490, 526, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 652, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 0, 39, 0, 40, 0, 41,
- 0, 42, 0, 43, 0, 44, 0, 45,
- 0, 46, 0, 47, 0, 48, 0, 49,
- 0, 50, 0, 51, 0, 52, 0, 54,
- 53, 54, 53, 54, 54, 4, 55, 69,
- 4, 532, 547, 580, 588, 609, 619, 633,
- 641, 54, 53, 54, 56, 53, 54, 57,
- 53, 54, 58, 53, 54, 59, 53, 54,
- 60, 53, 54, 61, 53, 54, 62, 53,
- 54, 63, 53, 54, 64, 53, 54, 65,
- 53, 54, 66, 53, 54, 67, 53, 54,
- 68, 53, 54, 4, 53, 54, 70, 53,
- 4, 4, 5, 15, 17, 31, 34, 37,
- 71, 104, 243, 264, 350, 482, 490, 526,
- 4, 0, 72, 0, 73, 0, 74, 0,
- 75, 0, 76, 0, 77, 0, 78, 0,
- 79, 0, 80, 0, 81, 0, 82, 0,
- 83, 0, 84, 0, 85, 0, 86, 0,
- 87, 0, 88, 0, 89, 0, 90, 0,
- 91, 0, 92, 0, 93, 0, 94, 0,
- 95, 0, 96, 0, 97, 0, 98, 0,
- 99, 0, 100, 0, 101, 0, 102, 0,
- 103, 0, 31, 0, 105, 0, 106, 0,
- 107, 0, 108, 0, 109, 0, 110, 0,
- 111, 0, 112, 0, 113, 0, 115, 114,
- 115, 114, 115, 115, 4, 116, 130, 4,
- 131, 146, 179, 200, 210, 224, 232, 115,
- 114, 115, 117, 114, 115, 118, 114, 115,
- 119, 114, 115, 120, 114, 115, 121, 114,
- 115, 122, 114, 115, 123, 114, 115, 124,
- 114, 115, 125, 114, 115, 126, 114, 115,
- 127, 114, 115, 128, 114, 115, 129, 114,
- 115, 4, 114, 115, 70, 114, 115, 132,
- 114, 115, 133, 114, 115, 134, 114, 115,
- 135, 114, 115, 136, 114, 115, 137, 114,
- 115, 138, 114, 115, 139, 114, 115, 140,
- 114, 115, 141, 114, 115, 142, 114, 115,
- 143, 114, 115, 144, 114, 115, 145, 114,
- 115, 70, 114, 115, 147, 114, 115, 148,
- 114, 115, 149, 114, 115, 150, 114, 115,
- 151, 114, 115, 152, 114, 115, 153, 114,
- 115, 154, 114, 115, 155, 114, 115, 156,
- 114, 115, 157, 114, 115, 158, 114, 115,
- 159, 114, 115, 160, 114, 115, 161, 114,
- 115, 162, 114, 115, 163, 114, 115, 164,
- 114, 115, 165, 114, 115, 166, 114, 115,
- 167, 114, 115, 168, 114, 115, 169, 114,
- 115, 170, 114, 115, 171, 114, 115, 172,
- 114, 115, 173, 114, 115, 174, 114, 115,
- 175, 114, 115, 176, 114, 115, 177, 114,
- 115, 178, 114, 115, 130, 114, 115, 180,
- 114, 115, 181, 114, 115, 182, 114, 115,
- 183, 114, 115, 184, 114, 115, 185, 114,
- 115, 186, 114, 115, 187, 114, 115, 188,
- 114, 115, 189, 114, 115, 190, 114, 115,
- 191, 114, 115, 192, 114, 115, 193, 114,
- 115, 194, 114, 115, 195, 114, 115, 196,
- 114, 115, 197, 114, 115, 198, 114, 115,
- 199, 114, 115, 130, 114, 115, 201, 114,
- 115, 202, 114, 115, 203, 114, 115, 204,
- 114, 115, 205, 114, 115, 206, 114, 115,
- 207, 114, 115, 208, 114, 115, 209, 114,
- 115, 145, 114, 115, 211, 114, 115, 212,
- 114, 115, 213, 114, 115, 214, 114, 115,
- 215, 114, 115, 216, 114, 115, 217, 114,
- 115, 218, 114, 115, 219, 114, 115, 220,
- 114, 115, 221, 114, 115, 222, 114, 115,
- 223, 114, 115, 144, 114, 115, 225, 114,
- 115, 226, 114, 115, 227, 114, 115, 228,
- 114, 115, 229, 114, 115, 230, 114, 115,
- 231, 114, 115, 130, 114, 115, 233, 237,
- 114, 115, 234, 114, 115, 235, 114, 115,
- 236, 114, 115, 130, 114, 115, 238, 114,
- 115, 239, 114, 115, 240, 114, 115, 241,
- 114, 115, 242, 114, 115, 130, 114, 244,
- 0, 245, 0, 246, 0, 247, 0, 248,
- 0, 249, 0, 250, 0, 251, 0, 252,
- 0, 253, 0, 254, 0, 255, 0, 256,
- 0, 257, 0, 258, 0, 259, 0, 260,
- 0, 261, 0, 262, 0, 263, 0, 31,
- 0, 265, 0, 266, 0, 267, 0, 268,
- 0, 269, 0, 270, 0, 271, 0, 272,
- 0, 273, 0, 274, 0, 275, 0, 277,
- 276, 277, 276, 277, 277, 4, 278, 4,
- 292, 307, 315, 325, 339, 277, 276, 277,
- 279, 276, 277, 280, 276, 277, 281, 276,
- 277, 282, 276, 277, 283, 276, 277, 284,
- 276, 277, 285, 276, 277, 286, 276, 277,
- 287, 276, 277, 288, 276, 277, 289, 276,
- 277, 290, 276, 277, 291, 276, 277, 4,
- 276, 277, 293, 276, 277, 294, 276, 277,
- 295, 276, 277, 296, 276, 277, 297, 276,
- 277, 298, 276, 277, 299, 276, 277, 300,
- 276, 277, 301, 276, 277, 302, 276, 277,
- 303, 276, 277, 304, 276, 277, 305, 276,
- 277, 306, 276, 277, 70, 276, 277, 308,
- 276, 277, 309, 276, 277, 310, 276, 277,
- 311, 276, 277, 312, 276, 277, 313, 276,
- 277, 314, 276, 277, 306, 276, 277, 316,
- 276, 277, 317, 276, 277, 318, 276, 277,
- 319, 276, 277, 320, 276, 277, 321, 276,
- 277, 322, 276, 277, 323, 276, 277, 324,
- 276, 277, 306, 276, 277, 326, 276, 277,
- 327, 276, 277, 328, 276, 277, 329, 276,
- 277, 330, 276, 277, 331, 276, 277, 332,
- 276, 277, 333, 276, 277, 334, 276, 277,
- 335, 276, 277, 336, 276, 277, 337, 276,
- 277, 338, 276, 277, 305, 276, 277, 340,
- 276, 277, 341, 276, 277, 342, 276, 277,
- 343, 276, 277, 344, 276, 277, 345, 276,
- 277, 346, 276, 277, 347, 276, 277, 348,
- 276, 277, 349, 276, 277, 306, 276, 351,
- 0, 352, 0, 353, 0, 354, 0, 355,
- 0, 356, 0, 357, 0, 358, 0, 359,
- 0, 360, 0, 361, 0, 362, 0, 363,
- 0, 364, 0, 365, 0, 366, 0, 368,
- 367, 368, 367, 368, 368, 4, 369, 383,
- 4, 384, 399, 432, 453, 463, 471, 368,
- 367, 368, 370, 367, 368, 371, 367, 368,
- 372, 367, 368, 373, 367, 368, 374, 367,
- 368, 375, 367, 368, 376, 367, 368, 377,
- 367, 368, 378, 367, 368, 379, 367, 368,
- 380, 367, 368, 381, 367, 368, 382, 367,
- 368, 4, 367, 368, 70, 367, 368, 385,
- 367, 368, 386, 367, 368, 387, 367, 368,
- 388, 367, 368, 389, 367, 368, 390, 367,
- 368, 391, 367, 368, 392, 367, 368, 393,
- 367, 368, 394, 367, 368, 395, 367, 368,
- 396, 367, 368, 397, 367, 368, 398, 367,
- 368, 70, 367, 368, 400, 367, 368, 401,
- 367, 368, 402, 367, 368, 403, 367, 368,
- 404, 367, 368, 405, 367, 368, 406, 367,
- 368, 407, 367, 368, 408, 367, 368, 409,
- 367, 368, 410, 367, 368, 411, 367, 368,
- 412, 367, 368, 413, 367, 368, 414, 367,
- 368, 415, 367, 368, 416, 367, 368, 417,
- 367, 368, 418, 367, 368, 419, 367, 368,
- 420, 367, 368, 421, 367, 368, 422, 367,
- 368, 423, 367, 368, 424, 367, 368, 425,
- 367, 368, 426, 367, 368, 427, 367, 368,
- 428, 367, 368, 429, 367, 368, 430, 367,
- 368, 431, 367, 368, 383, 367, 368, 433,
- 367, 368, 434, 367, 368, 435, 367, 368,
- 436, 367, 368, 437, 367, 368, 438, 367,
- 368, 439, 367, 368, 440, 367, 368, 441,
- 367, 368, 442, 367, 368, 443, 367, 368,
- 444, 367, 368, 445, 367, 368, 446, 367,
- 368, 447, 367, 368, 448, 367, 368, 449,
- 367, 368, 450, 367, 368, 451, 367, 368,
- 452, 367, 368, 383, 367, 368, 454, 367,
- 368, 455, 367, 368, 456, 367, 368, 457,
- 367, 368, 458, 367, 368, 459, 367, 368,
- 460, 367, 368, 461, 367, 368, 462, 367,
- 368, 398, 367, 368, 464, 367, 368, 465,
- 367, 368, 466, 367, 368, 467, 367, 368,
- 468, 367, 368, 469, 367, 368, 470, 367,
- 368, 383, 367, 368, 472, 476, 367, 368,
- 473, 367, 368, 474, 367, 368, 475, 367,
- 368, 383, 367, 368, 477, 367, 368, 478,
- 367, 368, 479, 367, 368, 480, 367, 368,
- 481, 367, 368, 383, 367, 483, 0, 484,
- 0, 485, 0, 486, 0, 487, 0, 488,
- 0, 489, 0, 31, 0, 491, 495, 501,
- 0, 492, 0, 493, 0, 494, 0, 31,
- 0, 496, 0, 497, 0, 498, 0, 499,
- 0, 500, 0, 31, 0, 502, 0, 503,
- 0, 504, 0, 505, 0, 506, 0, 507,
- 0, 508, 0, 509, 0, 510, 0, 511,
- 0, 512, 0, 514, 513, 514, 513, 514,
- 514, 4, 515, 4, 514, 513, 514, 516,
- 513, 514, 517, 513, 514, 518, 513, 514,
- 519, 513, 514, 520, 513, 514, 521, 513,
- 514, 522, 513, 514, 523, 513, 514, 524,
- 513, 514, 525, 513, 514, 70, 513, 526,
- 527, 526, 0, 531, 530, 529, 527, 530,
- 528, 0, 529, 527, 528, 0, 529, 528,
- 531, 530, 529, 527, 530, 528, 531, 531,
- 5, 15, 17, 31, 34, 37, 71, 104,
- 243, 264, 350, 482, 490, 526, 531, 0,
- 54, 533, 53, 54, 534, 53, 54, 535,
- 53, 54, 536, 53, 54, 537, 53, 54,
- 538, 53, 54, 539, 53, 54, 540, 53,
- 54, 541, 53, 54, 542, 53, 54, 543,
- 53, 54, 544, 53, 54, 545, 53, 54,
- 546, 53, 54, 70, 53, 54, 548, 53,
- 54, 549, 53, 54, 550, 53, 54, 551,
- 53, 54, 552, 53, 54, 553, 53, 54,
- 554, 53, 54, 555, 53, 54, 556, 53,
- 54, 557, 53, 54, 558, 53, 54, 559,
- 53, 54, 560, 53, 54, 561, 53, 54,
- 562, 53, 54, 563, 53, 54, 564, 53,
- 54, 565, 53, 54, 566, 53, 54, 567,
- 53, 54, 568, 53, 54, 569, 53, 54,
- 570, 53, 54, 571, 53, 54, 572, 53,
- 54, 573, 53, 54, 574, 53, 54, 575,
- 53, 54, 576, 53, 54, 577, 53, 54,
- 578, 53, 54, 579, 53, 54, 69, 53,
- 54, 581, 53, 54, 582, 53, 54, 583,
- 53, 54, 584, 53, 54, 585, 53, 54,
- 586, 53, 54, 587, 53, 54, 546, 53,
- 54, 589, 53, 54, 590, 53, 54, 591,
- 53, 54, 592, 53, 54, 593, 53, 54,
- 594, 53, 54, 595, 53, 54, 596, 53,
- 54, 597, 53, 54, 598, 53, 54, 599,
- 53, 54, 600, 53, 54, 601, 53, 54,
- 602, 53, 54, 603, 53, 54, 604, 53,
- 54, 605, 53, 54, 606, 53, 54, 607,
- 53, 54, 608, 53, 54, 69, 53, 54,
- 610, 53, 54, 611, 53, 54, 612, 53,
- 54, 613, 53, 54, 614, 53, 54, 615,
- 53, 54, 616, 53, 54, 617, 53, 54,
- 618, 53, 54, 546, 53, 54, 620, 53,
- 54, 621, 53, 54, 622, 53, 54, 623,
- 53, 54, 624, 53, 54, 625, 53, 54,
- 626, 53, 54, 627, 53, 54, 628, 53,
- 54, 629, 53, 54, 630, 53, 54, 631,
- 53, 54, 632, 53, 54, 545, 53, 54,
- 634, 53, 54, 635, 53, 54, 636, 53,
- 54, 637, 53, 54, 638, 53, 54, 639,
- 53, 54, 640, 53, 54, 69, 53, 54,
- 642, 646, 53, 54, 643, 53, 54, 644,
- 53, 54, 645, 53, 54, 69, 53, 54,
- 647, 53, 54, 648, 53, 54, 649, 53,
- 54, 650, 53, 54, 651, 53, 54, 69,
- 53, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 75, 33, 84,
- 75, 84, 84, 84, 84, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 17, 0, 54, 17, 0,
- 130, 31, 60, 57, 31, 63, 57, 63,
- 63, 63, 63, 63, 63, 63, 63, 66,
- 31, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 72, 33, 84, 72,
- 84, 84, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 54, 15, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 69, 33, 69,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 13,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 13, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 78, 33, 84,
- 78, 84, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 19, 0, 54, 19, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 19, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 81, 84, 81, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 21, 0, 0,
- 0, 0, 43, 54, 37, 37, 87, 37,
- 37, 43, 0, 39, 0, 43, 0, 0,
- 54, 0, 0, 39, 0, 0, 54, 0,
- 93, 90, 41, 96, 90, 96, 96, 96,
- 96, 96, 96, 96, 96, 99, 0, 43,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 17, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 652;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/en_au.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 1369 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/en_au.c.rl"
-
-#line 1376 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/en_au.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/en_au.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/en_au.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/en_au.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/en_au.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/en_au.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/en_au.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/en_au.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/en_au.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/en_au.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/en_au.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/en_au.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/en_au.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/en_au.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/en_au.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/en_au.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/en_au.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/en_au.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/en_au.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/en_au.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/en_au.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/en_au.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/en_au.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/en_au.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1666 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/en_au.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1729 "ext/gherkin_lexer_en_au/gherkin_lexer_en_au.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/en_au.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_en_au()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "En_au", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_en_lol/extconf.rb
index b123660,b123660..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_en_lol/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_en_lol")
--have_library("c", "main")
--create_makefile("gherkin_lexer_en_lol")
diff --cc ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c
index 9ec980d,4c74595..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c
+++ /dev/null
@@@ -1,1177 -1,1177 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 113, 115,
- 116, 117, 118, 133, 135, 137, 139, 141,
- 143, 145, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 181, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 198, 200,
- 202, 204, 206, 208, 210, 211, 212, 213,
- 214, 215, 216, 217, 218, 219, 220, 221,
- 222, 223, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 248, 250, 252, 254, 256,
- 258, 260, 262, 264, 266, 268, 270, 272,
- 274, 276, 278, 280, 282, 284, 286, 288,
- 290, 292, 294, 296, 298, 300, 302, 304,
- 306, 308, 310, 312, 314, 316, 318, 320,
- 322, 324, 325, 326, 341, 343, 345, 347,
- 349, 351, 353, 355, 357, 359, 361, 363,
- 365, 367, 369, 371, 373, 376, 378, 380,
- 382, 384, 386, 388, 390, 392, 394, 396,
- 398, 400, 402, 404, 406, 408, 411, 413,
- 415, 417, 419, 421, 423, 425, 427, 429,
- 431, 432, 433, 434, 435, 436, 437, 438,
- 439, 450, 452, 454, 456, 458, 460, 462,
- 464, 466, 468, 470, 472, 474, 476, 478,
- 480, 482, 484, 486, 488, 490, 492, 494,
- 496, 498, 500, 502, 504, 507, 509, 511,
- 513, 515, 517, 519, 521, 523, 525, 527,
- 531, 537, 540, 542, 548, 566, 568, 570,
- 572, 574, 576, 578, 580, 582, 584, 586,
- 588, 590, 592, 594, 596, 598, 600, 603,
- 605, 607, 609, 611, 613, 615, 617, 619,
- 621, 623, 625, 626
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 68, 69, 73, 77, 79, 87,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 65, 66, 68, 69,
- 73, 77, 79, 87, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 78, 52, 85, 58, 10, 10, 10, 32,
- 35, 37, 42, 64, 65, 66, 68, 73,
- 77, 79, 87, 9, 13, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 32, 10, 32, 34, 35, 37,
- 42, 64, 65, 66, 68, 69, 73, 77,
- 79, 87, 124, 9, 13, 69, 88, 65,
- 77, 80, 76, 90, 58, 10, 10, 10,
- 32, 35, 79, 124, 9, 13, 10, 72,
- 10, 32, 10, 72, 10, 65, 10, 73,
- 10, 58, 32, 67, 65, 78, 32, 72,
- 65, 90, 73, 83, 72, 85, 78, 32,
- 58, 83, 82, 83, 76, 89, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 65,
- 66, 68, 73, 77, 79, 87, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 78,
- 10, 85, 10, 84, 10, 69, 10, 32,
- 10, 67, 10, 65, 10, 78, 10, 32,
- 10, 72, 10, 65, 10, 90, 10, 73,
- 10, 83, 10, 72, 10, 85, 10, 78,
- 10, 58, 10, 72, 10, 32, 10, 72,
- 10, 65, 10, 73, 10, 10, 10, 32,
- 35, 37, 42, 64, 65, 66, 68, 73,
- 77, 79, 87, 9, 13, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 32, 10, 78, 10, 52, 85,
- 10, 58, 10, 84, 10, 69, 10, 32,
- 10, 67, 10, 65, 10, 78, 10, 32,
- 10, 72, 10, 65, 10, 90, 10, 73,
- 10, 83, 10, 72, 10, 85, 10, 78,
- 10, 32, 58, 10, 83, 10, 82, 10,
- 83, 10, 76, 10, 89, 10, 72, 10,
- 32, 10, 72, 10, 65, 10, 73, 72,
- 32, 72, 65, 73, 58, 10, 10, 10,
- 32, 35, 37, 64, 66, 69, 77, 79,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 52,
- 10, 58, 10, 88, 10, 65, 10, 77,
- 10, 80, 10, 76, 10, 90, 10, 73,
- 10, 83, 10, 72, 10, 85, 10, 78,
- 10, 32, 58, 10, 83, 10, 82, 10,
- 83, 10, 76, 10, 89, 10, 72, 10,
- 32, 10, 72, 10, 65, 10, 73, 32,
- 124, 9, 13, 10, 32, 92, 124, 9,
- 13, 10, 92, 124, 10, 92, 10, 32,
- 92, 124, 9, 13, 10, 32, 34, 35,
- 37, 42, 64, 65, 66, 68, 69, 73,
- 77, 79, 87, 124, 9, 13, 10, 78,
- 10, 85, 10, 84, 10, 69, 10, 32,
- 10, 67, 10, 65, 10, 78, 10, 32,
- 10, 72, 10, 65, 10, 90, 10, 73,
- 10, 83, 10, 72, 10, 85, 10, 78,
- 10, 32, 58, 10, 83, 10, 82, 10,
- 83, 10, 76, 10, 89, 10, 58, 10,
- 72, 10, 32, 10, 72, 10, 65, 10,
- 73, 84, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 2, 1,
- 1, 1, 13, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 16, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 5, 2, 2,
- 2, 2, 2, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 13, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 13, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 9, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 4, 3, 2, 4, 16, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 1, 0, 0, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 139, 142,
- 144, 146, 148, 163, 166, 169, 172, 175,
- 178, 181, 184, 187, 190, 193, 196, 199,
- 202, 205, 208, 226, 228, 230, 232, 234,
- 236, 238, 240, 242, 244, 246, 253, 256,
- 259, 262, 265, 268, 271, 273, 275, 277,
- 279, 281, 283, 285, 287, 289, 291, 293,
- 295, 297, 300, 302, 304, 306, 308, 310,
- 312, 314, 316, 331, 334, 337, 340, 343,
- 346, 349, 352, 355, 358, 361, 364, 367,
- 370, 373, 376, 379, 382, 385, 388, 391,
- 394, 397, 400, 403, 406, 409, 412, 415,
- 418, 421, 424, 427, 430, 433, 436, 439,
- 442, 445, 447, 449, 464, 467, 470, 473,
- 476, 479, 482, 485, 488, 491, 494, 497,
- 500, 503, 506, 509, 512, 516, 519, 522,
- 525, 528, 531, 534, 537, 540, 543, 546,
- 549, 552, 555, 558, 561, 564, 568, 571,
- 574, 577, 580, 583, 586, 589, 592, 595,
- 598, 600, 602, 604, 606, 608, 610, 612,
- 614, 625, 628, 631, 634, 637, 640, 643,
- 646, 649, 652, 655, 658, 661, 664, 667,
- 670, 673, 676, 679, 682, 685, 688, 691,
- 694, 697, 700, 703, 706, 710, 713, 716,
- 719, 722, 725, 728, 731, 734, 737, 740,
- 744, 750, 754, 757, 763, 781, 784, 787,
- 790, 793, 796, 799, 802, 805, 808, 811,
- 814, 817, 820, 823, 826, 829, 832, 836,
- 839, 842, 845, 848, 851, 854, 857, 860,
- 863, 866, 869, 871
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 38, 59, 60, 76, 84, 184, 59,
- 231, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 38,
- 59, 60, 76, 84, 184, 59, 231, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 267, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 31, 0, 39, 266, 0, 40, 0,
- 42, 41, 42, 41, 42, 42, 4, 43,
- 57, 4, 237, 238, 240, 241, 249, 261,
- 240, 42, 41, 42, 44, 41, 42, 45,
- 41, 42, 46, 41, 42, 47, 41, 42,
- 48, 41, 42, 49, 41, 42, 50, 41,
- 42, 51, 41, 42, 52, 41, 42, 53,
- 41, 42, 54, 41, 42, 55, 41, 42,
- 56, 41, 42, 4, 41, 42, 58, 41,
- 4, 4, 5, 15, 17, 31, 34, 37,
- 38, 59, 60, 76, 84, 184, 59, 231,
- 4, 0, 37, 0, 61, 0, 62, 0,
- 63, 0, 64, 0, 65, 0, 66, 0,
- 67, 0, 69, 68, 69, 68, 69, 69,
- 4, 70, 4, 69, 68, 69, 71, 68,
- 69, 72, 68, 69, 73, 68, 69, 74,
- 68, 69, 75, 68, 69, 58, 68, 77,
- 0, 78, 0, 79, 0, 80, 0, 81,
- 0, 82, 0, 83, 0, 31, 0, 85,
- 0, 86, 0, 87, 0, 88, 0, 89,
- 0, 90, 137, 0, 91, 0, 92, 0,
- 93, 0, 94, 0, 95, 0, 96, 0,
- 98, 97, 98, 97, 98, 98, 4, 99,
- 113, 4, 114, 115, 117, 118, 126, 132,
- 117, 98, 97, 98, 100, 97, 98, 101,
- 97, 98, 102, 97, 98, 103, 97, 98,
- 104, 97, 98, 105, 97, 98, 106, 97,
- 98, 107, 97, 98, 108, 97, 98, 109,
- 97, 98, 110, 97, 98, 111, 97, 98,
- 112, 97, 98, 4, 97, 98, 58, 97,
- 98, 113, 97, 98, 116, 97, 98, 113,
- 97, 98, 114, 97, 98, 119, 97, 98,
- 120, 97, 98, 121, 97, 98, 122, 97,
- 98, 123, 97, 98, 124, 97, 98, 125,
- 97, 98, 113, 97, 98, 127, 97, 98,
- 128, 97, 98, 129, 97, 98, 130, 97,
- 98, 131, 97, 98, 58, 97, 98, 133,
- 97, 98, 134, 97, 98, 135, 97, 98,
- 136, 97, 98, 131, 97, 139, 138, 139,
- 138, 139, 139, 4, 140, 154, 4, 155,
- 156, 159, 160, 168, 179, 159, 139, 138,
- 139, 141, 138, 139, 142, 138, 139, 143,
- 138, 139, 144, 138, 139, 145, 138, 139,
- 146, 138, 139, 147, 138, 139, 148, 138,
- 139, 149, 138, 139, 150, 138, 139, 151,
- 138, 139, 152, 138, 139, 153, 138, 139,
- 4, 138, 139, 58, 138, 139, 154, 138,
- 139, 157, 158, 138, 139, 58, 138, 139,
- 154, 138, 139, 155, 138, 139, 161, 138,
- 139, 162, 138, 139, 163, 138, 139, 164,
- 138, 139, 165, 138, 139, 166, 138, 139,
- 167, 138, 139, 154, 138, 139, 169, 138,
- 139, 170, 138, 139, 171, 138, 139, 172,
- 138, 139, 173, 138, 139, 174, 58, 138,
- 139, 175, 138, 139, 176, 138, 139, 177,
- 138, 139, 178, 138, 139, 157, 138, 139,
- 180, 138, 139, 181, 138, 139, 182, 138,
- 139, 183, 138, 139, 157, 138, 185, 0,
- 186, 0, 187, 0, 188, 0, 189, 0,
- 190, 0, 192, 191, 192, 191, 192, 192,
- 4, 193, 4, 207, 209, 215, 226, 192,
- 191, 192, 194, 191, 192, 195, 191, 192,
- 196, 191, 192, 197, 191, 192, 198, 191,
- 192, 199, 191, 192, 200, 191, 192, 201,
- 191, 192, 202, 191, 192, 203, 191, 192,
- 204, 191, 192, 205, 191, 192, 206, 191,
- 192, 4, 191, 192, 208, 191, 192, 58,
- 191, 192, 210, 191, 192, 211, 191, 192,
- 212, 191, 192, 213, 191, 192, 214, 191,
- 192, 208, 191, 192, 216, 191, 192, 217,
- 191, 192, 218, 191, 192, 219, 191, 192,
- 220, 191, 192, 221, 58, 191, 192, 222,
- 191, 192, 223, 191, 192, 224, 191, 192,
- 225, 191, 192, 208, 191, 192, 227, 191,
- 192, 228, 191, 192, 229, 191, 192, 230,
- 191, 192, 208, 191, 231, 232, 231, 0,
- 236, 235, 234, 232, 235, 233, 0, 234,
- 232, 233, 0, 234, 233, 236, 235, 234,
- 232, 235, 233, 236, 236, 5, 15, 17,
- 31, 34, 37, 38, 59, 60, 76, 84,
- 184, 59, 231, 236, 0, 42, 57, 41,
- 42, 239, 41, 42, 57, 41, 42, 237,
- 41, 42, 242, 41, 42, 243, 41, 42,
- 244, 41, 42, 245, 41, 42, 246, 41,
- 42, 247, 41, 42, 248, 41, 42, 57,
- 41, 42, 250, 41, 42, 251, 41, 42,
- 252, 41, 42, 253, 41, 42, 254, 41,
- 42, 255, 58, 41, 42, 256, 41, 42,
- 257, 41, 42, 258, 41, 42, 259, 41,
- 42, 260, 41, 42, 58, 41, 42, 262,
- 41, 42, 263, 41, 42, 264, 41, 42,
- 265, 41, 42, 260, 41, 31, 0, 0,
- 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 43, 0, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 72, 33,
- 84, 72, 84, 84, 84, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 15, 0, 54, 15, 0,
- 130, 31, 60, 57, 31, 63, 57, 63,
- 63, 63, 63, 63, 63, 63, 63, 66,
- 31, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 81, 84, 81, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 21, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 78, 33,
- 84, 78, 84, 84, 84, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 19, 0, 54, 19, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 19, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 144, 57, 54,
- 0, 54, 0, 75, 33, 84, 75, 84,
- 84, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 17, 0, 54, 17, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 17, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 17, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 69, 33, 69, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 54, 0, 0, 54, 13,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 13, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0, 0, 43,
- 54, 37, 37, 87, 37, 37, 43, 0,
- 39, 0, 43, 0, 0, 54, 0, 0,
- 39, 0, 0, 54, 0, 93, 90, 41,
- 96, 90, 96, 96, 96, 96, 96, 96,
- 96, 96, 99, 0, 43, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 15, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 15, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 43, 0,
- 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 267;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 781 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
-
- #line 788 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1078 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1141 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_lol.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_en_lol()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "En_lol", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/en_lol.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/en_lol.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 113, 115,
- 116, 117, 118, 133, 135, 137, 139, 141,
- 143, 145, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 181, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 198, 200,
- 202, 204, 206, 208, 210, 211, 212, 213,
- 214, 215, 216, 217, 218, 219, 220, 221,
- 222, 223, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 248, 250, 252, 254, 256,
- 258, 260, 262, 264, 266, 268, 270, 272,
- 274, 276, 278, 280, 282, 284, 286, 288,
- 290, 292, 294, 296, 298, 300, 302, 304,
- 306, 308, 310, 312, 314, 316, 318, 320,
- 322, 324, 325, 326, 341, 343, 345, 347,
- 349, 351, 353, 355, 357, 359, 361, 363,
- 365, 367, 369, 371, 373, 376, 378, 380,
- 382, 384, 386, 388, 390, 392, 394, 396,
- 398, 400, 402, 404, 406, 408, 411, 413,
- 415, 417, 419, 421, 423, 425, 427, 429,
- 431, 432, 433, 434, 435, 436, 437, 438,
- 439, 450, 452, 454, 456, 458, 460, 462,
- 464, 466, 468, 470, 472, 474, 476, 478,
- 480, 482, 484, 486, 488, 490, 492, 494,
- 496, 498, 500, 502, 504, 507, 509, 511,
- 513, 515, 517, 519, 521, 523, 525, 527,
- 531, 537, 540, 542, 548, 566, 568, 570,
- 572, 574, 576, 578, 580, 582, 584, 586,
- 588, 590, 592, 594, 596, 598, 600, 603,
- 605, 607, 609, 611, 613, 615, 617, 619,
- 621, 623, 625, 626
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 68, 69, 73, 77, 79, 87,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 65, 66, 68, 69,
- 73, 77, 79, 87, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 78, 52, 85, 58, 10, 10, 10, 32,
- 35, 37, 42, 64, 65, 66, 68, 73,
- 77, 79, 87, 9, 13, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 32, 10, 32, 34, 35, 37,
- 42, 64, 65, 66, 68, 69, 73, 77,
- 79, 87, 124, 9, 13, 69, 88, 65,
- 77, 80, 76, 90, 58, 10, 10, 10,
- 32, 35, 79, 124, 9, 13, 10, 72,
- 10, 32, 10, 72, 10, 65, 10, 73,
- 10, 58, 32, 67, 65, 78, 32, 72,
- 65, 90, 73, 83, 72, 85, 78, 32,
- 58, 83, 82, 83, 76, 89, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 65,
- 66, 68, 73, 77, 79, 87, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 78,
- 10, 85, 10, 84, 10, 69, 10, 32,
- 10, 67, 10, 65, 10, 78, 10, 32,
- 10, 72, 10, 65, 10, 90, 10, 73,
- 10, 83, 10, 72, 10, 85, 10, 78,
- 10, 58, 10, 72, 10, 32, 10, 72,
- 10, 65, 10, 73, 10, 10, 10, 32,
- 35, 37, 42, 64, 65, 66, 68, 73,
- 77, 79, 87, 9, 13, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 32, 10, 78, 10, 52, 85,
- 10, 58, 10, 84, 10, 69, 10, 32,
- 10, 67, 10, 65, 10, 78, 10, 32,
- 10, 72, 10, 65, 10, 90, 10, 73,
- 10, 83, 10, 72, 10, 85, 10, 78,
- 10, 32, 58, 10, 83, 10, 82, 10,
- 83, 10, 76, 10, 89, 10, 72, 10,
- 32, 10, 72, 10, 65, 10, 73, 72,
- 32, 72, 65, 73, 58, 10, 10, 10,
- 32, 35, 37, 64, 66, 69, 77, 79,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 52,
- 10, 58, 10, 88, 10, 65, 10, 77,
- 10, 80, 10, 76, 10, 90, 10, 73,
- 10, 83, 10, 72, 10, 85, 10, 78,
- 10, 32, 58, 10, 83, 10, 82, 10,
- 83, 10, 76, 10, 89, 10, 72, 10,
- 32, 10, 72, 10, 65, 10, 73, 32,
- 124, 9, 13, 10, 32, 92, 124, 9,
- 13, 10, 92, 124, 10, 92, 10, 32,
- 92, 124, 9, 13, 10, 32, 34, 35,
- 37, 42, 64, 65, 66, 68, 69, 73,
- 77, 79, 87, 124, 9, 13, 10, 78,
- 10, 85, 10, 84, 10, 69, 10, 32,
- 10, 67, 10, 65, 10, 78, 10, 32,
- 10, 72, 10, 65, 10, 90, 10, 73,
- 10, 83, 10, 72, 10, 85, 10, 78,
- 10, 32, 58, 10, 83, 10, 82, 10,
- 83, 10, 76, 10, 89, 10, 58, 10,
- 72, 10, 32, 10, 72, 10, 65, 10,
- 73, 84, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 2, 1,
- 1, 1, 13, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 16, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 5, 2, 2,
- 2, 2, 2, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 13, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 13, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 9, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 4, 3, 2, 4, 16, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 1, 0, 0, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 139, 142,
- 144, 146, 148, 163, 166, 169, 172, 175,
- 178, 181, 184, 187, 190, 193, 196, 199,
- 202, 205, 208, 226, 228, 230, 232, 234,
- 236, 238, 240, 242, 244, 246, 253, 256,
- 259, 262, 265, 268, 271, 273, 275, 277,
- 279, 281, 283, 285, 287, 289, 291, 293,
- 295, 297, 300, 302, 304, 306, 308, 310,
- 312, 314, 316, 331, 334, 337, 340, 343,
- 346, 349, 352, 355, 358, 361, 364, 367,
- 370, 373, 376, 379, 382, 385, 388, 391,
- 394, 397, 400, 403, 406, 409, 412, 415,
- 418, 421, 424, 427, 430, 433, 436, 439,
- 442, 445, 447, 449, 464, 467, 470, 473,
- 476, 479, 482, 485, 488, 491, 494, 497,
- 500, 503, 506, 509, 512, 516, 519, 522,
- 525, 528, 531, 534, 537, 540, 543, 546,
- 549, 552, 555, 558, 561, 564, 568, 571,
- 574, 577, 580, 583, 586, 589, 592, 595,
- 598, 600, 602, 604, 606, 608, 610, 612,
- 614, 625, 628, 631, 634, 637, 640, 643,
- 646, 649, 652, 655, 658, 661, 664, 667,
- 670, 673, 676, 679, 682, 685, 688, 691,
- 694, 697, 700, 703, 706, 710, 713, 716,
- 719, 722, 725, 728, 731, 734, 737, 740,
- 744, 750, 754, 757, 763, 781, 784, 787,
- 790, 793, 796, 799, 802, 805, 808, 811,
- 814, 817, 820, 823, 826, 829, 832, 836,
- 839, 842, 845, 848, 851, 854, 857, 860,
- 863, 866, 869, 871
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 38, 59, 60, 76, 84, 184, 59,
- 231, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 38,
- 59, 60, 76, 84, 184, 59, 231, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 267, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 31, 0, 39, 266, 0, 40, 0,
- 42, 41, 42, 41, 42, 42, 4, 43,
- 57, 4, 237, 238, 240, 241, 249, 261,
- 240, 42, 41, 42, 44, 41, 42, 45,
- 41, 42, 46, 41, 42, 47, 41, 42,
- 48, 41, 42, 49, 41, 42, 50, 41,
- 42, 51, 41, 42, 52, 41, 42, 53,
- 41, 42, 54, 41, 42, 55, 41, 42,
- 56, 41, 42, 4, 41, 42, 58, 41,
- 4, 4, 5, 15, 17, 31, 34, 37,
- 38, 59, 60, 76, 84, 184, 59, 231,
- 4, 0, 37, 0, 61, 0, 62, 0,
- 63, 0, 64, 0, 65, 0, 66, 0,
- 67, 0, 69, 68, 69, 68, 69, 69,
- 4, 70, 4, 69, 68, 69, 71, 68,
- 69, 72, 68, 69, 73, 68, 69, 74,
- 68, 69, 75, 68, 69, 58, 68, 77,
- 0, 78, 0, 79, 0, 80, 0, 81,
- 0, 82, 0, 83, 0, 31, 0, 85,
- 0, 86, 0, 87, 0, 88, 0, 89,
- 0, 90, 137, 0, 91, 0, 92, 0,
- 93, 0, 94, 0, 95, 0, 96, 0,
- 98, 97, 98, 97, 98, 98, 4, 99,
- 113, 4, 114, 115, 117, 118, 126, 132,
- 117, 98, 97, 98, 100, 97, 98, 101,
- 97, 98, 102, 97, 98, 103, 97, 98,
- 104, 97, 98, 105, 97, 98, 106, 97,
- 98, 107, 97, 98, 108, 97, 98, 109,
- 97, 98, 110, 97, 98, 111, 97, 98,
- 112, 97, 98, 4, 97, 98, 58, 97,
- 98, 113, 97, 98, 116, 97, 98, 113,
- 97, 98, 114, 97, 98, 119, 97, 98,
- 120, 97, 98, 121, 97, 98, 122, 97,
- 98, 123, 97, 98, 124, 97, 98, 125,
- 97, 98, 113, 97, 98, 127, 97, 98,
- 128, 97, 98, 129, 97, 98, 130, 97,
- 98, 131, 97, 98, 58, 97, 98, 133,
- 97, 98, 134, 97, 98, 135, 97, 98,
- 136, 97, 98, 131, 97, 139, 138, 139,
- 138, 139, 139, 4, 140, 154, 4, 155,
- 156, 159, 160, 168, 179, 159, 139, 138,
- 139, 141, 138, 139, 142, 138, 139, 143,
- 138, 139, 144, 138, 139, 145, 138, 139,
- 146, 138, 139, 147, 138, 139, 148, 138,
- 139, 149, 138, 139, 150, 138, 139, 151,
- 138, 139, 152, 138, 139, 153, 138, 139,
- 4, 138, 139, 58, 138, 139, 154, 138,
- 139, 157, 158, 138, 139, 58, 138, 139,
- 154, 138, 139, 155, 138, 139, 161, 138,
- 139, 162, 138, 139, 163, 138, 139, 164,
- 138, 139, 165, 138, 139, 166, 138, 139,
- 167, 138, 139, 154, 138, 139, 169, 138,
- 139, 170, 138, 139, 171, 138, 139, 172,
- 138, 139, 173, 138, 139, 174, 58, 138,
- 139, 175, 138, 139, 176, 138, 139, 177,
- 138, 139, 178, 138, 139, 157, 138, 139,
- 180, 138, 139, 181, 138, 139, 182, 138,
- 139, 183, 138, 139, 157, 138, 185, 0,
- 186, 0, 187, 0, 188, 0, 189, 0,
- 190, 0, 192, 191, 192, 191, 192, 192,
- 4, 193, 4, 207, 209, 215, 226, 192,
- 191, 192, 194, 191, 192, 195, 191, 192,
- 196, 191, 192, 197, 191, 192, 198, 191,
- 192, 199, 191, 192, 200, 191, 192, 201,
- 191, 192, 202, 191, 192, 203, 191, 192,
- 204, 191, 192, 205, 191, 192, 206, 191,
- 192, 4, 191, 192, 208, 191, 192, 58,
- 191, 192, 210, 191, 192, 211, 191, 192,
- 212, 191, 192, 213, 191, 192, 214, 191,
- 192, 208, 191, 192, 216, 191, 192, 217,
- 191, 192, 218, 191, 192, 219, 191, 192,
- 220, 191, 192, 221, 58, 191, 192, 222,
- 191, 192, 223, 191, 192, 224, 191, 192,
- 225, 191, 192, 208, 191, 192, 227, 191,
- 192, 228, 191, 192, 229, 191, 192, 230,
- 191, 192, 208, 191, 231, 232, 231, 0,
- 236, 235, 234, 232, 235, 233, 0, 234,
- 232, 233, 0, 234, 233, 236, 235, 234,
- 232, 235, 233, 236, 236, 5, 15, 17,
- 31, 34, 37, 38, 59, 60, 76, 84,
- 184, 59, 231, 236, 0, 42, 57, 41,
- 42, 239, 41, 42, 57, 41, 42, 237,
- 41, 42, 242, 41, 42, 243, 41, 42,
- 244, 41, 42, 245, 41, 42, 246, 41,
- 42, 247, 41, 42, 248, 41, 42, 57,
- 41, 42, 250, 41, 42, 251, 41, 42,
- 252, 41, 42, 253, 41, 42, 254, 41,
- 42, 255, 58, 41, 42, 256, 41, 42,
- 257, 41, 42, 258, 41, 42, 259, 41,
- 42, 260, 41, 42, 58, 41, 42, 262,
- 41, 42, 263, 41, 42, 264, 41, 42,
- 265, 41, 42, 260, 41, 31, 0, 0,
- 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 43, 0, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 72, 33,
- 84, 72, 84, 84, 84, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 15, 0, 54, 15, 0,
- 130, 31, 60, 57, 31, 63, 57, 63,
- 63, 63, 63, 63, 63, 63, 63, 66,
- 31, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 81, 84, 81, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 21, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 78, 33,
- 84, 78, 84, 84, 84, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 19, 0, 54, 19, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 19, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 144, 57, 54,
- 0, 54, 0, 75, 33, 84, 75, 84,
- 84, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 17, 0, 54, 17, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 17, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 17, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 69, 33, 69, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 54, 0, 0, 54, 13,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 13, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0, 0, 43,
- 54, 37, 37, 87, 37, 37, 43, 0,
- 39, 0, 43, 0, 0, 54, 0, 0,
- 39, 0, 0, 54, 0, 93, 90, 41,
- 96, 90, 96, 96, 96, 96, 96, 96,
- 96, 96, 99, 0, 43, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 15, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 15, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 43, 0,
- 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 267;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/en_lol.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 781 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/en_lol.c.rl"
-
-#line 788 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/en_lol.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/en_lol.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/en_lol.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/en_lol.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/en_lol.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/en_lol.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/en_lol.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/en_lol.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/en_lol.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/en_lol.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/en_lol.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/en_lol.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/en_lol.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/en_lol.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/en_lol.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/en_lol.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/en_lol.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/en_lol.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/en_lol.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/en_lol.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/en_lol.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/en_lol.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/en_lol.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/en_lol.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1078 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/en_lol.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1141 "ext/gherkin_lexer_en_lol/gherkin_lexer_en_lol.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/en_lol.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_en_lol()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "En_lol", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_en_pirate/extconf.rb
index 768c72e,768c72e..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_en_pirate/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_en_pirate")
--have_library("c", "main")
--create_makefile("gherkin_lexer_en_pirate")
diff --cc ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c
index 2526a25,49bc1fa..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c
+++ /dev/null
@@@ -1,1471 -1,1471 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 139, 141, 143, 145, 147,
- 149, 151, 153, 155, 157, 159, 161, 163,
- 165, 167, 169, 171, 173, 175, 177, 179,
- 181, 183, 185, 187, 189, 207, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 244, 246, 248, 250,
- 252, 254, 256, 258, 260, 262, 264, 266,
- 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 296,
- 298, 300, 302, 304, 306, 308, 310, 312,
- 314, 316, 318, 320, 322, 324, 326, 330,
- 332, 334, 336, 338, 340, 342, 344, 346,
- 348, 350, 352, 354, 356, 358, 360, 362,
- 364, 366, 368, 370, 372, 374, 376, 378,
- 380, 382, 384, 386, 388, 390, 392, 394,
- 396, 398, 400, 402, 404, 406, 408, 410,
- 412, 414, 416, 418, 420, 422, 424, 426,
- 428, 430, 432, 434, 436, 438, 440, 442,
- 444, 446, 448, 450, 452, 454, 456, 458,
- 460, 462, 464, 466, 467, 468, 469, 470,
- 471, 472, 473, 474, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486,
- 487, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, 498, 499, 512, 514, 516,
- 518, 520, 522, 524, 526, 528, 530, 532,
- 534, 536, 538, 540, 542, 546, 548, 550,
- 552, 554, 556, 558, 560, 562, 564, 566,
- 568, 570, 572, 574, 576, 578, 580, 582,
- 584, 586, 588, 590, 592, 594, 596, 598,
- 600, 602, 604, 606, 608, 610, 612, 614,
- 616, 618, 620, 622, 624, 626, 628, 630,
- 632, 634, 636, 638, 639, 640, 641, 642,
- 643, 644, 645, 646, 647, 648, 662, 664,
- 666, 668, 670, 672, 674, 676, 678, 680,
- 682, 684, 686, 688, 690, 692, 696, 698,
- 700, 702, 704, 706, 708, 710, 712, 714,
- 716, 718, 720, 722, 724, 726, 728, 730,
- 732, 734, 736, 738, 740, 742, 744, 746,
- 748, 750, 752, 754, 756, 758, 760, 762,
- 764, 766, 768, 770, 772, 774, 776, 778,
- 780, 782, 784, 786, 788, 790, 792, 794,
- 796, 798, 800, 802, 804, 806, 808, 810,
- 812, 814, 816, 818, 820, 824, 830, 833,
- 835, 841, 859, 861, 863, 865, 867, 869,
- 871, 873, 875, 877, 879, 881, 883, 885,
- 887, 889, 891, 893, 895, 897, 899, 901,
- 903, 905, 907, 909, 911, 913, 915, 917,
- 919, 921, 923, 925, 927, 929, 931, 933,
- 935, 937, 939, 941, 943, 945, 947, 949,
- 951, 953, 955, 957, 958, 959, 960, 961
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 68, 71, 72, 76, 83, 89,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 65, 66, 68, 71,
- 72, 76, 83, 89, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 104, 118, 121, 111, 121, 32, 109, 97,
- 116, 101, 121, 33, 58, 10, 10, 10,
- 32, 35, 37, 64, 65, 68, 72, 83,
- 89, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 104, 10, 111, 10, 121, 10, 32, 10,
- 109, 10, 97, 10, 116, 10, 101, 10,
- 121, 10, 33, 10, 58, 10, 32, 34,
- 35, 37, 42, 64, 65, 66, 68, 71,
- 72, 76, 83, 89, 124, 9, 13, 108,
- 105, 109, 101, 121, 33, 101, 97, 100,
- 32, 109, 101, 110, 32, 116, 101, 108,
- 108, 32, 110, 111, 32, 116, 97, 108,
- 101, 115, 58, 10, 10, 10, 32, 35,
- 65, 124, 9, 13, 10, 104, 10, 111,
- 10, 121, 10, 32, 10, 109, 10, 97,
- 10, 116, 10, 101, 10, 121, 10, 33,
- 10, 58, 97, 110, 103, 119, 97, 101,
- 97, 118, 101, 32, 116, 111, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 65,
- 66, 71, 72, 76, 83, 89, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 104,
- 118, 121, 10, 111, 10, 121, 10, 32,
- 10, 109, 10, 97, 10, 116, 10, 101,
- 10, 121, 10, 33, 10, 58, 10, 97,
- 10, 115, 10, 116, 10, 33, 10, 101,
- 10, 108, 10, 105, 10, 109, 10, 101,
- 10, 121, 10, 97, 10, 110, 10, 103,
- 10, 119, 10, 97, 10, 101, 10, 97,
- 10, 118, 10, 101, 10, 32, 10, 116,
- 10, 111, 10, 101, 10, 116, 10, 32,
- 10, 103, 10, 111, 10, 32, 10, 97,
- 10, 110, 10, 100, 10, 32, 10, 104,
- 10, 97, 10, 117, 10, 108, 10, 104,
- 10, 105, 10, 118, 10, 101, 10, 114,
- 10, 32, 10, 109, 10, 101, 10, 32,
- 10, 116, 10, 105, 10, 109, 10, 98,
- 10, 101, 10, 114, 10, 115, 10, 111,
- 10, 45, 10, 104, 10, 111, 10, 45,
- 10, 104, 101, 116, 32, 103, 111, 32,
- 97, 110, 100, 32, 104, 97, 117, 108,
- 104, 105, 118, 101, 114, 32, 109, 101,
- 32, 116, 105, 109, 98, 101, 114, 115,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 65, 66, 71, 72, 76, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 104,
- 118, 121, 10, 111, 10, 121, 10, 32,
- 10, 109, 10, 97, 10, 116, 10, 101,
- 10, 121, 10, 33, 10, 58, 10, 97,
- 10, 115, 10, 116, 10, 33, 10, 101,
- 10, 108, 10, 105, 10, 109, 10, 101,
- 10, 121, 10, 97, 10, 110, 10, 103,
- 10, 119, 10, 97, 10, 101, 10, 97,
- 10, 118, 10, 101, 10, 32, 10, 116,
- 10, 111, 10, 101, 10, 116, 10, 32,
- 10, 103, 10, 111, 10, 32, 10, 97,
- 10, 110, 10, 100, 10, 32, 10, 104,
- 10, 97, 10, 117, 10, 108, 111, 45,
- 104, 111, 45, 104, 111, 58, 10, 10,
- 10, 32, 35, 37, 42, 64, 65, 66,
- 71, 72, 76, 83, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 104, 118, 121,
- 10, 111, 10, 121, 10, 32, 10, 109,
- 10, 97, 10, 116, 10, 101, 10, 121,
- 10, 33, 10, 58, 10, 97, 10, 115,
- 10, 116, 10, 33, 10, 101, 10, 108,
- 10, 105, 10, 109, 10, 101, 10, 121,
- 10, 97, 10, 110, 10, 103, 10, 119,
- 10, 97, 10, 101, 10, 97, 10, 118,
- 10, 101, 10, 32, 10, 116, 10, 111,
- 10, 101, 10, 116, 10, 32, 10, 103,
- 10, 111, 10, 32, 10, 97, 10, 110,
- 10, 100, 10, 32, 10, 104, 10, 97,
- 10, 117, 10, 108, 10, 104, 10, 105,
- 10, 118, 10, 101, 10, 114, 10, 32,
- 10, 109, 10, 101, 10, 32, 10, 116,
- 10, 105, 10, 109, 10, 98, 10, 101,
- 10, 114, 10, 115, 32, 124, 9, 13,
- 10, 32, 92, 124, 9, 13, 10, 92,
- 124, 10, 92, 10, 32, 92, 124, 9,
- 13, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 68, 71, 72, 76, 83, 89,
- 124, 9, 13, 10, 101, 10, 97, 10,
- 100, 10, 32, 10, 109, 10, 101, 10,
- 110, 10, 32, 10, 116, 10, 101, 10,
- 108, 10, 108, 10, 32, 10, 110, 10,
- 111, 10, 32, 10, 116, 10, 97, 10,
- 108, 10, 101, 10, 115, 10, 101, 10,
- 97, 10, 118, 10, 101, 10, 32, 10,
- 116, 10, 111, 10, 104, 10, 105, 10,
- 118, 10, 101, 10, 114, 10, 32, 10,
- 109, 10, 101, 10, 32, 10, 116, 10,
- 105, 10, 109, 10, 98, 10, 101, 10,
- 114, 10, 111, 10, 45, 10, 104, 10,
- 111, 10, 45, 10, 104, 97, 115, 116,
- 101, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 3, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 10, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 16, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 5, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 13, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 4, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 11, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 4, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 12, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 3, 2,
- 4, 16, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 1, 0, 0,
- 1, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 141, 143,
- 145, 147, 149, 151, 153, 155, 157, 159,
- 161, 163, 165, 177, 180, 183, 186, 189,
- 192, 195, 198, 201, 204, 207, 210, 213,
- 216, 219, 222, 225, 228, 231, 234, 237,
- 240, 243, 246, 249, 252, 270, 272, 274,
- 276, 278, 280, 282, 284, 286, 288, 290,
- 292, 294, 296, 298, 300, 302, 304, 306,
- 308, 310, 312, 314, 316, 318, 320, 322,
- 324, 326, 328, 330, 337, 340, 343, 346,
- 349, 352, 355, 358, 361, 364, 367, 370,
- 372, 374, 376, 378, 380, 382, 384, 386,
- 388, 390, 392, 394, 396, 398, 400, 415,
- 418, 421, 424, 427, 430, 433, 436, 439,
- 442, 445, 448, 451, 454, 457, 460, 465,
- 468, 471, 474, 477, 480, 483, 486, 489,
- 492, 495, 498, 501, 504, 507, 510, 513,
- 516, 519, 522, 525, 528, 531, 534, 537,
- 540, 543, 546, 549, 552, 555, 558, 561,
- 564, 567, 570, 573, 576, 579, 582, 585,
- 588, 591, 594, 597, 600, 603, 606, 609,
- 612, 615, 618, 621, 624, 627, 630, 633,
- 636, 639, 642, 645, 648, 651, 654, 657,
- 660, 663, 666, 669, 671, 673, 675, 677,
- 679, 681, 683, 685, 687, 689, 691, 693,
- 695, 697, 699, 701, 703, 705, 707, 709,
- 711, 713, 715, 717, 719, 721, 723, 725,
- 727, 729, 731, 733, 735, 748, 751, 754,
- 757, 760, 763, 766, 769, 772, 775, 778,
- 781, 784, 787, 790, 793, 798, 801, 804,
- 807, 810, 813, 816, 819, 822, 825, 828,
- 831, 834, 837, 840, 843, 846, 849, 852,
- 855, 858, 861, 864, 867, 870, 873, 876,
- 879, 882, 885, 888, 891, 894, 897, 900,
- 903, 906, 909, 912, 915, 918, 921, 924,
- 927, 930, 933, 936, 938, 940, 942, 944,
- 946, 948, 950, 952, 954, 956, 970, 973,
- 976, 979, 982, 985, 988, 991, 994, 997,
- 1000, 1003, 1006, 1009, 1012, 1015, 1020, 1023,
- 1026, 1029, 1032, 1035, 1038, 1041, 1044, 1047,
- 1050, 1053, 1056, 1059, 1062, 1065, 1068, 1071,
- 1074, 1077, 1080, 1083, 1086, 1089, 1092, 1095,
- 1098, 1101, 1104, 1107, 1110, 1113, 1116, 1119,
- 1122, 1125, 1128, 1131, 1134, 1137, 1140, 1143,
- 1146, 1149, 1152, 1155, 1158, 1161, 1164, 1167,
- 1170, 1173, 1176, 1179, 1182, 1185, 1188, 1191,
- 1194, 1197, 1200, 1203, 1206, 1210, 1216, 1220,
- 1223, 1229, 1247, 1250, 1253, 1256, 1259, 1262,
- 1265, 1268, 1271, 1274, 1277, 1280, 1283, 1286,
- 1289, 1292, 1295, 1298, 1301, 1304, 1307, 1310,
- 1313, 1316, 1319, 1322, 1325, 1328, 1331, 1334,
- 1337, 1340, 1343, 1346, 1349, 1352, 1355, 1358,
- 1361, 1364, 1367, 1370, 1373, 1376, 1379, 1382,
- 1385, 1388, 1391, 1394, 1396, 1398, 1400, 1402
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 77, 83, 119, 124, 219, 233, 315,
- 404, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 77,
- 83, 119, 124, 219, 233, 315, 404, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 463, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 459, 462, 0, 39, 0, 40,
- 0, 41, 0, 42, 0, 43, 0, 44,
- 0, 45, 0, 46, 0, 47, 0, 48,
- 0, 50, 49, 50, 49, 50, 50, 4,
- 51, 4, 65, 410, 431, 438, 453, 50,
- 49, 50, 52, 49, 50, 53, 49, 50,
- 54, 49, 50, 55, 49, 50, 56, 49,
- 50, 57, 49, 50, 58, 49, 50, 59,
- 49, 50, 60, 49, 50, 61, 49, 50,
- 62, 49, 50, 63, 49, 50, 64, 49,
- 50, 4, 49, 50, 66, 49, 50, 67,
- 49, 50, 68, 49, 50, 69, 49, 50,
- 70, 49, 50, 71, 49, 50, 72, 49,
- 50, 73, 49, 50, 74, 49, 50, 75,
- 49, 50, 76, 49, 4, 4, 5, 15,
- 17, 31, 34, 37, 77, 83, 119, 124,
- 219, 233, 315, 404, 4, 0, 78, 0,
- 79, 0, 80, 0, 81, 0, 82, 0,
- 31, 0, 84, 0, 85, 0, 86, 0,
- 87, 0, 88, 0, 89, 0, 90, 0,
- 91, 0, 92, 0, 93, 0, 94, 0,
- 95, 0, 96, 0, 97, 0, 98, 0,
- 99, 0, 100, 0, 101, 0, 102, 0,
- 103, 0, 104, 0, 105, 0, 107, 106,
- 107, 106, 107, 107, 4, 108, 4, 107,
- 106, 107, 109, 106, 107, 110, 106, 107,
- 111, 106, 107, 112, 106, 107, 113, 106,
- 107, 114, 106, 107, 115, 106, 107, 116,
- 106, 107, 117, 106, 107, 118, 106, 107,
- 76, 106, 120, 0, 121, 0, 122, 0,
- 123, 0, 81, 0, 125, 0, 126, 0,
- 127, 0, 128, 0, 129, 0, 130, 0,
- 131, 0, 132, 0, 134, 133, 134, 133,
- 134, 134, 4, 135, 149, 4, 150, 166,
- 171, 176, 183, 197, 213, 134, 133, 134,
- 136, 133, 134, 137, 133, 134, 138, 133,
- 134, 139, 133, 134, 140, 133, 134, 141,
- 133, 134, 142, 133, 134, 143, 133, 134,
- 144, 133, 134, 145, 133, 134, 146, 133,
- 134, 147, 133, 134, 148, 133, 134, 4,
- 133, 134, 76, 133, 134, 151, 161, 165,
- 133, 134, 152, 133, 134, 153, 133, 134,
- 154, 133, 134, 155, 133, 134, 156, 133,
- 134, 157, 133, 134, 158, 133, 134, 159,
- 133, 134, 160, 133, 134, 76, 133, 134,
- 162, 133, 134, 163, 133, 134, 164, 133,
- 134, 149, 133, 134, 149, 133, 134, 167,
- 133, 134, 168, 133, 134, 169, 133, 134,
- 170, 133, 134, 164, 133, 134, 172, 133,
- 134, 173, 133, 134, 174, 133, 134, 175,
- 133, 134, 170, 133, 134, 177, 133, 134,
- 178, 133, 134, 179, 133, 134, 180, 133,
- 134, 181, 133, 134, 182, 133, 134, 160,
- 133, 134, 184, 133, 134, 185, 133, 134,
- 186, 133, 134, 187, 133, 134, 188, 133,
- 134, 189, 133, 134, 190, 133, 134, 191,
- 133, 134, 192, 133, 134, 193, 133, 134,
- 194, 133, 134, 195, 133, 134, 196, 133,
- 134, 149, 133, 134, 198, 133, 134, 199,
- 133, 134, 200, 133, 134, 201, 133, 134,
- 202, 133, 134, 203, 133, 134, 204, 133,
- 134, 205, 133, 134, 206, 133, 134, 207,
- 133, 134, 208, 133, 134, 209, 133, 134,
- 210, 133, 134, 211, 133, 134, 212, 133,
- 134, 160, 133, 134, 214, 133, 134, 215,
- 133, 134, 216, 133, 134, 217, 133, 134,
- 218, 133, 134, 182, 133, 220, 0, 221,
- 0, 222, 0, 223, 0, 224, 0, 225,
- 0, 226, 0, 227, 0, 228, 0, 229,
- 0, 230, 0, 231, 0, 232, 0, 31,
- 0, 234, 0, 235, 0, 236, 0, 237,
- 0, 238, 0, 239, 0, 240, 0, 241,
- 0, 242, 0, 243, 0, 244, 0, 245,
- 0, 246, 0, 247, 0, 248, 0, 249,
- 0, 250, 0, 252, 251, 252, 251, 252,
- 252, 4, 253, 267, 4, 268, 284, 289,
- 294, 301, 252, 251, 252, 254, 251, 252,
- 255, 251, 252, 256, 251, 252, 257, 251,
- 252, 258, 251, 252, 259, 251, 252, 260,
- 251, 252, 261, 251, 252, 262, 251, 252,
- 263, 251, 252, 264, 251, 252, 265, 251,
- 252, 266, 251, 252, 4, 251, 252, 76,
- 251, 252, 269, 279, 283, 251, 252, 270,
- 251, 252, 271, 251, 252, 272, 251, 252,
- 273, 251, 252, 274, 251, 252, 275, 251,
- 252, 276, 251, 252, 277, 251, 252, 278,
- 251, 252, 76, 251, 252, 280, 251, 252,
- 281, 251, 252, 282, 251, 252, 267, 251,
- 252, 267, 251, 252, 285, 251, 252, 286,
- 251, 252, 287, 251, 252, 288, 251, 252,
- 282, 251, 252, 290, 251, 252, 291, 251,
- 252, 292, 251, 252, 293, 251, 252, 288,
- 251, 252, 295, 251, 252, 296, 251, 252,
- 297, 251, 252, 298, 251, 252, 299, 251,
- 252, 300, 251, 252, 278, 251, 252, 302,
- 251, 252, 303, 251, 252, 304, 251, 252,
- 305, 251, 252, 306, 251, 252, 307, 251,
- 252, 308, 251, 252, 309, 251, 252, 310,
- 251, 252, 311, 251, 252, 312, 251, 252,
- 313, 251, 252, 314, 251, 252, 267, 251,
- 316, 0, 317, 0, 318, 0, 319, 0,
- 320, 0, 321, 0, 322, 0, 323, 0,
- 325, 324, 325, 324, 325, 325, 4, 326,
- 340, 4, 341, 357, 362, 367, 374, 388,
- 325, 324, 325, 327, 324, 325, 328, 324,
- 325, 329, 324, 325, 330, 324, 325, 331,
- 324, 325, 332, 324, 325, 333, 324, 325,
- 334, 324, 325, 335, 324, 325, 336, 324,
- 325, 337, 324, 325, 338, 324, 325, 339,
- 324, 325, 4, 324, 325, 76, 324, 325,
- 342, 352, 356, 324, 325, 343, 324, 325,
- 344, 324, 325, 345, 324, 325, 346, 324,
- 325, 347, 324, 325, 348, 324, 325, 349,
- 324, 325, 350, 324, 325, 351, 324, 325,
- 76, 324, 325, 353, 324, 325, 354, 324,
- 325, 355, 324, 325, 340, 324, 325, 340,
- 324, 325, 358, 324, 325, 359, 324, 325,
- 360, 324, 325, 361, 324, 325, 355, 324,
- 325, 363, 324, 325, 364, 324, 325, 365,
- 324, 325, 366, 324, 325, 361, 324, 325,
- 368, 324, 325, 369, 324, 325, 370, 324,
- 325, 371, 324, 325, 372, 324, 325, 373,
- 324, 325, 351, 324, 325, 375, 324, 325,
- 376, 324, 325, 377, 324, 325, 378, 324,
- 325, 379, 324, 325, 380, 324, 325, 381,
- 324, 325, 382, 324, 325, 383, 324, 325,
- 384, 324, 325, 385, 324, 325, 386, 324,
- 325, 387, 324, 325, 340, 324, 325, 389,
- 324, 325, 390, 324, 325, 391, 324, 325,
- 392, 324, 325, 393, 324, 325, 394, 324,
- 325, 395, 324, 325, 396, 324, 325, 397,
- 324, 325, 398, 324, 325, 399, 324, 325,
- 400, 324, 325, 401, 324, 325, 402, 324,
- 325, 403, 324, 325, 351, 324, 404, 405,
- 404, 0, 409, 408, 407, 405, 408, 406,
- 0, 407, 405, 406, 0, 407, 406, 409,
- 408, 407, 405, 408, 406, 409, 409, 5,
- 15, 17, 31, 34, 37, 77, 83, 119,
- 124, 219, 233, 315, 404, 409, 0, 50,
- 411, 49, 50, 412, 49, 50, 413, 49,
- 50, 414, 49, 50, 415, 49, 50, 416,
- 49, 50, 417, 49, 50, 418, 49, 50,
- 419, 49, 50, 420, 49, 50, 421, 49,
- 50, 422, 49, 50, 423, 49, 50, 424,
- 49, 50, 425, 49, 50, 426, 49, 50,
- 427, 49, 50, 428, 49, 50, 429, 49,
- 50, 430, 49, 50, 75, 49, 50, 432,
- 49, 50, 433, 49, 50, 434, 49, 50,
- 435, 49, 50, 436, 49, 50, 437, 49,
- 50, 75, 49, 50, 439, 49, 50, 440,
- 49, 50, 441, 49, 50, 442, 49, 50,
- 443, 49, 50, 444, 49, 50, 445, 49,
- 50, 446, 49, 50, 447, 49, 50, 448,
- 49, 50, 449, 49, 50, 450, 49, 50,
- 451, 49, 50, 452, 49, 50, 430, 49,
- 50, 454, 49, 50, 455, 49, 50, 456,
- 49, 50, 457, 49, 50, 458, 49, 50,
- 437, 49, 460, 0, 461, 0, 82, 0,
- 31, 0, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 69,
- 33, 69, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 13, 0, 130, 31, 60, 57,
- 31, 63, 57, 63, 63, 63, 63, 63,
- 63, 63, 63, 66, 31, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 81, 84, 81, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 21, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 75, 33, 84, 75, 84, 84,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 17,
- 0, 54, 17, 0, 54, 0, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 78, 33, 84, 78, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 19, 0, 54, 19,
- 0, 54, 0, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 19, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 72, 33,
- 84, 72, 84, 84, 84, 84, 84, 84,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 15, 0, 54, 15, 0, 54,
- 0, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 15, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 0,
- 0, 43, 54, 37, 37, 87, 37, 37,
- 43, 0, 39, 0, 43, 0, 0, 54,
- 0, 0, 39, 0, 0, 54, 0, 93,
- 90, 41, 96, 90, 96, 96, 96, 96,
- 96, 96, 96, 96, 99, 0, 43, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 463;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 1075 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
-
- #line 1082 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1372 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1435 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_pirate.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_en_pirate()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "En_pirate", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/en_pirate.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/en_pirate.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 139, 141, 143, 145, 147,
- 149, 151, 153, 155, 157, 159, 161, 163,
- 165, 167, 169, 171, 173, 175, 177, 179,
- 181, 183, 185, 187, 189, 207, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 244, 246, 248, 250,
- 252, 254, 256, 258, 260, 262, 264, 266,
- 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 296,
- 298, 300, 302, 304, 306, 308, 310, 312,
- 314, 316, 318, 320, 322, 324, 326, 330,
- 332, 334, 336, 338, 340, 342, 344, 346,
- 348, 350, 352, 354, 356, 358, 360, 362,
- 364, 366, 368, 370, 372, 374, 376, 378,
- 380, 382, 384, 386, 388, 390, 392, 394,
- 396, 398, 400, 402, 404, 406, 408, 410,
- 412, 414, 416, 418, 420, 422, 424, 426,
- 428, 430, 432, 434, 436, 438, 440, 442,
- 444, 446, 448, 450, 452, 454, 456, 458,
- 460, 462, 464, 466, 467, 468, 469, 470,
- 471, 472, 473, 474, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486,
- 487, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 497, 498, 499, 512, 514, 516,
- 518, 520, 522, 524, 526, 528, 530, 532,
- 534, 536, 538, 540, 542, 546, 548, 550,
- 552, 554, 556, 558, 560, 562, 564, 566,
- 568, 570, 572, 574, 576, 578, 580, 582,
- 584, 586, 588, 590, 592, 594, 596, 598,
- 600, 602, 604, 606, 608, 610, 612, 614,
- 616, 618, 620, 622, 624, 626, 628, 630,
- 632, 634, 636, 638, 639, 640, 641, 642,
- 643, 644, 645, 646, 647, 648, 662, 664,
- 666, 668, 670, 672, 674, 676, 678, 680,
- 682, 684, 686, 688, 690, 692, 696, 698,
- 700, 702, 704, 706, 708, 710, 712, 714,
- 716, 718, 720, 722, 724, 726, 728, 730,
- 732, 734, 736, 738, 740, 742, 744, 746,
- 748, 750, 752, 754, 756, 758, 760, 762,
- 764, 766, 768, 770, 772, 774, 776, 778,
- 780, 782, 784, 786, 788, 790, 792, 794,
- 796, 798, 800, 802, 804, 806, 808, 810,
- 812, 814, 816, 818, 820, 824, 830, 833,
- 835, 841, 859, 861, 863, 865, 867, 869,
- 871, 873, 875, 877, 879, 881, 883, 885,
- 887, 889, 891, 893, 895, 897, 899, 901,
- 903, 905, 907, 909, 911, 913, 915, 917,
- 919, 921, 923, 925, 927, 929, 931, 933,
- 935, 937, 939, 941, 943, 945, 947, 949,
- 951, 953, 955, 957, 958, 959, 960, 961
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 68, 71, 72, 76, 83, 89,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 65, 66, 68, 71,
- 72, 76, 83, 89, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 104, 118, 121, 111, 121, 32, 109, 97,
- 116, 101, 121, 33, 58, 10, 10, 10,
- 32, 35, 37, 64, 65, 68, 72, 83,
- 89, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 104, 10, 111, 10, 121, 10, 32, 10,
- 109, 10, 97, 10, 116, 10, 101, 10,
- 121, 10, 33, 10, 58, 10, 32, 34,
- 35, 37, 42, 64, 65, 66, 68, 71,
- 72, 76, 83, 89, 124, 9, 13, 108,
- 105, 109, 101, 121, 33, 101, 97, 100,
- 32, 109, 101, 110, 32, 116, 101, 108,
- 108, 32, 110, 111, 32, 116, 97, 108,
- 101, 115, 58, 10, 10, 10, 32, 35,
- 65, 124, 9, 13, 10, 104, 10, 111,
- 10, 121, 10, 32, 10, 109, 10, 97,
- 10, 116, 10, 101, 10, 121, 10, 33,
- 10, 58, 97, 110, 103, 119, 97, 101,
- 97, 118, 101, 32, 116, 111, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 65,
- 66, 71, 72, 76, 83, 89, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 104,
- 118, 121, 10, 111, 10, 121, 10, 32,
- 10, 109, 10, 97, 10, 116, 10, 101,
- 10, 121, 10, 33, 10, 58, 10, 97,
- 10, 115, 10, 116, 10, 33, 10, 101,
- 10, 108, 10, 105, 10, 109, 10, 101,
- 10, 121, 10, 97, 10, 110, 10, 103,
- 10, 119, 10, 97, 10, 101, 10, 97,
- 10, 118, 10, 101, 10, 32, 10, 116,
- 10, 111, 10, 101, 10, 116, 10, 32,
- 10, 103, 10, 111, 10, 32, 10, 97,
- 10, 110, 10, 100, 10, 32, 10, 104,
- 10, 97, 10, 117, 10, 108, 10, 104,
- 10, 105, 10, 118, 10, 101, 10, 114,
- 10, 32, 10, 109, 10, 101, 10, 32,
- 10, 116, 10, 105, 10, 109, 10, 98,
- 10, 101, 10, 114, 10, 115, 10, 111,
- 10, 45, 10, 104, 10, 111, 10, 45,
- 10, 104, 101, 116, 32, 103, 111, 32,
- 97, 110, 100, 32, 104, 97, 117, 108,
- 104, 105, 118, 101, 114, 32, 109, 101,
- 32, 116, 105, 109, 98, 101, 114, 115,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 65, 66, 71, 72, 76, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 104,
- 118, 121, 10, 111, 10, 121, 10, 32,
- 10, 109, 10, 97, 10, 116, 10, 101,
- 10, 121, 10, 33, 10, 58, 10, 97,
- 10, 115, 10, 116, 10, 33, 10, 101,
- 10, 108, 10, 105, 10, 109, 10, 101,
- 10, 121, 10, 97, 10, 110, 10, 103,
- 10, 119, 10, 97, 10, 101, 10, 97,
- 10, 118, 10, 101, 10, 32, 10, 116,
- 10, 111, 10, 101, 10, 116, 10, 32,
- 10, 103, 10, 111, 10, 32, 10, 97,
- 10, 110, 10, 100, 10, 32, 10, 104,
- 10, 97, 10, 117, 10, 108, 111, 45,
- 104, 111, 45, 104, 111, 58, 10, 10,
- 10, 32, 35, 37, 42, 64, 65, 66,
- 71, 72, 76, 83, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 104, 118, 121,
- 10, 111, 10, 121, 10, 32, 10, 109,
- 10, 97, 10, 116, 10, 101, 10, 121,
- 10, 33, 10, 58, 10, 97, 10, 115,
- 10, 116, 10, 33, 10, 101, 10, 108,
- 10, 105, 10, 109, 10, 101, 10, 121,
- 10, 97, 10, 110, 10, 103, 10, 119,
- 10, 97, 10, 101, 10, 97, 10, 118,
- 10, 101, 10, 32, 10, 116, 10, 111,
- 10, 101, 10, 116, 10, 32, 10, 103,
- 10, 111, 10, 32, 10, 97, 10, 110,
- 10, 100, 10, 32, 10, 104, 10, 97,
- 10, 117, 10, 108, 10, 104, 10, 105,
- 10, 118, 10, 101, 10, 114, 10, 32,
- 10, 109, 10, 101, 10, 32, 10, 116,
- 10, 105, 10, 109, 10, 98, 10, 101,
- 10, 114, 10, 115, 32, 124, 9, 13,
- 10, 32, 92, 124, 9, 13, 10, 92,
- 124, 10, 92, 10, 32, 92, 124, 9,
- 13, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 68, 71, 72, 76, 83, 89,
- 124, 9, 13, 10, 101, 10, 97, 10,
- 100, 10, 32, 10, 109, 10, 101, 10,
- 110, 10, 32, 10, 116, 10, 101, 10,
- 108, 10, 108, 10, 32, 10, 110, 10,
- 111, 10, 32, 10, 116, 10, 97, 10,
- 108, 10, 101, 10, 115, 10, 101, 10,
- 97, 10, 118, 10, 101, 10, 32, 10,
- 116, 10, 111, 10, 104, 10, 105, 10,
- 118, 10, 101, 10, 114, 10, 32, 10,
- 109, 10, 101, 10, 32, 10, 116, 10,
- 105, 10, 109, 10, 98, 10, 101, 10,
- 114, 10, 111, 10, 45, 10, 104, 10,
- 111, 10, 45, 10, 104, 97, 115, 116,
- 101, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 3, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 10, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 16, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 5, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 13, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 4, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 11, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 4, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 12, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 3, 2,
- 4, 16, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 1, 0, 0,
- 1, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 141, 143,
- 145, 147, 149, 151, 153, 155, 157, 159,
- 161, 163, 165, 177, 180, 183, 186, 189,
- 192, 195, 198, 201, 204, 207, 210, 213,
- 216, 219, 222, 225, 228, 231, 234, 237,
- 240, 243, 246, 249, 252, 270, 272, 274,
- 276, 278, 280, 282, 284, 286, 288, 290,
- 292, 294, 296, 298, 300, 302, 304, 306,
- 308, 310, 312, 314, 316, 318, 320, 322,
- 324, 326, 328, 330, 337, 340, 343, 346,
- 349, 352, 355, 358, 361, 364, 367, 370,
- 372, 374, 376, 378, 380, 382, 384, 386,
- 388, 390, 392, 394, 396, 398, 400, 415,
- 418, 421, 424, 427, 430, 433, 436, 439,
- 442, 445, 448, 451, 454, 457, 460, 465,
- 468, 471, 474, 477, 480, 483, 486, 489,
- 492, 495, 498, 501, 504, 507, 510, 513,
- 516, 519, 522, 525, 528, 531, 534, 537,
- 540, 543, 546, 549, 552, 555, 558, 561,
- 564, 567, 570, 573, 576, 579, 582, 585,
- 588, 591, 594, 597, 600, 603, 606, 609,
- 612, 615, 618, 621, 624, 627, 630, 633,
- 636, 639, 642, 645, 648, 651, 654, 657,
- 660, 663, 666, 669, 671, 673, 675, 677,
- 679, 681, 683, 685, 687, 689, 691, 693,
- 695, 697, 699, 701, 703, 705, 707, 709,
- 711, 713, 715, 717, 719, 721, 723, 725,
- 727, 729, 731, 733, 735, 748, 751, 754,
- 757, 760, 763, 766, 769, 772, 775, 778,
- 781, 784, 787, 790, 793, 798, 801, 804,
- 807, 810, 813, 816, 819, 822, 825, 828,
- 831, 834, 837, 840, 843, 846, 849, 852,
- 855, 858, 861, 864, 867, 870, 873, 876,
- 879, 882, 885, 888, 891, 894, 897, 900,
- 903, 906, 909, 912, 915, 918, 921, 924,
- 927, 930, 933, 936, 938, 940, 942, 944,
- 946, 948, 950, 952, 954, 956, 970, 973,
- 976, 979, 982, 985, 988, 991, 994, 997,
- 1000, 1003, 1006, 1009, 1012, 1015, 1020, 1023,
- 1026, 1029, 1032, 1035, 1038, 1041, 1044, 1047,
- 1050, 1053, 1056, 1059, 1062, 1065, 1068, 1071,
- 1074, 1077, 1080, 1083, 1086, 1089, 1092, 1095,
- 1098, 1101, 1104, 1107, 1110, 1113, 1116, 1119,
- 1122, 1125, 1128, 1131, 1134, 1137, 1140, 1143,
- 1146, 1149, 1152, 1155, 1158, 1161, 1164, 1167,
- 1170, 1173, 1176, 1179, 1182, 1185, 1188, 1191,
- 1194, 1197, 1200, 1203, 1206, 1210, 1216, 1220,
- 1223, 1229, 1247, 1250, 1253, 1256, 1259, 1262,
- 1265, 1268, 1271, 1274, 1277, 1280, 1283, 1286,
- 1289, 1292, 1295, 1298, 1301, 1304, 1307, 1310,
- 1313, 1316, 1319, 1322, 1325, 1328, 1331, 1334,
- 1337, 1340, 1343, 1346, 1349, 1352, 1355, 1358,
- 1361, 1364, 1367, 1370, 1373, 1376, 1379, 1382,
- 1385, 1388, 1391, 1394, 1396, 1398, 1400, 1402
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 77, 83, 119, 124, 219, 233, 315,
- 404, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 77,
- 83, 119, 124, 219, 233, 315, 404, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 463, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 459, 462, 0, 39, 0, 40,
- 0, 41, 0, 42, 0, 43, 0, 44,
- 0, 45, 0, 46, 0, 47, 0, 48,
- 0, 50, 49, 50, 49, 50, 50, 4,
- 51, 4, 65, 410, 431, 438, 453, 50,
- 49, 50, 52, 49, 50, 53, 49, 50,
- 54, 49, 50, 55, 49, 50, 56, 49,
- 50, 57, 49, 50, 58, 49, 50, 59,
- 49, 50, 60, 49, 50, 61, 49, 50,
- 62, 49, 50, 63, 49, 50, 64, 49,
- 50, 4, 49, 50, 66, 49, 50, 67,
- 49, 50, 68, 49, 50, 69, 49, 50,
- 70, 49, 50, 71, 49, 50, 72, 49,
- 50, 73, 49, 50, 74, 49, 50, 75,
- 49, 50, 76, 49, 4, 4, 5, 15,
- 17, 31, 34, 37, 77, 83, 119, 124,
- 219, 233, 315, 404, 4, 0, 78, 0,
- 79, 0, 80, 0, 81, 0, 82, 0,
- 31, 0, 84, 0, 85, 0, 86, 0,
- 87, 0, 88, 0, 89, 0, 90, 0,
- 91, 0, 92, 0, 93, 0, 94, 0,
- 95, 0, 96, 0, 97, 0, 98, 0,
- 99, 0, 100, 0, 101, 0, 102, 0,
- 103, 0, 104, 0, 105, 0, 107, 106,
- 107, 106, 107, 107, 4, 108, 4, 107,
- 106, 107, 109, 106, 107, 110, 106, 107,
- 111, 106, 107, 112, 106, 107, 113, 106,
- 107, 114, 106, 107, 115, 106, 107, 116,
- 106, 107, 117, 106, 107, 118, 106, 107,
- 76, 106, 120, 0, 121, 0, 122, 0,
- 123, 0, 81, 0, 125, 0, 126, 0,
- 127, 0, 128, 0, 129, 0, 130, 0,
- 131, 0, 132, 0, 134, 133, 134, 133,
- 134, 134, 4, 135, 149, 4, 150, 166,
- 171, 176, 183, 197, 213, 134, 133, 134,
- 136, 133, 134, 137, 133, 134, 138, 133,
- 134, 139, 133, 134, 140, 133, 134, 141,
- 133, 134, 142, 133, 134, 143, 133, 134,
- 144, 133, 134, 145, 133, 134, 146, 133,
- 134, 147, 133, 134, 148, 133, 134, 4,
- 133, 134, 76, 133, 134, 151, 161, 165,
- 133, 134, 152, 133, 134, 153, 133, 134,
- 154, 133, 134, 155, 133, 134, 156, 133,
- 134, 157, 133, 134, 158, 133, 134, 159,
- 133, 134, 160, 133, 134, 76, 133, 134,
- 162, 133, 134, 163, 133, 134, 164, 133,
- 134, 149, 133, 134, 149, 133, 134, 167,
- 133, 134, 168, 133, 134, 169, 133, 134,
- 170, 133, 134, 164, 133, 134, 172, 133,
- 134, 173, 133, 134, 174, 133, 134, 175,
- 133, 134, 170, 133, 134, 177, 133, 134,
- 178, 133, 134, 179, 133, 134, 180, 133,
- 134, 181, 133, 134, 182, 133, 134, 160,
- 133, 134, 184, 133, 134, 185, 133, 134,
- 186, 133, 134, 187, 133, 134, 188, 133,
- 134, 189, 133, 134, 190, 133, 134, 191,
- 133, 134, 192, 133, 134, 193, 133, 134,
- 194, 133, 134, 195, 133, 134, 196, 133,
- 134, 149, 133, 134, 198, 133, 134, 199,
- 133, 134, 200, 133, 134, 201, 133, 134,
- 202, 133, 134, 203, 133, 134, 204, 133,
- 134, 205, 133, 134, 206, 133, 134, 207,
- 133, 134, 208, 133, 134, 209, 133, 134,
- 210, 133, 134, 211, 133, 134, 212, 133,
- 134, 160, 133, 134, 214, 133, 134, 215,
- 133, 134, 216, 133, 134, 217, 133, 134,
- 218, 133, 134, 182, 133, 220, 0, 221,
- 0, 222, 0, 223, 0, 224, 0, 225,
- 0, 226, 0, 227, 0, 228, 0, 229,
- 0, 230, 0, 231, 0, 232, 0, 31,
- 0, 234, 0, 235, 0, 236, 0, 237,
- 0, 238, 0, 239, 0, 240, 0, 241,
- 0, 242, 0, 243, 0, 244, 0, 245,
- 0, 246, 0, 247, 0, 248, 0, 249,
- 0, 250, 0, 252, 251, 252, 251, 252,
- 252, 4, 253, 267, 4, 268, 284, 289,
- 294, 301, 252, 251, 252, 254, 251, 252,
- 255, 251, 252, 256, 251, 252, 257, 251,
- 252, 258, 251, 252, 259, 251, 252, 260,
- 251, 252, 261, 251, 252, 262, 251, 252,
- 263, 251, 252, 264, 251, 252, 265, 251,
- 252, 266, 251, 252, 4, 251, 252, 76,
- 251, 252, 269, 279, 283, 251, 252, 270,
- 251, 252, 271, 251, 252, 272, 251, 252,
- 273, 251, 252, 274, 251, 252, 275, 251,
- 252, 276, 251, 252, 277, 251, 252, 278,
- 251, 252, 76, 251, 252, 280, 251, 252,
- 281, 251, 252, 282, 251, 252, 267, 251,
- 252, 267, 251, 252, 285, 251, 252, 286,
- 251, 252, 287, 251, 252, 288, 251, 252,
- 282, 251, 252, 290, 251, 252, 291, 251,
- 252, 292, 251, 252, 293, 251, 252, 288,
- 251, 252, 295, 251, 252, 296, 251, 252,
- 297, 251, 252, 298, 251, 252, 299, 251,
- 252, 300, 251, 252, 278, 251, 252, 302,
- 251, 252, 303, 251, 252, 304, 251, 252,
- 305, 251, 252, 306, 251, 252, 307, 251,
- 252, 308, 251, 252, 309, 251, 252, 310,
- 251, 252, 311, 251, 252, 312, 251, 252,
- 313, 251, 252, 314, 251, 252, 267, 251,
- 316, 0, 317, 0, 318, 0, 319, 0,
- 320, 0, 321, 0, 322, 0, 323, 0,
- 325, 324, 325, 324, 325, 325, 4, 326,
- 340, 4, 341, 357, 362, 367, 374, 388,
- 325, 324, 325, 327, 324, 325, 328, 324,
- 325, 329, 324, 325, 330, 324, 325, 331,
- 324, 325, 332, 324, 325, 333, 324, 325,
- 334, 324, 325, 335, 324, 325, 336, 324,
- 325, 337, 324, 325, 338, 324, 325, 339,
- 324, 325, 4, 324, 325, 76, 324, 325,
- 342, 352, 356, 324, 325, 343, 324, 325,
- 344, 324, 325, 345, 324, 325, 346, 324,
- 325, 347, 324, 325, 348, 324, 325, 349,
- 324, 325, 350, 324, 325, 351, 324, 325,
- 76, 324, 325, 353, 324, 325, 354, 324,
- 325, 355, 324, 325, 340, 324, 325, 340,
- 324, 325, 358, 324, 325, 359, 324, 325,
- 360, 324, 325, 361, 324, 325, 355, 324,
- 325, 363, 324, 325, 364, 324, 325, 365,
- 324, 325, 366, 324, 325, 361, 324, 325,
- 368, 324, 325, 369, 324, 325, 370, 324,
- 325, 371, 324, 325, 372, 324, 325, 373,
- 324, 325, 351, 324, 325, 375, 324, 325,
- 376, 324, 325, 377, 324, 325, 378, 324,
- 325, 379, 324, 325, 380, 324, 325, 381,
- 324, 325, 382, 324, 325, 383, 324, 325,
- 384, 324, 325, 385, 324, 325, 386, 324,
- 325, 387, 324, 325, 340, 324, 325, 389,
- 324, 325, 390, 324, 325, 391, 324, 325,
- 392, 324, 325, 393, 324, 325, 394, 324,
- 325, 395, 324, 325, 396, 324, 325, 397,
- 324, 325, 398, 324, 325, 399, 324, 325,
- 400, 324, 325, 401, 324, 325, 402, 324,
- 325, 403, 324, 325, 351, 324, 404, 405,
- 404, 0, 409, 408, 407, 405, 408, 406,
- 0, 407, 405, 406, 0, 407, 406, 409,
- 408, 407, 405, 408, 406, 409, 409, 5,
- 15, 17, 31, 34, 37, 77, 83, 119,
- 124, 219, 233, 315, 404, 409, 0, 50,
- 411, 49, 50, 412, 49, 50, 413, 49,
- 50, 414, 49, 50, 415, 49, 50, 416,
- 49, 50, 417, 49, 50, 418, 49, 50,
- 419, 49, 50, 420, 49, 50, 421, 49,
- 50, 422, 49, 50, 423, 49, 50, 424,
- 49, 50, 425, 49, 50, 426, 49, 50,
- 427, 49, 50, 428, 49, 50, 429, 49,
- 50, 430, 49, 50, 75, 49, 50, 432,
- 49, 50, 433, 49, 50, 434, 49, 50,
- 435, 49, 50, 436, 49, 50, 437, 49,
- 50, 75, 49, 50, 439, 49, 50, 440,
- 49, 50, 441, 49, 50, 442, 49, 50,
- 443, 49, 50, 444, 49, 50, 445, 49,
- 50, 446, 49, 50, 447, 49, 50, 448,
- 49, 50, 449, 49, 50, 450, 49, 50,
- 451, 49, 50, 452, 49, 50, 430, 49,
- 50, 454, 49, 50, 455, 49, 50, 456,
- 49, 50, 457, 49, 50, 458, 49, 50,
- 437, 49, 460, 0, 461, 0, 82, 0,
- 31, 0, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 69,
- 33, 69, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 13, 0, 130, 31, 60, 57,
- 31, 63, 57, 63, 63, 63, 63, 63,
- 63, 63, 63, 66, 31, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 81, 84, 81, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 21, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 75, 33, 84, 75, 84, 84,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 17,
- 0, 54, 17, 0, 54, 0, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 78, 33, 84, 78, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 19, 0, 54, 19,
- 0, 54, 0, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 19, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 72, 33,
- 84, 72, 84, 84, 84, 84, 84, 84,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 15, 0, 54, 15, 0, 54,
- 0, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 15, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 0,
- 0, 43, 54, 37, 37, 87, 37, 37,
- 43, 0, 39, 0, 43, 0, 0, 54,
- 0, 0, 39, 0, 0, 54, 0, 93,
- 90, 41, 96, 90, 96, 96, 96, 96,
- 96, 96, 96, 96, 99, 0, 43, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 463;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/en_pirate.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 1075 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/en_pirate.c.rl"
-
-#line 1082 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/en_pirate.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/en_pirate.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/en_pirate.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/en_pirate.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/en_pirate.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/en_pirate.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/en_pirate.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/en_pirate.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/en_pirate.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/en_pirate.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/en_pirate.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/en_pirate.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/en_pirate.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/en_pirate.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/en_pirate.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/en_pirate.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/en_pirate.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/en_pirate.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/en_pirate.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/en_pirate.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/en_pirate.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/en_pirate.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/en_pirate.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/en_pirate.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1372 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/en_pirate.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1435 "ext/gherkin_lexer_en_pirate/gherkin_lexer_en_pirate.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/en_pirate.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_en_pirate()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "En_pirate", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_en_scouse/extconf.rb
index 8985079,8985079..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_en_scouse/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_en_scouse")
--have_library("c", "main")
--create_makefile("gherkin_lexer_en_scouse")
diff --cc ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c
index 8ee1bd1,207758d..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c
+++ /dev/null
@@@ -1,1634 -1,1634 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 20, 21, 22, 41, 42, 43,
- 45, 47, 52, 57, 62, 67, 71, 75,
- 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 95, 97, 102, 109, 114, 115, 116,
- 117, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 138, 139, 140, 141, 142,
- 143, 144, 145, 146, 147, 148, 149, 150,
- 151, 152, 153, 154, 155, 171, 173, 175,
- 177, 179, 181, 183, 185, 187, 189, 191,
- 193, 195, 197, 199, 201, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230,
- 237, 239, 241, 243, 245, 247, 249, 251,
- 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 272, 274, 276, 278, 280, 282, 284,
- 286, 288, 290, 292, 294, 296, 298, 300,
- 302, 304, 306, 308, 310, 312, 314, 316,
- 318, 320, 322, 324, 326, 328, 330, 332,
- 334, 336, 338, 340, 342, 344, 346, 348,
- 350, 352, 354, 356, 358, 360, 362, 364,
- 366, 368, 370, 372, 374, 376, 378, 380,
- 382, 384, 386, 388, 390, 392, 394, 396,
- 398, 400, 402, 404, 406, 408, 410, 412,
- 414, 416, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439,
- 440, 441, 457, 459, 461, 463, 465, 467,
- 469, 471, 473, 475, 477, 479, 481, 483,
- 485, 487, 489, 491, 493, 497, 499, 501,
- 503, 505, 507, 509, 511, 513, 515, 517,
- 519, 521, 523, 525, 527, 529, 531, 533,
- 535, 537, 539, 541, 543, 545, 547, 549,
- 551, 553, 555, 557, 559, 561, 563, 565,
- 567, 569, 571, 573, 575, 577, 579, 581,
- 583, 585, 587, 589, 591, 593, 595, 597,
- 599, 601, 603, 605, 607, 609, 611, 613,
- 615, 618, 620, 622, 624, 626, 628, 630,
- 632, 634, 636, 638, 640, 642, 644, 646,
- 648, 650, 652, 654, 657, 659, 661, 663,
- 665, 667, 669, 671, 673, 675, 677, 679,
- 681, 683, 685, 687, 689, 691, 693, 695,
- 697, 699, 700, 701, 702, 703, 704, 705,
- 706, 707, 708, 709, 710, 711, 712, 713,
- 729, 731, 733, 735, 737, 739, 741, 743,
- 745, 747, 749, 751, 753, 755, 757, 759,
- 761, 763, 765, 768, 770, 772, 774, 776,
- 778, 780, 782, 784, 786, 788, 790, 792,
- 794, 796, 798, 800, 802, 804, 806, 808,
- 810, 812, 814, 816, 818, 820, 822, 824,
- 826, 828, 830, 832, 834, 836, 838, 840,
- 842, 844, 846, 848, 850, 852, 854, 856,
- 858, 860, 862, 864, 866, 868, 871, 873,
- 875, 877, 879, 881, 883, 885, 887, 889,
- 891, 893, 895, 897, 899, 901, 903, 905,
- 907, 909, 911, 912, 913, 914, 915, 916,
- 917, 918, 919, 920, 921, 923, 924, 925,
- 926, 927, 928, 929, 930, 931, 932, 933,
- 934, 935, 936, 937, 938, 939, 940, 941,
- 942, 943, 947, 953, 956, 958, 964, 983,
- 985, 987, 989, 992, 994, 996, 998, 1000,
- 1002, 1004, 1006, 1008, 1010, 1012, 1014, 1016,
- 1018, 1020, 1022, 1024, 1026, 1028, 1030, 1032,
- 1034, 1036, 1038, 1040, 1042, 1044, 1046, 1048,
- 1050, 1052, 1054, 1056, 1058, 1060, 1062, 1064,
- 1066, 1068, 1070, 1072, 1075, 1077, 1079, 1081,
- 1083, 1085, 1087, 1089, 1091, 1093, 1095, 1097,
- 1099, 1101, 1103, 1105, 1107, 1109, 1111, 1114,
- 1116, 1118, 1120, 1122, 1124, 1126, 1128, 1130,
- 1132, 1134, 1136, 1138, 1140, 1142, 1144, 1146,
- 1148, 1150, 1152, 1154
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 68, 69, 70, 71, 84, 87,
- 89, 124, 9, 13, -69, -65, 10, 32,
- 34, 35, 37, 42, 64, 65, 66, 68,
- 69, 70, 71, 84, 87, 89, 124, 9,
- 13, 34, 34, 10, 13, 10, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 9, 13, 10,
- 32, 9, 13, 10, 13, 10, 95, 70,
- 69, 65, 84, 85, 82, 69, 95, 69,
- 78, 68, 95, 37, 32, 10, 13, 10,
- 13, 13, 32, 64, 9, 10, 9, 10,
- 13, 32, 64, 11, 12, 10, 32, 64,
- 9, 13, 110, 117, 104, 101, 105, 117,
- 110, 32, 121, 111, 117, 115, 101, 32,
- 103, 111, 116, 116, 97, 115, 32, 105,
- 115, 32, 119, 104, 97, 116, 32, 119,
- 101, 110, 116, 32, 100, 111, 119, 110,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 65, 66, 68, 70, 71, 84, 87,
- 89, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 68, 69, 70, 71, 84, 87,
- 89, 124, 9, 13, 120, 97, 109, 112,
- 108, 101, 115, 58, 10, 10, 10, 32,
- 35, 70, 124, 9, 13, 10, 101, 10,
- 97, 10, 116, 10, 117, 10, 114, 10,
- 101, 10, 58, 101, 97, 116, 117, 114,
- 101, 58, 10, 10, 10, 32, 35, 37,
- 64, 68, 69, 70, 84, 87, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 105, 10, 115,
- 10, 32, 10, 105, 10, 115, 10, 32,
- 10, 119, 10, 104, 10, 97, 10, 116,
- 10, 32, 10, 119, 10, 101, 10, 110,
- 10, 116, 10, 32, 10, 100, 10, 111,
- 10, 119, 10, 110, 10, 58, 10, 120,
- 10, 97, 10, 109, 10, 112, 10, 108,
- 10, 101, 10, 115, 10, 101, 10, 97,
- 10, 116, 10, 117, 10, 114, 10, 101,
- 10, 104, 10, 101, 10, 32, 10, 116,
- 10, 104, 10, 105, 10, 110, 10, 103,
- 10, 32, 10, 111, 10, 102, 10, 32,
- 10, 105, 10, 116, 10, 32, 10, 105,
- 10, 104, 10, 97, 10, 114, 10, 114,
- 10, 105, 10, 109, 10, 101, 10, 97,
- 10, 110, 105, 118, 117, 104, 101, 32,
- 116, 104, 105, 110, 103, 32, 111, 102,
- 32, 105, 116, 32, 105, 115, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 65,
- 66, 68, 70, 71, 84, 87, 89, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 110, 10, 117, 10, 104, 10, 101, 105,
- 117, 10, 110, 10, 32, 10, 121, 10,
- 111, 10, 117, 10, 115, 10, 101, 10,
- 32, 10, 103, 10, 111, 10, 116, 10,
- 116, 10, 97, 10, 115, 10, 32, 10,
- 105, 10, 115, 10, 32, 10, 119, 10,
- 104, 10, 97, 10, 116, 10, 32, 10,
- 119, 10, 101, 10, 110, 10, 116, 10,
- 32, 10, 100, 10, 111, 10, 119, 10,
- 110, 10, 58, 10, 101, 10, 97, 10,
- 116, 10, 117, 10, 114, 10, 101, 10,
- 105, 10, 118, 10, 117, 10, 104, 10,
- 101, 10, 32, 10, 116, 10, 104, 10,
- 105, 10, 110, 10, 103, 10, 32, 10,
- 111, 10, 102, 10, 32, 10, 105, 10,
- 116, 10, 32, 10, 105, 10, 115, 10,
- 104, 117, 10, 97, 10, 114, 10, 114,
- 10, 105, 10, 109, 10, 101, 10, 97,
- 10, 110, 10, 111, 10, 117, 10, 115,
- 10, 101, 10, 32, 10, 107, 10, 110,
- 10, 111, 10, 119, 10, 32, 10, 108,
- 119, 10, 105, 10, 107, 10, 101, 10,
- 32, 10, 119, 10, 104, 10, 101, 10,
- 104, 10, 101, 10, 110, 10, 32, 10,
- 121, 10, 111, 10, 117, 10, 115, 10,
- 101, 10, 32, 10, 103, 10, 111, 10,
- 116, 104, 117, 97, 114, 114, 105, 109,
- 101, 97, 110, 32, 105, 115, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 65,
- 66, 68, 70, 71, 84, 87, 89, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 110, 10, 117, 10, 104, 10, 101, 117,
- 10, 110, 10, 32, 10, 121, 10, 111,
- 10, 117, 10, 115, 10, 101, 10, 32,
- 10, 103, 10, 111, 10, 116, 10, 116,
- 10, 97, 10, 101, 10, 97, 10, 116,
- 10, 117, 10, 114, 10, 101, 10, 58,
- 10, 105, 10, 118, 10, 117, 10, 104,
- 10, 101, 10, 32, 10, 116, 10, 104,
- 10, 105, 10, 110, 10, 103, 10, 32,
- 10, 111, 10, 102, 10, 32, 10, 105,
- 10, 116, 10, 32, 10, 105, 10, 115,
- 10, 111, 10, 117, 10, 115, 10, 101,
- 10, 32, 10, 107, 10, 110, 10, 111,
- 10, 119, 10, 32, 10, 108, 119, 10,
- 105, 10, 107, 10, 101, 10, 32, 10,
- 119, 10, 104, 10, 101, 10, 104, 10,
- 101, 10, 110, 10, 32, 10, 121, 10,
- 111, 10, 117, 10, 115, 10, 101, 10,
- 32, 10, 103, 10, 111, 10, 116, 111,
- 117, 115, 101, 32, 107, 110, 111, 119,
- 32, 108, 119, 105, 107, 101, 32, 119,
- 104, 101, 104, 101, 110, 32, 121, 111,
- 117, 115, 101, 32, 103, 111, 116, 32,
- 124, 9, 13, 10, 32, 92, 124, 9,
- 13, 10, 92, 124, 10, 92, 10, 32,
- 92, 124, 9, 13, 10, 32, 34, 35,
- 37, 42, 64, 65, 66, 68, 69, 70,
- 71, 84, 87, 89, 124, 9, 13, 10,
- 110, 10, 117, 10, 104, 10, 101, 117,
- 10, 110, 10, 32, 10, 121, 10, 111,
- 10, 117, 10, 115, 10, 101, 10, 32,
- 10, 103, 10, 111, 10, 116, 10, 116,
- 10, 97, 10, 101, 10, 97, 10, 116,
- 10, 117, 10, 114, 10, 101, 10, 58,
- 10, 105, 10, 118, 10, 117, 10, 104,
- 10, 101, 10, 32, 10, 116, 10, 104,
- 10, 105, 10, 110, 10, 103, 10, 32,
- 10, 111, 10, 102, 10, 32, 10, 105,
- 10, 116, 10, 32, 10, 105, 10, 115,
- 10, 104, 117, 10, 97, 10, 114, 10,
- 114, 10, 105, 10, 109, 10, 101, 10,
- 97, 10, 110, 10, 111, 10, 117, 10,
- 115, 10, 101, 10, 32, 10, 107, 10,
- 110, 10, 111, 10, 119, 10, 32, 10,
- 108, 119, 10, 105, 10, 107, 10, 101,
- 10, 32, 10, 119, 10, 104, 10, 101,
- 10, 104, 10, 101, 10, 110, 10, 32,
- 10, 121, 10, 111, 10, 117, 10, 115,
- 10, 101, 10, 32, 10, 103, 10, 111,
- 10, 116, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 18, 1, 1, 17, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 3, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 14, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 17, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 5,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 10, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 14, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 4, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 14,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 2, 4, 3, 2, 4, 17, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 1, 0, 0, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 20, 22, 24, 43, 45, 47,
- 50, 53, 58, 63, 68, 73, 77, 81,
- 84, 86, 88, 90, 92, 94, 96, 98,
- 100, 102, 104, 106, 108, 110, 112, 114,
- 116, 119, 122, 127, 134, 139, 141, 143,
- 145, 149, 151, 153, 155, 157, 159, 161,
- 163, 165, 167, 169, 171, 173, 175, 177,
- 179, 181, 183, 185, 187, 189, 191, 193,
- 195, 197, 199, 201, 203, 205, 207, 209,
- 211, 213, 215, 217, 219, 235, 238, 241,
- 244, 247, 250, 253, 256, 259, 262, 265,
- 268, 271, 274, 277, 280, 299, 301, 303,
- 305, 307, 309, 311, 313, 315, 317, 319,
- 326, 329, 332, 335, 338, 341, 344, 347,
- 349, 351, 353, 355, 357, 359, 361, 363,
- 365, 377, 380, 383, 386, 389, 392, 395,
- 398, 401, 404, 407, 410, 413, 416, 419,
- 422, 425, 428, 431, 434, 437, 440, 443,
- 446, 449, 452, 455, 458, 461, 464, 467,
- 470, 473, 476, 479, 482, 485, 488, 491,
- 494, 497, 500, 503, 506, 509, 512, 515,
- 518, 521, 524, 527, 530, 533, 536, 539,
- 542, 545, 548, 551, 554, 557, 560, 563,
- 566, 569, 572, 575, 578, 581, 584, 587,
- 590, 593, 596, 598, 600, 602, 604, 606,
- 608, 610, 612, 614, 616, 618, 620, 622,
- 624, 626, 628, 630, 632, 634, 636, 638,
- 640, 642, 658, 661, 664, 667, 670, 673,
- 676, 679, 682, 685, 688, 691, 694, 697,
- 700, 703, 706, 709, 712, 717, 720, 723,
- 726, 729, 732, 735, 738, 741, 744, 747,
- 750, 753, 756, 759, 762, 765, 768, 771,
- 774, 777, 780, 783, 786, 789, 792, 795,
- 798, 801, 804, 807, 810, 813, 816, 819,
- 822, 825, 828, 831, 834, 837, 840, 843,
- 846, 849, 852, 855, 858, 861, 864, 867,
- 870, 873, 876, 879, 882, 885, 888, 891,
- 894, 898, 901, 904, 907, 910, 913, 916,
- 919, 922, 925, 928, 931, 934, 937, 940,
- 943, 946, 949, 952, 956, 959, 962, 965,
- 968, 971, 974, 977, 980, 983, 986, 989,
- 992, 995, 998, 1001, 1004, 1007, 1010, 1013,
- 1016, 1019, 1021, 1023, 1025, 1027, 1029, 1031,
- 1033, 1035, 1037, 1039, 1041, 1043, 1045, 1047,
- 1063, 1066, 1069, 1072, 1075, 1078, 1081, 1084,
- 1087, 1090, 1093, 1096, 1099, 1102, 1105, 1108,
- 1111, 1114, 1117, 1121, 1124, 1127, 1130, 1133,
- 1136, 1139, 1142, 1145, 1148, 1151, 1154, 1157,
- 1160, 1163, 1166, 1169, 1172, 1175, 1178, 1181,
- 1184, 1187, 1190, 1193, 1196, 1199, 1202, 1205,
- 1208, 1211, 1214, 1217, 1220, 1223, 1226, 1229,
- 1232, 1235, 1238, 1241, 1244, 1247, 1250, 1253,
- 1256, 1259, 1262, 1265, 1268, 1271, 1275, 1278,
- 1281, 1284, 1287, 1290, 1293, 1296, 1299, 1302,
- 1305, 1308, 1311, 1314, 1317, 1320, 1323, 1326,
- 1329, 1332, 1335, 1337, 1339, 1341, 1343, 1345,
- 1347, 1349, 1351, 1353, 1355, 1358, 1360, 1362,
- 1364, 1366, 1368, 1370, 1372, 1374, 1376, 1378,
- 1380, 1382, 1384, 1386, 1388, 1390, 1392, 1394,
- 1396, 1398, 1402, 1408, 1412, 1415, 1421, 1440,
- 1443, 1446, 1449, 1453, 1456, 1459, 1462, 1465,
- 1468, 1471, 1474, 1477, 1480, 1483, 1486, 1489,
- 1492, 1495, 1498, 1501, 1504, 1507, 1510, 1513,
- 1516, 1519, 1522, 1525, 1528, 1531, 1534, 1537,
- 1540, 1543, 1546, 1549, 1552, 1555, 1558, 1561,
- 1564, 1567, 1570, 1573, 1577, 1580, 1583, 1586,
- 1589, 1592, 1595, 1598, 1601, 1604, 1607, 1610,
- 1613, 1616, 1619, 1622, 1625, 1628, 1631, 1635,
- 1638, 1641, 1644, 1647, 1650, 1653, 1656, 1659,
- 1662, 1665, 1668, 1671, 1674, 1677, 1680, 1683,
- 1686, 1689, 1692, 1695
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 38, 40, 93, 111, 194, 197, 336,
- 442, 473, 4, 0, 3, 0, 4, 0,
- 4, 4, 5, 15, 17, 31, 34, 37,
- 38, 40, 93, 111, 194, 197, 336, 442,
- 473, 4, 0, 6, 0, 7, 0, 9,
- 8, 8, 9, 8, 8, 10, 10, 11,
- 10, 10, 10, 10, 11, 10, 10, 10,
- 10, 12, 10, 10, 10, 10, 13, 10,
- 10, 4, 14, 14, 0, 4, 14, 14,
- 0, 4, 16, 15, 4, 0, 18, 0,
- 19, 0, 20, 0, 21, 0, 22, 0,
- 23, 0, 24, 0, 25, 0, 26, 0,
- 27, 0, 28, 0, 29, 0, 30, 0,
- 563, 0, 32, 0, 4, 16, 33, 4,
- 16, 33, 0, 0, 0, 0, 35, 36,
- 4, 36, 36, 34, 35, 35, 4, 36,
- 34, 36, 0, 31, 0, 39, 0, 31,
- 0, 41, 54, 37, 0, 42, 0, 43,
- 0, 44, 0, 45, 0, 46, 0, 47,
- 0, 48, 0, 49, 0, 50, 0, 51,
- 0, 52, 0, 53, 0, 31, 0, 55,
- 0, 56, 0, 57, 0, 58, 0, 59,
- 0, 60, 0, 61, 0, 62, 0, 63,
- 0, 64, 0, 65, 0, 66, 0, 67,
- 0, 68, 0, 69, 0, 70, 0, 71,
- 0, 72, 0, 73, 0, 74, 0, 76,
- 75, 76, 75, 76, 76, 4, 77, 91,
- 4, 479, 480, 482, 496, 503, 506, 523,
- 532, 76, 75, 76, 78, 75, 76, 79,
- 75, 76, 80, 75, 76, 81, 75, 76,
- 82, 75, 76, 83, 75, 76, 84, 75,
- 76, 85, 75, 76, 86, 75, 76, 87,
- 75, 76, 88, 75, 76, 89, 75, 76,
- 90, 75, 76, 4, 75, 76, 92, 75,
- 4, 4, 5, 15, 17, 31, 34, 37,
- 38, 40, 93, 111, 194, 197, 336, 442,
- 473, 4, 0, 94, 0, 95, 0, 96,
- 0, 97, 0, 98, 0, 99, 0, 100,
- 0, 101, 0, 103, 102, 103, 102, 103,
- 103, 4, 104, 4, 103, 102, 103, 105,
- 102, 103, 106, 102, 103, 107, 102, 103,
- 108, 102, 103, 109, 102, 103, 110, 102,
- 103, 92, 102, 112, 0, 113, 0, 114,
- 0, 115, 0, 116, 0, 117, 0, 118,
- 0, 120, 119, 120, 119, 120, 120, 4,
- 121, 4, 135, 156, 163, 169, 185, 120,
- 119, 120, 122, 119, 120, 123, 119, 120,
- 124, 119, 120, 125, 119, 120, 126, 119,
- 120, 127, 119, 120, 128, 119, 120, 129,
- 119, 120, 130, 119, 120, 131, 119, 120,
- 132, 119, 120, 133, 119, 120, 134, 119,
- 120, 4, 119, 120, 136, 119, 120, 137,
- 119, 120, 138, 119, 120, 139, 119, 120,
- 140, 119, 120, 141, 119, 120, 142, 119,
- 120, 143, 119, 120, 144, 119, 120, 145,
- 119, 120, 146, 119, 120, 147, 119, 120,
- 148, 119, 120, 149, 119, 120, 150, 119,
- 120, 151, 119, 120, 152, 119, 120, 153,
- 119, 120, 154, 119, 120, 155, 119, 120,
- 92, 119, 120, 157, 119, 120, 158, 119,
- 120, 159, 119, 120, 160, 119, 120, 161,
- 119, 120, 162, 119, 120, 155, 119, 120,
- 164, 119, 120, 165, 119, 120, 166, 119,
- 120, 167, 119, 120, 168, 119, 120, 155,
- 119, 120, 170, 119, 120, 171, 119, 120,
- 172, 119, 120, 173, 119, 120, 174, 119,
- 120, 175, 119, 120, 176, 119, 120, 177,
- 119, 120, 178, 119, 120, 179, 119, 120,
- 180, 119, 120, 181, 119, 120, 182, 119,
- 120, 183, 119, 120, 184, 119, 120, 162,
- 119, 120, 186, 119, 120, 187, 119, 120,
- 188, 119, 120, 189, 119, 120, 190, 119,
- 120, 191, 119, 120, 192, 119, 120, 193,
- 119, 120, 183, 119, 195, 0, 196, 0,
- 37, 0, 198, 0, 199, 0, 200, 0,
- 201, 0, 202, 0, 203, 0, 204, 0,
- 205, 0, 206, 0, 207, 0, 208, 0,
- 209, 0, 210, 0, 211, 0, 212, 0,
- 213, 0, 214, 0, 215, 0, 217, 216,
- 217, 216, 217, 217, 4, 218, 232, 4,
- 233, 234, 236, 270, 276, 279, 296, 305,
- 217, 216, 217, 219, 216, 217, 220, 216,
- 217, 221, 216, 217, 222, 216, 217, 223,
- 216, 217, 224, 216, 217, 225, 216, 217,
- 226, 216, 217, 227, 216, 217, 228, 216,
- 217, 229, 216, 217, 230, 216, 217, 231,
- 216, 217, 4, 216, 217, 92, 216, 217,
- 232, 216, 217, 235, 216, 217, 232, 216,
- 217, 237, 250, 233, 216, 217, 238, 216,
- 217, 239, 216, 217, 240, 216, 217, 241,
- 216, 217, 242, 216, 217, 243, 216, 217,
- 244, 216, 217, 245, 216, 217, 246, 216,
- 217, 247, 216, 217, 248, 216, 217, 249,
- 216, 217, 232, 216, 217, 251, 216, 217,
- 252, 216, 217, 253, 216, 217, 254, 216,
- 217, 255, 216, 217, 256, 216, 217, 257,
- 216, 217, 258, 216, 217, 259, 216, 217,
- 260, 216, 217, 261, 216, 217, 262, 216,
- 217, 263, 216, 217, 264, 216, 217, 265,
- 216, 217, 266, 216, 217, 267, 216, 217,
- 268, 216, 217, 269, 216, 217, 92, 216,
- 217, 271, 216, 217, 272, 216, 217, 273,
- 216, 217, 274, 216, 217, 275, 216, 217,
- 269, 216, 217, 277, 216, 217, 278, 216,
- 217, 233, 216, 217, 280, 216, 217, 281,
- 216, 217, 282, 216, 217, 283, 216, 217,
- 284, 216, 217, 285, 216, 217, 286, 216,
- 217, 287, 216, 217, 288, 216, 217, 289,
- 216, 217, 290, 216, 217, 291, 216, 217,
- 292, 216, 217, 293, 216, 217, 294, 216,
- 217, 295, 216, 217, 269, 216, 217, 297,
- 233, 216, 217, 298, 216, 217, 299, 216,
- 217, 300, 216, 217, 301, 216, 217, 302,
- 216, 217, 303, 216, 217, 304, 216, 217,
- 293, 216, 217, 306, 216, 217, 307, 216,
- 217, 308, 216, 217, 309, 216, 217, 310,
- 216, 217, 311, 216, 217, 312, 216, 217,
- 313, 216, 217, 314, 216, 217, 315, 216,
- 217, 316, 323, 216, 217, 317, 216, 217,
- 318, 216, 217, 319, 216, 217, 320, 216,
- 217, 321, 216, 217, 322, 216, 217, 233,
- 216, 217, 324, 216, 217, 325, 216, 217,
- 326, 216, 217, 327, 216, 217, 328, 216,
- 217, 329, 216, 217, 330, 216, 217, 331,
- 216, 217, 332, 216, 217, 333, 216, 217,
- 334, 216, 217, 335, 216, 217, 232, 216,
- 337, 37, 0, 338, 0, 339, 0, 340,
- 0, 341, 0, 342, 0, 343, 0, 344,
- 0, 345, 0, 346, 0, 347, 0, 348,
- 0, 349, 0, 351, 350, 351, 350, 351,
- 351, 4, 352, 366, 4, 367, 368, 370,
- 384, 391, 394, 393, 411, 351, 350, 351,
- 353, 350, 351, 354, 350, 351, 355, 350,
- 351, 356, 350, 351, 357, 350, 351, 358,
- 350, 351, 359, 350, 351, 360, 350, 351,
- 361, 350, 351, 362, 350, 351, 363, 350,
- 351, 364, 350, 351, 365, 350, 351, 4,
- 350, 351, 92, 350, 351, 366, 350, 351,
- 369, 350, 351, 366, 350, 351, 371, 367,
- 350, 351, 372, 350, 351, 373, 350, 351,
- 374, 350, 351, 375, 350, 351, 376, 350,
- 351, 377, 350, 351, 378, 350, 351, 379,
- 350, 351, 380, 350, 351, 381, 350, 351,
- 382, 350, 351, 383, 350, 351, 366, 350,
- 351, 385, 350, 351, 386, 350, 351, 387,
- 350, 351, 388, 350, 351, 389, 350, 351,
- 390, 350, 351, 92, 350, 351, 392, 350,
- 351, 393, 350, 351, 367, 350, 351, 395,
- 350, 351, 396, 350, 351, 397, 350, 351,
- 398, 350, 351, 399, 350, 351, 400, 350,
- 351, 401, 350, 351, 402, 350, 351, 403,
- 350, 351, 404, 350, 351, 405, 350, 351,
- 406, 350, 351, 407, 350, 351, 408, 350,
- 351, 409, 350, 351, 410, 350, 351, 390,
- 350, 351, 412, 350, 351, 413, 350, 351,
- 414, 350, 351, 415, 350, 351, 416, 350,
- 351, 417, 350, 351, 418, 350, 351, 419,
- 350, 351, 420, 350, 351, 421, 350, 351,
- 422, 429, 350, 351, 423, 350, 351, 424,
- 350, 351, 425, 350, 351, 426, 350, 351,
- 427, 350, 351, 428, 350, 351, 367, 350,
- 351, 430, 350, 351, 431, 350, 351, 432,
- 350, 351, 433, 350, 351, 434, 350, 351,
- 435, 350, 351, 436, 350, 351, 437, 350,
- 351, 438, 350, 351, 439, 350, 351, 440,
- 350, 351, 441, 350, 351, 366, 350, 443,
- 0, 444, 0, 445, 0, 446, 0, 447,
- 0, 448, 0, 449, 0, 450, 0, 451,
- 0, 452, 0, 453, 460, 0, 454, 0,
- 455, 0, 456, 0, 457, 0, 458, 0,
- 459, 0, 37, 0, 461, 0, 462, 0,
- 463, 0, 464, 0, 465, 0, 466, 0,
- 467, 0, 468, 0, 469, 0, 470, 0,
- 471, 0, 472, 0, 31, 0, 473, 474,
- 473, 0, 478, 477, 476, 474, 477, 475,
- 0, 476, 474, 475, 0, 476, 475, 478,
- 477, 476, 474, 477, 475, 478, 478, 5,
- 15, 17, 31, 34, 37, 38, 40, 93,
- 111, 194, 197, 336, 442, 473, 478, 0,
- 76, 91, 75, 76, 481, 75, 76, 91,
- 75, 76, 483, 479, 75, 76, 484, 75,
- 76, 485, 75, 76, 486, 75, 76, 487,
- 75, 76, 488, 75, 76, 489, 75, 76,
- 490, 75, 76, 491, 75, 76, 492, 75,
- 76, 493, 75, 76, 494, 75, 76, 495,
- 75, 76, 91, 75, 76, 497, 75, 76,
- 498, 75, 76, 499, 75, 76, 500, 75,
- 76, 501, 75, 76, 502, 75, 76, 92,
- 75, 76, 504, 75, 76, 505, 75, 76,
- 479, 75, 76, 507, 75, 76, 508, 75,
- 76, 509, 75, 76, 510, 75, 76, 511,
- 75, 76, 512, 75, 76, 513, 75, 76,
- 514, 75, 76, 515, 75, 76, 516, 75,
- 76, 517, 75, 76, 518, 75, 76, 519,
- 75, 76, 520, 75, 76, 521, 75, 76,
- 522, 75, 76, 502, 75, 76, 524, 479,
- 75, 76, 525, 75, 76, 526, 75, 76,
- 527, 75, 76, 528, 75, 76, 529, 75,
- 76, 530, 75, 76, 531, 75, 76, 520,
- 75, 76, 533, 75, 76, 534, 75, 76,
- 535, 75, 76, 536, 75, 76, 537, 75,
- 76, 538, 75, 76, 539, 75, 76, 540,
- 75, 76, 541, 75, 76, 542, 75, 76,
- 543, 550, 75, 76, 544, 75, 76, 545,
- 75, 76, 546, 75, 76, 547, 75, 76,
- 548, 75, 76, 549, 75, 76, 479, 75,
- 76, 551, 75, 76, 552, 75, 76, 553,
- 75, 76, 554, 75, 76, 555, 75, 76,
- 556, 75, 76, 557, 75, 76, 558, 75,
- 76, 559, 75, 76, 560, 75, 76, 561,
- 75, 76, 562, 75, 76, 91, 75, 0,
- 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 29, 35, 0, 43, 0, 43, 0, 43,
- 54, 0, 5, 1, 0, 29, 1, 29,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 139,
- 48, 9, 106, 11, 0, 134, 45, 45,
- 45, 3, 122, 33, 33, 33, 0, 122,
- 33, 33, 33, 0, 122, 33, 0, 33,
- 0, 102, 7, 7, 43, 54, 0, 0,
- 43, 114, 25, 0, 54, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 149, 126, 57, 110,
- 23, 0, 43, 43, 43, 43, 0, 27,
- 118, 27, 27, 51, 27, 0, 54, 0,
- 1, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 72, 33, 84,
- 72, 84, 84, 84, 84, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 15, 0, 54, 15, 0,
- 130, 31, 60, 57, 31, 63, 57, 63,
- 63, 63, 63, 63, 63, 63, 63, 63,
- 66, 31, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 81, 84, 81, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 21, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 69,
- 33, 69, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 75, 33, 84, 75,
- 84, 84, 84, 84, 84, 84, 84, 84,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 17, 0, 54, 17, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 78, 33, 84, 78, 84, 84, 84,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 19,
- 0, 54, 19, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 19, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 0, 43, 54, 37, 37, 87, 37, 37,
- 43, 0, 39, 0, 43, 0, 0, 54,
- 0, 0, 39, 0, 0, 54, 0, 93,
- 90, 41, 96, 90, 96, 96, 96, 96,
- 96, 96, 96, 96, 96, 99, 0, 43,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 563;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 1238 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
-
- #line 1245 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1535 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1598 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_scouse.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_en_scouse()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "En_scouse", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/en_scouse.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/en_scouse.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 20, 21, 22, 41, 42, 43,
- 45, 47, 52, 57, 62, 67, 71, 75,
- 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 95, 97, 102, 109, 114, 115, 116,
- 117, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 138, 139, 140, 141, 142,
- 143, 144, 145, 146, 147, 148, 149, 150,
- 151, 152, 153, 154, 155, 171, 173, 175,
- 177, 179, 181, 183, 185, 187, 189, 191,
- 193, 195, 197, 199, 201, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230,
- 237, 239, 241, 243, 245, 247, 249, 251,
- 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 272, 274, 276, 278, 280, 282, 284,
- 286, 288, 290, 292, 294, 296, 298, 300,
- 302, 304, 306, 308, 310, 312, 314, 316,
- 318, 320, 322, 324, 326, 328, 330, 332,
- 334, 336, 338, 340, 342, 344, 346, 348,
- 350, 352, 354, 356, 358, 360, 362, 364,
- 366, 368, 370, 372, 374, 376, 378, 380,
- 382, 384, 386, 388, 390, 392, 394, 396,
- 398, 400, 402, 404, 406, 408, 410, 412,
- 414, 416, 418, 419, 420, 421, 422, 423,
- 424, 425, 426, 427, 428, 429, 430, 431,
- 432, 433, 434, 435, 436, 437, 438, 439,
- 440, 441, 457, 459, 461, 463, 465, 467,
- 469, 471, 473, 475, 477, 479, 481, 483,
- 485, 487, 489, 491, 493, 497, 499, 501,
- 503, 505, 507, 509, 511, 513, 515, 517,
- 519, 521, 523, 525, 527, 529, 531, 533,
- 535, 537, 539, 541, 543, 545, 547, 549,
- 551, 553, 555, 557, 559, 561, 563, 565,
- 567, 569, 571, 573, 575, 577, 579, 581,
- 583, 585, 587, 589, 591, 593, 595, 597,
- 599, 601, 603, 605, 607, 609, 611, 613,
- 615, 618, 620, 622, 624, 626, 628, 630,
- 632, 634, 636, 638, 640, 642, 644, 646,
- 648, 650, 652, 654, 657, 659, 661, 663,
- 665, 667, 669, 671, 673, 675, 677, 679,
- 681, 683, 685, 687, 689, 691, 693, 695,
- 697, 699, 700, 701, 702, 703, 704, 705,
- 706, 707, 708, 709, 710, 711, 712, 713,
- 729, 731, 733, 735, 737, 739, 741, 743,
- 745, 747, 749, 751, 753, 755, 757, 759,
- 761, 763, 765, 768, 770, 772, 774, 776,
- 778, 780, 782, 784, 786, 788, 790, 792,
- 794, 796, 798, 800, 802, 804, 806, 808,
- 810, 812, 814, 816, 818, 820, 822, 824,
- 826, 828, 830, 832, 834, 836, 838, 840,
- 842, 844, 846, 848, 850, 852, 854, 856,
- 858, 860, 862, 864, 866, 868, 871, 873,
- 875, 877, 879, 881, 883, 885, 887, 889,
- 891, 893, 895, 897, 899, 901, 903, 905,
- 907, 909, 911, 912, 913, 914, 915, 916,
- 917, 918, 919, 920, 921, 923, 924, 925,
- 926, 927, 928, 929, 930, 931, 932, 933,
- 934, 935, 936, 937, 938, 939, 940, 941,
- 942, 943, 947, 953, 956, 958, 964, 983,
- 985, 987, 989, 992, 994, 996, 998, 1000,
- 1002, 1004, 1006, 1008, 1010, 1012, 1014, 1016,
- 1018, 1020, 1022, 1024, 1026, 1028, 1030, 1032,
- 1034, 1036, 1038, 1040, 1042, 1044, 1046, 1048,
- 1050, 1052, 1054, 1056, 1058, 1060, 1062, 1064,
- 1066, 1068, 1070, 1072, 1075, 1077, 1079, 1081,
- 1083, 1085, 1087, 1089, 1091, 1093, 1095, 1097,
- 1099, 1101, 1103, 1105, 1107, 1109, 1111, 1114,
- 1116, 1118, 1120, 1122, 1124, 1126, 1128, 1130,
- 1132, 1134, 1136, 1138, 1140, 1142, 1144, 1146,
- 1148, 1150, 1152, 1154
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 68, 69, 70, 71, 84, 87,
- 89, 124, 9, 13, -69, -65, 10, 32,
- 34, 35, 37, 42, 64, 65, 66, 68,
- 69, 70, 71, 84, 87, 89, 124, 9,
- 13, 34, 34, 10, 13, 10, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 9, 13, 10,
- 32, 9, 13, 10, 13, 10, 95, 70,
- 69, 65, 84, 85, 82, 69, 95, 69,
- 78, 68, 95, 37, 32, 10, 13, 10,
- 13, 13, 32, 64, 9, 10, 9, 10,
- 13, 32, 64, 11, 12, 10, 32, 64,
- 9, 13, 110, 117, 104, 101, 105, 117,
- 110, 32, 121, 111, 117, 115, 101, 32,
- 103, 111, 116, 116, 97, 115, 32, 105,
- 115, 32, 119, 104, 97, 116, 32, 119,
- 101, 110, 116, 32, 100, 111, 119, 110,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 65, 66, 68, 70, 71, 84, 87,
- 89, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 68, 69, 70, 71, 84, 87,
- 89, 124, 9, 13, 120, 97, 109, 112,
- 108, 101, 115, 58, 10, 10, 10, 32,
- 35, 70, 124, 9, 13, 10, 101, 10,
- 97, 10, 116, 10, 117, 10, 114, 10,
- 101, 10, 58, 101, 97, 116, 117, 114,
- 101, 58, 10, 10, 10, 32, 35, 37,
- 64, 68, 69, 70, 84, 87, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 105, 10, 115,
- 10, 32, 10, 105, 10, 115, 10, 32,
- 10, 119, 10, 104, 10, 97, 10, 116,
- 10, 32, 10, 119, 10, 101, 10, 110,
- 10, 116, 10, 32, 10, 100, 10, 111,
- 10, 119, 10, 110, 10, 58, 10, 120,
- 10, 97, 10, 109, 10, 112, 10, 108,
- 10, 101, 10, 115, 10, 101, 10, 97,
- 10, 116, 10, 117, 10, 114, 10, 101,
- 10, 104, 10, 101, 10, 32, 10, 116,
- 10, 104, 10, 105, 10, 110, 10, 103,
- 10, 32, 10, 111, 10, 102, 10, 32,
- 10, 105, 10, 116, 10, 32, 10, 105,
- 10, 104, 10, 97, 10, 114, 10, 114,
- 10, 105, 10, 109, 10, 101, 10, 97,
- 10, 110, 105, 118, 117, 104, 101, 32,
- 116, 104, 105, 110, 103, 32, 111, 102,
- 32, 105, 116, 32, 105, 115, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 65,
- 66, 68, 70, 71, 84, 87, 89, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 110, 10, 117, 10, 104, 10, 101, 105,
- 117, 10, 110, 10, 32, 10, 121, 10,
- 111, 10, 117, 10, 115, 10, 101, 10,
- 32, 10, 103, 10, 111, 10, 116, 10,
- 116, 10, 97, 10, 115, 10, 32, 10,
- 105, 10, 115, 10, 32, 10, 119, 10,
- 104, 10, 97, 10, 116, 10, 32, 10,
- 119, 10, 101, 10, 110, 10, 116, 10,
- 32, 10, 100, 10, 111, 10, 119, 10,
- 110, 10, 58, 10, 101, 10, 97, 10,
- 116, 10, 117, 10, 114, 10, 101, 10,
- 105, 10, 118, 10, 117, 10, 104, 10,
- 101, 10, 32, 10, 116, 10, 104, 10,
- 105, 10, 110, 10, 103, 10, 32, 10,
- 111, 10, 102, 10, 32, 10, 105, 10,
- 116, 10, 32, 10, 105, 10, 115, 10,
- 104, 117, 10, 97, 10, 114, 10, 114,
- 10, 105, 10, 109, 10, 101, 10, 97,
- 10, 110, 10, 111, 10, 117, 10, 115,
- 10, 101, 10, 32, 10, 107, 10, 110,
- 10, 111, 10, 119, 10, 32, 10, 108,
- 119, 10, 105, 10, 107, 10, 101, 10,
- 32, 10, 119, 10, 104, 10, 101, 10,
- 104, 10, 101, 10, 110, 10, 32, 10,
- 121, 10, 111, 10, 117, 10, 115, 10,
- 101, 10, 32, 10, 103, 10, 111, 10,
- 116, 104, 117, 97, 114, 114, 105, 109,
- 101, 97, 110, 32, 105, 115, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 65,
- 66, 68, 70, 71, 84, 87, 89, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 110, 10, 117, 10, 104, 10, 101, 117,
- 10, 110, 10, 32, 10, 121, 10, 111,
- 10, 117, 10, 115, 10, 101, 10, 32,
- 10, 103, 10, 111, 10, 116, 10, 116,
- 10, 97, 10, 101, 10, 97, 10, 116,
- 10, 117, 10, 114, 10, 101, 10, 58,
- 10, 105, 10, 118, 10, 117, 10, 104,
- 10, 101, 10, 32, 10, 116, 10, 104,
- 10, 105, 10, 110, 10, 103, 10, 32,
- 10, 111, 10, 102, 10, 32, 10, 105,
- 10, 116, 10, 32, 10, 105, 10, 115,
- 10, 111, 10, 117, 10, 115, 10, 101,
- 10, 32, 10, 107, 10, 110, 10, 111,
- 10, 119, 10, 32, 10, 108, 119, 10,
- 105, 10, 107, 10, 101, 10, 32, 10,
- 119, 10, 104, 10, 101, 10, 104, 10,
- 101, 10, 110, 10, 32, 10, 121, 10,
- 111, 10, 117, 10, 115, 10, 101, 10,
- 32, 10, 103, 10, 111, 10, 116, 111,
- 117, 115, 101, 32, 107, 110, 111, 119,
- 32, 108, 119, 105, 107, 101, 32, 119,
- 104, 101, 104, 101, 110, 32, 121, 111,
- 117, 115, 101, 32, 103, 111, 116, 32,
- 124, 9, 13, 10, 32, 92, 124, 9,
- 13, 10, 92, 124, 10, 92, 10, 32,
- 92, 124, 9, 13, 10, 32, 34, 35,
- 37, 42, 64, 65, 66, 68, 69, 70,
- 71, 84, 87, 89, 124, 9, 13, 10,
- 110, 10, 117, 10, 104, 10, 101, 117,
- 10, 110, 10, 32, 10, 121, 10, 111,
- 10, 117, 10, 115, 10, 101, 10, 32,
- 10, 103, 10, 111, 10, 116, 10, 116,
- 10, 97, 10, 101, 10, 97, 10, 116,
- 10, 117, 10, 114, 10, 101, 10, 58,
- 10, 105, 10, 118, 10, 117, 10, 104,
- 10, 101, 10, 32, 10, 116, 10, 104,
- 10, 105, 10, 110, 10, 103, 10, 32,
- 10, 111, 10, 102, 10, 32, 10, 105,
- 10, 116, 10, 32, 10, 105, 10, 115,
- 10, 104, 117, 10, 97, 10, 114, 10,
- 114, 10, 105, 10, 109, 10, 101, 10,
- 97, 10, 110, 10, 111, 10, 117, 10,
- 115, 10, 101, 10, 32, 10, 107, 10,
- 110, 10, 111, 10, 119, 10, 32, 10,
- 108, 119, 10, 105, 10, 107, 10, 101,
- 10, 32, 10, 119, 10, 104, 10, 101,
- 10, 104, 10, 101, 10, 110, 10, 32,
- 10, 121, 10, 111, 10, 117, 10, 115,
- 10, 101, 10, 32, 10, 103, 10, 111,
- 10, 116, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 18, 1, 1, 17, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 3, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 14, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 17, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 5,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 10, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 14, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 4, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 14,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 2, 4, 3, 2, 4, 17, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 1, 0, 0, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 20, 22, 24, 43, 45, 47,
- 50, 53, 58, 63, 68, 73, 77, 81,
- 84, 86, 88, 90, 92, 94, 96, 98,
- 100, 102, 104, 106, 108, 110, 112, 114,
- 116, 119, 122, 127, 134, 139, 141, 143,
- 145, 149, 151, 153, 155, 157, 159, 161,
- 163, 165, 167, 169, 171, 173, 175, 177,
- 179, 181, 183, 185, 187, 189, 191, 193,
- 195, 197, 199, 201, 203, 205, 207, 209,
- 211, 213, 215, 217, 219, 235, 238, 241,
- 244, 247, 250, 253, 256, 259, 262, 265,
- 268, 271, 274, 277, 280, 299, 301, 303,
- 305, 307, 309, 311, 313, 315, 317, 319,
- 326, 329, 332, 335, 338, 341, 344, 347,
- 349, 351, 353, 355, 357, 359, 361, 363,
- 365, 377, 380, 383, 386, 389, 392, 395,
- 398, 401, 404, 407, 410, 413, 416, 419,
- 422, 425, 428, 431, 434, 437, 440, 443,
- 446, 449, 452, 455, 458, 461, 464, 467,
- 470, 473, 476, 479, 482, 485, 488, 491,
- 494, 497, 500, 503, 506, 509, 512, 515,
- 518, 521, 524, 527, 530, 533, 536, 539,
- 542, 545, 548, 551, 554, 557, 560, 563,
- 566, 569, 572, 575, 578, 581, 584, 587,
- 590, 593, 596, 598, 600, 602, 604, 606,
- 608, 610, 612, 614, 616, 618, 620, 622,
- 624, 626, 628, 630, 632, 634, 636, 638,
- 640, 642, 658, 661, 664, 667, 670, 673,
- 676, 679, 682, 685, 688, 691, 694, 697,
- 700, 703, 706, 709, 712, 717, 720, 723,
- 726, 729, 732, 735, 738, 741, 744, 747,
- 750, 753, 756, 759, 762, 765, 768, 771,
- 774, 777, 780, 783, 786, 789, 792, 795,
- 798, 801, 804, 807, 810, 813, 816, 819,
- 822, 825, 828, 831, 834, 837, 840, 843,
- 846, 849, 852, 855, 858, 861, 864, 867,
- 870, 873, 876, 879, 882, 885, 888, 891,
- 894, 898, 901, 904, 907, 910, 913, 916,
- 919, 922, 925, 928, 931, 934, 937, 940,
- 943, 946, 949, 952, 956, 959, 962, 965,
- 968, 971, 974, 977, 980, 983, 986, 989,
- 992, 995, 998, 1001, 1004, 1007, 1010, 1013,
- 1016, 1019, 1021, 1023, 1025, 1027, 1029, 1031,
- 1033, 1035, 1037, 1039, 1041, 1043, 1045, 1047,
- 1063, 1066, 1069, 1072, 1075, 1078, 1081, 1084,
- 1087, 1090, 1093, 1096, 1099, 1102, 1105, 1108,
- 1111, 1114, 1117, 1121, 1124, 1127, 1130, 1133,
- 1136, 1139, 1142, 1145, 1148, 1151, 1154, 1157,
- 1160, 1163, 1166, 1169, 1172, 1175, 1178, 1181,
- 1184, 1187, 1190, 1193, 1196, 1199, 1202, 1205,
- 1208, 1211, 1214, 1217, 1220, 1223, 1226, 1229,
- 1232, 1235, 1238, 1241, 1244, 1247, 1250, 1253,
- 1256, 1259, 1262, 1265, 1268, 1271, 1275, 1278,
- 1281, 1284, 1287, 1290, 1293, 1296, 1299, 1302,
- 1305, 1308, 1311, 1314, 1317, 1320, 1323, 1326,
- 1329, 1332, 1335, 1337, 1339, 1341, 1343, 1345,
- 1347, 1349, 1351, 1353, 1355, 1358, 1360, 1362,
- 1364, 1366, 1368, 1370, 1372, 1374, 1376, 1378,
- 1380, 1382, 1384, 1386, 1388, 1390, 1392, 1394,
- 1396, 1398, 1402, 1408, 1412, 1415, 1421, 1440,
- 1443, 1446, 1449, 1453, 1456, 1459, 1462, 1465,
- 1468, 1471, 1474, 1477, 1480, 1483, 1486, 1489,
- 1492, 1495, 1498, 1501, 1504, 1507, 1510, 1513,
- 1516, 1519, 1522, 1525, 1528, 1531, 1534, 1537,
- 1540, 1543, 1546, 1549, 1552, 1555, 1558, 1561,
- 1564, 1567, 1570, 1573, 1577, 1580, 1583, 1586,
- 1589, 1592, 1595, 1598, 1601, 1604, 1607, 1610,
- 1613, 1616, 1619, 1622, 1625, 1628, 1631, 1635,
- 1638, 1641, 1644, 1647, 1650, 1653, 1656, 1659,
- 1662, 1665, 1668, 1671, 1674, 1677, 1680, 1683,
- 1686, 1689, 1692, 1695
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 38, 40, 93, 111, 194, 197, 336,
- 442, 473, 4, 0, 3, 0, 4, 0,
- 4, 4, 5, 15, 17, 31, 34, 37,
- 38, 40, 93, 111, 194, 197, 336, 442,
- 473, 4, 0, 6, 0, 7, 0, 9,
- 8, 8, 9, 8, 8, 10, 10, 11,
- 10, 10, 10, 10, 11, 10, 10, 10,
- 10, 12, 10, 10, 10, 10, 13, 10,
- 10, 4, 14, 14, 0, 4, 14, 14,
- 0, 4, 16, 15, 4, 0, 18, 0,
- 19, 0, 20, 0, 21, 0, 22, 0,
- 23, 0, 24, 0, 25, 0, 26, 0,
- 27, 0, 28, 0, 29, 0, 30, 0,
- 563, 0, 32, 0, 4, 16, 33, 4,
- 16, 33, 0, 0, 0, 0, 35, 36,
- 4, 36, 36, 34, 35, 35, 4, 36,
- 34, 36, 0, 31, 0, 39, 0, 31,
- 0, 41, 54, 37, 0, 42, 0, 43,
- 0, 44, 0, 45, 0, 46, 0, 47,
- 0, 48, 0, 49, 0, 50, 0, 51,
- 0, 52, 0, 53, 0, 31, 0, 55,
- 0, 56, 0, 57, 0, 58, 0, 59,
- 0, 60, 0, 61, 0, 62, 0, 63,
- 0, 64, 0, 65, 0, 66, 0, 67,
- 0, 68, 0, 69, 0, 70, 0, 71,
- 0, 72, 0, 73, 0, 74, 0, 76,
- 75, 76, 75, 76, 76, 4, 77, 91,
- 4, 479, 480, 482, 496, 503, 506, 523,
- 532, 76, 75, 76, 78, 75, 76, 79,
- 75, 76, 80, 75, 76, 81, 75, 76,
- 82, 75, 76, 83, 75, 76, 84, 75,
- 76, 85, 75, 76, 86, 75, 76, 87,
- 75, 76, 88, 75, 76, 89, 75, 76,
- 90, 75, 76, 4, 75, 76, 92, 75,
- 4, 4, 5, 15, 17, 31, 34, 37,
- 38, 40, 93, 111, 194, 197, 336, 442,
- 473, 4, 0, 94, 0, 95, 0, 96,
- 0, 97, 0, 98, 0, 99, 0, 100,
- 0, 101, 0, 103, 102, 103, 102, 103,
- 103, 4, 104, 4, 103, 102, 103, 105,
- 102, 103, 106, 102, 103, 107, 102, 103,
- 108, 102, 103, 109, 102, 103, 110, 102,
- 103, 92, 102, 112, 0, 113, 0, 114,
- 0, 115, 0, 116, 0, 117, 0, 118,
- 0, 120, 119, 120, 119, 120, 120, 4,
- 121, 4, 135, 156, 163, 169, 185, 120,
- 119, 120, 122, 119, 120, 123, 119, 120,
- 124, 119, 120, 125, 119, 120, 126, 119,
- 120, 127, 119, 120, 128, 119, 120, 129,
- 119, 120, 130, 119, 120, 131, 119, 120,
- 132, 119, 120, 133, 119, 120, 134, 119,
- 120, 4, 119, 120, 136, 119, 120, 137,
- 119, 120, 138, 119, 120, 139, 119, 120,
- 140, 119, 120, 141, 119, 120, 142, 119,
- 120, 143, 119, 120, 144, 119, 120, 145,
- 119, 120, 146, 119, 120, 147, 119, 120,
- 148, 119, 120, 149, 119, 120, 150, 119,
- 120, 151, 119, 120, 152, 119, 120, 153,
- 119, 120, 154, 119, 120, 155, 119, 120,
- 92, 119, 120, 157, 119, 120, 158, 119,
- 120, 159, 119, 120, 160, 119, 120, 161,
- 119, 120, 162, 119, 120, 155, 119, 120,
- 164, 119, 120, 165, 119, 120, 166, 119,
- 120, 167, 119, 120, 168, 119, 120, 155,
- 119, 120, 170, 119, 120, 171, 119, 120,
- 172, 119, 120, 173, 119, 120, 174, 119,
- 120, 175, 119, 120, 176, 119, 120, 177,
- 119, 120, 178, 119, 120, 179, 119, 120,
- 180, 119, 120, 181, 119, 120, 182, 119,
- 120, 183, 119, 120, 184, 119, 120, 162,
- 119, 120, 186, 119, 120, 187, 119, 120,
- 188, 119, 120, 189, 119, 120, 190, 119,
- 120, 191, 119, 120, 192, 119, 120, 193,
- 119, 120, 183, 119, 195, 0, 196, 0,
- 37, 0, 198, 0, 199, 0, 200, 0,
- 201, 0, 202, 0, 203, 0, 204, 0,
- 205, 0, 206, 0, 207, 0, 208, 0,
- 209, 0, 210, 0, 211, 0, 212, 0,
- 213, 0, 214, 0, 215, 0, 217, 216,
- 217, 216, 217, 217, 4, 218, 232, 4,
- 233, 234, 236, 270, 276, 279, 296, 305,
- 217, 216, 217, 219, 216, 217, 220, 216,
- 217, 221, 216, 217, 222, 216, 217, 223,
- 216, 217, 224, 216, 217, 225, 216, 217,
- 226, 216, 217, 227, 216, 217, 228, 216,
- 217, 229, 216, 217, 230, 216, 217, 231,
- 216, 217, 4, 216, 217, 92, 216, 217,
- 232, 216, 217, 235, 216, 217, 232, 216,
- 217, 237, 250, 233, 216, 217, 238, 216,
- 217, 239, 216, 217, 240, 216, 217, 241,
- 216, 217, 242, 216, 217, 243, 216, 217,
- 244, 216, 217, 245, 216, 217, 246, 216,
- 217, 247, 216, 217, 248, 216, 217, 249,
- 216, 217, 232, 216, 217, 251, 216, 217,
- 252, 216, 217, 253, 216, 217, 254, 216,
- 217, 255, 216, 217, 256, 216, 217, 257,
- 216, 217, 258, 216, 217, 259, 216, 217,
- 260, 216, 217, 261, 216, 217, 262, 216,
- 217, 263, 216, 217, 264, 216, 217, 265,
- 216, 217, 266, 216, 217, 267, 216, 217,
- 268, 216, 217, 269, 216, 217, 92, 216,
- 217, 271, 216, 217, 272, 216, 217, 273,
- 216, 217, 274, 216, 217, 275, 216, 217,
- 269, 216, 217, 277, 216, 217, 278, 216,
- 217, 233, 216, 217, 280, 216, 217, 281,
- 216, 217, 282, 216, 217, 283, 216, 217,
- 284, 216, 217, 285, 216, 217, 286, 216,
- 217, 287, 216, 217, 288, 216, 217, 289,
- 216, 217, 290, 216, 217, 291, 216, 217,
- 292, 216, 217, 293, 216, 217, 294, 216,
- 217, 295, 216, 217, 269, 216, 217, 297,
- 233, 216, 217, 298, 216, 217, 299, 216,
- 217, 300, 216, 217, 301, 216, 217, 302,
- 216, 217, 303, 216, 217, 304, 216, 217,
- 293, 216, 217, 306, 216, 217, 307, 216,
- 217, 308, 216, 217, 309, 216, 217, 310,
- 216, 217, 311, 216, 217, 312, 216, 217,
- 313, 216, 217, 314, 216, 217, 315, 216,
- 217, 316, 323, 216, 217, 317, 216, 217,
- 318, 216, 217, 319, 216, 217, 320, 216,
- 217, 321, 216, 217, 322, 216, 217, 233,
- 216, 217, 324, 216, 217, 325, 216, 217,
- 326, 216, 217, 327, 216, 217, 328, 216,
- 217, 329, 216, 217, 330, 216, 217, 331,
- 216, 217, 332, 216, 217, 333, 216, 217,
- 334, 216, 217, 335, 216, 217, 232, 216,
- 337, 37, 0, 338, 0, 339, 0, 340,
- 0, 341, 0, 342, 0, 343, 0, 344,
- 0, 345, 0, 346, 0, 347, 0, 348,
- 0, 349, 0, 351, 350, 351, 350, 351,
- 351, 4, 352, 366, 4, 367, 368, 370,
- 384, 391, 394, 393, 411, 351, 350, 351,
- 353, 350, 351, 354, 350, 351, 355, 350,
- 351, 356, 350, 351, 357, 350, 351, 358,
- 350, 351, 359, 350, 351, 360, 350, 351,
- 361, 350, 351, 362, 350, 351, 363, 350,
- 351, 364, 350, 351, 365, 350, 351, 4,
- 350, 351, 92, 350, 351, 366, 350, 351,
- 369, 350, 351, 366, 350, 351, 371, 367,
- 350, 351, 372, 350, 351, 373, 350, 351,
- 374, 350, 351, 375, 350, 351, 376, 350,
- 351, 377, 350, 351, 378, 350, 351, 379,
- 350, 351, 380, 350, 351, 381, 350, 351,
- 382, 350, 351, 383, 350, 351, 366, 350,
- 351, 385, 350, 351, 386, 350, 351, 387,
- 350, 351, 388, 350, 351, 389, 350, 351,
- 390, 350, 351, 92, 350, 351, 392, 350,
- 351, 393, 350, 351, 367, 350, 351, 395,
- 350, 351, 396, 350, 351, 397, 350, 351,
- 398, 350, 351, 399, 350, 351, 400, 350,
- 351, 401, 350, 351, 402, 350, 351, 403,
- 350, 351, 404, 350, 351, 405, 350, 351,
- 406, 350, 351, 407, 350, 351, 408, 350,
- 351, 409, 350, 351, 410, 350, 351, 390,
- 350, 351, 412, 350, 351, 413, 350, 351,
- 414, 350, 351, 415, 350, 351, 416, 350,
- 351, 417, 350, 351, 418, 350, 351, 419,
- 350, 351, 420, 350, 351, 421, 350, 351,
- 422, 429, 350, 351, 423, 350, 351, 424,
- 350, 351, 425, 350, 351, 426, 350, 351,
- 427, 350, 351, 428, 350, 351, 367, 350,
- 351, 430, 350, 351, 431, 350, 351, 432,
- 350, 351, 433, 350, 351, 434, 350, 351,
- 435, 350, 351, 436, 350, 351, 437, 350,
- 351, 438, 350, 351, 439, 350, 351, 440,
- 350, 351, 441, 350, 351, 366, 350, 443,
- 0, 444, 0, 445, 0, 446, 0, 447,
- 0, 448, 0, 449, 0, 450, 0, 451,
- 0, 452, 0, 453, 460, 0, 454, 0,
- 455, 0, 456, 0, 457, 0, 458, 0,
- 459, 0, 37, 0, 461, 0, 462, 0,
- 463, 0, 464, 0, 465, 0, 466, 0,
- 467, 0, 468, 0, 469, 0, 470, 0,
- 471, 0, 472, 0, 31, 0, 473, 474,
- 473, 0, 478, 477, 476, 474, 477, 475,
- 0, 476, 474, 475, 0, 476, 475, 478,
- 477, 476, 474, 477, 475, 478, 478, 5,
- 15, 17, 31, 34, 37, 38, 40, 93,
- 111, 194, 197, 336, 442, 473, 478, 0,
- 76, 91, 75, 76, 481, 75, 76, 91,
- 75, 76, 483, 479, 75, 76, 484, 75,
- 76, 485, 75, 76, 486, 75, 76, 487,
- 75, 76, 488, 75, 76, 489, 75, 76,
- 490, 75, 76, 491, 75, 76, 492, 75,
- 76, 493, 75, 76, 494, 75, 76, 495,
- 75, 76, 91, 75, 76, 497, 75, 76,
- 498, 75, 76, 499, 75, 76, 500, 75,
- 76, 501, 75, 76, 502, 75, 76, 92,
- 75, 76, 504, 75, 76, 505, 75, 76,
- 479, 75, 76, 507, 75, 76, 508, 75,
- 76, 509, 75, 76, 510, 75, 76, 511,
- 75, 76, 512, 75, 76, 513, 75, 76,
- 514, 75, 76, 515, 75, 76, 516, 75,
- 76, 517, 75, 76, 518, 75, 76, 519,
- 75, 76, 520, 75, 76, 521, 75, 76,
- 522, 75, 76, 502, 75, 76, 524, 479,
- 75, 76, 525, 75, 76, 526, 75, 76,
- 527, 75, 76, 528, 75, 76, 529, 75,
- 76, 530, 75, 76, 531, 75, 76, 520,
- 75, 76, 533, 75, 76, 534, 75, 76,
- 535, 75, 76, 536, 75, 76, 537, 75,
- 76, 538, 75, 76, 539, 75, 76, 540,
- 75, 76, 541, 75, 76, 542, 75, 76,
- 543, 550, 75, 76, 544, 75, 76, 545,
- 75, 76, 546, 75, 76, 547, 75, 76,
- 548, 75, 76, 549, 75, 76, 479, 75,
- 76, 551, 75, 76, 552, 75, 76, 553,
- 75, 76, 554, 75, 76, 555, 75, 76,
- 556, 75, 76, 557, 75, 76, 558, 75,
- 76, 559, 75, 76, 560, 75, 76, 561,
- 75, 76, 562, 75, 76, 91, 75, 0,
- 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 29, 35, 0, 43, 0, 43, 0, 43,
- 54, 0, 5, 1, 0, 29, 1, 29,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 139,
- 48, 9, 106, 11, 0, 134, 45, 45,
- 45, 3, 122, 33, 33, 33, 0, 122,
- 33, 33, 33, 0, 122, 33, 0, 33,
- 0, 102, 7, 7, 43, 54, 0, 0,
- 43, 114, 25, 0, 54, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 149, 126, 57, 110,
- 23, 0, 43, 43, 43, 43, 0, 27,
- 118, 27, 27, 51, 27, 0, 54, 0,
- 1, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 72, 33, 84,
- 72, 84, 84, 84, 84, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 15, 0, 54, 15, 0,
- 130, 31, 60, 57, 31, 63, 57, 63,
- 63, 63, 63, 63, 63, 63, 63, 63,
- 66, 31, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 81, 84, 81, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 21, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 69,
- 33, 69, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 75, 33, 84, 75,
- 84, 84, 84, 84, 84, 84, 84, 84,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 17, 0, 54, 17, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 78, 33, 84, 78, 84, 84, 84,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 19,
- 0, 54, 19, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 19, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 0, 43, 54, 37, 37, 87, 37, 37,
- 43, 0, 39, 0, 43, 0, 0, 54,
- 0, 0, 39, 0, 0, 54, 0, 93,
- 90, 41, 96, 90, 96, 96, 96, 96,
- 96, 96, 96, 96, 96, 99, 0, 43,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 563;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/en_scouse.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 1238 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/en_scouse.c.rl"
-
-#line 1245 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/en_scouse.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/en_scouse.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/en_scouse.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/en_scouse.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/en_scouse.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/en_scouse.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/en_scouse.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/en_scouse.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/en_scouse.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/en_scouse.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/en_scouse.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/en_scouse.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/en_scouse.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/en_scouse.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/en_scouse.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/en_scouse.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/en_scouse.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/en_scouse.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/en_scouse.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/en_scouse.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/en_scouse.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/en_scouse.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/en_scouse.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/en_scouse.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1535 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/en_scouse.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1598 "ext/gherkin_lexer_en_scouse/gherkin_lexer_en_scouse.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/en_scouse.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_en_scouse()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "En_scouse", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_en_tx/extconf.rb
index a4f3523,a4f3523..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_en_tx/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_en_tx")
--have_library("c", "main")
--create_makefile("gherkin_lexer_en_tx")
diff --cc ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c
index b85ac60,edb7a81..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c
+++ /dev/null
@@@ -1,1265 -1,1265 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 139, 141, 143, 145, 147, 149, 151,
- 153, 155, 157, 159, 161, 163, 165, 167,
- 169, 187, 189, 190, 191, 192, 193, 194,
- 195, 196, 197, 198, 199, 200, 215, 217,
- 219, 221, 223, 225, 227, 229, 231, 233,
- 235, 237, 239, 241, 243, 245, 248, 250,
- 252, 254, 256, 258, 260, 262, 264, 266,
- 268, 270, 272, 274, 276, 278, 280, 282,
- 284, 286, 288, 290, 292, 294, 296, 298,
- 300, 302, 304, 306, 308, 310, 312, 314,
- 316, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, 335, 342, 344, 346, 348, 350,
- 352, 354, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 377, 379, 381, 383,
- 385, 387, 389, 391, 393, 395, 397, 399,
- 401, 403, 405, 407, 409, 411, 413, 415,
- 417, 419, 421, 423, 425, 427, 429, 431,
- 433, 435, 437, 439, 441, 443, 445, 447,
- 449, 451, 453, 455, 457, 459, 461, 463,
- 465, 467, 469, 471, 473, 475, 477, 479,
- 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 510,
- 512, 514, 516, 518, 520, 522, 524, 526,
- 528, 530, 532, 534, 536, 538, 540, 543,
- 545, 547, 549, 551, 553, 555, 557, 559,
- 561, 563, 565, 567, 569, 571, 573, 576,
- 578, 580, 582, 584, 586, 588, 590, 592,
- 594, 596, 598, 600, 602, 604, 606, 608,
- 610, 612, 614, 616, 618, 620, 622, 624,
- 626, 628, 630, 631, 635, 641, 644, 646,
- 652, 670, 672, 674, 676, 678, 680, 682,
- 684, 686, 688, 690, 692, 694, 696, 698,
- 700, 702, 704, 706, 708, 710, 712, 714,
- 716, 718, 720, 722, 724, 726, 728, 729
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 69, 70, 71, 83, 84, 87,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 65, 66, 69, 70,
- 71, 83, 84, 87, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 108, 110, 108, 32, 121, 39, 97, 108,
- 108, 58, 10, 10, 10, 32, 35, 37,
- 42, 64, 65, 66, 70, 71, 83, 84,
- 87, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 69, 70, 71, 83, 84, 87,
- 124, 9, 13, 97, 117, 99, 107, 103,
- 114, 111, 117, 110, 100, 58, 10, 10,
- 10, 32, 35, 37, 42, 64, 65, 66,
- 70, 71, 83, 84, 87, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 32, 10, 108, 110,
- 10, 108, 10, 32, 10, 121, 10, 39,
- 10, 97, 10, 108, 10, 108, 10, 58,
- 10, 100, 10, 32, 10, 121, 10, 39,
- 10, 97, 10, 108, 10, 108, 10, 117,
- 10, 116, 10, 101, 10, 97, 10, 116,
- 10, 117, 10, 114, 10, 101, 10, 105,
- 10, 118, 10, 101, 10, 110, 10, 99,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 111, 10, 104, 116, 32,
- 121, 39, 97, 108, 108, 120, 97, 109,
- 112, 108, 101, 115, 58, 10, 10, 10,
- 32, 35, 70, 124, 9, 13, 10, 101,
- 10, 97, 10, 116, 10, 117, 10, 114,
- 10, 101, 10, 58, 101, 97, 116, 117,
- 114, 101, 58, 10, 10, 10, 32, 35,
- 37, 64, 65, 66, 69, 70, 83, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 108, 10,
- 108, 10, 32, 10, 121, 10, 39, 10,
- 97, 10, 108, 10, 108, 10, 58, 10,
- 97, 10, 99, 10, 107, 10, 103, 10,
- 114, 10, 111, 10, 117, 10, 110, 10,
- 100, 10, 120, 10, 97, 10, 109, 10,
- 112, 10, 108, 10, 101, 10, 115, 10,
- 101, 10, 97, 10, 116, 10, 117, 10,
- 114, 10, 101, 10, 99, 10, 101, 10,
- 110, 10, 97, 10, 114, 10, 105, 10,
- 111, 105, 118, 101, 110, 99, 101, 110,
- 97, 114, 105, 111, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 65, 66, 70,
- 71, 83, 84, 87, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 108, 110, 10,
- 108, 10, 32, 10, 121, 10, 39, 10,
- 97, 10, 108, 10, 108, 10, 58, 10,
- 100, 10, 32, 10, 121, 10, 39, 10,
- 97, 10, 108, 10, 108, 10, 97, 117,
- 10, 99, 10, 107, 10, 103, 10, 114,
- 10, 111, 10, 117, 10, 110, 10, 100,
- 10, 116, 10, 101, 10, 97, 10, 116,
- 10, 117, 10, 114, 10, 101, 10, 105,
- 10, 118, 10, 101, 10, 110, 10, 99,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 111, 10, 104, 104, 32,
- 124, 9, 13, 10, 32, 92, 124, 9,
- 13, 10, 92, 124, 10, 92, 10, 32,
- 92, 124, 9, 13, 10, 32, 34, 35,
- 37, 42, 64, 65, 66, 69, 70, 71,
- 83, 84, 87, 124, 9, 13, 10, 110,
- 10, 100, 10, 32, 10, 121, 10, 39,
- 10, 97, 10, 108, 10, 108, 10, 117,
- 10, 116, 10, 101, 10, 97, 10, 116,
- 10, 117, 10, 114, 10, 101, 10, 58,
- 10, 105, 10, 118, 10, 101, 10, 110,
- 10, 99, 10, 101, 10, 110, 10, 97,
- 10, 114, 10, 105, 10, 111, 10, 104,
- 100, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 13, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 16, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 13, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 5, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 10, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 13, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 2, 4, 3, 2, 4,
- 16, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 1, 0, 0, 1,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 140, 142,
- 144, 146, 148, 150, 152, 154, 156, 158,
- 160, 175, 178, 181, 184, 187, 190, 193,
- 196, 199, 202, 205, 208, 211, 214, 217,
- 220, 238, 241, 243, 245, 247, 249, 251,
- 253, 255, 257, 259, 261, 263, 278, 281,
- 284, 287, 290, 293, 296, 299, 302, 305,
- 308, 311, 314, 317, 320, 323, 327, 330,
- 333, 336, 339, 342, 345, 348, 351, 354,
- 357, 360, 363, 366, 369, 372, 375, 378,
- 381, 384, 387, 390, 393, 396, 399, 402,
- 405, 408, 411, 414, 417, 420, 423, 426,
- 429, 432, 434, 436, 438, 440, 442, 444,
- 446, 448, 450, 452, 454, 456, 458, 460,
- 462, 464, 466, 473, 476, 479, 482, 485,
- 488, 491, 494, 496, 498, 500, 502, 504,
- 506, 508, 510, 512, 524, 527, 530, 533,
- 536, 539, 542, 545, 548, 551, 554, 557,
- 560, 563, 566, 569, 572, 575, 578, 581,
- 584, 587, 590, 593, 596, 599, 602, 605,
- 608, 611, 614, 617, 620, 623, 626, 629,
- 632, 635, 638, 641, 644, 647, 650, 653,
- 656, 659, 662, 665, 668, 671, 674, 677,
- 680, 682, 684, 686, 688, 690, 692, 694,
- 696, 698, 700, 702, 704, 706, 708, 723,
- 726, 729, 732, 735, 738, 741, 744, 747,
- 750, 753, 756, 759, 762, 765, 768, 772,
- 775, 778, 781, 784, 787, 790, 793, 796,
- 799, 802, 805, 808, 811, 814, 817, 821,
- 824, 827, 830, 833, 836, 839, 842, 845,
- 848, 851, 854, 857, 860, 863, 866, 869,
- 872, 875, 878, 881, 884, 887, 890, 893,
- 896, 899, 902, 904, 908, 914, 918, 921,
- 927, 945, 948, 951, 954, 957, 960, 963,
- 966, 969, 972, 975, 978, 981, 984, 987,
- 990, 993, 996, 999, 1002, 1005, 1008, 1011,
- 1014, 1017, 1020, 1023, 1026, 1029, 1032, 1034
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 65, 136, 154, 216, 220, 290, 290,
- 291, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 65,
- 136, 154, 216, 220, 290, 290, 291, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 327, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 326, 0, 39, 0, 40, 0,
- 41, 0, 42, 0, 43, 0, 44, 0,
- 45, 0, 46, 0, 48, 47, 48, 47,
- 48, 48, 4, 49, 63, 4, 297, 305,
- 307, 314, 318, 325, 325, 48, 47, 48,
- 50, 47, 48, 51, 47, 48, 52, 47,
- 48, 53, 47, 48, 54, 47, 48, 55,
- 47, 48, 56, 47, 48, 57, 47, 48,
- 58, 47, 48, 59, 47, 48, 60, 47,
- 48, 61, 47, 48, 62, 47, 48, 4,
- 47, 48, 64, 47, 4, 4, 5, 15,
- 17, 31, 34, 37, 65, 136, 154, 216,
- 220, 290, 290, 291, 4, 0, 66, 129,
- 0, 67, 0, 68, 0, 69, 0, 70,
- 0, 71, 0, 72, 0, 73, 0, 74,
- 0, 75, 0, 77, 76, 77, 76, 77,
- 77, 4, 78, 92, 4, 93, 109, 111,
- 117, 121, 128, 128, 77, 76, 77, 79,
- 76, 77, 80, 76, 77, 81, 76, 77,
- 82, 76, 77, 83, 76, 77, 84, 76,
- 77, 85, 76, 77, 86, 76, 77, 87,
- 76, 77, 88, 76, 77, 89, 76, 77,
- 90, 76, 77, 91, 76, 77, 4, 76,
- 77, 64, 76, 77, 94, 102, 76, 77,
- 95, 76, 77, 96, 76, 77, 97, 76,
- 77, 98, 76, 77, 99, 76, 77, 100,
- 76, 77, 101, 76, 77, 64, 76, 77,
- 103, 76, 77, 104, 76, 77, 105, 76,
- 77, 106, 76, 77, 107, 76, 77, 108,
- 76, 77, 92, 76, 77, 110, 76, 77,
- 103, 76, 77, 112, 76, 77, 113, 76,
- 77, 114, 76, 77, 115, 76, 77, 116,
- 76, 77, 101, 76, 77, 118, 76, 77,
- 119, 76, 77, 120, 76, 77, 103, 76,
- 77, 122, 76, 77, 123, 76, 77, 124,
- 76, 77, 125, 76, 77, 126, 76, 77,
- 127, 76, 77, 101, 76, 77, 119, 76,
- 130, 0, 131, 0, 132, 0, 133, 0,
- 134, 0, 135, 0, 31, 0, 137, 0,
- 138, 0, 139, 0, 140, 0, 141, 0,
- 142, 0, 143, 0, 144, 0, 146, 145,
- 146, 145, 146, 146, 4, 147, 4, 146,
- 145, 146, 148, 145, 146, 149, 145, 146,
- 150, 145, 146, 151, 145, 146, 152, 145,
- 146, 153, 145, 146, 64, 145, 155, 0,
- 156, 0, 157, 0, 158, 0, 159, 0,
- 160, 0, 161, 0, 163, 162, 163, 162,
- 163, 163, 4, 164, 4, 178, 187, 196,
- 203, 209, 163, 162, 163, 165, 162, 163,
- 166, 162, 163, 167, 162, 163, 168, 162,
- 163, 169, 162, 163, 170, 162, 163, 171,
- 162, 163, 172, 162, 163, 173, 162, 163,
- 174, 162, 163, 175, 162, 163, 176, 162,
- 163, 177, 162, 163, 4, 162, 163, 179,
- 162, 163, 180, 162, 163, 181, 162, 163,
- 182, 162, 163, 183, 162, 163, 184, 162,
- 163, 185, 162, 163, 186, 162, 163, 64,
- 162, 163, 188, 162, 163, 189, 162, 163,
- 190, 162, 163, 191, 162, 163, 192, 162,
- 163, 193, 162, 163, 194, 162, 163, 195,
- 162, 163, 186, 162, 163, 197, 162, 163,
- 198, 162, 163, 199, 162, 163, 200, 162,
- 163, 201, 162, 163, 202, 162, 163, 186,
- 162, 163, 204, 162, 163, 205, 162, 163,
- 206, 162, 163, 207, 162, 163, 208, 162,
- 163, 186, 162, 163, 210, 162, 163, 211,
- 162, 163, 212, 162, 163, 213, 162, 163,
- 214, 162, 163, 215, 162, 163, 186, 162,
- 217, 0, 218, 0, 219, 0, 130, 0,
- 221, 0, 222, 0, 223, 0, 224, 0,
- 225, 0, 226, 0, 227, 0, 228, 0,
- 230, 229, 230, 229, 230, 230, 4, 231,
- 245, 4, 246, 262, 272, 278, 282, 289,
- 289, 230, 229, 230, 232, 229, 230, 233,
- 229, 230, 234, 229, 230, 235, 229, 230,
- 236, 229, 230, 237, 229, 230, 238, 229,
- 230, 239, 229, 230, 240, 229, 230, 241,
- 229, 230, 242, 229, 230, 243, 229, 230,
- 244, 229, 230, 4, 229, 230, 64, 229,
- 230, 247, 255, 229, 230, 248, 229, 230,
- 249, 229, 230, 250, 229, 230, 251, 229,
- 230, 252, 229, 230, 253, 229, 230, 254,
- 229, 230, 64, 229, 230, 256, 229, 230,
- 257, 229, 230, 258, 229, 230, 259, 229,
- 230, 260, 229, 230, 261, 229, 230, 245,
- 229, 230, 263, 271, 229, 230, 264, 229,
- 230, 265, 229, 230, 266, 229, 230, 267,
- 229, 230, 268, 229, 230, 269, 229, 230,
- 270, 229, 230, 254, 229, 230, 256, 229,
- 230, 273, 229, 230, 274, 229, 230, 275,
- 229, 230, 276, 229, 230, 277, 229, 230,
- 254, 229, 230, 279, 229, 230, 280, 229,
- 230, 281, 229, 230, 256, 229, 230, 283,
- 229, 230, 284, 229, 230, 285, 229, 230,
- 286, 229, 230, 287, 229, 230, 288, 229,
- 230, 254, 229, 230, 280, 229, 218, 0,
- 291, 292, 291, 0, 296, 295, 294, 292,
- 295, 293, 0, 294, 292, 293, 0, 294,
- 293, 296, 295, 294, 292, 295, 293, 296,
- 296, 5, 15, 17, 31, 34, 37, 65,
- 136, 154, 216, 220, 290, 290, 291, 296,
- 0, 48, 298, 47, 48, 299, 47, 48,
- 300, 47, 48, 301, 47, 48, 302, 47,
- 48, 303, 47, 48, 304, 47, 48, 63,
- 47, 48, 306, 47, 48, 299, 47, 48,
- 308, 47, 48, 309, 47, 48, 310, 47,
- 48, 311, 47, 48, 312, 47, 48, 313,
- 47, 48, 64, 47, 48, 315, 47, 48,
- 316, 47, 48, 317, 47, 48, 299, 47,
- 48, 319, 47, 48, 320, 47, 48, 321,
- 47, 48, 322, 47, 48, 323, 47, 48,
- 324, 47, 48, 313, 47, 48, 316, 47,
- 130, 0, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 78, 33, 84, 78, 84, 84,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 19,
- 0, 54, 19, 0, 130, 31, 60, 57,
- 31, 63, 57, 63, 63, 63, 63, 63,
- 63, 63, 63, 66, 31, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 72, 33, 84, 72, 84, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 15, 0,
- 54, 15, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 81, 84, 81, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 21, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 69, 33, 69, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 13, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 13,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 75, 33,
- 84, 75, 84, 84, 84, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 17, 0, 54, 17, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 17, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 0, 0, 43, 54, 37, 37, 87,
- 37, 37, 43, 0, 39, 0, 43, 0,
- 0, 54, 0, 0, 39, 0, 0, 54,
- 0, 93, 90, 41, 96, 90, 96, 96,
- 96, 96, 96, 96, 96, 96, 99, 0,
- 43, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 19, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 43, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 327;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 869 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
-
- #line 876 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1166 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1229 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en_tx.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_en_tx()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "En_tx", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/en_tx.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/en_tx.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 139, 141, 143, 145, 147, 149, 151,
- 153, 155, 157, 159, 161, 163, 165, 167,
- 169, 187, 189, 190, 191, 192, 193, 194,
- 195, 196, 197, 198, 199, 200, 215, 217,
- 219, 221, 223, 225, 227, 229, 231, 233,
- 235, 237, 239, 241, 243, 245, 248, 250,
- 252, 254, 256, 258, 260, 262, 264, 266,
- 268, 270, 272, 274, 276, 278, 280, 282,
- 284, 286, 288, 290, 292, 294, 296, 298,
- 300, 302, 304, 306, 308, 310, 312, 314,
- 316, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, 335, 342, 344, 346, 348, 350,
- 352, 354, 356, 357, 358, 359, 360, 361,
- 362, 363, 364, 365, 377, 379, 381, 383,
- 385, 387, 389, 391, 393, 395, 397, 399,
- 401, 403, 405, 407, 409, 411, 413, 415,
- 417, 419, 421, 423, 425, 427, 429, 431,
- 433, 435, 437, 439, 441, 443, 445, 447,
- 449, 451, 453, 455, 457, 459, 461, 463,
- 465, 467, 469, 471, 473, 475, 477, 479,
- 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 510,
- 512, 514, 516, 518, 520, 522, 524, 526,
- 528, 530, 532, 534, 536, 538, 540, 543,
- 545, 547, 549, 551, 553, 555, 557, 559,
- 561, 563, 565, 567, 569, 571, 573, 576,
- 578, 580, 582, 584, 586, 588, 590, 592,
- 594, 596, 598, 600, 602, 604, 606, 608,
- 610, 612, 614, 616, 618, 620, 622, 624,
- 626, 628, 630, 631, 635, 641, 644, 646,
- 652, 670, 672, 674, 676, 678, 680, 682,
- 684, 686, 688, 690, 692, 694, 696, 698,
- 700, 702, 704, 706, 708, 710, 712, 714,
- 716, 718, 720, 722, 724, 726, 728, 729
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 69, 70, 71, 83, 84, 87,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 65, 66, 69, 70,
- 71, 83, 84, 87, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 108, 110, 108, 32, 121, 39, 97, 108,
- 108, 58, 10, 10, 10, 32, 35, 37,
- 42, 64, 65, 66, 70, 71, 83, 84,
- 87, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 69, 70, 71, 83, 84, 87,
- 124, 9, 13, 97, 117, 99, 107, 103,
- 114, 111, 117, 110, 100, 58, 10, 10,
- 10, 32, 35, 37, 42, 64, 65, 66,
- 70, 71, 83, 84, 87, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 32, 10, 108, 110,
- 10, 108, 10, 32, 10, 121, 10, 39,
- 10, 97, 10, 108, 10, 108, 10, 58,
- 10, 100, 10, 32, 10, 121, 10, 39,
- 10, 97, 10, 108, 10, 108, 10, 117,
- 10, 116, 10, 101, 10, 97, 10, 116,
- 10, 117, 10, 114, 10, 101, 10, 105,
- 10, 118, 10, 101, 10, 110, 10, 99,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 111, 10, 104, 116, 32,
- 121, 39, 97, 108, 108, 120, 97, 109,
- 112, 108, 101, 115, 58, 10, 10, 10,
- 32, 35, 70, 124, 9, 13, 10, 101,
- 10, 97, 10, 116, 10, 117, 10, 114,
- 10, 101, 10, 58, 101, 97, 116, 117,
- 114, 101, 58, 10, 10, 10, 32, 35,
- 37, 64, 65, 66, 69, 70, 83, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 108, 10,
- 108, 10, 32, 10, 121, 10, 39, 10,
- 97, 10, 108, 10, 108, 10, 58, 10,
- 97, 10, 99, 10, 107, 10, 103, 10,
- 114, 10, 111, 10, 117, 10, 110, 10,
- 100, 10, 120, 10, 97, 10, 109, 10,
- 112, 10, 108, 10, 101, 10, 115, 10,
- 101, 10, 97, 10, 116, 10, 117, 10,
- 114, 10, 101, 10, 99, 10, 101, 10,
- 110, 10, 97, 10, 114, 10, 105, 10,
- 111, 105, 118, 101, 110, 99, 101, 110,
- 97, 114, 105, 111, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 65, 66, 70,
- 71, 83, 84, 87, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 108, 110, 10,
- 108, 10, 32, 10, 121, 10, 39, 10,
- 97, 10, 108, 10, 108, 10, 58, 10,
- 100, 10, 32, 10, 121, 10, 39, 10,
- 97, 10, 108, 10, 108, 10, 97, 117,
- 10, 99, 10, 107, 10, 103, 10, 114,
- 10, 111, 10, 117, 10, 110, 10, 100,
- 10, 116, 10, 101, 10, 97, 10, 116,
- 10, 117, 10, 114, 10, 101, 10, 105,
- 10, 118, 10, 101, 10, 110, 10, 99,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 111, 10, 104, 104, 32,
- 124, 9, 13, 10, 32, 92, 124, 9,
- 13, 10, 92, 124, 10, 92, 10, 32,
- 92, 124, 9, 13, 10, 32, 34, 35,
- 37, 42, 64, 65, 66, 69, 70, 71,
- 83, 84, 87, 124, 9, 13, 10, 110,
- 10, 100, 10, 32, 10, 121, 10, 39,
- 10, 97, 10, 108, 10, 108, 10, 117,
- 10, 116, 10, 101, 10, 97, 10, 116,
- 10, 117, 10, 114, 10, 101, 10, 58,
- 10, 105, 10, 118, 10, 101, 10, 110,
- 10, 99, 10, 101, 10, 110, 10, 97,
- 10, 114, 10, 105, 10, 111, 10, 104,
- 100, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 13, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 16, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 13, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 5, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 10, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 13, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 2, 4, 3, 2, 4,
- 16, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 1, 0, 0, 1,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 140, 142,
- 144, 146, 148, 150, 152, 154, 156, 158,
- 160, 175, 178, 181, 184, 187, 190, 193,
- 196, 199, 202, 205, 208, 211, 214, 217,
- 220, 238, 241, 243, 245, 247, 249, 251,
- 253, 255, 257, 259, 261, 263, 278, 281,
- 284, 287, 290, 293, 296, 299, 302, 305,
- 308, 311, 314, 317, 320, 323, 327, 330,
- 333, 336, 339, 342, 345, 348, 351, 354,
- 357, 360, 363, 366, 369, 372, 375, 378,
- 381, 384, 387, 390, 393, 396, 399, 402,
- 405, 408, 411, 414, 417, 420, 423, 426,
- 429, 432, 434, 436, 438, 440, 442, 444,
- 446, 448, 450, 452, 454, 456, 458, 460,
- 462, 464, 466, 473, 476, 479, 482, 485,
- 488, 491, 494, 496, 498, 500, 502, 504,
- 506, 508, 510, 512, 524, 527, 530, 533,
- 536, 539, 542, 545, 548, 551, 554, 557,
- 560, 563, 566, 569, 572, 575, 578, 581,
- 584, 587, 590, 593, 596, 599, 602, 605,
- 608, 611, 614, 617, 620, 623, 626, 629,
- 632, 635, 638, 641, 644, 647, 650, 653,
- 656, 659, 662, 665, 668, 671, 674, 677,
- 680, 682, 684, 686, 688, 690, 692, 694,
- 696, 698, 700, 702, 704, 706, 708, 723,
- 726, 729, 732, 735, 738, 741, 744, 747,
- 750, 753, 756, 759, 762, 765, 768, 772,
- 775, 778, 781, 784, 787, 790, 793, 796,
- 799, 802, 805, 808, 811, 814, 817, 821,
- 824, 827, 830, 833, 836, 839, 842, 845,
- 848, 851, 854, 857, 860, 863, 866, 869,
- 872, 875, 878, 881, 884, 887, 890, 893,
- 896, 899, 902, 904, 908, 914, 918, 921,
- 927, 945, 948, 951, 954, 957, 960, 963,
- 966, 969, 972, 975, 978, 981, 984, 987,
- 990, 993, 996, 999, 1002, 1005, 1008, 1011,
- 1014, 1017, 1020, 1023, 1026, 1029, 1032, 1034
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 65, 136, 154, 216, 220, 290, 290,
- 291, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 65,
- 136, 154, 216, 220, 290, 290, 291, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 327, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 326, 0, 39, 0, 40, 0,
- 41, 0, 42, 0, 43, 0, 44, 0,
- 45, 0, 46, 0, 48, 47, 48, 47,
- 48, 48, 4, 49, 63, 4, 297, 305,
- 307, 314, 318, 325, 325, 48, 47, 48,
- 50, 47, 48, 51, 47, 48, 52, 47,
- 48, 53, 47, 48, 54, 47, 48, 55,
- 47, 48, 56, 47, 48, 57, 47, 48,
- 58, 47, 48, 59, 47, 48, 60, 47,
- 48, 61, 47, 48, 62, 47, 48, 4,
- 47, 48, 64, 47, 4, 4, 5, 15,
- 17, 31, 34, 37, 65, 136, 154, 216,
- 220, 290, 290, 291, 4, 0, 66, 129,
- 0, 67, 0, 68, 0, 69, 0, 70,
- 0, 71, 0, 72, 0, 73, 0, 74,
- 0, 75, 0, 77, 76, 77, 76, 77,
- 77, 4, 78, 92, 4, 93, 109, 111,
- 117, 121, 128, 128, 77, 76, 77, 79,
- 76, 77, 80, 76, 77, 81, 76, 77,
- 82, 76, 77, 83, 76, 77, 84, 76,
- 77, 85, 76, 77, 86, 76, 77, 87,
- 76, 77, 88, 76, 77, 89, 76, 77,
- 90, 76, 77, 91, 76, 77, 4, 76,
- 77, 64, 76, 77, 94, 102, 76, 77,
- 95, 76, 77, 96, 76, 77, 97, 76,
- 77, 98, 76, 77, 99, 76, 77, 100,
- 76, 77, 101, 76, 77, 64, 76, 77,
- 103, 76, 77, 104, 76, 77, 105, 76,
- 77, 106, 76, 77, 107, 76, 77, 108,
- 76, 77, 92, 76, 77, 110, 76, 77,
- 103, 76, 77, 112, 76, 77, 113, 76,
- 77, 114, 76, 77, 115, 76, 77, 116,
- 76, 77, 101, 76, 77, 118, 76, 77,
- 119, 76, 77, 120, 76, 77, 103, 76,
- 77, 122, 76, 77, 123, 76, 77, 124,
- 76, 77, 125, 76, 77, 126, 76, 77,
- 127, 76, 77, 101, 76, 77, 119, 76,
- 130, 0, 131, 0, 132, 0, 133, 0,
- 134, 0, 135, 0, 31, 0, 137, 0,
- 138, 0, 139, 0, 140, 0, 141, 0,
- 142, 0, 143, 0, 144, 0, 146, 145,
- 146, 145, 146, 146, 4, 147, 4, 146,
- 145, 146, 148, 145, 146, 149, 145, 146,
- 150, 145, 146, 151, 145, 146, 152, 145,
- 146, 153, 145, 146, 64, 145, 155, 0,
- 156, 0, 157, 0, 158, 0, 159, 0,
- 160, 0, 161, 0, 163, 162, 163, 162,
- 163, 163, 4, 164, 4, 178, 187, 196,
- 203, 209, 163, 162, 163, 165, 162, 163,
- 166, 162, 163, 167, 162, 163, 168, 162,
- 163, 169, 162, 163, 170, 162, 163, 171,
- 162, 163, 172, 162, 163, 173, 162, 163,
- 174, 162, 163, 175, 162, 163, 176, 162,
- 163, 177, 162, 163, 4, 162, 163, 179,
- 162, 163, 180, 162, 163, 181, 162, 163,
- 182, 162, 163, 183, 162, 163, 184, 162,
- 163, 185, 162, 163, 186, 162, 163, 64,
- 162, 163, 188, 162, 163, 189, 162, 163,
- 190, 162, 163, 191, 162, 163, 192, 162,
- 163, 193, 162, 163, 194, 162, 163, 195,
- 162, 163, 186, 162, 163, 197, 162, 163,
- 198, 162, 163, 199, 162, 163, 200, 162,
- 163, 201, 162, 163, 202, 162, 163, 186,
- 162, 163, 204, 162, 163, 205, 162, 163,
- 206, 162, 163, 207, 162, 163, 208, 162,
- 163, 186, 162, 163, 210, 162, 163, 211,
- 162, 163, 212, 162, 163, 213, 162, 163,
- 214, 162, 163, 215, 162, 163, 186, 162,
- 217, 0, 218, 0, 219, 0, 130, 0,
- 221, 0, 222, 0, 223, 0, 224, 0,
- 225, 0, 226, 0, 227, 0, 228, 0,
- 230, 229, 230, 229, 230, 230, 4, 231,
- 245, 4, 246, 262, 272, 278, 282, 289,
- 289, 230, 229, 230, 232, 229, 230, 233,
- 229, 230, 234, 229, 230, 235, 229, 230,
- 236, 229, 230, 237, 229, 230, 238, 229,
- 230, 239, 229, 230, 240, 229, 230, 241,
- 229, 230, 242, 229, 230, 243, 229, 230,
- 244, 229, 230, 4, 229, 230, 64, 229,
- 230, 247, 255, 229, 230, 248, 229, 230,
- 249, 229, 230, 250, 229, 230, 251, 229,
- 230, 252, 229, 230, 253, 229, 230, 254,
- 229, 230, 64, 229, 230, 256, 229, 230,
- 257, 229, 230, 258, 229, 230, 259, 229,
- 230, 260, 229, 230, 261, 229, 230, 245,
- 229, 230, 263, 271, 229, 230, 264, 229,
- 230, 265, 229, 230, 266, 229, 230, 267,
- 229, 230, 268, 229, 230, 269, 229, 230,
- 270, 229, 230, 254, 229, 230, 256, 229,
- 230, 273, 229, 230, 274, 229, 230, 275,
- 229, 230, 276, 229, 230, 277, 229, 230,
- 254, 229, 230, 279, 229, 230, 280, 229,
- 230, 281, 229, 230, 256, 229, 230, 283,
- 229, 230, 284, 229, 230, 285, 229, 230,
- 286, 229, 230, 287, 229, 230, 288, 229,
- 230, 254, 229, 230, 280, 229, 218, 0,
- 291, 292, 291, 0, 296, 295, 294, 292,
- 295, 293, 0, 294, 292, 293, 0, 294,
- 293, 296, 295, 294, 292, 295, 293, 296,
- 296, 5, 15, 17, 31, 34, 37, 65,
- 136, 154, 216, 220, 290, 290, 291, 296,
- 0, 48, 298, 47, 48, 299, 47, 48,
- 300, 47, 48, 301, 47, 48, 302, 47,
- 48, 303, 47, 48, 304, 47, 48, 63,
- 47, 48, 306, 47, 48, 299, 47, 48,
- 308, 47, 48, 309, 47, 48, 310, 47,
- 48, 311, 47, 48, 312, 47, 48, 313,
- 47, 48, 64, 47, 48, 315, 47, 48,
- 316, 47, 48, 317, 47, 48, 299, 47,
- 48, 319, 47, 48, 320, 47, 48, 321,
- 47, 48, 322, 47, 48, 323, 47, 48,
- 324, 47, 48, 313, 47, 48, 316, 47,
- 130, 0, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 78, 33, 84, 78, 84, 84,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 19,
- 0, 54, 19, 0, 130, 31, 60, 57,
- 31, 63, 57, 63, 63, 63, 63, 63,
- 63, 63, 63, 66, 31, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 72, 33, 84, 72, 84, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 15, 0,
- 54, 15, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 81, 84, 81, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 21, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 69, 33, 69, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 13, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 13,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 75, 33,
- 84, 75, 84, 84, 84, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 17, 0, 54, 17, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 17, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 0, 0, 43, 54, 37, 37, 87,
- 37, 37, 43, 0, 39, 0, 43, 0,
- 0, 54, 0, 0, 39, 0, 0, 54,
- 0, 93, 90, 41, 96, 90, 96, 96,
- 96, 96, 96, 96, 96, 96, 99, 0,
- 43, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 19, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 43, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 327;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/en_tx.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 869 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/en_tx.c.rl"
-
-#line 876 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/en_tx.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/en_tx.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/en_tx.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/en_tx.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/en_tx.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/en_tx.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/en_tx.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/en_tx.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/en_tx.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/en_tx.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/en_tx.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/en_tx.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/en_tx.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/en_tx.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/en_tx.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/en_tx.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/en_tx.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/en_tx.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/en_tx.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/en_tx.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/en_tx.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/en_tx.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/en_tx.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/en_tx.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1166 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/en_tx.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1229 "ext/gherkin_lexer_en_tx/gherkin_lexer_en_tx.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/en_tx.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_en_tx()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "En_tx", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_eo/extconf.rb
index 1fb1ce6,1fb1ce6..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_eo/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_eo")
--have_library("c", "main")
--create_makefile("gherkin_lexer_eo")
diff --cc ext/gherkin_lexer_eo/gherkin_lexer_eo.c
index 93d4c43,87f766a..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_eo/gherkin_lexer_eo.c
+++ /dev/null
@@@ -1,1241 -1,1241 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 17, 18, 19, 35, 36, 37,
- 39, 41, 46, 51, 56, 61, 65, 69,
- 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 89, 91, 96, 103, 108, 109, 111,
- 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 127,
- 128, 135, 137, 139, 141, 143, 145, 147,
- 163, 164, 165, 166, 167, 168, 169, 181,
- 183, 185, 187, 189, 191, 193, 195, 197,
- 199, 201, 203, 205, 207, 209, 211, 213,
- 216, 218, 220, 222, 224, 226, 228, 231,
- 233, 235, 237, 239, 241, 243, 245, 247,
- 249, 251, 253, 255, 257, 259, 261, 263,
- 265, 267, 269, 271, 273, 276, 279, 281,
- 283, 285, 287, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301,
- 302, 303, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 324, 326, 328, 330, 332,
- 334, 336, 338, 340, 342, 344, 346, 348,
- 350, 352, 354, 356, 359, 361, 363, 365,
- 367, 369, 371, 373, 375, 378, 380, 382,
- 384, 386, 388, 390, 393, 395, 397, 399,
- 401, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 424, 426, 428, 430, 432, 434,
- 436, 438, 440, 442, 444, 446, 448, 450,
- 452, 454, 456, 459, 461, 463, 465, 467,
- 469, 471, 473, 475, 477, 479, 482, 484,
- 486, 488, 490, 492, 494, 496, 498, 500,
- 502, 504, 506, 508, 510, 512, 514, 516,
- 518, 520, 523, 526, 528, 530, 532, 534,
- 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 556, 558, 560, 562, 564, 566, 568,
- 570, 572, 574, 576, 578, 580, 582, 584,
- 586, 588, 590, 592, 594, 596, 598, 600,
- 602, 604, 606, 608, 610, 612, 614, 616,
- 618, 620, 622, 624, 626, 628, 630, 632,
- 634, 636, 638, 640, 642, 644, 646, 648,
- 650, 652, 654, 658, 664, 667, 669, 675,
- 691
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 68, 69, 70, 75, 83, 84, 124, 9,
- 13, -69, -65, 10, 32, 34, 35, 37,
- 42, 64, 68, 69, 70, 75, 83, 84,
- 124, 9, 13, 34, 34, 10, 13, 10,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 9,
- 13, 10, 32, 9, 13, 10, 13, 10,
- 95, 70, 69, 65, 84, 85, 82, 69,
- 95, 69, 78, 68, 95, 37, 32, 10,
- 13, 10, 13, 13, 32, 64, 9, 10,
- 9, 10, 13, 32, 64, 11, 12, 10,
- 32, 64, 9, 13, 111, 32, 110, 105,
- 116, 97, -60, -75, 111, 107, 122, 101,
- 109, 112, 108, 111, 106, 58, 10, 10,
- 10, 32, 35, 84, 124, 9, 13, 10,
- 114, 10, 97, 10, 106, 10, 116, 10,
- 111, 10, 58, 10, 32, 34, 35, 37,
- 42, 64, 68, 69, 70, 75, 83, 84,
- 124, 9, 13, 111, 110, 111, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 68,
- 75, 83, 84, 9, 13, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 32, 10, 111, 10, 32, 110,
- 10, 105, 10, 116, 10, 97, -60, 10,
- -75, 10, 10, 111, 10, 97, 111, 10,
- 106, 10, 110, 10, 116, 10, 117, 10,
- 114, 10, 111, 10, 32, 10, 100, 10,
- 101, 10, 32, 10, 108, 10, 97, 10,
- 32, 10, 115, 10, 99, 10, 101, 10,
- 110, 10, 97, 10, 114, 10, 111, 10,
- 58, 10, 99, 101, 10, 32, 100, 10,
- 114, 10, 97, 10, 106, 10, 116, 97,
- 111, 106, 110, 116, 117, 114, 111, 32,
- 100, 101, 32, 108, 97, 32, 115, 99,
- 101, 110, 97, 114, 111, 58, 10, 10,
- 10, 32, 35, 37, 42, 64, 68, 75,
- 83, 84, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, 10, 111, 10, 32, 110, 10,
- 105, 10, 116, 10, 97, -60, 10, -75,
- 10, 10, 111, 10, 97, 10, 106, 10,
- 99, 101, 10, 101, 10, 110, 10, 97,
- 10, 114, 10, 111, 10, 58, 10, 32,
- 100, 10, 114, 10, 97, 10, 106, 10,
- 116, 99, 101, 101, 110, 97, 114, 111,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 68, 70, 75, 83, 84, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 111,
- 10, 32, 110, 10, 105, 10, 116, 10,
- 97, -60, 10, -75, 10, 10, 111, 10,
- 111, 10, 110, 10, 111, 10, 58, 10,
- 97, 111, 10, 106, 10, 110, 10, 116,
- 10, 117, 10, 114, 10, 111, 10, 32,
- 10, 100, 10, 101, 10, 32, 10, 108,
- 10, 97, 10, 32, 10, 115, 10, 99,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 99, 101, 10, 32, 100, 10, 114,
- 10, 97, 10, 106, 10, 116, 32, 100,
- 114, 97, 106, 116, 111, 58, 10, 10,
- 10, 32, 35, 37, 64, 69, 70, 75,
- 83, 84, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 107, 10, 122, 10, 101, 10, 109,
- 10, 112, 10, 108, 10, 111, 10, 106,
- 10, 58, 10, 111, 10, 110, 10, 111,
- 10, 111, 10, 110, 10, 116, 10, 117,
- 10, 114, 10, 111, 10, 32, 10, 100,
- 10, 101, 10, 32, 10, 108, 10, 97,
- 10, 32, 10, 115, 10, 99, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 114,
- 10, 97, 10, 106, 10, 116, 32, 124,
- 9, 13, 10, 32, 92, 124, 9, 13,
- 10, 92, 124, 10, 92, 10, 32, 92,
- 124, 9, 13, 10, 32, 34, 35, 37,
- 42, 64, 68, 69, 70, 75, 83, 84,
- 124, 9, 13, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 15, 1, 1, 14, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 5, 2, 2, 2, 2, 2, 2, 14,
- 1, 1, 1, 1, 1, 1, 10, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 3, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 10, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 11, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 3, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 10, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 4, 3, 2, 4, 14,
- 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 0, 0, 1, 1,
- 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 17, 19, 21, 37, 39, 41,
- 44, 47, 52, 57, 62, 67, 71, 75,
- 78, 80, 82, 84, 86, 88, 90, 92,
- 94, 96, 98, 100, 102, 104, 106, 108,
- 110, 113, 116, 121, 128, 133, 135, 138,
- 140, 142, 144, 146, 148, 150, 152, 154,
- 156, 158, 160, 162, 164, 166, 168, 170,
- 172, 179, 182, 185, 188, 191, 194, 197,
- 213, 215, 217, 219, 221, 223, 225, 237,
- 240, 243, 246, 249, 252, 255, 258, 261,
- 264, 267, 270, 273, 276, 279, 282, 285,
- 289, 292, 295, 298, 301, 304, 307, 311,
- 314, 317, 320, 323, 326, 329, 332, 335,
- 338, 341, 344, 347, 350, 353, 356, 359,
- 362, 365, 368, 371, 374, 378, 382, 385,
- 388, 391, 394, 397, 399, 401, 403, 405,
- 407, 409, 411, 413, 415, 417, 419, 421,
- 423, 425, 427, 429, 431, 433, 435, 437,
- 439, 441, 443, 455, 458, 461, 464, 467,
- 470, 473, 476, 479, 482, 485, 488, 491,
- 494, 497, 500, 503, 507, 510, 513, 516,
- 519, 522, 525, 528, 531, 535, 538, 541,
- 544, 547, 550, 553, 557, 560, 563, 566,
- 569, 572, 574, 576, 578, 580, 582, 584,
- 586, 588, 601, 604, 607, 610, 613, 616,
- 619, 622, 625, 628, 631, 634, 637, 640,
- 643, 646, 649, 653, 656, 659, 662, 665,
- 668, 671, 674, 677, 680, 683, 687, 690,
- 693, 696, 699, 702, 705, 708, 711, 714,
- 717, 720, 723, 726, 729, 732, 735, 738,
- 741, 744, 748, 752, 755, 758, 761, 764,
- 767, 769, 771, 773, 775, 777, 779, 781,
- 783, 795, 798, 801, 804, 807, 810, 813,
- 816, 819, 822, 825, 828, 831, 834, 837,
- 840, 843, 846, 849, 852, 855, 858, 861,
- 864, 867, 870, 873, 876, 879, 882, 885,
- 888, 891, 894, 897, 900, 903, 906, 909,
- 912, 915, 918, 921, 924, 927, 930, 933,
- 936, 939, 942, 946, 952, 956, 959, 965,
- 981
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 45, 64, 122, 184, 248, 306, 4,
- 0, 3, 0, 4, 0, 4, 4, 5,
- 15, 17, 31, 34, 37, 45, 64, 122,
- 184, 248, 306, 4, 0, 6, 0, 7,
- 0, 9, 8, 8, 9, 8, 8, 10,
- 10, 11, 10, 10, 10, 10, 11, 10,
- 10, 10, 10, 12, 10, 10, 10, 10,
- 13, 10, 10, 4, 14, 14, 0, 4,
- 14, 14, 0, 4, 16, 15, 4, 0,
- 18, 0, 19, 0, 20, 0, 21, 0,
- 22, 0, 23, 0, 24, 0, 25, 0,
- 26, 0, 27, 0, 28, 0, 29, 0,
- 30, 0, 312, 0, 32, 0, 4, 16,
- 33, 4, 16, 33, 0, 0, 0, 0,
- 35, 36, 4, 36, 36, 34, 35, 35,
- 4, 36, 34, 36, 0, 38, 0, 32,
- 39, 0, 40, 0, 41, 0, 42, 0,
- 43, 0, 44, 0, 31, 0, 46, 0,
- 47, 0, 48, 0, 49, 0, 50, 0,
- 51, 0, 52, 0, 53, 0, 54, 0,
- 56, 55, 56, 55, 56, 56, 4, 57,
- 4, 56, 55, 56, 58, 55, 56, 59,
- 55, 56, 60, 55, 56, 61, 55, 56,
- 62, 55, 56, 63, 55, 4, 4, 5,
- 15, 17, 31, 34, 37, 45, 64, 122,
- 184, 248, 306, 4, 0, 65, 0, 66,
- 0, 67, 0, 68, 0, 70, 69, 70,
- 69, 70, 70, 4, 71, 85, 4, 86,
- 94, 116, 118, 70, 69, 70, 72, 69,
- 70, 73, 69, 70, 74, 69, 70, 75,
- 69, 70, 76, 69, 70, 77, 69, 70,
- 78, 69, 70, 79, 69, 70, 80, 69,
- 70, 81, 69, 70, 82, 69, 70, 83,
- 69, 70, 84, 69, 70, 4, 69, 70,
- 63, 69, 70, 87, 69, 70, 63, 88,
- 69, 70, 89, 69, 70, 90, 69, 70,
- 91, 69, 92, 70, 69, 93, 70, 69,
- 70, 85, 69, 70, 95, 96, 69, 70,
- 85, 69, 70, 97, 69, 70, 98, 69,
- 70, 99, 69, 70, 100, 69, 70, 101,
- 69, 70, 102, 69, 70, 103, 69, 70,
- 104, 69, 70, 105, 69, 70, 106, 69,
- 70, 107, 69, 70, 108, 69, 70, 109,
- 69, 70, 110, 69, 70, 111, 69, 70,
- 112, 69, 70, 113, 69, 70, 114, 69,
- 70, 115, 69, 70, 63, 69, 70, 110,
- 117, 69, 70, 63, 85, 69, 70, 119,
- 69, 70, 120, 69, 70, 121, 69, 70,
- 114, 69, 123, 124, 0, 31, 0, 125,
- 0, 126, 0, 127, 0, 128, 0, 129,
- 0, 130, 0, 131, 0, 132, 0, 133,
- 0, 134, 0, 135, 0, 136, 0, 137,
- 0, 138, 0, 139, 0, 140, 0, 141,
- 0, 142, 0, 143, 0, 144, 0, 146,
- 145, 146, 145, 146, 146, 4, 147, 161,
- 4, 162, 170, 172, 180, 146, 145, 146,
- 148, 145, 146, 149, 145, 146, 150, 145,
- 146, 151, 145, 146, 152, 145, 146, 153,
- 145, 146, 154, 145, 146, 155, 145, 146,
- 156, 145, 146, 157, 145, 146, 158, 145,
- 146, 159, 145, 146, 160, 145, 146, 4,
- 145, 146, 63, 145, 146, 163, 145, 146,
- 63, 164, 145, 146, 165, 145, 146, 166,
- 145, 146, 167, 145, 168, 146, 145, 169,
- 146, 145, 146, 161, 145, 146, 171, 145,
- 146, 161, 145, 146, 173, 179, 145, 146,
- 174, 145, 146, 175, 145, 146, 176, 145,
- 146, 177, 145, 146, 178, 145, 146, 63,
- 145, 146, 63, 161, 145, 146, 181, 145,
- 146, 182, 145, 146, 183, 145, 146, 177,
- 145, 185, 247, 0, 186, 0, 187, 0,
- 188, 0, 189, 0, 190, 0, 191, 0,
- 193, 192, 193, 192, 193, 193, 4, 194,
- 208, 4, 209, 217, 221, 241, 243, 193,
- 192, 193, 195, 192, 193, 196, 192, 193,
- 197, 192, 193, 198, 192, 193, 199, 192,
- 193, 200, 192, 193, 201, 192, 193, 202,
- 192, 193, 203, 192, 193, 204, 192, 193,
- 205, 192, 193, 206, 192, 193, 207, 192,
- 193, 4, 192, 193, 63, 192, 193, 210,
- 192, 193, 63, 211, 192, 193, 212, 192,
- 193, 213, 192, 193, 214, 192, 215, 193,
- 192, 216, 193, 192, 193, 208, 192, 193,
- 218, 192, 193, 219, 192, 193, 220, 192,
- 193, 63, 192, 193, 222, 223, 192, 193,
- 208, 192, 193, 224, 192, 193, 225, 192,
- 193, 226, 192, 193, 227, 192, 193, 228,
- 192, 193, 229, 192, 193, 230, 192, 193,
- 231, 192, 193, 232, 192, 193, 233, 192,
- 193, 234, 192, 193, 235, 192, 193, 236,
- 192, 193, 237, 192, 193, 238, 192, 193,
- 239, 192, 193, 240, 192, 193, 219, 192,
- 193, 237, 242, 192, 193, 63, 208, 192,
- 193, 244, 192, 193, 245, 192, 193, 246,
- 192, 193, 219, 192, 32, 31, 0, 249,
- 0, 250, 0, 251, 0, 252, 0, 253,
- 0, 254, 0, 256, 255, 256, 255, 256,
- 256, 4, 257, 4, 271, 280, 283, 297,
- 302, 256, 255, 256, 258, 255, 256, 259,
- 255, 256, 260, 255, 256, 261, 255, 256,
- 262, 255, 256, 263, 255, 256, 264, 255,
- 256, 265, 255, 256, 266, 255, 256, 267,
- 255, 256, 268, 255, 256, 269, 255, 256,
- 270, 255, 256, 4, 255, 256, 272, 255,
- 256, 273, 255, 256, 274, 255, 256, 275,
- 255, 256, 276, 255, 256, 277, 255, 256,
- 278, 255, 256, 279, 255, 256, 63, 255,
- 256, 281, 255, 256, 282, 255, 256, 279,
- 255, 256, 284, 255, 256, 285, 255, 256,
- 286, 255, 256, 287, 255, 256, 288, 255,
- 256, 289, 255, 256, 290, 255, 256, 291,
- 255, 256, 292, 255, 256, 293, 255, 256,
- 294, 255, 256, 295, 255, 256, 296, 255,
- 256, 297, 255, 256, 298, 255, 256, 299,
- 255, 256, 300, 255, 256, 301, 255, 256,
- 282, 255, 256, 303, 255, 256, 304, 255,
- 256, 305, 255, 256, 282, 255, 306, 307,
- 306, 0, 311, 310, 309, 307, 310, 308,
- 0, 309, 307, 308, 0, 309, 308, 311,
- 310, 309, 307, 310, 308, 311, 311, 5,
- 15, 17, 31, 34, 37, 45, 64, 122,
- 184, 248, 306, 311, 0, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 54, 0, 5,
- 1, 0, 29, 1, 29, 29, 29, 29,
- 29, 29, 35, 0, 43, 0, 43, 0,
- 43, 139, 48, 9, 106, 11, 0, 134,
- 45, 45, 45, 3, 122, 33, 33, 33,
- 0, 122, 33, 33, 33, 0, 122, 33,
- 0, 33, 0, 102, 7, 7, 43, 54,
- 0, 0, 43, 114, 25, 0, 54, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 149, 126,
- 57, 110, 23, 0, 43, 43, 43, 43,
- 0, 27, 118, 27, 27, 51, 27, 0,
- 54, 0, 1, 0, 43, 0, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 81, 84,
- 81, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 21, 0, 130, 31, 60,
- 57, 31, 63, 57, 63, 63, 63, 63,
- 63, 63, 66, 31, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 72, 33, 84, 72, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 15, 0, 54, 0, 0, 54, 15, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 15, 0, 54, 0,
- 0, 0, 54, 15, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 78, 33, 84,
- 78, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 19,
- 0, 54, 19, 0, 54, 0, 0, 54,
- 19, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 19,
- 0, 54, 19, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 75, 33,
- 84, 75, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 54, 17, 0, 54, 0,
- 0, 54, 17, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 17, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 69, 33, 69, 84, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 13, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 13, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 0,
- 0, 43, 54, 37, 37, 87, 37, 37,
- 43, 0, 39, 0, 43, 0, 0, 54,
- 0, 0, 39, 0, 0, 54, 0, 93,
- 90, 41, 96, 90, 96, 96, 96, 96,
- 96, 96, 99, 0, 43, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 312;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 845 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
-
- #line 852 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1142 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1205 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/eo.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_eo()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Eo", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/eo.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/eo.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 17, 18, 19, 35, 36, 37,
- 39, 41, 46, 51, 56, 61, 65, 69,
- 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 89, 91, 96, 103, 108, 109, 111,
- 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 127,
- 128, 135, 137, 139, 141, 143, 145, 147,
- 163, 164, 165, 166, 167, 168, 169, 181,
- 183, 185, 187, 189, 191, 193, 195, 197,
- 199, 201, 203, 205, 207, 209, 211, 213,
- 216, 218, 220, 222, 224, 226, 228, 231,
- 233, 235, 237, 239, 241, 243, 245, 247,
- 249, 251, 253, 255, 257, 259, 261, 263,
- 265, 267, 269, 271, 273, 276, 279, 281,
- 283, 285, 287, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301,
- 302, 303, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 324, 326, 328, 330, 332,
- 334, 336, 338, 340, 342, 344, 346, 348,
- 350, 352, 354, 356, 359, 361, 363, 365,
- 367, 369, 371, 373, 375, 378, 380, 382,
- 384, 386, 388, 390, 393, 395, 397, 399,
- 401, 403, 404, 405, 406, 407, 408, 409,
- 410, 411, 424, 426, 428, 430, 432, 434,
- 436, 438, 440, 442, 444, 446, 448, 450,
- 452, 454, 456, 459, 461, 463, 465, 467,
- 469, 471, 473, 475, 477, 479, 482, 484,
- 486, 488, 490, 492, 494, 496, 498, 500,
- 502, 504, 506, 508, 510, 512, 514, 516,
- 518, 520, 523, 526, 528, 530, 532, 534,
- 536, 537, 538, 539, 540, 541, 542, 543,
- 544, 556, 558, 560, 562, 564, 566, 568,
- 570, 572, 574, 576, 578, 580, 582, 584,
- 586, 588, 590, 592, 594, 596, 598, 600,
- 602, 604, 606, 608, 610, 612, 614, 616,
- 618, 620, 622, 624, 626, 628, 630, 632,
- 634, 636, 638, 640, 642, 644, 646, 648,
- 650, 652, 654, 658, 664, 667, 669, 675,
- 691
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 68, 69, 70, 75, 83, 84, 124, 9,
- 13, -69, -65, 10, 32, 34, 35, 37,
- 42, 64, 68, 69, 70, 75, 83, 84,
- 124, 9, 13, 34, 34, 10, 13, 10,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 9,
- 13, 10, 32, 9, 13, 10, 13, 10,
- 95, 70, 69, 65, 84, 85, 82, 69,
- 95, 69, 78, 68, 95, 37, 32, 10,
- 13, 10, 13, 13, 32, 64, 9, 10,
- 9, 10, 13, 32, 64, 11, 12, 10,
- 32, 64, 9, 13, 111, 32, 110, 105,
- 116, 97, -60, -75, 111, 107, 122, 101,
- 109, 112, 108, 111, 106, 58, 10, 10,
- 10, 32, 35, 84, 124, 9, 13, 10,
- 114, 10, 97, 10, 106, 10, 116, 10,
- 111, 10, 58, 10, 32, 34, 35, 37,
- 42, 64, 68, 69, 70, 75, 83, 84,
- 124, 9, 13, 111, 110, 111, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 68,
- 75, 83, 84, 9, 13, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 32, 10, 111, 10, 32, 110,
- 10, 105, 10, 116, 10, 97, -60, 10,
- -75, 10, 10, 111, 10, 97, 111, 10,
- 106, 10, 110, 10, 116, 10, 117, 10,
- 114, 10, 111, 10, 32, 10, 100, 10,
- 101, 10, 32, 10, 108, 10, 97, 10,
- 32, 10, 115, 10, 99, 10, 101, 10,
- 110, 10, 97, 10, 114, 10, 111, 10,
- 58, 10, 99, 101, 10, 32, 100, 10,
- 114, 10, 97, 10, 106, 10, 116, 97,
- 111, 106, 110, 116, 117, 114, 111, 32,
- 100, 101, 32, 108, 97, 32, 115, 99,
- 101, 110, 97, 114, 111, 58, 10, 10,
- 10, 32, 35, 37, 42, 64, 68, 75,
- 83, 84, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, 10, 111, 10, 32, 110, 10,
- 105, 10, 116, 10, 97, -60, 10, -75,
- 10, 10, 111, 10, 97, 10, 106, 10,
- 99, 101, 10, 101, 10, 110, 10, 97,
- 10, 114, 10, 111, 10, 58, 10, 32,
- 100, 10, 114, 10, 97, 10, 106, 10,
- 116, 99, 101, 101, 110, 97, 114, 111,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 68, 70, 75, 83, 84, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 111,
- 10, 32, 110, 10, 105, 10, 116, 10,
- 97, -60, 10, -75, 10, 10, 111, 10,
- 111, 10, 110, 10, 111, 10, 58, 10,
- 97, 111, 10, 106, 10, 110, 10, 116,
- 10, 117, 10, 114, 10, 111, 10, 32,
- 10, 100, 10, 101, 10, 32, 10, 108,
- 10, 97, 10, 32, 10, 115, 10, 99,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 99, 101, 10, 32, 100, 10, 114,
- 10, 97, 10, 106, 10, 116, 32, 100,
- 114, 97, 106, 116, 111, 58, 10, 10,
- 10, 32, 35, 37, 64, 69, 70, 75,
- 83, 84, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 107, 10, 122, 10, 101, 10, 109,
- 10, 112, 10, 108, 10, 111, 10, 106,
- 10, 58, 10, 111, 10, 110, 10, 111,
- 10, 111, 10, 110, 10, 116, 10, 117,
- 10, 114, 10, 111, 10, 32, 10, 100,
- 10, 101, 10, 32, 10, 108, 10, 97,
- 10, 32, 10, 115, 10, 99, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 114,
- 10, 97, 10, 106, 10, 116, 32, 124,
- 9, 13, 10, 32, 92, 124, 9, 13,
- 10, 92, 124, 10, 92, 10, 32, 92,
- 124, 9, 13, 10, 32, 34, 35, 37,
- 42, 64, 68, 69, 70, 75, 83, 84,
- 124, 9, 13, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 15, 1, 1, 14, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 5, 2, 2, 2, 2, 2, 2, 14,
- 1, 1, 1, 1, 1, 1, 10, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 3, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 10, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 11, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 3, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 10, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 4, 3, 2, 4, 14,
- 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 0, 0, 1, 1,
- 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 17, 19, 21, 37, 39, 41,
- 44, 47, 52, 57, 62, 67, 71, 75,
- 78, 80, 82, 84, 86, 88, 90, 92,
- 94, 96, 98, 100, 102, 104, 106, 108,
- 110, 113, 116, 121, 128, 133, 135, 138,
- 140, 142, 144, 146, 148, 150, 152, 154,
- 156, 158, 160, 162, 164, 166, 168, 170,
- 172, 179, 182, 185, 188, 191, 194, 197,
- 213, 215, 217, 219, 221, 223, 225, 237,
- 240, 243, 246, 249, 252, 255, 258, 261,
- 264, 267, 270, 273, 276, 279, 282, 285,
- 289, 292, 295, 298, 301, 304, 307, 311,
- 314, 317, 320, 323, 326, 329, 332, 335,
- 338, 341, 344, 347, 350, 353, 356, 359,
- 362, 365, 368, 371, 374, 378, 382, 385,
- 388, 391, 394, 397, 399, 401, 403, 405,
- 407, 409, 411, 413, 415, 417, 419, 421,
- 423, 425, 427, 429, 431, 433, 435, 437,
- 439, 441, 443, 455, 458, 461, 464, 467,
- 470, 473, 476, 479, 482, 485, 488, 491,
- 494, 497, 500, 503, 507, 510, 513, 516,
- 519, 522, 525, 528, 531, 535, 538, 541,
- 544, 547, 550, 553, 557, 560, 563, 566,
- 569, 572, 574, 576, 578, 580, 582, 584,
- 586, 588, 601, 604, 607, 610, 613, 616,
- 619, 622, 625, 628, 631, 634, 637, 640,
- 643, 646, 649, 653, 656, 659, 662, 665,
- 668, 671, 674, 677, 680, 683, 687, 690,
- 693, 696, 699, 702, 705, 708, 711, 714,
- 717, 720, 723, 726, 729, 732, 735, 738,
- 741, 744, 748, 752, 755, 758, 761, 764,
- 767, 769, 771, 773, 775, 777, 779, 781,
- 783, 795, 798, 801, 804, 807, 810, 813,
- 816, 819, 822, 825, 828, 831, 834, 837,
- 840, 843, 846, 849, 852, 855, 858, 861,
- 864, 867, 870, 873, 876, 879, 882, 885,
- 888, 891, 894, 897, 900, 903, 906, 909,
- 912, 915, 918, 921, 924, 927, 930, 933,
- 936, 939, 942, 946, 952, 956, 959, 965,
- 981
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 45, 64, 122, 184, 248, 306, 4,
- 0, 3, 0, 4, 0, 4, 4, 5,
- 15, 17, 31, 34, 37, 45, 64, 122,
- 184, 248, 306, 4, 0, 6, 0, 7,
- 0, 9, 8, 8, 9, 8, 8, 10,
- 10, 11, 10, 10, 10, 10, 11, 10,
- 10, 10, 10, 12, 10, 10, 10, 10,
- 13, 10, 10, 4, 14, 14, 0, 4,
- 14, 14, 0, 4, 16, 15, 4, 0,
- 18, 0, 19, 0, 20, 0, 21, 0,
- 22, 0, 23, 0, 24, 0, 25, 0,
- 26, 0, 27, 0, 28, 0, 29, 0,
- 30, 0, 312, 0, 32, 0, 4, 16,
- 33, 4, 16, 33, 0, 0, 0, 0,
- 35, 36, 4, 36, 36, 34, 35, 35,
- 4, 36, 34, 36, 0, 38, 0, 32,
- 39, 0, 40, 0, 41, 0, 42, 0,
- 43, 0, 44, 0, 31, 0, 46, 0,
- 47, 0, 48, 0, 49, 0, 50, 0,
- 51, 0, 52, 0, 53, 0, 54, 0,
- 56, 55, 56, 55, 56, 56, 4, 57,
- 4, 56, 55, 56, 58, 55, 56, 59,
- 55, 56, 60, 55, 56, 61, 55, 56,
- 62, 55, 56, 63, 55, 4, 4, 5,
- 15, 17, 31, 34, 37, 45, 64, 122,
- 184, 248, 306, 4, 0, 65, 0, 66,
- 0, 67, 0, 68, 0, 70, 69, 70,
- 69, 70, 70, 4, 71, 85, 4, 86,
- 94, 116, 118, 70, 69, 70, 72, 69,
- 70, 73, 69, 70, 74, 69, 70, 75,
- 69, 70, 76, 69, 70, 77, 69, 70,
- 78, 69, 70, 79, 69, 70, 80, 69,
- 70, 81, 69, 70, 82, 69, 70, 83,
- 69, 70, 84, 69, 70, 4, 69, 70,
- 63, 69, 70, 87, 69, 70, 63, 88,
- 69, 70, 89, 69, 70, 90, 69, 70,
- 91, 69, 92, 70, 69, 93, 70, 69,
- 70, 85, 69, 70, 95, 96, 69, 70,
- 85, 69, 70, 97, 69, 70, 98, 69,
- 70, 99, 69, 70, 100, 69, 70, 101,
- 69, 70, 102, 69, 70, 103, 69, 70,
- 104, 69, 70, 105, 69, 70, 106, 69,
- 70, 107, 69, 70, 108, 69, 70, 109,
- 69, 70, 110, 69, 70, 111, 69, 70,
- 112, 69, 70, 113, 69, 70, 114, 69,
- 70, 115, 69, 70, 63, 69, 70, 110,
- 117, 69, 70, 63, 85, 69, 70, 119,
- 69, 70, 120, 69, 70, 121, 69, 70,
- 114, 69, 123, 124, 0, 31, 0, 125,
- 0, 126, 0, 127, 0, 128, 0, 129,
- 0, 130, 0, 131, 0, 132, 0, 133,
- 0, 134, 0, 135, 0, 136, 0, 137,
- 0, 138, 0, 139, 0, 140, 0, 141,
- 0, 142, 0, 143, 0, 144, 0, 146,
- 145, 146, 145, 146, 146, 4, 147, 161,
- 4, 162, 170, 172, 180, 146, 145, 146,
- 148, 145, 146, 149, 145, 146, 150, 145,
- 146, 151, 145, 146, 152, 145, 146, 153,
- 145, 146, 154, 145, 146, 155, 145, 146,
- 156, 145, 146, 157, 145, 146, 158, 145,
- 146, 159, 145, 146, 160, 145, 146, 4,
- 145, 146, 63, 145, 146, 163, 145, 146,
- 63, 164, 145, 146, 165, 145, 146, 166,
- 145, 146, 167, 145, 168, 146, 145, 169,
- 146, 145, 146, 161, 145, 146, 171, 145,
- 146, 161, 145, 146, 173, 179, 145, 146,
- 174, 145, 146, 175, 145, 146, 176, 145,
- 146, 177, 145, 146, 178, 145, 146, 63,
- 145, 146, 63, 161, 145, 146, 181, 145,
- 146, 182, 145, 146, 183, 145, 146, 177,
- 145, 185, 247, 0, 186, 0, 187, 0,
- 188, 0, 189, 0, 190, 0, 191, 0,
- 193, 192, 193, 192, 193, 193, 4, 194,
- 208, 4, 209, 217, 221, 241, 243, 193,
- 192, 193, 195, 192, 193, 196, 192, 193,
- 197, 192, 193, 198, 192, 193, 199, 192,
- 193, 200, 192, 193, 201, 192, 193, 202,
- 192, 193, 203, 192, 193, 204, 192, 193,
- 205, 192, 193, 206, 192, 193, 207, 192,
- 193, 4, 192, 193, 63, 192, 193, 210,
- 192, 193, 63, 211, 192, 193, 212, 192,
- 193, 213, 192, 193, 214, 192, 215, 193,
- 192, 216, 193, 192, 193, 208, 192, 193,
- 218, 192, 193, 219, 192, 193, 220, 192,
- 193, 63, 192, 193, 222, 223, 192, 193,
- 208, 192, 193, 224, 192, 193, 225, 192,
- 193, 226, 192, 193, 227, 192, 193, 228,
- 192, 193, 229, 192, 193, 230, 192, 193,
- 231, 192, 193, 232, 192, 193, 233, 192,
- 193, 234, 192, 193, 235, 192, 193, 236,
- 192, 193, 237, 192, 193, 238, 192, 193,
- 239, 192, 193, 240, 192, 193, 219, 192,
- 193, 237, 242, 192, 193, 63, 208, 192,
- 193, 244, 192, 193, 245, 192, 193, 246,
- 192, 193, 219, 192, 32, 31, 0, 249,
- 0, 250, 0, 251, 0, 252, 0, 253,
- 0, 254, 0, 256, 255, 256, 255, 256,
- 256, 4, 257, 4, 271, 280, 283, 297,
- 302, 256, 255, 256, 258, 255, 256, 259,
- 255, 256, 260, 255, 256, 261, 255, 256,
- 262, 255, 256, 263, 255, 256, 264, 255,
- 256, 265, 255, 256, 266, 255, 256, 267,
- 255, 256, 268, 255, 256, 269, 255, 256,
- 270, 255, 256, 4, 255, 256, 272, 255,
- 256, 273, 255, 256, 274, 255, 256, 275,
- 255, 256, 276, 255, 256, 277, 255, 256,
- 278, 255, 256, 279, 255, 256, 63, 255,
- 256, 281, 255, 256, 282, 255, 256, 279,
- 255, 256, 284, 255, 256, 285, 255, 256,
- 286, 255, 256, 287, 255, 256, 288, 255,
- 256, 289, 255, 256, 290, 255, 256, 291,
- 255, 256, 292, 255, 256, 293, 255, 256,
- 294, 255, 256, 295, 255, 256, 296, 255,
- 256, 297, 255, 256, 298, 255, 256, 299,
- 255, 256, 300, 255, 256, 301, 255, 256,
- 282, 255, 256, 303, 255, 256, 304, 255,
- 256, 305, 255, 256, 282, 255, 306, 307,
- 306, 0, 311, 310, 309, 307, 310, 308,
- 0, 309, 307, 308, 0, 309, 308, 311,
- 310, 309, 307, 310, 308, 311, 311, 5,
- 15, 17, 31, 34, 37, 45, 64, 122,
- 184, 248, 306, 311, 0, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 54, 0, 5,
- 1, 0, 29, 1, 29, 29, 29, 29,
- 29, 29, 35, 0, 43, 0, 43, 0,
- 43, 139, 48, 9, 106, 11, 0, 134,
- 45, 45, 45, 3, 122, 33, 33, 33,
- 0, 122, 33, 33, 33, 0, 122, 33,
- 0, 33, 0, 102, 7, 7, 43, 54,
- 0, 0, 43, 114, 25, 0, 54, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 149, 126,
- 57, 110, 23, 0, 43, 43, 43, 43,
- 0, 27, 118, 27, 27, 51, 27, 0,
- 54, 0, 1, 0, 43, 0, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 81, 84,
- 81, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 21, 0, 130, 31, 60,
- 57, 31, 63, 57, 63, 63, 63, 63,
- 63, 63, 66, 31, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 72, 33, 84, 72, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 15, 0, 54, 0, 0, 54, 15, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 15, 0, 54, 0,
- 0, 0, 54, 15, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 78, 33, 84,
- 78, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 19,
- 0, 54, 19, 0, 54, 0, 0, 54,
- 19, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 19,
- 0, 54, 19, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 75, 33,
- 84, 75, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 54, 17, 0, 54, 0,
- 0, 54, 17, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 17, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 69, 33, 69, 84, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 13, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 13, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 0,
- 0, 43, 54, 37, 37, 87, 37, 37,
- 43, 0, 39, 0, 43, 0, 0, 54,
- 0, 0, 39, 0, 0, 54, 0, 93,
- 90, 41, 96, 90, 96, 96, 96, 96,
- 96, 96, 99, 0, 43, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 312;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/eo.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 845 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/eo.c.rl"
-
-#line 852 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/eo.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/eo.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/eo.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/eo.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/eo.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/eo.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/eo.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/eo.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/eo.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/eo.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/eo.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/eo.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/eo.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/eo.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/eo.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/eo.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/eo.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/eo.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/eo.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/eo.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/eo.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/eo.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/eo.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/eo.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1142 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/eo.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1205 "ext/gherkin_lexer_eo/gherkin_lexer_eo.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/eo.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_eo()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Eo", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_es/extconf.rb
index 45da689,45da689..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_es/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_es")
--have_library("c", "main")
--create_makefile("gherkin_lexer_es")
diff --cc ext/gherkin_lexer_es/gherkin_lexer_es.c
index 1614e13,55c57a8..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_es/gherkin_lexer_es.c
+++ /dev/null
@@@ -1,1399 -1,1399 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 17, 18, 19, 35, 36, 37,
- 39, 41, 46, 51, 56, 61, 65, 69,
- 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 89, 91, 96, 103, 108, 109, 110,
- 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 135, 137, 139, 141,
- 143, 145, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 165, 181, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 195, 196, 197, 198, 199, 209, 211,
- 213, 215, 217, 219, 221, 223, 225, 227,
- 229, 231, 233, 235, 237, 239, 241, 243,
- 245, 247, 249, 251, 253, 255, 257, 259,
- 261, 263, 265, 267, 269, 271, 273, 275,
- 277, 279, 281, 283, 285, 287, 289, 292,
- 294, 296, 298, 300, 302, 305, 307, 309,
- 311, 313, 315, 317, 319, 321, 323, 325,
- 327, 329, 331, 333, 335, 337, 339, 341,
- 342, 343, 344, 345, 346, 347, 349, 351,
- 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 370, 372, 374, 376, 378, 380,
- 382, 384, 386, 388, 390, 392, 394, 396,
- 398, 400, 401, 402, 403, 404, 405, 406,
- 408, 409, 410, 411, 412, 413, 414, 415,
- 416, 417, 431, 433, 435, 437, 439, 441,
- 443, 445, 447, 449, 451, 453, 455, 457,
- 459, 461, 463, 465, 467, 469, 471, 473,
- 475, 477, 479, 481, 483, 485, 488, 490,
- 492, 494, 496, 498, 500, 502, 504, 506,
- 508, 510, 512, 514, 516, 518, 520, 522,
- 524, 526, 529, 532, 535, 537, 539, 541,
- 543, 545, 547, 550, 552, 554, 556, 558,
- 560, 562, 564, 566, 568, 570, 572, 574,
- 576, 578, 580, 582, 584, 586, 588, 590,
- 591, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 609, 610, 611, 624, 626, 628,
- 630, 632, 634, 636, 638, 640, 642, 644,
- 646, 648, 650, 652, 654, 657, 659, 661,
- 663, 665, 667, 669, 671, 673, 675, 677,
- 679, 681, 683, 685, 687, 689, 691, 693,
- 695, 697, 700, 703, 706, 708, 710, 712,
- 714, 716, 718, 720, 722, 724, 726, 728,
- 730, 732, 734, 736, 737, 738, 742, 748,
- 751, 753, 759, 775, 778, 780, 782, 784,
- 786, 788, 790, 792, 794, 796, 798, 800,
- 802, 804, 806, 808, 810, 812, 814, 816,
- 818, 821, 824, 827, 829, 831, 833, 835,
- 837, 839, 842, 844, 846, 848, 850, 852,
- 854, 856, 858, 860, 862, 864, 866, 868,
- 870, 872, 874, 876, 878, 880, 882
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 67, 68, 69, 80, 89, 124, 9,
- 13, -69, -65, 10, 32, 34, 35, 37,
- 42, 64, 65, 67, 68, 69, 80, 89,
- 124, 9, 13, 34, 34, 10, 13, 10,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 9,
- 13, 10, 32, 9, 13, 10, 13, 10,
- 95, 70, 69, 65, 84, 85, 82, 69,
- 95, 69, 78, 68, 95, 37, 32, 10,
- 13, 10, 13, 13, 32, 64, 9, 10,
- 9, 10, 13, 32, 64, 11, 12, 10,
- 32, 64, 9, 13, 110, 116, 101, 99,
- 101, 100, 101, 110, 116, 101, 115, 58,
- 10, 10, 10, 32, 35, 37, 42, 64,
- 67, 68, 69, 80, 89, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 32, 10, 32, 34,
- 35, 37, 42, 64, 65, 67, 68, 69,
- 80, 89, 124, 9, 13, 97, 117, 114,
- 97, 99, 116, 101, 114, -61, -83, 115,
- 116, 105, 99, 97, 58, 10, 10, 10,
- 32, 35, 37, 64, 65, 67, 69, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 110, 10,
- 116, 10, 101, 10, 99, 10, 101, 10,
- 100, 10, 101, 10, 110, 10, 116, 10,
- 101, 10, 115, 10, 58, 10, 97, 10,
- 114, 10, 97, 10, 99, 10, 116, 10,
- 101, 10, 114, -61, 10, -83, 10, 10,
- 115, 10, 116, 10, 105, 10, 99, 10,
- 97, 10, 106, 115, 10, 101, 10, 109,
- 10, 112, 10, 108, 10, 111, 10, 99,
- 113, 10, 101, 10, 110, 10, 97, 10,
- 114, 10, 105, 10, 111, 10, 117, 10,
- 101, 10, 109, 10, 97, 10, 32, 10,
- 100, 10, 101, 10, 108, 10, 32, 10,
- 101, 10, 115, 10, 99, 97, 110, 100,
- 111, 97, 100, 97, 111, 32, 115, 106,
- 110, 115, 101, 109, 112, 108, 111, 115,
- 58, 10, 10, 10, 32, 35, 67, 124,
- 9, 13, 10, 97, 10, 114, 10, 97,
- 10, 99, 10, 116, 10, 101, 10, 114,
- -61, 10, -83, 10, 10, 115, 10, 116,
- 10, 105, 10, 99, 10, 97, 10, 58,
- 116, 111, 110, 99, 101, 115, 99, 113,
- 101, 110, 97, 114, 105, 111, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 65,
- 67, 68, 69, 80, 89, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 32, 10, 110, 10,
- 116, 10, 101, 10, 99, 10, 101, 10,
- 100, 10, 101, 10, 110, 10, 116, 10,
- 101, 10, 115, 10, 58, 10, 97, 117,
- 10, 114, 10, 97, 10, 99, 10, 116,
- 10, 101, 10, 114, -61, 10, -83, 10,
- 10, 115, 10, 116, 10, 105, 10, 99,
- 10, 97, 10, 97, 10, 110, 10, 100,
- 10, 111, 10, 97, 10, 100, 10, 97,
- 111, 10, 32, 115, 10, 110, 115, 10,
- 116, 10, 111, 10, 110, 10, 99, 10,
- 101, 10, 115, 10, 99, 113, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 111, 10, 117, 10, 101, 10, 109,
- 10, 97, 10, 32, 10, 100, 10, 101,
- 10, 108, 10, 32, 10, 101, 10, 115,
- 10, 99, 10, 101, 10, 114, 117, 101,
- 109, 97, 32, 100, 101, 108, 32, 101,
- 115, 99, 101, 110, 97, 114, 105, 111,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 67, 68, 69, 80, 89, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 97,
- 117, 10, 114, 10, 97, 10, 99, 10,
- 116, 10, 101, 10, 114, -61, 10, -83,
- 10, 10, 115, 10, 116, 10, 105, 10,
- 99, 10, 97, 10, 58, 10, 97, 10,
- 110, 10, 100, 10, 111, 10, 97, 10,
- 100, 10, 97, 111, 10, 32, 115, 10,
- 110, 115, 10, 116, 10, 111, 10, 110,
- 10, 99, 10, 101, 10, 115, 10, 99,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 111, 10, 101, 10, 114,
- 101, 114, 32, 124, 9, 13, 10, 32,
- 92, 124, 9, 13, 10, 92, 124, 10,
- 92, 10, 32, 92, 124, 9, 13, 10,
- 32, 34, 35, 37, 42, 64, 65, 67,
- 68, 69, 80, 89, 124, 9, 13, 10,
- 97, 117, 10, 114, 10, 97, 10, 99,
- 10, 116, 10, 101, 10, 114, -61, 10,
- -83, 10, 10, 115, 10, 116, 10, 105,
- 10, 99, 10, 97, 10, 58, 10, 97,
- 10, 110, 10, 100, 10, 111, 10, 97,
- 10, 100, 10, 97, 111, 10, 32, 115,
- 10, 110, 115, 10, 116, 10, 111, 10,
- 110, 10, 99, 10, 101, 10, 115, 10,
- 99, 113, 10, 101, 10, 110, 10, 97,
- 10, 114, 10, 105, 10, 111, 10, 117,
- 10, 101, 10, 109, 10, 97, 10, 32,
- 10, 100, 10, 101, 10, 108, 10, 32,
- 10, 101, 10, 115, 10, 99, 10, 101,
- 10, 114, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 15, 1, 1, 14, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 11, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 14, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 8, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 2, 2, 3,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 5, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 12, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 3, 3, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 11, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 3, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 2, 4, 3,
- 2, 4, 14, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 3, 3, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 1, 0,
- 0, 1, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 17, 19, 21, 37, 39, 41,
- 44, 47, 52, 57, 62, 67, 71, 75,
- 78, 80, 82, 84, 86, 88, 90, 92,
- 94, 96, 98, 100, 102, 104, 106, 108,
- 110, 113, 116, 121, 128, 133, 135, 137,
- 139, 141, 143, 145, 147, 149, 151, 153,
- 155, 157, 159, 161, 174, 177, 180, 183,
- 186, 189, 192, 195, 198, 201, 204, 207,
- 210, 213, 216, 219, 235, 238, 240, 242,
- 244, 246, 248, 250, 252, 254, 256, 258,
- 260, 262, 264, 266, 268, 270, 280, 283,
- 286, 289, 292, 295, 298, 301, 304, 307,
- 310, 313, 316, 319, 322, 325, 328, 331,
- 334, 337, 340, 343, 346, 349, 352, 355,
- 358, 361, 364, 367, 370, 373, 376, 379,
- 382, 385, 388, 391, 394, 397, 400, 404,
- 407, 410, 413, 416, 419, 423, 426, 429,
- 432, 435, 438, 441, 444, 447, 450, 453,
- 456, 459, 462, 465, 468, 471, 474, 477,
- 479, 481, 483, 485, 487, 489, 492, 495,
- 499, 501, 503, 505, 507, 509, 511, 513,
- 515, 517, 524, 527, 530, 533, 536, 539,
- 542, 545, 548, 551, 554, 557, 560, 563,
- 566, 569, 571, 573, 575, 577, 579, 581,
- 584, 586, 588, 590, 592, 594, 596, 598,
- 600, 602, 616, 619, 622, 625, 628, 631,
- 634, 637, 640, 643, 646, 649, 652, 655,
- 658, 661, 664, 667, 670, 673, 676, 679,
- 682, 685, 688, 691, 694, 697, 701, 704,
- 707, 710, 713, 716, 719, 722, 725, 728,
- 731, 734, 737, 740, 743, 746, 749, 752,
- 755, 758, 762, 766, 770, 773, 776, 779,
- 782, 785, 788, 792, 795, 798, 801, 804,
- 807, 810, 813, 816, 819, 822, 825, 828,
- 831, 834, 837, 840, 843, 846, 849, 852,
- 854, 856, 858, 860, 862, 864, 866, 868,
- 870, 872, 874, 876, 878, 880, 882, 884,
- 886, 888, 890, 892, 894, 907, 910, 913,
- 916, 919, 922, 925, 928, 931, 934, 937,
- 940, 943, 946, 949, 952, 956, 959, 962,
- 965, 968, 971, 974, 977, 980, 983, 986,
- 989, 992, 995, 998, 1001, 1004, 1007, 1010,
- 1013, 1016, 1020, 1024, 1028, 1031, 1034, 1037,
- 1040, 1043, 1046, 1049, 1052, 1055, 1058, 1061,
- 1064, 1067, 1070, 1073, 1075, 1077, 1081, 1087,
- 1091, 1094, 1100, 1116, 1120, 1123, 1126, 1129,
- 1132, 1135, 1138, 1141, 1144, 1147, 1150, 1153,
- 1156, 1159, 1162, 1165, 1168, 1171, 1174, 1177,
- 1180, 1184, 1188, 1192, 1195, 1198, 1201, 1204,
- 1207, 1210, 1214, 1217, 1220, 1223, 1226, 1229,
- 1232, 1235, 1238, 1241, 1244, 1247, 1250, 1253,
- 1256, 1259, 1262, 1265, 1268, 1271, 1274
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 68, 155, 159, 355, 31, 357, 4,
- 0, 3, 0, 4, 0, 4, 4, 5,
- 15, 17, 31, 34, 37, 68, 155, 159,
- 355, 31, 357, 4, 0, 6, 0, 7,
- 0, 9, 8, 8, 9, 8, 8, 10,
- 10, 11, 10, 10, 10, 10, 11, 10,
- 10, 10, 10, 12, 10, 10, 10, 10,
- 13, 10, 10, 4, 14, 14, 0, 4,
- 14, 14, 0, 4, 16, 15, 4, 0,
- 18, 0, 19, 0, 20, 0, 21, 0,
- 22, 0, 23, 0, 24, 0, 25, 0,
- 26, 0, 27, 0, 28, 0, 29, 0,
- 30, 0, 414, 0, 32, 0, 4, 16,
- 33, 4, 16, 33, 0, 0, 0, 0,
- 35, 36, 4, 36, 36, 34, 35, 35,
- 4, 36, 34, 36, 0, 38, 0, 39,
- 0, 40, 0, 41, 0, 42, 0, 43,
- 0, 44, 0, 45, 0, 46, 0, 47,
- 0, 48, 0, 49, 0, 51, 50, 51,
- 50, 51, 51, 4, 52, 66, 4, 363,
- 382, 386, 412, 66, 51, 50, 51, 53,
- 50, 51, 54, 50, 51, 55, 50, 51,
- 56, 50, 51, 57, 50, 51, 58, 50,
- 51, 59, 50, 51, 60, 50, 51, 61,
- 50, 51, 62, 50, 51, 63, 50, 51,
- 64, 50, 51, 65, 50, 51, 4, 50,
- 51, 67, 50, 4, 4, 5, 15, 17,
- 31, 34, 37, 68, 155, 159, 355, 31,
- 357, 4, 0, 69, 151, 0, 70, 0,
- 71, 0, 72, 0, 73, 0, 74, 0,
- 75, 0, 76, 0, 77, 0, 78, 0,
- 79, 0, 80, 0, 81, 0, 82, 0,
- 83, 0, 85, 84, 85, 84, 85, 85,
- 4, 86, 4, 100, 112, 126, 85, 84,
- 85, 87, 84, 85, 88, 84, 85, 89,
- 84, 85, 90, 84, 85, 91, 84, 85,
- 92, 84, 85, 93, 84, 85, 94, 84,
- 85, 95, 84, 85, 96, 84, 85, 97,
- 84, 85, 98, 84, 85, 99, 84, 85,
- 4, 84, 85, 101, 84, 85, 102, 84,
- 85, 103, 84, 85, 104, 84, 85, 105,
- 84, 85, 106, 84, 85, 107, 84, 85,
- 108, 84, 85, 109, 84, 85, 110, 84,
- 85, 111, 84, 85, 67, 84, 85, 113,
- 84, 85, 114, 84, 85, 115, 84, 85,
- 116, 84, 85, 117, 84, 85, 118, 84,
- 85, 119, 84, 120, 85, 84, 121, 85,
- 84, 85, 122, 84, 85, 123, 84, 85,
- 124, 84, 85, 125, 84, 85, 111, 84,
- 85, 127, 132, 84, 85, 128, 84, 85,
- 129, 84, 85, 130, 84, 85, 131, 84,
- 85, 110, 84, 85, 133, 139, 84, 85,
- 134, 84, 85, 135, 84, 85, 136, 84,
- 85, 137, 84, 85, 138, 84, 85, 111,
- 84, 85, 140, 84, 85, 141, 84, 85,
- 142, 84, 85, 143, 84, 85, 144, 84,
- 85, 145, 84, 85, 146, 84, 85, 147,
- 84, 85, 148, 84, 85, 149, 84, 85,
- 150, 84, 85, 133, 84, 152, 0, 153,
- 0, 154, 0, 31, 0, 156, 0, 157,
- 0, 158, 158, 0, 32, 31, 0, 160,
- 185, 191, 0, 161, 0, 162, 0, 163,
- 0, 164, 0, 165, 0, 166, 0, 167,
- 0, 169, 168, 169, 168, 169, 169, 4,
- 170, 4, 169, 168, 169, 171, 168, 169,
- 172, 168, 169, 173, 168, 169, 174, 168,
- 169, 175, 168, 169, 176, 168, 169, 177,
- 168, 178, 169, 168, 179, 169, 168, 169,
- 180, 168, 169, 181, 168, 169, 182, 168,
- 169, 183, 168, 169, 184, 168, 169, 67,
- 168, 186, 0, 187, 0, 188, 0, 189,
- 0, 190, 0, 31, 0, 192, 279, 0,
- 193, 0, 194, 0, 195, 0, 196, 0,
- 197, 0, 198, 0, 199, 0, 201, 200,
- 201, 200, 201, 201, 4, 202, 216, 4,
- 217, 229, 247, 251, 277, 216, 201, 200,
- 201, 203, 200, 201, 204, 200, 201, 205,
- 200, 201, 206, 200, 201, 207, 200, 201,
- 208, 200, 201, 209, 200, 201, 210, 200,
- 201, 211, 200, 201, 212, 200, 201, 213,
- 200, 201, 214, 200, 201, 215, 200, 201,
- 4, 200, 201, 67, 200, 201, 218, 200,
- 201, 219, 200, 201, 220, 200, 201, 221,
- 200, 201, 222, 200, 201, 223, 200, 201,
- 224, 200, 201, 225, 200, 201, 226, 200,
- 201, 227, 200, 201, 228, 200, 201, 67,
- 200, 201, 230, 243, 200, 201, 231, 200,
- 201, 232, 200, 201, 233, 200, 201, 234,
- 200, 201, 235, 200, 201, 236, 200, 237,
- 201, 200, 238, 201, 200, 201, 239, 200,
- 201, 240, 200, 201, 241, 200, 201, 242,
- 200, 201, 228, 200, 201, 244, 200, 201,
- 245, 200, 201, 246, 200, 201, 216, 200,
- 201, 248, 200, 201, 249, 200, 201, 250,
- 250, 200, 201, 67, 216, 200, 201, 252,
- 258, 200, 201, 253, 200, 201, 254, 200,
- 201, 255, 200, 201, 256, 200, 201, 257,
- 200, 201, 216, 200, 201, 259, 265, 200,
- 201, 260, 200, 201, 261, 200, 201, 262,
- 200, 201, 263, 200, 201, 264, 200, 201,
- 228, 200, 201, 266, 200, 201, 267, 200,
- 201, 268, 200, 201, 269, 200, 201, 270,
- 200, 201, 271, 200, 201, 272, 200, 201,
- 273, 200, 201, 274, 200, 201, 275, 200,
- 201, 276, 200, 201, 259, 200, 201, 278,
- 200, 201, 246, 200, 280, 0, 281, 0,
- 282, 0, 283, 0, 284, 0, 285, 0,
- 286, 0, 287, 0, 288, 0, 289, 0,
- 290, 0, 291, 0, 292, 0, 293, 0,
- 294, 0, 295, 0, 296, 0, 297, 0,
- 298, 0, 300, 299, 300, 299, 300, 300,
- 4, 301, 315, 4, 316, 335, 339, 353,
- 315, 300, 299, 300, 302, 299, 300, 303,
- 299, 300, 304, 299, 300, 305, 299, 300,
- 306, 299, 300, 307, 299, 300, 308, 299,
- 300, 309, 299, 300, 310, 299, 300, 311,
- 299, 300, 312, 299, 300, 313, 299, 300,
- 314, 299, 300, 4, 299, 300, 67, 299,
- 300, 317, 331, 299, 300, 318, 299, 300,
- 319, 299, 300, 320, 299, 300, 321, 299,
- 300, 322, 299, 300, 323, 299, 324, 300,
- 299, 325, 300, 299, 300, 326, 299, 300,
- 327, 299, 300, 328, 299, 300, 329, 299,
- 300, 330, 299, 300, 67, 299, 300, 332,
- 299, 300, 333, 299, 300, 334, 299, 300,
- 315, 299, 300, 336, 299, 300, 337, 299,
- 300, 338, 338, 299, 300, 67, 315, 299,
- 300, 340, 346, 299, 300, 341, 299, 300,
- 342, 299, 300, 343, 299, 300, 344, 299,
- 300, 345, 299, 300, 315, 299, 300, 347,
- 299, 300, 348, 299, 300, 349, 299, 300,
- 350, 299, 300, 351, 299, 300, 352, 299,
- 300, 330, 299, 300, 354, 299, 300, 334,
- 299, 356, 0, 154, 0, 357, 358, 357,
- 0, 362, 361, 360, 358, 361, 359, 0,
- 360, 358, 359, 0, 360, 359, 362, 361,
- 360, 358, 361, 359, 362, 362, 5, 15,
- 17, 31, 34, 37, 68, 155, 159, 355,
- 31, 357, 362, 0, 51, 364, 378, 50,
- 51, 365, 50, 51, 366, 50, 51, 367,
- 50, 51, 368, 50, 51, 369, 50, 51,
- 370, 50, 371, 51, 50, 372, 51, 50,
- 51, 373, 50, 51, 374, 50, 51, 375,
- 50, 51, 376, 50, 51, 377, 50, 51,
- 67, 50, 51, 379, 50, 51, 380, 50,
- 51, 381, 50, 51, 66, 50, 51, 383,
- 50, 51, 384, 50, 51, 385, 385, 50,
- 51, 67, 66, 50, 51, 387, 393, 50,
- 51, 388, 50, 51, 389, 50, 51, 390,
- 50, 51, 391, 50, 51, 392, 50, 51,
- 66, 50, 51, 394, 400, 50, 51, 395,
- 50, 51, 396, 50, 51, 397, 50, 51,
- 398, 50, 51, 399, 50, 51, 377, 50,
- 51, 401, 50, 51, 402, 50, 51, 403,
- 50, 51, 404, 50, 51, 405, 50, 51,
- 406, 50, 51, 407, 50, 51, 408, 50,
- 51, 409, 50, 51, 410, 50, 51, 411,
- 50, 51, 394, 50, 51, 413, 50, 51,
- 381, 50, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 54, 0, 5,
- 1, 0, 29, 1, 29, 29, 29, 29,
- 29, 29, 35, 0, 43, 0, 43, 0,
- 43, 139, 48, 9, 106, 11, 0, 134,
- 45, 45, 45, 3, 122, 33, 33, 33,
- 0, 122, 33, 33, 33, 0, 122, 33,
- 0, 33, 0, 102, 7, 7, 43, 54,
- 0, 0, 43, 114, 25, 0, 54, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 149, 126,
- 57, 110, 23, 0, 43, 43, 43, 43,
- 0, 27, 118, 27, 27, 51, 27, 0,
- 54, 0, 1, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 72, 33, 84, 72, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 15, 0,
- 54, 15, 0, 130, 31, 60, 57, 31,
- 63, 57, 63, 63, 63, 63, 63, 63,
- 66, 31, 43, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 69, 33, 69, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 13, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 0, 43, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 81,
- 84, 81, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 21,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 75, 33, 84, 75,
- 84, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 17, 0, 54, 17, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 17,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 17, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 78, 33, 84, 78, 84, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 19, 0, 54, 19, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 19, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 19, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 0, 0,
- 43, 54, 37, 37, 87, 37, 37, 43,
- 0, 39, 0, 43, 0, 0, 54, 0,
- 0, 39, 0, 0, 54, 0, 93, 90,
- 41, 96, 90, 96, 96, 96, 96, 96,
- 96, 99, 0, 43, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 15, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 15, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 414;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 1003 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
-
- #line 1010 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1300 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1363 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/es.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_es()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Es", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/es.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/es.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 17, 18, 19, 35, 36, 37,
- 39, 41, 46, 51, 56, 61, 65, 69,
- 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 89, 91, 96, 103, 108, 109, 110,
- 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 135, 137, 139, 141,
- 143, 145, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 165, 181, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 195, 196, 197, 198, 199, 209, 211,
- 213, 215, 217, 219, 221, 223, 225, 227,
- 229, 231, 233, 235, 237, 239, 241, 243,
- 245, 247, 249, 251, 253, 255, 257, 259,
- 261, 263, 265, 267, 269, 271, 273, 275,
- 277, 279, 281, 283, 285, 287, 289, 292,
- 294, 296, 298, 300, 302, 305, 307, 309,
- 311, 313, 315, 317, 319, 321, 323, 325,
- 327, 329, 331, 333, 335, 337, 339, 341,
- 342, 343, 344, 345, 346, 347, 349, 351,
- 354, 355, 356, 357, 358, 359, 360, 361,
- 362, 363, 370, 372, 374, 376, 378, 380,
- 382, 384, 386, 388, 390, 392, 394, 396,
- 398, 400, 401, 402, 403, 404, 405, 406,
- 408, 409, 410, 411, 412, 413, 414, 415,
- 416, 417, 431, 433, 435, 437, 439, 441,
- 443, 445, 447, 449, 451, 453, 455, 457,
- 459, 461, 463, 465, 467, 469, 471, 473,
- 475, 477, 479, 481, 483, 485, 488, 490,
- 492, 494, 496, 498, 500, 502, 504, 506,
- 508, 510, 512, 514, 516, 518, 520, 522,
- 524, 526, 529, 532, 535, 537, 539, 541,
- 543, 545, 547, 550, 552, 554, 556, 558,
- 560, 562, 564, 566, 568, 570, 572, 574,
- 576, 578, 580, 582, 584, 586, 588, 590,
- 591, 592, 593, 594, 595, 596, 597, 598,
- 599, 600, 601, 602, 603, 604, 605, 606,
- 607, 608, 609, 610, 611, 624, 626, 628,
- 630, 632, 634, 636, 638, 640, 642, 644,
- 646, 648, 650, 652, 654, 657, 659, 661,
- 663, 665, 667, 669, 671, 673, 675, 677,
- 679, 681, 683, 685, 687, 689, 691, 693,
- 695, 697, 700, 703, 706, 708, 710, 712,
- 714, 716, 718, 720, 722, 724, 726, 728,
- 730, 732, 734, 736, 737, 738, 742, 748,
- 751, 753, 759, 775, 778, 780, 782, 784,
- 786, 788, 790, 792, 794, 796, 798, 800,
- 802, 804, 806, 808, 810, 812, 814, 816,
- 818, 821, 824, 827, 829, 831, 833, 835,
- 837, 839, 842, 844, 846, 848, 850, 852,
- 854, 856, 858, 860, 862, 864, 866, 868,
- 870, 872, 874, 876, 878, 880, 882
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 67, 68, 69, 80, 89, 124, 9,
- 13, -69, -65, 10, 32, 34, 35, 37,
- 42, 64, 65, 67, 68, 69, 80, 89,
- 124, 9, 13, 34, 34, 10, 13, 10,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 9,
- 13, 10, 32, 9, 13, 10, 13, 10,
- 95, 70, 69, 65, 84, 85, 82, 69,
- 95, 69, 78, 68, 95, 37, 32, 10,
- 13, 10, 13, 13, 32, 64, 9, 10,
- 9, 10, 13, 32, 64, 11, 12, 10,
- 32, 64, 9, 13, 110, 116, 101, 99,
- 101, 100, 101, 110, 116, 101, 115, 58,
- 10, 10, 10, 32, 35, 37, 42, 64,
- 67, 68, 69, 80, 89, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 32, 10, 32, 34,
- 35, 37, 42, 64, 65, 67, 68, 69,
- 80, 89, 124, 9, 13, 97, 117, 114,
- 97, 99, 116, 101, 114, -61, -83, 115,
- 116, 105, 99, 97, 58, 10, 10, 10,
- 32, 35, 37, 64, 65, 67, 69, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 110, 10,
- 116, 10, 101, 10, 99, 10, 101, 10,
- 100, 10, 101, 10, 110, 10, 116, 10,
- 101, 10, 115, 10, 58, 10, 97, 10,
- 114, 10, 97, 10, 99, 10, 116, 10,
- 101, 10, 114, -61, 10, -83, 10, 10,
- 115, 10, 116, 10, 105, 10, 99, 10,
- 97, 10, 106, 115, 10, 101, 10, 109,
- 10, 112, 10, 108, 10, 111, 10, 99,
- 113, 10, 101, 10, 110, 10, 97, 10,
- 114, 10, 105, 10, 111, 10, 117, 10,
- 101, 10, 109, 10, 97, 10, 32, 10,
- 100, 10, 101, 10, 108, 10, 32, 10,
- 101, 10, 115, 10, 99, 97, 110, 100,
- 111, 97, 100, 97, 111, 32, 115, 106,
- 110, 115, 101, 109, 112, 108, 111, 115,
- 58, 10, 10, 10, 32, 35, 67, 124,
- 9, 13, 10, 97, 10, 114, 10, 97,
- 10, 99, 10, 116, 10, 101, 10, 114,
- -61, 10, -83, 10, 10, 115, 10, 116,
- 10, 105, 10, 99, 10, 97, 10, 58,
- 116, 111, 110, 99, 101, 115, 99, 113,
- 101, 110, 97, 114, 105, 111, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 65,
- 67, 68, 69, 80, 89, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 32, 10, 110, 10,
- 116, 10, 101, 10, 99, 10, 101, 10,
- 100, 10, 101, 10, 110, 10, 116, 10,
- 101, 10, 115, 10, 58, 10, 97, 117,
- 10, 114, 10, 97, 10, 99, 10, 116,
- 10, 101, 10, 114, -61, 10, -83, 10,
- 10, 115, 10, 116, 10, 105, 10, 99,
- 10, 97, 10, 97, 10, 110, 10, 100,
- 10, 111, 10, 97, 10, 100, 10, 97,
- 111, 10, 32, 115, 10, 110, 115, 10,
- 116, 10, 111, 10, 110, 10, 99, 10,
- 101, 10, 115, 10, 99, 113, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 111, 10, 117, 10, 101, 10, 109,
- 10, 97, 10, 32, 10, 100, 10, 101,
- 10, 108, 10, 32, 10, 101, 10, 115,
- 10, 99, 10, 101, 10, 114, 117, 101,
- 109, 97, 32, 100, 101, 108, 32, 101,
- 115, 99, 101, 110, 97, 114, 105, 111,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 67, 68, 69, 80, 89, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 97,
- 117, 10, 114, 10, 97, 10, 99, 10,
- 116, 10, 101, 10, 114, -61, 10, -83,
- 10, 10, 115, 10, 116, 10, 105, 10,
- 99, 10, 97, 10, 58, 10, 97, 10,
- 110, 10, 100, 10, 111, 10, 97, 10,
- 100, 10, 97, 111, 10, 32, 115, 10,
- 110, 115, 10, 116, 10, 111, 10, 110,
- 10, 99, 10, 101, 10, 115, 10, 99,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 111, 10, 101, 10, 114,
- 101, 114, 32, 124, 9, 13, 10, 32,
- 92, 124, 9, 13, 10, 92, 124, 10,
- 92, 10, 32, 92, 124, 9, 13, 10,
- 32, 34, 35, 37, 42, 64, 65, 67,
- 68, 69, 80, 89, 124, 9, 13, 10,
- 97, 117, 10, 114, 10, 97, 10, 99,
- 10, 116, 10, 101, 10, 114, -61, 10,
- -83, 10, 10, 115, 10, 116, 10, 105,
- 10, 99, 10, 97, 10, 58, 10, 97,
- 10, 110, 10, 100, 10, 111, 10, 97,
- 10, 100, 10, 97, 111, 10, 32, 115,
- 10, 110, 115, 10, 116, 10, 111, 10,
- 110, 10, 99, 10, 101, 10, 115, 10,
- 99, 113, 10, 101, 10, 110, 10, 97,
- 10, 114, 10, 105, 10, 111, 10, 117,
- 10, 101, 10, 109, 10, 97, 10, 32,
- 10, 100, 10, 101, 10, 108, 10, 32,
- 10, 101, 10, 115, 10, 99, 10, 101,
- 10, 114, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 15, 1, 1, 14, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 11, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 14, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 8, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 2, 2, 3,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 5, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 12, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 3, 3, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 11, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 3, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 2, 4, 3,
- 2, 4, 14, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 3, 3, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 1, 0,
- 0, 1, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 17, 19, 21, 37, 39, 41,
- 44, 47, 52, 57, 62, 67, 71, 75,
- 78, 80, 82, 84, 86, 88, 90, 92,
- 94, 96, 98, 100, 102, 104, 106, 108,
- 110, 113, 116, 121, 128, 133, 135, 137,
- 139, 141, 143, 145, 147, 149, 151, 153,
- 155, 157, 159, 161, 174, 177, 180, 183,
- 186, 189, 192, 195, 198, 201, 204, 207,
- 210, 213, 216, 219, 235, 238, 240, 242,
- 244, 246, 248, 250, 252, 254, 256, 258,
- 260, 262, 264, 266, 268, 270, 280, 283,
- 286, 289, 292, 295, 298, 301, 304, 307,
- 310, 313, 316, 319, 322, 325, 328, 331,
- 334, 337, 340, 343, 346, 349, 352, 355,
- 358, 361, 364, 367, 370, 373, 376, 379,
- 382, 385, 388, 391, 394, 397, 400, 404,
- 407, 410, 413, 416, 419, 423, 426, 429,
- 432, 435, 438, 441, 444, 447, 450, 453,
- 456, 459, 462, 465, 468, 471, 474, 477,
- 479, 481, 483, 485, 487, 489, 492, 495,
- 499, 501, 503, 505, 507, 509, 511, 513,
- 515, 517, 524, 527, 530, 533, 536, 539,
- 542, 545, 548, 551, 554, 557, 560, 563,
- 566, 569, 571, 573, 575, 577, 579, 581,
- 584, 586, 588, 590, 592, 594, 596, 598,
- 600, 602, 616, 619, 622, 625, 628, 631,
- 634, 637, 640, 643, 646, 649, 652, 655,
- 658, 661, 664, 667, 670, 673, 676, 679,
- 682, 685, 688, 691, 694, 697, 701, 704,
- 707, 710, 713, 716, 719, 722, 725, 728,
- 731, 734, 737, 740, 743, 746, 749, 752,
- 755, 758, 762, 766, 770, 773, 776, 779,
- 782, 785, 788, 792, 795, 798, 801, 804,
- 807, 810, 813, 816, 819, 822, 825, 828,
- 831, 834, 837, 840, 843, 846, 849, 852,
- 854, 856, 858, 860, 862, 864, 866, 868,
- 870, 872, 874, 876, 878, 880, 882, 884,
- 886, 888, 890, 892, 894, 907, 910, 913,
- 916, 919, 922, 925, 928, 931, 934, 937,
- 940, 943, 946, 949, 952, 956, 959, 962,
- 965, 968, 971, 974, 977, 980, 983, 986,
- 989, 992, 995, 998, 1001, 1004, 1007, 1010,
- 1013, 1016, 1020, 1024, 1028, 1031, 1034, 1037,
- 1040, 1043, 1046, 1049, 1052, 1055, 1058, 1061,
- 1064, 1067, 1070, 1073, 1075, 1077, 1081, 1087,
- 1091, 1094, 1100, 1116, 1120, 1123, 1126, 1129,
- 1132, 1135, 1138, 1141, 1144, 1147, 1150, 1153,
- 1156, 1159, 1162, 1165, 1168, 1171, 1174, 1177,
- 1180, 1184, 1188, 1192, 1195, 1198, 1201, 1204,
- 1207, 1210, 1214, 1217, 1220, 1223, 1226, 1229,
- 1232, 1235, 1238, 1241, 1244, 1247, 1250, 1253,
- 1256, 1259, 1262, 1265, 1268, 1271, 1274
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 68, 155, 159, 355, 31, 357, 4,
- 0, 3, 0, 4, 0, 4, 4, 5,
- 15, 17, 31, 34, 37, 68, 155, 159,
- 355, 31, 357, 4, 0, 6, 0, 7,
- 0, 9, 8, 8, 9, 8, 8, 10,
- 10, 11, 10, 10, 10, 10, 11, 10,
- 10, 10, 10, 12, 10, 10, 10, 10,
- 13, 10, 10, 4, 14, 14, 0, 4,
- 14, 14, 0, 4, 16, 15, 4, 0,
- 18, 0, 19, 0, 20, 0, 21, 0,
- 22, 0, 23, 0, 24, 0, 25, 0,
- 26, 0, 27, 0, 28, 0, 29, 0,
- 30, 0, 414, 0, 32, 0, 4, 16,
- 33, 4, 16, 33, 0, 0, 0, 0,
- 35, 36, 4, 36, 36, 34, 35, 35,
- 4, 36, 34, 36, 0, 38, 0, 39,
- 0, 40, 0, 41, 0, 42, 0, 43,
- 0, 44, 0, 45, 0, 46, 0, 47,
- 0, 48, 0, 49, 0, 51, 50, 51,
- 50, 51, 51, 4, 52, 66, 4, 363,
- 382, 386, 412, 66, 51, 50, 51, 53,
- 50, 51, 54, 50, 51, 55, 50, 51,
- 56, 50, 51, 57, 50, 51, 58, 50,
- 51, 59, 50, 51, 60, 50, 51, 61,
- 50, 51, 62, 50, 51, 63, 50, 51,
- 64, 50, 51, 65, 50, 51, 4, 50,
- 51, 67, 50, 4, 4, 5, 15, 17,
- 31, 34, 37, 68, 155, 159, 355, 31,
- 357, 4, 0, 69, 151, 0, 70, 0,
- 71, 0, 72, 0, 73, 0, 74, 0,
- 75, 0, 76, 0, 77, 0, 78, 0,
- 79, 0, 80, 0, 81, 0, 82, 0,
- 83, 0, 85, 84, 85, 84, 85, 85,
- 4, 86, 4, 100, 112, 126, 85, 84,
- 85, 87, 84, 85, 88, 84, 85, 89,
- 84, 85, 90, 84, 85, 91, 84, 85,
- 92, 84, 85, 93, 84, 85, 94, 84,
- 85, 95, 84, 85, 96, 84, 85, 97,
- 84, 85, 98, 84, 85, 99, 84, 85,
- 4, 84, 85, 101, 84, 85, 102, 84,
- 85, 103, 84, 85, 104, 84, 85, 105,
- 84, 85, 106, 84, 85, 107, 84, 85,
- 108, 84, 85, 109, 84, 85, 110, 84,
- 85, 111, 84, 85, 67, 84, 85, 113,
- 84, 85, 114, 84, 85, 115, 84, 85,
- 116, 84, 85, 117, 84, 85, 118, 84,
- 85, 119, 84, 120, 85, 84, 121, 85,
- 84, 85, 122, 84, 85, 123, 84, 85,
- 124, 84, 85, 125, 84, 85, 111, 84,
- 85, 127, 132, 84, 85, 128, 84, 85,
- 129, 84, 85, 130, 84, 85, 131, 84,
- 85, 110, 84, 85, 133, 139, 84, 85,
- 134, 84, 85, 135, 84, 85, 136, 84,
- 85, 137, 84, 85, 138, 84, 85, 111,
- 84, 85, 140, 84, 85, 141, 84, 85,
- 142, 84, 85, 143, 84, 85, 144, 84,
- 85, 145, 84, 85, 146, 84, 85, 147,
- 84, 85, 148, 84, 85, 149, 84, 85,
- 150, 84, 85, 133, 84, 152, 0, 153,
- 0, 154, 0, 31, 0, 156, 0, 157,
- 0, 158, 158, 0, 32, 31, 0, 160,
- 185, 191, 0, 161, 0, 162, 0, 163,
- 0, 164, 0, 165, 0, 166, 0, 167,
- 0, 169, 168, 169, 168, 169, 169, 4,
- 170, 4, 169, 168, 169, 171, 168, 169,
- 172, 168, 169, 173, 168, 169, 174, 168,
- 169, 175, 168, 169, 176, 168, 169, 177,
- 168, 178, 169, 168, 179, 169, 168, 169,
- 180, 168, 169, 181, 168, 169, 182, 168,
- 169, 183, 168, 169, 184, 168, 169, 67,
- 168, 186, 0, 187, 0, 188, 0, 189,
- 0, 190, 0, 31, 0, 192, 279, 0,
- 193, 0, 194, 0, 195, 0, 196, 0,
- 197, 0, 198, 0, 199, 0, 201, 200,
- 201, 200, 201, 201, 4, 202, 216, 4,
- 217, 229, 247, 251, 277, 216, 201, 200,
- 201, 203, 200, 201, 204, 200, 201, 205,
- 200, 201, 206, 200, 201, 207, 200, 201,
- 208, 200, 201, 209, 200, 201, 210, 200,
- 201, 211, 200, 201, 212, 200, 201, 213,
- 200, 201, 214, 200, 201, 215, 200, 201,
- 4, 200, 201, 67, 200, 201, 218, 200,
- 201, 219, 200, 201, 220, 200, 201, 221,
- 200, 201, 222, 200, 201, 223, 200, 201,
- 224, 200, 201, 225, 200, 201, 226, 200,
- 201, 227, 200, 201, 228, 200, 201, 67,
- 200, 201, 230, 243, 200, 201, 231, 200,
- 201, 232, 200, 201, 233, 200, 201, 234,
- 200, 201, 235, 200, 201, 236, 200, 237,
- 201, 200, 238, 201, 200, 201, 239, 200,
- 201, 240, 200, 201, 241, 200, 201, 242,
- 200, 201, 228, 200, 201, 244, 200, 201,
- 245, 200, 201, 246, 200, 201, 216, 200,
- 201, 248, 200, 201, 249, 200, 201, 250,
- 250, 200, 201, 67, 216, 200, 201, 252,
- 258, 200, 201, 253, 200, 201, 254, 200,
- 201, 255, 200, 201, 256, 200, 201, 257,
- 200, 201, 216, 200, 201, 259, 265, 200,
- 201, 260, 200, 201, 261, 200, 201, 262,
- 200, 201, 263, 200, 201, 264, 200, 201,
- 228, 200, 201, 266, 200, 201, 267, 200,
- 201, 268, 200, 201, 269, 200, 201, 270,
- 200, 201, 271, 200, 201, 272, 200, 201,
- 273, 200, 201, 274, 200, 201, 275, 200,
- 201, 276, 200, 201, 259, 200, 201, 278,
- 200, 201, 246, 200, 280, 0, 281, 0,
- 282, 0, 283, 0, 284, 0, 285, 0,
- 286, 0, 287, 0, 288, 0, 289, 0,
- 290, 0, 291, 0, 292, 0, 293, 0,
- 294, 0, 295, 0, 296, 0, 297, 0,
- 298, 0, 300, 299, 300, 299, 300, 300,
- 4, 301, 315, 4, 316, 335, 339, 353,
- 315, 300, 299, 300, 302, 299, 300, 303,
- 299, 300, 304, 299, 300, 305, 299, 300,
- 306, 299, 300, 307, 299, 300, 308, 299,
- 300, 309, 299, 300, 310, 299, 300, 311,
- 299, 300, 312, 299, 300, 313, 299, 300,
- 314, 299, 300, 4, 299, 300, 67, 299,
- 300, 317, 331, 299, 300, 318, 299, 300,
- 319, 299, 300, 320, 299, 300, 321, 299,
- 300, 322, 299, 300, 323, 299, 324, 300,
- 299, 325, 300, 299, 300, 326, 299, 300,
- 327, 299, 300, 328, 299, 300, 329, 299,
- 300, 330, 299, 300, 67, 299, 300, 332,
- 299, 300, 333, 299, 300, 334, 299, 300,
- 315, 299, 300, 336, 299, 300, 337, 299,
- 300, 338, 338, 299, 300, 67, 315, 299,
- 300, 340, 346, 299, 300, 341, 299, 300,
- 342, 299, 300, 343, 299, 300, 344, 299,
- 300, 345, 299, 300, 315, 299, 300, 347,
- 299, 300, 348, 299, 300, 349, 299, 300,
- 350, 299, 300, 351, 299, 300, 352, 299,
- 300, 330, 299, 300, 354, 299, 300, 334,
- 299, 356, 0, 154, 0, 357, 358, 357,
- 0, 362, 361, 360, 358, 361, 359, 0,
- 360, 358, 359, 0, 360, 359, 362, 361,
- 360, 358, 361, 359, 362, 362, 5, 15,
- 17, 31, 34, 37, 68, 155, 159, 355,
- 31, 357, 362, 0, 51, 364, 378, 50,
- 51, 365, 50, 51, 366, 50, 51, 367,
- 50, 51, 368, 50, 51, 369, 50, 51,
- 370, 50, 371, 51, 50, 372, 51, 50,
- 51, 373, 50, 51, 374, 50, 51, 375,
- 50, 51, 376, 50, 51, 377, 50, 51,
- 67, 50, 51, 379, 50, 51, 380, 50,
- 51, 381, 50, 51, 66, 50, 51, 383,
- 50, 51, 384, 50, 51, 385, 385, 50,
- 51, 67, 66, 50, 51, 387, 393, 50,
- 51, 388, 50, 51, 389, 50, 51, 390,
- 50, 51, 391, 50, 51, 392, 50, 51,
- 66, 50, 51, 394, 400, 50, 51, 395,
- 50, 51, 396, 50, 51, 397, 50, 51,
- 398, 50, 51, 399, 50, 51, 377, 50,
- 51, 401, 50, 51, 402, 50, 51, 403,
- 50, 51, 404, 50, 51, 405, 50, 51,
- 406, 50, 51, 407, 50, 51, 408, 50,
- 51, 409, 50, 51, 410, 50, 51, 411,
- 50, 51, 394, 50, 51, 413, 50, 51,
- 381, 50, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 54, 0, 5,
- 1, 0, 29, 1, 29, 29, 29, 29,
- 29, 29, 35, 0, 43, 0, 43, 0,
- 43, 139, 48, 9, 106, 11, 0, 134,
- 45, 45, 45, 3, 122, 33, 33, 33,
- 0, 122, 33, 33, 33, 0, 122, 33,
- 0, 33, 0, 102, 7, 7, 43, 54,
- 0, 0, 43, 114, 25, 0, 54, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 149, 126,
- 57, 110, 23, 0, 43, 43, 43, 43,
- 0, 27, 118, 27, 27, 51, 27, 0,
- 54, 0, 1, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 72, 33, 84, 72, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 15, 0,
- 54, 15, 0, 130, 31, 60, 57, 31,
- 63, 57, 63, 63, 63, 63, 63, 63,
- 66, 31, 43, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 69, 33, 69, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 13, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 0, 43, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 81,
- 84, 81, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 21,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 75, 33, 84, 75,
- 84, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 17, 0, 54, 17, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 17,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 17, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 78, 33, 84, 78, 84, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 19, 0, 54, 19, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 19, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 19, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 0, 0,
- 43, 54, 37, 37, 87, 37, 37, 43,
- 0, 39, 0, 43, 0, 0, 54, 0,
- 0, 39, 0, 0, 54, 0, 93, 90,
- 41, 96, 90, 96, 96, 96, 96, 96,
- 96, 99, 0, 43, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 15, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 15, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 414;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/es.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 1003 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/es.c.rl"
-
-#line 1010 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/es.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/es.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/es.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/es.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/es.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/es.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/es.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/es.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/es.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/es.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/es.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/es.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/es.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/es.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/es.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/es.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/es.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/es.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/es.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/es.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/es.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/es.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/es.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/es.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1300 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/es.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1363 "ext/gherkin_lexer_es/gherkin_lexer_es.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/es.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_es()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Es", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_et/extconf.rb
index ed77120,ed77120..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_et/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_et")
--have_library("c", "main")
--create_makefile("gherkin_lexer_et")
diff --cc ext/gherkin_lexer_et/gherkin_lexer_et.c
index 6c3e3d4,f4d04bb..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_et/gherkin_lexer_et.c
+++ /dev/null
@@@ -1,1236 -1,1236 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 18, 19, 20, 37, 38, 39,
- 41, 43, 48, 53, 58, 63, 67, 71,
- 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 91, 93, 98, 105, 110, 111, 112,
- 113, 114, 115, 116, 117, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 135,
- 137, 139, 141, 143, 145, 147, 164, 165,
- 166, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 188, 190, 192, 194, 196, 198,
- 200, 202, 204, 206, 208, 210, 212, 214,
- 216, 218, 220, 222, 224, 226, 228, 230,
- 232, 234, 236, 238, 240, 242, 244, 246,
- 248, 250, 252, 254, 256, 258, 260, 262,
- 264, 266, 268, 270, 272, 274, 276, 278,
- 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 308, 310, 312, 314, 316, 318, 320,
- 322, 324, 326, 328, 330, 332, 334, 336,
- 338, 340, 342, 344, 346, 348, 350, 352,
- 354, 356, 358, 361, 363, 365, 367, 369,
- 371, 373, 376, 378, 380, 382, 384, 386,
- 388, 390, 392, 394, 396, 398, 399, 400,
- 401, 402, 403, 404, 405, 406, 407, 408,
- 409, 410, 411, 426, 428, 430, 432, 434,
- 436, 438, 440, 442, 444, 446, 448, 450,
- 452, 454, 456, 458, 460, 462, 464, 466,
- 468, 470, 472, 474, 476, 479, 481, 483,
- 485, 487, 489, 491, 493, 495, 497, 499,
- 501, 503, 505, 507, 509, 511, 513, 515,
- 517, 519, 522, 524, 526, 528, 530, 532,
- 533, 534, 535, 536, 537, 538, 539, 553,
- 555, 557, 559, 561, 563, 565, 567, 569,
- 571, 573, 575, 577, 579, 581, 583, 585,
- 587, 589, 591, 593, 595, 597, 599, 601,
- 603, 606, 608, 610, 612, 614, 616, 618,
- 620, 622, 624, 626, 628, 630, 632, 634,
- 636, 638, 640, 642, 644, 646, 649, 651,
- 655, 661, 664, 666, 672, 689
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 69, 74, 75, 79, 82, 83, 84, 124,
- 9, 13, -69, -65, 10, 32, 34, 35,
- 37, 42, 64, 69, 74, 75, 79, 82,
- 83, 84, 124, 9, 13, 34, 34, 10,
- 13, 10, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 9, 13, 10, 32, 9, 13, 10,
- 13, 10, 95, 70, 69, 65, 84, 85,
- 82, 69, 95, 69, 78, 68, 95, 37,
- 32, 10, 13, 10, 13, 13, 32, 64,
- 9, 10, 9, 10, 13, 32, 64, 11,
- 12, 10, 32, 64, 9, 13, 101, 108,
- 100, 97, 100, 101, 115, 97, 117, 104,
- 116, 117, 109, 105, 100, 58, 10, 10,
- 10, 32, 35, 79, 124, 9, 13, 10,
- 109, 10, 97, 10, 100, 10, 117, 10,
- 115, 10, 58, 10, 32, 34, 35, 37,
- 42, 64, 69, 74, 75, 79, 82, 83,
- 84, 124, 9, 13, 117, 105, 32, 100,
- 109, 97, 100, 117, 115, 58, 10, 10,
- 10, 32, 35, 37, 64, 74, 79, 82,
- 83, 84, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 117, 10, 104, 10, 116, 10, 117,
- 10, 109, 10, 105, 10, 100, 10, 58,
- 10, 109, 10, 97, 10, 100, 10, 117,
- 10, 115, 10, 97, 10, 97, 10, 109,
- 10, 115, 10, 116, 10, 115, 10, 101,
- 10, 110, 10, 97, 10, 97, 10, 114,
- 10, 105, 10, 117, 10, 109, 10, 97,
- 10, 117, 10, 115, 10, 116, 97, 97,
- 109, 115, 116, 115, 101, 110, 97, 97,
- 114, 105, 117, 109, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 69, 74, 75,
- 79, 83, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, 10, 101, 10, 108, 10, 100,
- 10, 97, 10, 100, 10, 101, 10, 115,
- 10, 97, 10, 117, 10, 105, 10, 32,
- 100, 10, 109, 10, 97, 10, 100, 10,
- 117, 10, 115, 10, 58, 10, 105, 116,
- 10, 105, 10, 115, 10, 101, 10, 110,
- 10, 97, 10, 97, 10, 114, 10, 105,
- 10, 117, 10, 109, 105, 116, 105, 115,
- 101, 110, 97, 97, 114, 105, 117, 109,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 69, 74, 75, 79, 82, 83, 84,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 32,
- 10, 101, 10, 108, 10, 100, 10, 97,
- 10, 100, 10, 101, 10, 115, 10, 97,
- 10, 117, 10, 105, 10, 32, 100, 10,
- 109, 10, 97, 10, 100, 10, 117, 10,
- 115, 10, 58, 10, 97, 10, 97, 10,
- 109, 10, 115, 10, 116, 10, 115, 10,
- 101, 10, 110, 10, 97, 10, 97, 10,
- 114, 10, 105, 10, 117, 10, 109, 10,
- 105, 116, 10, 105, 10, 97, 10, 117,
- 10, 115, 10, 116, 97, 117, 115, 116,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 69, 74, 75, 79, 82, 83, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 101, 10, 108, 10, 100, 10, 97, 10,
- 100, 10, 101, 10, 115, 10, 97, 10,
- 117, 10, 105, 10, 32, 100, 10, 109,
- 10, 97, 10, 100, 10, 117, 10, 115,
- 10, 58, 10, 97, 10, 97, 10, 109,
- 10, 115, 10, 116, 10, 115, 10, 101,
- 10, 110, 10, 97, 10, 97, 10, 114,
- 10, 105, 10, 117, 10, 109, 10, 105,
- 116, 10, 105, 32, 124, 9, 13, 10,
- 32, 92, 124, 9, 13, 10, 92, 124,
- 10, 92, 10, 32, 92, 124, 9, 13,
- 10, 32, 34, 35, 37, 42, 64, 69,
- 74, 75, 79, 82, 83, 84, 124, 9,
- 13, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 16, 1, 1, 15, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 5, 2,
- 2, 2, 2, 2, 2, 15, 1, 1,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 10, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 11, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 13, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 12, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 4, 3, 2, 4, 15, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 1, 0, 0, 1, 1, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 18, 20, 22, 39, 41, 43,
- 46, 49, 54, 59, 64, 69, 73, 77,
- 80, 82, 84, 86, 88, 90, 92, 94,
- 96, 98, 100, 102, 104, 106, 108, 110,
- 112, 115, 118, 123, 130, 135, 137, 139,
- 141, 143, 145, 147, 149, 152, 154, 156,
- 158, 160, 162, 164, 166, 168, 170, 177,
- 180, 183, 186, 189, 192, 195, 212, 214,
- 216, 219, 221, 223, 225, 227, 229, 231,
- 233, 235, 247, 250, 253, 256, 259, 262,
- 265, 268, 271, 274, 277, 280, 283, 286,
- 289, 292, 295, 298, 301, 304, 307, 310,
- 313, 316, 319, 322, 325, 328, 331, 334,
- 337, 340, 343, 346, 349, 352, 355, 358,
- 361, 364, 367, 370, 373, 376, 379, 382,
- 384, 386, 388, 390, 392, 394, 396, 398,
- 400, 402, 404, 406, 408, 410, 412, 414,
- 416, 429, 432, 435, 438, 441, 444, 447,
- 450, 453, 456, 459, 462, 465, 468, 471,
- 474, 477, 480, 483, 486, 489, 492, 495,
- 498, 501, 504, 508, 511, 514, 517, 520,
- 523, 526, 530, 533, 536, 539, 542, 545,
- 548, 551, 554, 557, 560, 563, 565, 567,
- 569, 571, 573, 575, 577, 579, 581, 583,
- 585, 587, 589, 604, 607, 610, 613, 616,
- 619, 622, 625, 628, 631, 634, 637, 640,
- 643, 646, 649, 652, 655, 658, 661, 664,
- 667, 670, 673, 676, 679, 683, 686, 689,
- 692, 695, 698, 701, 704, 707, 710, 713,
- 716, 719, 722, 725, 728, 731, 734, 737,
- 740, 743, 747, 750, 753, 756, 759, 762,
- 764, 766, 768, 770, 772, 774, 776, 790,
- 793, 796, 799, 802, 805, 808, 811, 814,
- 817, 820, 823, 826, 829, 832, 835, 838,
- 841, 844, 847, 850, 853, 856, 859, 862,
- 865, 869, 872, 875, 878, 881, 884, 887,
- 890, 893, 896, 899, 902, 905, 908, 911,
- 914, 917, 920, 923, 926, 929, 933, 936,
- 940, 946, 950, 953, 959, 976
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 44, 62, 65, 119, 180, 247, 303,
- 4, 0, 3, 0, 4, 0, 4, 4,
- 5, 15, 17, 31, 34, 37, 44, 62,
- 65, 119, 180, 247, 303, 4, 0, 6,
- 0, 7, 0, 9, 8, 8, 9, 8,
- 8, 10, 10, 11, 10, 10, 10, 10,
- 11, 10, 10, 10, 10, 12, 10, 10,
- 10, 10, 13, 10, 10, 4, 14, 14,
- 0, 4, 14, 14, 0, 4, 16, 15,
- 4, 0, 18, 0, 19, 0, 20, 0,
- 21, 0, 22, 0, 23, 0, 24, 0,
- 25, 0, 26, 0, 27, 0, 28, 0,
- 29, 0, 30, 0, 309, 0, 32, 0,
- 4, 16, 33, 4, 16, 33, 0, 0,
- 0, 0, 35, 36, 4, 36, 36, 34,
- 35, 35, 4, 36, 34, 36, 0, 38,
- 0, 39, 0, 40, 0, 41, 0, 42,
- 0, 43, 0, 31, 0, 31, 45, 0,
- 46, 0, 47, 0, 48, 0, 49, 0,
- 50, 0, 51, 0, 52, 0, 54, 53,
- 54, 53, 54, 54, 4, 55, 4, 54,
- 53, 54, 56, 53, 54, 57, 53, 54,
- 58, 53, 54, 59, 53, 54, 60, 53,
- 54, 61, 53, 4, 4, 5, 15, 17,
- 31, 34, 37, 44, 62, 65, 119, 180,
- 247, 303, 4, 0, 63, 0, 64, 0,
- 32, 31, 0, 66, 0, 67, 0, 68,
- 0, 69, 0, 70, 0, 71, 0, 73,
- 72, 73, 72, 73, 73, 4, 74, 4,
- 88, 96, 101, 105, 115, 73, 72, 73,
- 75, 72, 73, 76, 72, 73, 77, 72,
- 73, 78, 72, 73, 79, 72, 73, 80,
- 72, 73, 81, 72, 73, 82, 72, 73,
- 83, 72, 73, 84, 72, 73, 85, 72,
- 73, 86, 72, 73, 87, 72, 73, 4,
- 72, 73, 89, 72, 73, 90, 72, 73,
- 91, 72, 73, 92, 72, 73, 93, 72,
- 73, 94, 72, 73, 95, 72, 73, 61,
- 72, 73, 97, 72, 73, 98, 72, 73,
- 99, 72, 73, 100, 72, 73, 95, 72,
- 73, 102, 72, 73, 103, 72, 73, 104,
- 72, 73, 105, 72, 73, 106, 72, 73,
- 107, 72, 73, 108, 72, 73, 109, 72,
- 73, 110, 72, 73, 111, 72, 73, 112,
- 72, 73, 113, 72, 73, 114, 72, 73,
- 95, 72, 73, 116, 72, 73, 117, 72,
- 73, 118, 72, 73, 95, 72, 120, 0,
- 121, 0, 122, 0, 123, 0, 124, 0,
- 125, 0, 126, 0, 127, 0, 128, 0,
- 129, 0, 130, 0, 131, 0, 132, 0,
- 133, 0, 134, 0, 136, 135, 136, 135,
- 136, 136, 4, 137, 151, 4, 152, 159,
- 160, 163, 169, 136, 135, 136, 138, 135,
- 136, 139, 135, 136, 140, 135, 136, 141,
- 135, 136, 142, 135, 136, 143, 135, 136,
- 144, 135, 136, 145, 135, 136, 146, 135,
- 136, 147, 135, 136, 148, 135, 136, 149,
- 135, 136, 150, 135, 136, 4, 135, 136,
- 61, 135, 136, 153, 135, 136, 154, 135,
- 136, 155, 135, 136, 156, 135, 136, 157,
- 135, 136, 158, 135, 136, 151, 135, 136,
- 151, 135, 136, 161, 135, 136, 162, 135,
- 136, 61, 151, 135, 136, 164, 135, 136,
- 165, 135, 136, 166, 135, 136, 167, 135,
- 136, 168, 135, 136, 61, 135, 136, 170,
- 171, 135, 136, 158, 135, 136, 172, 135,
- 136, 173, 135, 136, 174, 135, 136, 175,
- 135, 136, 176, 135, 136, 177, 135, 136,
- 178, 135, 136, 179, 135, 136, 168, 135,
- 181, 182, 0, 43, 0, 183, 0, 184,
- 0, 185, 0, 186, 0, 187, 0, 188,
- 0, 189, 0, 190, 0, 191, 0, 192,
- 0, 194, 193, 194, 193, 194, 194, 4,
- 195, 209, 4, 210, 217, 218, 221, 227,
- 241, 243, 194, 193, 194, 196, 193, 194,
- 197, 193, 194, 198, 193, 194, 199, 193,
- 194, 200, 193, 194, 201, 193, 194, 202,
- 193, 194, 203, 193, 194, 204, 193, 194,
- 205, 193, 194, 206, 193, 194, 207, 193,
- 194, 208, 193, 194, 4, 193, 194, 61,
- 193, 194, 211, 193, 194, 212, 193, 194,
- 213, 193, 194, 214, 193, 194, 215, 193,
- 194, 216, 193, 194, 209, 193, 194, 209,
- 193, 194, 219, 193, 194, 220, 193, 194,
- 61, 209, 193, 194, 222, 193, 194, 223,
- 193, 194, 224, 193, 194, 225, 193, 194,
- 226, 193, 194, 61, 193, 194, 228, 193,
- 194, 229, 193, 194, 230, 193, 194, 231,
- 193, 194, 232, 193, 194, 233, 193, 194,
- 234, 193, 194, 235, 193, 194, 236, 193,
- 194, 237, 193, 194, 238, 193, 194, 239,
- 193, 194, 240, 193, 194, 226, 193, 194,
- 242, 232, 193, 194, 216, 193, 194, 244,
- 193, 194, 245, 193, 194, 246, 193, 194,
- 226, 193, 248, 0, 249, 0, 250, 0,
- 251, 0, 252, 0, 254, 253, 254, 253,
- 254, 254, 4, 255, 269, 4, 270, 277,
- 278, 281, 287, 301, 254, 253, 254, 256,
- 253, 254, 257, 253, 254, 258, 253, 254,
- 259, 253, 254, 260, 253, 254, 261, 253,
- 254, 262, 253, 254, 263, 253, 254, 264,
- 253, 254, 265, 253, 254, 266, 253, 254,
- 267, 253, 254, 268, 253, 254, 4, 253,
- 254, 61, 253, 254, 271, 253, 254, 272,
- 253, 254, 273, 253, 254, 274, 253, 254,
- 275, 253, 254, 276, 253, 254, 269, 253,
- 254, 269, 253, 254, 279, 253, 254, 280,
- 253, 254, 61, 269, 253, 254, 282, 253,
- 254, 283, 253, 254, 284, 253, 254, 285,
- 253, 254, 286, 253, 254, 61, 253, 254,
- 288, 253, 254, 289, 253, 254, 290, 253,
- 254, 291, 253, 254, 292, 253, 254, 293,
- 253, 254, 294, 253, 254, 295, 253, 254,
- 296, 253, 254, 297, 253, 254, 298, 253,
- 254, 299, 253, 254, 300, 253, 254, 286,
- 253, 254, 302, 292, 253, 254, 276, 253,
- 303, 304, 303, 0, 308, 307, 306, 304,
- 307, 305, 0, 306, 304, 305, 0, 306,
- 305, 308, 307, 306, 304, 307, 305, 308,
- 308, 5, 15, 17, 31, 34, 37, 44,
- 62, 65, 119, 180, 247, 303, 308, 0,
- 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 35,
- 0, 43, 0, 43, 0, 43, 54, 0,
- 5, 1, 0, 29, 1, 29, 29, 29,
- 29, 29, 29, 29, 35, 0, 43, 0,
- 43, 0, 43, 139, 48, 9, 106, 11,
- 0, 134, 45, 45, 45, 3, 122, 33,
- 33, 33, 0, 122, 33, 33, 33, 0,
- 122, 33, 0, 33, 0, 102, 7, 7,
- 43, 54, 0, 0, 43, 114, 25, 0,
- 54, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 149, 126, 57, 110, 23, 0, 43, 43,
- 43, 43, 0, 27, 118, 27, 27, 51,
- 27, 0, 54, 0, 1, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 81, 84, 81, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 21, 0, 130, 31, 60, 57, 31,
- 63, 57, 63, 63, 63, 63, 63, 63,
- 63, 66, 31, 43, 0, 43, 0, 43,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 69, 33, 69,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 13,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 13,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 78, 33, 84, 78, 84, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 54,
- 19, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 19, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 19, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 75,
- 33, 84, 75, 84, 84, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 17, 0, 54, 17,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 17, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 17, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 72, 33, 84, 72, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 15, 0,
- 54, 15, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 15, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 0, 0, 0, 43, 54, 37, 37, 87,
- 37, 37, 43, 0, 39, 0, 43, 0,
- 0, 54, 0, 0, 39, 0, 0, 54,
- 0, 93, 90, 41, 96, 90, 96, 96,
- 96, 96, 96, 96, 96, 99, 0, 43,
- 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 309;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 840 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
-
- #line 847 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1137 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1200 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/et.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_et()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Et", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/et.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/et.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 18, 19, 20, 37, 38, 39,
- 41, 43, 48, 53, 58, 63, 67, 71,
- 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 91, 93, 98, 105, 110, 111, 112,
- 113, 114, 115, 116, 117, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 135,
- 137, 139, 141, 143, 145, 147, 164, 165,
- 166, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 188, 190, 192, 194, 196, 198,
- 200, 202, 204, 206, 208, 210, 212, 214,
- 216, 218, 220, 222, 224, 226, 228, 230,
- 232, 234, 236, 238, 240, 242, 244, 246,
- 248, 250, 252, 254, 256, 258, 260, 262,
- 264, 266, 268, 270, 272, 274, 276, 278,
- 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 308, 310, 312, 314, 316, 318, 320,
- 322, 324, 326, 328, 330, 332, 334, 336,
- 338, 340, 342, 344, 346, 348, 350, 352,
- 354, 356, 358, 361, 363, 365, 367, 369,
- 371, 373, 376, 378, 380, 382, 384, 386,
- 388, 390, 392, 394, 396, 398, 399, 400,
- 401, 402, 403, 404, 405, 406, 407, 408,
- 409, 410, 411, 426, 428, 430, 432, 434,
- 436, 438, 440, 442, 444, 446, 448, 450,
- 452, 454, 456, 458, 460, 462, 464, 466,
- 468, 470, 472, 474, 476, 479, 481, 483,
- 485, 487, 489, 491, 493, 495, 497, 499,
- 501, 503, 505, 507, 509, 511, 513, 515,
- 517, 519, 522, 524, 526, 528, 530, 532,
- 533, 534, 535, 536, 537, 538, 539, 553,
- 555, 557, 559, 561, 563, 565, 567, 569,
- 571, 573, 575, 577, 579, 581, 583, 585,
- 587, 589, 591, 593, 595, 597, 599, 601,
- 603, 606, 608, 610, 612, 614, 616, 618,
- 620, 622, 624, 626, 628, 630, 632, 634,
- 636, 638, 640, 642, 644, 646, 649, 651,
- 655, 661, 664, 666, 672, 689
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 69, 74, 75, 79, 82, 83, 84, 124,
- 9, 13, -69, -65, 10, 32, 34, 35,
- 37, 42, 64, 69, 74, 75, 79, 82,
- 83, 84, 124, 9, 13, 34, 34, 10,
- 13, 10, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 9, 13, 10, 32, 9, 13, 10,
- 13, 10, 95, 70, 69, 65, 84, 85,
- 82, 69, 95, 69, 78, 68, 95, 37,
- 32, 10, 13, 10, 13, 13, 32, 64,
- 9, 10, 9, 10, 13, 32, 64, 11,
- 12, 10, 32, 64, 9, 13, 101, 108,
- 100, 97, 100, 101, 115, 97, 117, 104,
- 116, 117, 109, 105, 100, 58, 10, 10,
- 10, 32, 35, 79, 124, 9, 13, 10,
- 109, 10, 97, 10, 100, 10, 117, 10,
- 115, 10, 58, 10, 32, 34, 35, 37,
- 42, 64, 69, 74, 75, 79, 82, 83,
- 84, 124, 9, 13, 117, 105, 32, 100,
- 109, 97, 100, 117, 115, 58, 10, 10,
- 10, 32, 35, 37, 64, 74, 79, 82,
- 83, 84, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 117, 10, 104, 10, 116, 10, 117,
- 10, 109, 10, 105, 10, 100, 10, 58,
- 10, 109, 10, 97, 10, 100, 10, 117,
- 10, 115, 10, 97, 10, 97, 10, 109,
- 10, 115, 10, 116, 10, 115, 10, 101,
- 10, 110, 10, 97, 10, 97, 10, 114,
- 10, 105, 10, 117, 10, 109, 10, 97,
- 10, 117, 10, 115, 10, 116, 97, 97,
- 109, 115, 116, 115, 101, 110, 97, 97,
- 114, 105, 117, 109, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 69, 74, 75,
- 79, 83, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, 10, 101, 10, 108, 10, 100,
- 10, 97, 10, 100, 10, 101, 10, 115,
- 10, 97, 10, 117, 10, 105, 10, 32,
- 100, 10, 109, 10, 97, 10, 100, 10,
- 117, 10, 115, 10, 58, 10, 105, 116,
- 10, 105, 10, 115, 10, 101, 10, 110,
- 10, 97, 10, 97, 10, 114, 10, 105,
- 10, 117, 10, 109, 105, 116, 105, 115,
- 101, 110, 97, 97, 114, 105, 117, 109,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 69, 74, 75, 79, 82, 83, 84,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 32,
- 10, 101, 10, 108, 10, 100, 10, 97,
- 10, 100, 10, 101, 10, 115, 10, 97,
- 10, 117, 10, 105, 10, 32, 100, 10,
- 109, 10, 97, 10, 100, 10, 117, 10,
- 115, 10, 58, 10, 97, 10, 97, 10,
- 109, 10, 115, 10, 116, 10, 115, 10,
- 101, 10, 110, 10, 97, 10, 97, 10,
- 114, 10, 105, 10, 117, 10, 109, 10,
- 105, 116, 10, 105, 10, 97, 10, 117,
- 10, 115, 10, 116, 97, 117, 115, 116,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 69, 74, 75, 79, 82, 83, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 101, 10, 108, 10, 100, 10, 97, 10,
- 100, 10, 101, 10, 115, 10, 97, 10,
- 117, 10, 105, 10, 32, 100, 10, 109,
- 10, 97, 10, 100, 10, 117, 10, 115,
- 10, 58, 10, 97, 10, 97, 10, 109,
- 10, 115, 10, 116, 10, 115, 10, 101,
- 10, 110, 10, 97, 10, 97, 10, 114,
- 10, 105, 10, 117, 10, 109, 10, 105,
- 116, 10, 105, 32, 124, 9, 13, 10,
- 32, 92, 124, 9, 13, 10, 92, 124,
- 10, 92, 10, 32, 92, 124, 9, 13,
- 10, 32, 34, 35, 37, 42, 64, 69,
- 74, 75, 79, 82, 83, 84, 124, 9,
- 13, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 16, 1, 1, 15, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 5, 2,
- 2, 2, 2, 2, 2, 15, 1, 1,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 10, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 11, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 13, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 12, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 4, 3, 2, 4, 15, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 1, 0, 0, 1, 1, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 18, 20, 22, 39, 41, 43,
- 46, 49, 54, 59, 64, 69, 73, 77,
- 80, 82, 84, 86, 88, 90, 92, 94,
- 96, 98, 100, 102, 104, 106, 108, 110,
- 112, 115, 118, 123, 130, 135, 137, 139,
- 141, 143, 145, 147, 149, 152, 154, 156,
- 158, 160, 162, 164, 166, 168, 170, 177,
- 180, 183, 186, 189, 192, 195, 212, 214,
- 216, 219, 221, 223, 225, 227, 229, 231,
- 233, 235, 247, 250, 253, 256, 259, 262,
- 265, 268, 271, 274, 277, 280, 283, 286,
- 289, 292, 295, 298, 301, 304, 307, 310,
- 313, 316, 319, 322, 325, 328, 331, 334,
- 337, 340, 343, 346, 349, 352, 355, 358,
- 361, 364, 367, 370, 373, 376, 379, 382,
- 384, 386, 388, 390, 392, 394, 396, 398,
- 400, 402, 404, 406, 408, 410, 412, 414,
- 416, 429, 432, 435, 438, 441, 444, 447,
- 450, 453, 456, 459, 462, 465, 468, 471,
- 474, 477, 480, 483, 486, 489, 492, 495,
- 498, 501, 504, 508, 511, 514, 517, 520,
- 523, 526, 530, 533, 536, 539, 542, 545,
- 548, 551, 554, 557, 560, 563, 565, 567,
- 569, 571, 573, 575, 577, 579, 581, 583,
- 585, 587, 589, 604, 607, 610, 613, 616,
- 619, 622, 625, 628, 631, 634, 637, 640,
- 643, 646, 649, 652, 655, 658, 661, 664,
- 667, 670, 673, 676, 679, 683, 686, 689,
- 692, 695, 698, 701, 704, 707, 710, 713,
- 716, 719, 722, 725, 728, 731, 734, 737,
- 740, 743, 747, 750, 753, 756, 759, 762,
- 764, 766, 768, 770, 772, 774, 776, 790,
- 793, 796, 799, 802, 805, 808, 811, 814,
- 817, 820, 823, 826, 829, 832, 835, 838,
- 841, 844, 847, 850, 853, 856, 859, 862,
- 865, 869, 872, 875, 878, 881, 884, 887,
- 890, 893, 896, 899, 902, 905, 908, 911,
- 914, 917, 920, 923, 926, 929, 933, 936,
- 940, 946, 950, 953, 959, 976
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 44, 62, 65, 119, 180, 247, 303,
- 4, 0, 3, 0, 4, 0, 4, 4,
- 5, 15, 17, 31, 34, 37, 44, 62,
- 65, 119, 180, 247, 303, 4, 0, 6,
- 0, 7, 0, 9, 8, 8, 9, 8,
- 8, 10, 10, 11, 10, 10, 10, 10,
- 11, 10, 10, 10, 10, 12, 10, 10,
- 10, 10, 13, 10, 10, 4, 14, 14,
- 0, 4, 14, 14, 0, 4, 16, 15,
- 4, 0, 18, 0, 19, 0, 20, 0,
- 21, 0, 22, 0, 23, 0, 24, 0,
- 25, 0, 26, 0, 27, 0, 28, 0,
- 29, 0, 30, 0, 309, 0, 32, 0,
- 4, 16, 33, 4, 16, 33, 0, 0,
- 0, 0, 35, 36, 4, 36, 36, 34,
- 35, 35, 4, 36, 34, 36, 0, 38,
- 0, 39, 0, 40, 0, 41, 0, 42,
- 0, 43, 0, 31, 0, 31, 45, 0,
- 46, 0, 47, 0, 48, 0, 49, 0,
- 50, 0, 51, 0, 52, 0, 54, 53,
- 54, 53, 54, 54, 4, 55, 4, 54,
- 53, 54, 56, 53, 54, 57, 53, 54,
- 58, 53, 54, 59, 53, 54, 60, 53,
- 54, 61, 53, 4, 4, 5, 15, 17,
- 31, 34, 37, 44, 62, 65, 119, 180,
- 247, 303, 4, 0, 63, 0, 64, 0,
- 32, 31, 0, 66, 0, 67, 0, 68,
- 0, 69, 0, 70, 0, 71, 0, 73,
- 72, 73, 72, 73, 73, 4, 74, 4,
- 88, 96, 101, 105, 115, 73, 72, 73,
- 75, 72, 73, 76, 72, 73, 77, 72,
- 73, 78, 72, 73, 79, 72, 73, 80,
- 72, 73, 81, 72, 73, 82, 72, 73,
- 83, 72, 73, 84, 72, 73, 85, 72,
- 73, 86, 72, 73, 87, 72, 73, 4,
- 72, 73, 89, 72, 73, 90, 72, 73,
- 91, 72, 73, 92, 72, 73, 93, 72,
- 73, 94, 72, 73, 95, 72, 73, 61,
- 72, 73, 97, 72, 73, 98, 72, 73,
- 99, 72, 73, 100, 72, 73, 95, 72,
- 73, 102, 72, 73, 103, 72, 73, 104,
- 72, 73, 105, 72, 73, 106, 72, 73,
- 107, 72, 73, 108, 72, 73, 109, 72,
- 73, 110, 72, 73, 111, 72, 73, 112,
- 72, 73, 113, 72, 73, 114, 72, 73,
- 95, 72, 73, 116, 72, 73, 117, 72,
- 73, 118, 72, 73, 95, 72, 120, 0,
- 121, 0, 122, 0, 123, 0, 124, 0,
- 125, 0, 126, 0, 127, 0, 128, 0,
- 129, 0, 130, 0, 131, 0, 132, 0,
- 133, 0, 134, 0, 136, 135, 136, 135,
- 136, 136, 4, 137, 151, 4, 152, 159,
- 160, 163, 169, 136, 135, 136, 138, 135,
- 136, 139, 135, 136, 140, 135, 136, 141,
- 135, 136, 142, 135, 136, 143, 135, 136,
- 144, 135, 136, 145, 135, 136, 146, 135,
- 136, 147, 135, 136, 148, 135, 136, 149,
- 135, 136, 150, 135, 136, 4, 135, 136,
- 61, 135, 136, 153, 135, 136, 154, 135,
- 136, 155, 135, 136, 156, 135, 136, 157,
- 135, 136, 158, 135, 136, 151, 135, 136,
- 151, 135, 136, 161, 135, 136, 162, 135,
- 136, 61, 151, 135, 136, 164, 135, 136,
- 165, 135, 136, 166, 135, 136, 167, 135,
- 136, 168, 135, 136, 61, 135, 136, 170,
- 171, 135, 136, 158, 135, 136, 172, 135,
- 136, 173, 135, 136, 174, 135, 136, 175,
- 135, 136, 176, 135, 136, 177, 135, 136,
- 178, 135, 136, 179, 135, 136, 168, 135,
- 181, 182, 0, 43, 0, 183, 0, 184,
- 0, 185, 0, 186, 0, 187, 0, 188,
- 0, 189, 0, 190, 0, 191, 0, 192,
- 0, 194, 193, 194, 193, 194, 194, 4,
- 195, 209, 4, 210, 217, 218, 221, 227,
- 241, 243, 194, 193, 194, 196, 193, 194,
- 197, 193, 194, 198, 193, 194, 199, 193,
- 194, 200, 193, 194, 201, 193, 194, 202,
- 193, 194, 203, 193, 194, 204, 193, 194,
- 205, 193, 194, 206, 193, 194, 207, 193,
- 194, 208, 193, 194, 4, 193, 194, 61,
- 193, 194, 211, 193, 194, 212, 193, 194,
- 213, 193, 194, 214, 193, 194, 215, 193,
- 194, 216, 193, 194, 209, 193, 194, 209,
- 193, 194, 219, 193, 194, 220, 193, 194,
- 61, 209, 193, 194, 222, 193, 194, 223,
- 193, 194, 224, 193, 194, 225, 193, 194,
- 226, 193, 194, 61, 193, 194, 228, 193,
- 194, 229, 193, 194, 230, 193, 194, 231,
- 193, 194, 232, 193, 194, 233, 193, 194,
- 234, 193, 194, 235, 193, 194, 236, 193,
- 194, 237, 193, 194, 238, 193, 194, 239,
- 193, 194, 240, 193, 194, 226, 193, 194,
- 242, 232, 193, 194, 216, 193, 194, 244,
- 193, 194, 245, 193, 194, 246, 193, 194,
- 226, 193, 248, 0, 249, 0, 250, 0,
- 251, 0, 252, 0, 254, 253, 254, 253,
- 254, 254, 4, 255, 269, 4, 270, 277,
- 278, 281, 287, 301, 254, 253, 254, 256,
- 253, 254, 257, 253, 254, 258, 253, 254,
- 259, 253, 254, 260, 253, 254, 261, 253,
- 254, 262, 253, 254, 263, 253, 254, 264,
- 253, 254, 265, 253, 254, 266, 253, 254,
- 267, 253, 254, 268, 253, 254, 4, 253,
- 254, 61, 253, 254, 271, 253, 254, 272,
- 253, 254, 273, 253, 254, 274, 253, 254,
- 275, 253, 254, 276, 253, 254, 269, 253,
- 254, 269, 253, 254, 279, 253, 254, 280,
- 253, 254, 61, 269, 253, 254, 282, 253,
- 254, 283, 253, 254, 284, 253, 254, 285,
- 253, 254, 286, 253, 254, 61, 253, 254,
- 288, 253, 254, 289, 253, 254, 290, 253,
- 254, 291, 253, 254, 292, 253, 254, 293,
- 253, 254, 294, 253, 254, 295, 253, 254,
- 296, 253, 254, 297, 253, 254, 298, 253,
- 254, 299, 253, 254, 300, 253, 254, 286,
- 253, 254, 302, 292, 253, 254, 276, 253,
- 303, 304, 303, 0, 308, 307, 306, 304,
- 307, 305, 0, 306, 304, 305, 0, 306,
- 305, 308, 307, 306, 304, 307, 305, 308,
- 308, 5, 15, 17, 31, 34, 37, 44,
- 62, 65, 119, 180, 247, 303, 308, 0,
- 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 35,
- 0, 43, 0, 43, 0, 43, 54, 0,
- 5, 1, 0, 29, 1, 29, 29, 29,
- 29, 29, 29, 29, 35, 0, 43, 0,
- 43, 0, 43, 139, 48, 9, 106, 11,
- 0, 134, 45, 45, 45, 3, 122, 33,
- 33, 33, 0, 122, 33, 33, 33, 0,
- 122, 33, 0, 33, 0, 102, 7, 7,
- 43, 54, 0, 0, 43, 114, 25, 0,
- 54, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 149, 126, 57, 110, 23, 0, 43, 43,
- 43, 43, 0, 27, 118, 27, 27, 51,
- 27, 0, 54, 0, 1, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 81, 84, 81, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 21, 0, 130, 31, 60, 57, 31,
- 63, 57, 63, 63, 63, 63, 63, 63,
- 63, 66, 31, 43, 0, 43, 0, 43,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 69, 33, 69,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 13,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 13,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 78, 33, 84, 78, 84, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 54,
- 19, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 19, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 19, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 75,
- 33, 84, 75, 84, 84, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 17, 0, 54, 17,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 17, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 17, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 72, 33, 84, 72, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 15, 0,
- 54, 15, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 15, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 0, 0, 0, 43, 54, 37, 37, 87,
- 37, 37, 43, 0, 39, 0, 43, 0,
- 0, 54, 0, 0, 39, 0, 0, 54,
- 0, 93, 90, 41, 96, 90, 96, 96,
- 96, 96, 96, 96, 96, 99, 0, 43,
- 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 309;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/et.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 840 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/et.c.rl"
-
-#line 847 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/et.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/et.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/et.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/et.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/et.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/et.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/et.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/et.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/et.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/et.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/et.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/et.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/et.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/et.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/et.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/et.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/et.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/et.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/et.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/et.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/et.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/et.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/et.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/et.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1137 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/et.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1200 "ext/gherkin_lexer_et/gherkin_lexer_et.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/et.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_et()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Et", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_fi/extconf.rb
index ad4d534,ad4d534..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_fi/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_fi")
--have_library("c", "main")
--create_makefile("gherkin_lexer_fi")
diff --cc ext/gherkin_lexer_fi/gherkin_lexer_fi.c
index 867abec,73708c7..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_fi/gherkin_lexer_fi.c
+++ /dev/null
@@@ -1,1215 -1,1215 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 17, 18, 19, 35, 36, 37,
- 39, 41, 46, 51, 56, 61, 65, 69,
- 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 89, 91, 96, 103, 108, 109, 110,
- 111, 112, 113, 114, 115, 116, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135,
- 144, 146, 148, 150, 152, 154, 156, 158,
- 160, 162, 164, 166, 168, 170, 172, 174,
- 176, 178, 180, 182, 184, 186, 188, 190,
- 192, 208, 209, 211, 212, 213, 215, 216,
- 217, 218, 219, 220, 221, 228, 230, 232,
- 234, 236, 238, 240, 242, 244, 246, 248,
- 250, 251, 252, 266, 268, 270, 272, 274,
- 276, 278, 280, 282, 284, 286, 288, 290,
- 292, 294, 296, 298, 300, 302, 304, 306,
- 308, 310, 312, 315, 317, 319, 321, 323,
- 325, 327, 329, 331, 333, 335, 337, 339,
- 341, 343, 345, 347, 350, 352, 354, 356,
- 359, 361, 363, 365, 367, 369, 371, 373,
- 374, 375, 376, 377, 378, 379, 380, 394,
- 396, 398, 400, 402, 404, 406, 408, 410,
- 412, 414, 416, 418, 420, 422, 424, 426,
- 428, 430, 432, 434, 436, 438, 440, 443,
- 445, 447, 449, 451, 453, 455, 457, 459,
- 461, 463, 465, 467, 469, 471, 473, 475,
- 477, 479, 480, 481, 482, 483, 484, 485,
- 499, 501, 503, 505, 507, 509, 511, 513,
- 515, 517, 519, 521, 523, 525, 527, 529,
- 531, 533, 535, 537, 539, 541, 543, 545,
- 548, 550, 552, 554, 556, 558, 560, 562,
- 564, 566, 568, 570, 572, 574, 576, 578,
- 580, 582, 584, 586, 588, 591, 593, 595,
- 597, 599, 603, 609, 612, 614, 620, 636,
- 638, 641, 643, 645, 648, 650, 652, 654,
- 657, 659, 661, 663, 665, 667, 669, 671
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 74, 75, 77, 78, 79, 84, 124, 9,
- 13, -69, -65, 10, 32, 34, 35, 37,
- 42, 64, 74, 75, 77, 78, 79, 84,
- 124, 9, 13, 34, 34, 10, 13, 10,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 9,
- 13, 10, 32, 9, 13, 10, 13, 10,
- 95, 70, 69, 65, 84, 85, 82, 69,
- 95, 69, 78, 68, 95, 37, 32, 10,
- 13, 10, 13, 13, 32, 64, 9, 10,
- 9, 10, 13, 32, 64, 11, 12, 10,
- 32, 64, 9, 13, 97, 117, 110, 117,
- 116, 116, 105, 105, 108, 109, 101, 116,
- 101, 116, 97, 97, 105, 110, 97, 105,
- 115, 117, 117, 115, 58, 10, 10, 10,
- 32, 35, 37, 64, 79, 84, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 109, 10, 105,
- 10, 110, 10, 97, 10, 105, 10, 115,
- 10, 117, 10, 117, 10, 115, 10, 58,
- 10, 32, 34, 35, 37, 42, 64, 74,
- 75, 77, 78, 79, 84, 124, 9, 13,
- 97, 112, 117, 97, 117, 107, 115, 115,
- 101, 116, 58, 10, 10, 10, 32, 35,
- 79, 124, 9, 13, 10, 109, 10, 105,
- 10, 110, 10, 97, 10, 105, 10, 115,
- 10, 117, 10, 117, 10, 115, 10, 58,
- 58, 97, 10, 10, 10, 32, 35, 37,
- 42, 64, 74, 75, 77, 78, 79, 84,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 32,
- 10, 97, 10, 117, 10, 110, 10, 117,
- 10, 116, 10, 116, 10, 105, 10, 105,
- 10, 108, 109, 10, 101, 10, 116, 10,
- 101, 10, 116, 10, 97, 10, 97, 10,
- 105, 10, 110, 10, 97, 10, 105, 10,
- 115, 10, 117, 10, 117, 10, 115, 10,
- 58, 10, 97, 10, 112, 117, 10, 97,
- 10, 117, 10, 115, 10, 58, 97, 10,
- 105, 10, 104, 10, 105, 10, 111, 10,
- 115, 10, 116, 10, 97, 105, 104, 105,
- 111, 58, 10, 10, 10, 32, 35, 37,
- 42, 64, 74, 75, 77, 78, 79, 84,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 32,
- 10, 97, 10, 117, 10, 110, 10, 117,
- 10, 116, 10, 116, 10, 105, 10, 105,
- 10, 108, 109, 10, 101, 10, 116, 10,
- 101, 10, 116, 10, 97, 10, 97, 10,
- 105, 10, 110, 10, 97, 10, 105, 10,
- 115, 10, 117, 10, 117, 10, 115, 10,
- 58, 10, 97, 10, 112, 10, 97, 115,
- 116, 97, 58, 10, 10, 10, 32, 35,
- 37, 42, 64, 74, 75, 77, 78, 79,
- 84, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 97, 10, 117, 10, 110, 10,
- 117, 10, 116, 10, 116, 10, 105, 10,
- 105, 10, 108, 109, 10, 101, 10, 116,
- 10, 101, 10, 116, 10, 97, 10, 97,
- 10, 105, 10, 110, 10, 97, 10, 105,
- 10, 115, 10, 117, 10, 117, 10, 115,
- 10, 58, 10, 97, 10, 112, 10, 97,
- 10, 117, 10, 115, 10, 58, 97, 10,
- 105, 10, 104, 10, 105, 10, 111, 32,
- 124, 9, 13, 10, 32, 92, 124, 9,
- 13, 10, 92, 124, 10, 92, 10, 32,
- 92, 124, 9, 13, 10, 32, 34, 35,
- 37, 42, 64, 74, 75, 77, 78, 79,
- 84, 124, 9, 13, 10, 97, 10, 112,
- 117, 10, 97, 10, 117, 10, 107, 115,
- 10, 115, 10, 101, 10, 116, 10, 58,
- 97, 10, 105, 10, 104, 10, 105, 10,
- 111, 10, 115, 10, 116, 10, 97, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 15, 1, 1, 14, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 7,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 14, 1, 2, 1, 1, 2, 1, 1,
- 1, 1, 1, 1, 5, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 12, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 12, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 12,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 4, 3, 2, 4, 14, 2,
- 3, 2, 2, 3, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 1, 0, 0, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 17, 19, 21, 37, 39, 41,
- 44, 47, 52, 57, 62, 67, 71, 75,
- 78, 80, 82, 84, 86, 88, 90, 92,
- 94, 96, 98, 100, 102, 104, 106, 108,
- 110, 113, 116, 121, 128, 133, 135, 137,
- 139, 141, 143, 145, 147, 149, 152, 154,
- 156, 158, 160, 162, 164, 166, 168, 170,
- 172, 174, 176, 178, 180, 182, 184, 186,
- 195, 198, 201, 204, 207, 210, 213, 216,
- 219, 222, 225, 228, 231, 234, 237, 240,
- 243, 246, 249, 252, 255, 258, 261, 264,
- 267, 283, 285, 288, 290, 292, 295, 297,
- 299, 301, 303, 305, 307, 314, 317, 320,
- 323, 326, 329, 332, 335, 338, 341, 344,
- 347, 349, 351, 365, 368, 371, 374, 377,
- 380, 383, 386, 389, 392, 395, 398, 401,
- 404, 407, 410, 413, 416, 419, 422, 425,
- 428, 431, 434, 438, 441, 444, 447, 450,
- 453, 456, 459, 462, 465, 468, 471, 474,
- 477, 480, 483, 486, 490, 493, 496, 499,
- 503, 506, 509, 512, 515, 518, 521, 524,
- 526, 528, 530, 532, 534, 536, 538, 552,
- 555, 558, 561, 564, 567, 570, 573, 576,
- 579, 582, 585, 588, 591, 594, 597, 600,
- 603, 606, 609, 612, 615, 618, 621, 625,
- 628, 631, 634, 637, 640, 643, 646, 649,
- 652, 655, 658, 661, 664, 667, 670, 673,
- 676, 679, 681, 683, 685, 687, 689, 691,
- 705, 708, 711, 714, 717, 720, 723, 726,
- 729, 732, 735, 738, 741, 744, 747, 750,
- 753, 756, 759, 762, 765, 768, 771, 774,
- 778, 781, 784, 787, 790, 793, 796, 799,
- 802, 805, 808, 811, 814, 817, 820, 823,
- 826, 829, 832, 835, 838, 842, 845, 848,
- 851, 854, 858, 864, 868, 871, 877, 893,
- 896, 900, 903, 906, 910, 913, 916, 919,
- 923, 926, 929, 932, 935, 938, 941, 944
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 38, 40, 43, 45, 89, 273, 4,
- 0, 3, 0, 4, 0, 4, 4, 5,
- 15, 17, 31, 34, 37, 38, 40, 43,
- 45, 89, 273, 4, 0, 6, 0, 7,
- 0, 9, 8, 8, 9, 8, 8, 10,
- 10, 11, 10, 10, 10, 10, 11, 10,
- 10, 10, 10, 12, 10, 10, 10, 10,
- 13, 10, 10, 4, 14, 14, 0, 4,
- 14, 14, 0, 4, 16, 15, 4, 0,
- 18, 0, 19, 0, 20, 0, 21, 0,
- 22, 0, 23, 0, 24, 0, 25, 0,
- 26, 0, 27, 0, 28, 0, 29, 0,
- 30, 0, 295, 0, 32, 0, 4, 16,
- 33, 4, 16, 33, 0, 0, 0, 0,
- 35, 36, 4, 36, 36, 34, 35, 35,
- 4, 36, 34, 36, 0, 31, 0, 39,
- 0, 31, 0, 41, 0, 42, 0, 37,
- 0, 44, 0, 39, 0, 46, 52, 0,
- 47, 0, 48, 0, 49, 0, 50, 0,
- 51, 0, 39, 0, 53, 0, 54, 0,
- 55, 0, 56, 0, 57, 0, 58, 0,
- 59, 0, 60, 0, 61, 0, 63, 62,
- 63, 62, 63, 63, 4, 64, 4, 78,
- 279, 63, 62, 63, 65, 62, 63, 66,
- 62, 63, 67, 62, 63, 68, 62, 63,
- 69, 62, 63, 70, 62, 63, 71, 62,
- 63, 72, 62, 63, 73, 62, 63, 74,
- 62, 63, 75, 62, 63, 76, 62, 63,
- 77, 62, 63, 4, 62, 63, 79, 62,
- 63, 80, 62, 63, 81, 62, 63, 82,
- 62, 63, 83, 62, 63, 84, 62, 63,
- 85, 62, 63, 86, 62, 63, 87, 62,
- 63, 88, 62, 4, 4, 5, 15, 17,
- 31, 34, 37, 38, 40, 43, 45, 89,
- 273, 4, 0, 90, 0, 91, 217, 0,
- 92, 0, 93, 0, 94, 111, 0, 95,
- 0, 96, 0, 97, 0, 98, 0, 100,
- 99, 100, 99, 100, 100, 4, 101, 4,
- 100, 99, 100, 102, 99, 100, 103, 99,
- 100, 104, 99, 100, 105, 99, 100, 106,
- 99, 100, 107, 99, 100, 108, 99, 100,
- 109, 99, 100, 110, 99, 100, 88, 99,
- 112, 167, 0, 114, 113, 114, 113, 114,
- 114, 4, 115, 129, 4, 130, 131, 133,
- 136, 138, 154, 114, 113, 114, 116, 113,
- 114, 117, 113, 114, 118, 113, 114, 119,
- 113, 114, 120, 113, 114, 121, 113, 114,
- 122, 113, 114, 123, 113, 114, 124, 113,
- 114, 125, 113, 114, 126, 113, 114, 127,
- 113, 114, 128, 113, 114, 4, 113, 114,
- 88, 113, 114, 129, 113, 114, 132, 113,
- 114, 129, 113, 114, 134, 113, 114, 135,
- 113, 114, 130, 113, 114, 137, 113, 114,
- 132, 113, 114, 139, 145, 113, 114, 140,
- 113, 114, 141, 113, 114, 142, 113, 114,
- 143, 113, 114, 144, 113, 114, 132, 113,
- 114, 146, 113, 114, 147, 113, 114, 148,
- 113, 114, 149, 113, 114, 150, 113, 114,
- 151, 113, 114, 152, 113, 114, 153, 113,
- 114, 88, 113, 114, 155, 113, 114, 156,
- 164, 113, 114, 157, 113, 114, 158, 113,
- 114, 159, 113, 114, 88, 160, 113, 114,
- 161, 113, 114, 162, 113, 114, 163, 113,
- 114, 153, 113, 114, 165, 113, 114, 166,
- 113, 114, 153, 113, 168, 0, 169, 0,
- 170, 0, 171, 0, 172, 0, 174, 173,
- 174, 173, 174, 174, 4, 175, 189, 4,
- 190, 191, 193, 196, 198, 214, 174, 173,
- 174, 176, 173, 174, 177, 173, 174, 178,
- 173, 174, 179, 173, 174, 180, 173, 174,
- 181, 173, 174, 182, 173, 174, 183, 173,
- 174, 184, 173, 174, 185, 173, 174, 186,
- 173, 174, 187, 173, 174, 188, 173, 174,
- 4, 173, 174, 88, 173, 174, 189, 173,
- 174, 192, 173, 174, 189, 173, 174, 194,
- 173, 174, 195, 173, 174, 190, 173, 174,
- 197, 173, 174, 192, 173, 174, 199, 205,
- 173, 174, 200, 173, 174, 201, 173, 174,
- 202, 173, 174, 203, 173, 174, 204, 173,
- 174, 192, 173, 174, 206, 173, 174, 207,
- 173, 174, 208, 173, 174, 209, 173, 174,
- 210, 173, 174, 211, 173, 174, 212, 173,
- 174, 213, 173, 174, 88, 173, 174, 215,
- 173, 174, 216, 173, 174, 211, 173, 218,
- 0, 219, 0, 220, 0, 221, 0, 223,
- 222, 223, 222, 223, 223, 4, 224, 238,
- 4, 239, 240, 242, 245, 247, 263, 223,
- 222, 223, 225, 222, 223, 226, 222, 223,
- 227, 222, 223, 228, 222, 223, 229, 222,
- 223, 230, 222, 223, 231, 222, 223, 232,
- 222, 223, 233, 222, 223, 234, 222, 223,
- 235, 222, 223, 236, 222, 223, 237, 222,
- 223, 4, 222, 223, 88, 222, 223, 238,
- 222, 223, 241, 222, 223, 238, 222, 223,
- 243, 222, 223, 244, 222, 223, 239, 222,
- 223, 246, 222, 223, 241, 222, 223, 248,
- 254, 222, 223, 249, 222, 223, 250, 222,
- 223, 251, 222, 223, 252, 222, 223, 253,
- 222, 223, 241, 222, 223, 255, 222, 223,
- 256, 222, 223, 257, 222, 223, 258, 222,
- 223, 259, 222, 223, 260, 222, 223, 261,
- 222, 223, 262, 222, 223, 88, 222, 223,
- 264, 222, 223, 265, 222, 223, 266, 222,
- 223, 267, 222, 223, 268, 222, 223, 88,
- 269, 222, 223, 270, 222, 223, 271, 222,
- 223, 272, 222, 223, 262, 222, 273, 274,
- 273, 0, 278, 277, 276, 274, 277, 275,
- 0, 276, 274, 275, 0, 276, 275, 278,
- 277, 276, 274, 277, 275, 278, 278, 5,
- 15, 17, 31, 34, 37, 38, 40, 43,
- 45, 89, 273, 278, 0, 63, 280, 62,
- 63, 281, 292, 62, 63, 282, 62, 63,
- 283, 62, 63, 284, 287, 62, 63, 285,
- 62, 63, 286, 62, 63, 87, 62, 63,
- 88, 288, 62, 63, 289, 62, 63, 290,
- 62, 63, 291, 62, 63, 87, 62, 63,
- 293, 62, 63, 294, 62, 63, 87, 62,
- 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 54, 0, 5,
- 1, 0, 29, 1, 29, 29, 29, 29,
- 29, 29, 35, 0, 43, 0, 43, 0,
- 43, 139, 48, 9, 106, 11, 0, 134,
- 45, 45, 45, 3, 122, 33, 33, 33,
- 0, 122, 33, 33, 33, 0, 122, 33,
- 0, 33, 0, 102, 7, 7, 43, 54,
- 0, 0, 43, 114, 25, 0, 54, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 149, 126,
- 57, 110, 23, 0, 43, 43, 43, 43,
- 0, 27, 118, 27, 27, 51, 27, 0,
- 54, 0, 1, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 69, 33, 69, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 13, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 130, 31, 60, 57, 31,
- 63, 57, 63, 63, 63, 63, 63, 63,
- 66, 31, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 81, 84, 81,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 21, 0,
- 0, 0, 43, 144, 57, 54, 0, 54,
- 0, 75, 33, 84, 75, 84, 84, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 54,
- 17, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 17, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 78, 33, 84, 78,
- 84, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 19, 0, 54, 19, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 19, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 72, 33, 84,
- 72, 84, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 54, 15, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 0,
- 0, 43, 54, 37, 37, 87, 37, 37,
- 43, 0, 39, 0, 43, 0, 0, 54,
- 0, 0, 39, 0, 0, 54, 0, 93,
- 90, 41, 96, 90, 96, 96, 96, 96,
- 96, 96, 99, 0, 43, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 295;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 819 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
-
- #line 826 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1116 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1179 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fi.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_fi()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Fi", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/fi.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/fi.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 17, 18, 19, 35, 36, 37,
- 39, 41, 46, 51, 56, 61, 65, 69,
- 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 89, 91, 96, 103, 108, 109, 110,
- 111, 112, 113, 114, 115, 116, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135,
- 144, 146, 148, 150, 152, 154, 156, 158,
- 160, 162, 164, 166, 168, 170, 172, 174,
- 176, 178, 180, 182, 184, 186, 188, 190,
- 192, 208, 209, 211, 212, 213, 215, 216,
- 217, 218, 219, 220, 221, 228, 230, 232,
- 234, 236, 238, 240, 242, 244, 246, 248,
- 250, 251, 252, 266, 268, 270, 272, 274,
- 276, 278, 280, 282, 284, 286, 288, 290,
- 292, 294, 296, 298, 300, 302, 304, 306,
- 308, 310, 312, 315, 317, 319, 321, 323,
- 325, 327, 329, 331, 333, 335, 337, 339,
- 341, 343, 345, 347, 350, 352, 354, 356,
- 359, 361, 363, 365, 367, 369, 371, 373,
- 374, 375, 376, 377, 378, 379, 380, 394,
- 396, 398, 400, 402, 404, 406, 408, 410,
- 412, 414, 416, 418, 420, 422, 424, 426,
- 428, 430, 432, 434, 436, 438, 440, 443,
- 445, 447, 449, 451, 453, 455, 457, 459,
- 461, 463, 465, 467, 469, 471, 473, 475,
- 477, 479, 480, 481, 482, 483, 484, 485,
- 499, 501, 503, 505, 507, 509, 511, 513,
- 515, 517, 519, 521, 523, 525, 527, 529,
- 531, 533, 535, 537, 539, 541, 543, 545,
- 548, 550, 552, 554, 556, 558, 560, 562,
- 564, 566, 568, 570, 572, 574, 576, 578,
- 580, 582, 584, 586, 588, 591, 593, 595,
- 597, 599, 603, 609, 612, 614, 620, 636,
- 638, 641, 643, 645, 648, 650, 652, 654,
- 657, 659, 661, 663, 665, 667, 669, 671
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 74, 75, 77, 78, 79, 84, 124, 9,
- 13, -69, -65, 10, 32, 34, 35, 37,
- 42, 64, 74, 75, 77, 78, 79, 84,
- 124, 9, 13, 34, 34, 10, 13, 10,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 9,
- 13, 10, 32, 9, 13, 10, 13, 10,
- 95, 70, 69, 65, 84, 85, 82, 69,
- 95, 69, 78, 68, 95, 37, 32, 10,
- 13, 10, 13, 13, 32, 64, 9, 10,
- 9, 10, 13, 32, 64, 11, 12, 10,
- 32, 64, 9, 13, 97, 117, 110, 117,
- 116, 116, 105, 105, 108, 109, 101, 116,
- 101, 116, 97, 97, 105, 110, 97, 105,
- 115, 117, 117, 115, 58, 10, 10, 10,
- 32, 35, 37, 64, 79, 84, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 109, 10, 105,
- 10, 110, 10, 97, 10, 105, 10, 115,
- 10, 117, 10, 117, 10, 115, 10, 58,
- 10, 32, 34, 35, 37, 42, 64, 74,
- 75, 77, 78, 79, 84, 124, 9, 13,
- 97, 112, 117, 97, 117, 107, 115, 115,
- 101, 116, 58, 10, 10, 10, 32, 35,
- 79, 124, 9, 13, 10, 109, 10, 105,
- 10, 110, 10, 97, 10, 105, 10, 115,
- 10, 117, 10, 117, 10, 115, 10, 58,
- 58, 97, 10, 10, 10, 32, 35, 37,
- 42, 64, 74, 75, 77, 78, 79, 84,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 32,
- 10, 97, 10, 117, 10, 110, 10, 117,
- 10, 116, 10, 116, 10, 105, 10, 105,
- 10, 108, 109, 10, 101, 10, 116, 10,
- 101, 10, 116, 10, 97, 10, 97, 10,
- 105, 10, 110, 10, 97, 10, 105, 10,
- 115, 10, 117, 10, 117, 10, 115, 10,
- 58, 10, 97, 10, 112, 117, 10, 97,
- 10, 117, 10, 115, 10, 58, 97, 10,
- 105, 10, 104, 10, 105, 10, 111, 10,
- 115, 10, 116, 10, 97, 105, 104, 105,
- 111, 58, 10, 10, 10, 32, 35, 37,
- 42, 64, 74, 75, 77, 78, 79, 84,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 32,
- 10, 97, 10, 117, 10, 110, 10, 117,
- 10, 116, 10, 116, 10, 105, 10, 105,
- 10, 108, 109, 10, 101, 10, 116, 10,
- 101, 10, 116, 10, 97, 10, 97, 10,
- 105, 10, 110, 10, 97, 10, 105, 10,
- 115, 10, 117, 10, 117, 10, 115, 10,
- 58, 10, 97, 10, 112, 10, 97, 115,
- 116, 97, 58, 10, 10, 10, 32, 35,
- 37, 42, 64, 74, 75, 77, 78, 79,
- 84, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 97, 10, 117, 10, 110, 10,
- 117, 10, 116, 10, 116, 10, 105, 10,
- 105, 10, 108, 109, 10, 101, 10, 116,
- 10, 101, 10, 116, 10, 97, 10, 97,
- 10, 105, 10, 110, 10, 97, 10, 105,
- 10, 115, 10, 117, 10, 117, 10, 115,
- 10, 58, 10, 97, 10, 112, 10, 97,
- 10, 117, 10, 115, 10, 58, 97, 10,
- 105, 10, 104, 10, 105, 10, 111, 32,
- 124, 9, 13, 10, 32, 92, 124, 9,
- 13, 10, 92, 124, 10, 92, 10, 32,
- 92, 124, 9, 13, 10, 32, 34, 35,
- 37, 42, 64, 74, 75, 77, 78, 79,
- 84, 124, 9, 13, 10, 97, 10, 112,
- 117, 10, 97, 10, 117, 10, 107, 115,
- 10, 115, 10, 101, 10, 116, 10, 58,
- 97, 10, 105, 10, 104, 10, 105, 10,
- 111, 10, 115, 10, 116, 10, 97, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 15, 1, 1, 14, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 7,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 14, 1, 2, 1, 1, 2, 1, 1,
- 1, 1, 1, 1, 5, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 12, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 12, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 12,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 4, 3, 2, 4, 14, 2,
- 3, 2, 2, 3, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 1, 0, 0, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 17, 19, 21, 37, 39, 41,
- 44, 47, 52, 57, 62, 67, 71, 75,
- 78, 80, 82, 84, 86, 88, 90, 92,
- 94, 96, 98, 100, 102, 104, 106, 108,
- 110, 113, 116, 121, 128, 133, 135, 137,
- 139, 141, 143, 145, 147, 149, 152, 154,
- 156, 158, 160, 162, 164, 166, 168, 170,
- 172, 174, 176, 178, 180, 182, 184, 186,
- 195, 198, 201, 204, 207, 210, 213, 216,
- 219, 222, 225, 228, 231, 234, 237, 240,
- 243, 246, 249, 252, 255, 258, 261, 264,
- 267, 283, 285, 288, 290, 292, 295, 297,
- 299, 301, 303, 305, 307, 314, 317, 320,
- 323, 326, 329, 332, 335, 338, 341, 344,
- 347, 349, 351, 365, 368, 371, 374, 377,
- 380, 383, 386, 389, 392, 395, 398, 401,
- 404, 407, 410, 413, 416, 419, 422, 425,
- 428, 431, 434, 438, 441, 444, 447, 450,
- 453, 456, 459, 462, 465, 468, 471, 474,
- 477, 480, 483, 486, 490, 493, 496, 499,
- 503, 506, 509, 512, 515, 518, 521, 524,
- 526, 528, 530, 532, 534, 536, 538, 552,
- 555, 558, 561, 564, 567, 570, 573, 576,
- 579, 582, 585, 588, 591, 594, 597, 600,
- 603, 606, 609, 612, 615, 618, 621, 625,
- 628, 631, 634, 637, 640, 643, 646, 649,
- 652, 655, 658, 661, 664, 667, 670, 673,
- 676, 679, 681, 683, 685, 687, 689, 691,
- 705, 708, 711, 714, 717, 720, 723, 726,
- 729, 732, 735, 738, 741, 744, 747, 750,
- 753, 756, 759, 762, 765, 768, 771, 774,
- 778, 781, 784, 787, 790, 793, 796, 799,
- 802, 805, 808, 811, 814, 817, 820, 823,
- 826, 829, 832, 835, 838, 842, 845, 848,
- 851, 854, 858, 864, 868, 871, 877, 893,
- 896, 900, 903, 906, 910, 913, 916, 919,
- 923, 926, 929, 932, 935, 938, 941, 944
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 38, 40, 43, 45, 89, 273, 4,
- 0, 3, 0, 4, 0, 4, 4, 5,
- 15, 17, 31, 34, 37, 38, 40, 43,
- 45, 89, 273, 4, 0, 6, 0, 7,
- 0, 9, 8, 8, 9, 8, 8, 10,
- 10, 11, 10, 10, 10, 10, 11, 10,
- 10, 10, 10, 12, 10, 10, 10, 10,
- 13, 10, 10, 4, 14, 14, 0, 4,
- 14, 14, 0, 4, 16, 15, 4, 0,
- 18, 0, 19, 0, 20, 0, 21, 0,
- 22, 0, 23, 0, 24, 0, 25, 0,
- 26, 0, 27, 0, 28, 0, 29, 0,
- 30, 0, 295, 0, 32, 0, 4, 16,
- 33, 4, 16, 33, 0, 0, 0, 0,
- 35, 36, 4, 36, 36, 34, 35, 35,
- 4, 36, 34, 36, 0, 31, 0, 39,
- 0, 31, 0, 41, 0, 42, 0, 37,
- 0, 44, 0, 39, 0, 46, 52, 0,
- 47, 0, 48, 0, 49, 0, 50, 0,
- 51, 0, 39, 0, 53, 0, 54, 0,
- 55, 0, 56, 0, 57, 0, 58, 0,
- 59, 0, 60, 0, 61, 0, 63, 62,
- 63, 62, 63, 63, 4, 64, 4, 78,
- 279, 63, 62, 63, 65, 62, 63, 66,
- 62, 63, 67, 62, 63, 68, 62, 63,
- 69, 62, 63, 70, 62, 63, 71, 62,
- 63, 72, 62, 63, 73, 62, 63, 74,
- 62, 63, 75, 62, 63, 76, 62, 63,
- 77, 62, 63, 4, 62, 63, 79, 62,
- 63, 80, 62, 63, 81, 62, 63, 82,
- 62, 63, 83, 62, 63, 84, 62, 63,
- 85, 62, 63, 86, 62, 63, 87, 62,
- 63, 88, 62, 4, 4, 5, 15, 17,
- 31, 34, 37, 38, 40, 43, 45, 89,
- 273, 4, 0, 90, 0, 91, 217, 0,
- 92, 0, 93, 0, 94, 111, 0, 95,
- 0, 96, 0, 97, 0, 98, 0, 100,
- 99, 100, 99, 100, 100, 4, 101, 4,
- 100, 99, 100, 102, 99, 100, 103, 99,
- 100, 104, 99, 100, 105, 99, 100, 106,
- 99, 100, 107, 99, 100, 108, 99, 100,
- 109, 99, 100, 110, 99, 100, 88, 99,
- 112, 167, 0, 114, 113, 114, 113, 114,
- 114, 4, 115, 129, 4, 130, 131, 133,
- 136, 138, 154, 114, 113, 114, 116, 113,
- 114, 117, 113, 114, 118, 113, 114, 119,
- 113, 114, 120, 113, 114, 121, 113, 114,
- 122, 113, 114, 123, 113, 114, 124, 113,
- 114, 125, 113, 114, 126, 113, 114, 127,
- 113, 114, 128, 113, 114, 4, 113, 114,
- 88, 113, 114, 129, 113, 114, 132, 113,
- 114, 129, 113, 114, 134, 113, 114, 135,
- 113, 114, 130, 113, 114, 137, 113, 114,
- 132, 113, 114, 139, 145, 113, 114, 140,
- 113, 114, 141, 113, 114, 142, 113, 114,
- 143, 113, 114, 144, 113, 114, 132, 113,
- 114, 146, 113, 114, 147, 113, 114, 148,
- 113, 114, 149, 113, 114, 150, 113, 114,
- 151, 113, 114, 152, 113, 114, 153, 113,
- 114, 88, 113, 114, 155, 113, 114, 156,
- 164, 113, 114, 157, 113, 114, 158, 113,
- 114, 159, 113, 114, 88, 160, 113, 114,
- 161, 113, 114, 162, 113, 114, 163, 113,
- 114, 153, 113, 114, 165, 113, 114, 166,
- 113, 114, 153, 113, 168, 0, 169, 0,
- 170, 0, 171, 0, 172, 0, 174, 173,
- 174, 173, 174, 174, 4, 175, 189, 4,
- 190, 191, 193, 196, 198, 214, 174, 173,
- 174, 176, 173, 174, 177, 173, 174, 178,
- 173, 174, 179, 173, 174, 180, 173, 174,
- 181, 173, 174, 182, 173, 174, 183, 173,
- 174, 184, 173, 174, 185, 173, 174, 186,
- 173, 174, 187, 173, 174, 188, 173, 174,
- 4, 173, 174, 88, 173, 174, 189, 173,
- 174, 192, 173, 174, 189, 173, 174, 194,
- 173, 174, 195, 173, 174, 190, 173, 174,
- 197, 173, 174, 192, 173, 174, 199, 205,
- 173, 174, 200, 173, 174, 201, 173, 174,
- 202, 173, 174, 203, 173, 174, 204, 173,
- 174, 192, 173, 174, 206, 173, 174, 207,
- 173, 174, 208, 173, 174, 209, 173, 174,
- 210, 173, 174, 211, 173, 174, 212, 173,
- 174, 213, 173, 174, 88, 173, 174, 215,
- 173, 174, 216, 173, 174, 211, 173, 218,
- 0, 219, 0, 220, 0, 221, 0, 223,
- 222, 223, 222, 223, 223, 4, 224, 238,
- 4, 239, 240, 242, 245, 247, 263, 223,
- 222, 223, 225, 222, 223, 226, 222, 223,
- 227, 222, 223, 228, 222, 223, 229, 222,
- 223, 230, 222, 223, 231, 222, 223, 232,
- 222, 223, 233, 222, 223, 234, 222, 223,
- 235, 222, 223, 236, 222, 223, 237, 222,
- 223, 4, 222, 223, 88, 222, 223, 238,
- 222, 223, 241, 222, 223, 238, 222, 223,
- 243, 222, 223, 244, 222, 223, 239, 222,
- 223, 246, 222, 223, 241, 222, 223, 248,
- 254, 222, 223, 249, 222, 223, 250, 222,
- 223, 251, 222, 223, 252, 222, 223, 253,
- 222, 223, 241, 222, 223, 255, 222, 223,
- 256, 222, 223, 257, 222, 223, 258, 222,
- 223, 259, 222, 223, 260, 222, 223, 261,
- 222, 223, 262, 222, 223, 88, 222, 223,
- 264, 222, 223, 265, 222, 223, 266, 222,
- 223, 267, 222, 223, 268, 222, 223, 88,
- 269, 222, 223, 270, 222, 223, 271, 222,
- 223, 272, 222, 223, 262, 222, 273, 274,
- 273, 0, 278, 277, 276, 274, 277, 275,
- 0, 276, 274, 275, 0, 276, 275, 278,
- 277, 276, 274, 277, 275, 278, 278, 5,
- 15, 17, 31, 34, 37, 38, 40, 43,
- 45, 89, 273, 278, 0, 63, 280, 62,
- 63, 281, 292, 62, 63, 282, 62, 63,
- 283, 62, 63, 284, 287, 62, 63, 285,
- 62, 63, 286, 62, 63, 87, 62, 63,
- 88, 288, 62, 63, 289, 62, 63, 290,
- 62, 63, 291, 62, 63, 87, 62, 63,
- 293, 62, 63, 294, 62, 63, 87, 62,
- 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 54, 0, 5,
- 1, 0, 29, 1, 29, 29, 29, 29,
- 29, 29, 35, 0, 43, 0, 43, 0,
- 43, 139, 48, 9, 106, 11, 0, 134,
- 45, 45, 45, 3, 122, 33, 33, 33,
- 0, 122, 33, 33, 33, 0, 122, 33,
- 0, 33, 0, 102, 7, 7, 43, 54,
- 0, 0, 43, 114, 25, 0, 54, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 149, 126,
- 57, 110, 23, 0, 43, 43, 43, 43,
- 0, 27, 118, 27, 27, 51, 27, 0,
- 54, 0, 1, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 69, 33, 69, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 13, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 130, 31, 60, 57, 31,
- 63, 57, 63, 63, 63, 63, 63, 63,
- 66, 31, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 81, 84, 81,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 21, 0,
- 0, 0, 43, 144, 57, 54, 0, 54,
- 0, 75, 33, 84, 75, 84, 84, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 54,
- 17, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 17, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 78, 33, 84, 78,
- 84, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 19, 0, 54, 19, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 19, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 72, 33, 84,
- 72, 84, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 54, 15, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 0,
- 0, 43, 54, 37, 37, 87, 37, 37,
- 43, 0, 39, 0, 43, 0, 0, 54,
- 0, 0, 39, 0, 0, 54, 0, 93,
- 90, 41, 96, 90, 96, 96, 96, 96,
- 96, 96, 99, 0, 43, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 295;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/fi.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 819 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/fi.c.rl"
-
-#line 826 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/fi.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/fi.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/fi.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/fi.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/fi.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/fi.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/fi.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/fi.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/fi.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/fi.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/fi.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/fi.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/fi.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/fi.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/fi.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/fi.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/fi.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/fi.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/fi.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/fi.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/fi.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/fi.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/fi.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/fi.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1116 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/fi.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1179 "ext/gherkin_lexer_fi/gherkin_lexer_fi.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/fi.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_fi()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Fi", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_fr/extconf.rb
index 669706c,669706c..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_fr/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_fr")
--have_library("c", "main")
--create_makefile("gherkin_lexer_fr")
diff --cc ext/gherkin_lexer_fr/gherkin_lexer_fr.c
index 6c44466,6bf4a3d..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_fr/gherkin_lexer_fr.c
+++ /dev/null
@@@ -1,1493 -1,1493 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 36,
- 38, 40, 60, 61, 62, 64, 66, 71,
- 76, 81, 86, 90, 94, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 117, 124,
- 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 160,
- 162, 164, 166, 168, 170, 172, 174, 176,
- 178, 180, 182, 184, 188, 208, 210, 212,
- 213, 214, 215, 216, 217, 218, 219, 220,
- 221, 228, 230, 232, 234, 236, 238, 240,
- 242, 244, 246, 248, 250, 252, 254, 256,
- 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 287, 289, 291, 293, 295, 297,
- 299, 301, 303, 305, 307, 309, 311, 313,
- 315, 317, 319, 321, 323, 325, 327, 329,
- 331, 333, 335, 337, 339, 341, 343, 345,
- 347, 349, 351, 353, 355, 357, 359, 361,
- 363, 365, 367, 369, 371, 373, 375, 377,
- 379, 381, 383, 385, 387, 390, 392, 394,
- 396, 398, 400, 402, 404, 406, 407, 408,
- 409, 410, 411, 413, 414, 415, 416, 417,
- 418, 419, 420, 421, 422, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 433, 434,
- 435, 451, 453, 455, 457, 459, 461, 463,
- 465, 467, 469, 471, 473, 475, 479, 482,
- 484, 486, 488, 490, 492, 494, 496, 498,
- 500, 502, 504, 506, 508, 510, 512, 514,
- 516, 518, 520, 522, 525, 527, 529, 531,
- 533, 535, 537, 539, 541, 543, 545, 547,
- 549, 551, 553, 555, 557, 559, 561, 563,
- 565, 568, 570, 572, 574, 576, 578, 580,
- 583, 585, 587, 589, 591, 593, 595, 597,
- 599, 601, 602, 603, 604, 605, 607, 608,
- 609, 610, 611, 612, 613, 614, 615, 616,
- 617, 635, 637, 639, 641, 643, 645, 647,
- 649, 651, 653, 655, 657, 659, 663, 666,
- 668, 670, 672, 674, 676, 678, 680, 682,
- 684, 686, 688, 690, 692, 694, 696, 698,
- 700, 702, 704, 706, 708, 710, 712, 714,
- 716, 718, 720, 722, 725, 727, 729, 731,
- 733, 735, 737, 739, 741, 743, 745, 747,
- 749, 751, 753, 755, 757, 759, 761, 763,
- 766, 768, 770, 772, 774, 776, 778, 780,
- 782, 784, 787, 789, 791, 793, 795, 797,
- 799, 801, 803, 805, 807, 809, 811, 814,
- 816, 818, 819, 820, 824, 830, 833, 835,
- 841, 861, 864, 866, 868, 870, 872, 874,
- 876, 878, 880, 882, 884, 886, 888, 890,
- 892, 894, 896, 898, 900, 902, 904, 907,
- 909, 911, 913, 915, 917, 919, 921, 923,
- 925, 927, 929, 931, 933, 935, 937, 939,
- 941, 943, 945, 947, 950, 952, 954, 956,
- 958, 960, 962, 964, 966, 968, 971, 973,
- 975, 977, 979, 981, 983, 985, 987, 989,
- 991, 993, 995, 998, 1000, 1002, 1004, 1005,
- 1006
- };
-
- static const char _lexer_trans_keys[] = {
- -61, -17, 10, 32, 34, 35, 37, 42,
- 64, 65, 67, 69, 70, 76, 77, 80,
- 81, 83, 124, 9, 13, -119, 116, 97,
- 110, 116, 32, 100, 111, 110, 110, -61,
- -87, 32, 101, 115, 10, 13, 10, 13,
- -61, 10, 32, 34, 35, 37, 42, 64,
- 65, 67, 69, 70, 76, 77, 80, 81,
- 83, 124, 9, 13, 34, 34, 10, 13,
- 10, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 9, 13, 10, 32, 9, 13, 10, 13,
- 10, 95, 70, 69, 65, 84, 85, 82,
- 69, 95, 69, 78, 68, 95, 37, 32,
- 13, 32, 64, 9, 10, 9, 10, 13,
- 32, 64, 11, 12, 10, 32, 64, 9,
- 13, 108, 111, 114, 115, 111, 110, 116,
- 101, 120, 116, 101, 58, 10, 10, -61,
- 10, 32, 35, 37, 42, 64, 65, 69,
- 70, 76, 77, 80, 81, 83, 9, 13,
- -119, 10, 10, 116, 10, 97, 10, 110,
- 10, 116, 10, 32, 10, 100, 10, 111,
- 10, 110, 10, 110, -61, 10, -87, 10,
- 10, 32, 101, 115, -61, 10, 32, 34,
- 35, 37, 42, 64, 65, 67, 69, 70,
- 76, 77, 80, 81, 83, 124, 9, 13,
- 116, 120, 32, 97, 101, 109, 112, 108,
- 101, 115, 58, 10, 10, 10, 32, 35,
- 70, 124, 9, 13, 10, 111, 10, 110,
- 10, 99, 10, 116, 10, 105, 10, 111,
- 10, 110, 10, 110, 10, 97, 10, 108,
- 10, 105, 10, 116, -61, 10, -87, 10,
- 10, 58, 111, 110, 99, 116, 105, 111,
- 110, 110, 97, 108, 105, 116, -61, -87,
- 58, 10, 10, 10, 32, 35, 37, 64,
- 67, 69, 70, 80, 83, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 111, 10, 110, 10,
- 116, 10, 101, 10, 120, 10, 116, 10,
- 101, 10, 58, 10, 120, 10, 101, 10,
- 109, 10, 112, 10, 108, 10, 101, 10,
- 115, 10, 111, 10, 110, 10, 99, 10,
- 116, 10, 105, 10, 111, 10, 110, 10,
- 110, 10, 97, 10, 108, 10, 105, 10,
- 116, -61, 10, -87, 10, 10, 108, 10,
- 97, 10, 110, 10, 32, 10, 100, 10,
- 117, 10, 32, 10, 83, 115, 10, 99,
- -61, 10, -87, 10, 10, 110, 10, 97,
- 10, 114, 10, 105, 10, 111, 111, 114,
- 115, 113, 117, 39, 101, 97, 105, 108,
- 97, 110, 32, 100, 117, 32, 83, 115,
- 99, -61, -87, 110, 97, 114, 105, 111,
- 58, 10, 10, -61, 10, 32, 35, 37,
- 42, 64, 65, 69, 70, 76, 77, 81,
- 83, 9, 13, -119, 10, 10, 116, 10,
- 97, 10, 110, 10, 116, 10, 32, 10,
- 100, 10, 111, 10, 110, 10, 110, -61,
- 10, -87, 10, 10, 32, 101, 115, 10,
- 32, 115, 10, 32, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 108, 10, 111, 10, 114, 10, 115,
- 10, 116, 10, 32, 97, 10, 111, 10,
- 110, 10, 99, 10, 116, 10, 105, 10,
- 111, 10, 110, 10, 110, 10, 97, 10,
- 108, 10, 105, 10, 116, -61, 10, -87,
- 10, 10, 58, 10, 111, 10, 114, 10,
- 115, 10, 113, 10, 117, 10, 39, 101,
- 10, 97, 10, 105, 10, 117, 10, 97,
- 10, 110, 10, 100, 10, 99, 111, -61,
- 10, -87, 10, 10, 110, 10, 97, 10,
- 114, 10, 105, 10, 111, 10, 105, 10,
- 116, 117, 97, 110, 100, 99, 111, -61,
- -87, 110, 97, 114, 105, 111, 58, 10,
- 10, -61, 10, 32, 35, 37, 42, 64,
- 65, 67, 69, 70, 76, 77, 80, 81,
- 83, 9, 13, -119, 10, 10, 116, 10,
- 97, 10, 110, 10, 116, 10, 32, 10,
- 100, 10, 111, 10, 110, 10, 110, -61,
- 10, -87, 10, 10, 32, 101, 115, 10,
- 32, 115, 10, 32, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 108, 10, 111, 10, 114, 10, 115,
- 10, 111, 10, 110, 10, 116, 10, 101,
- 10, 120, 10, 116, 10, 101, 10, 58,
- 10, 116, 10, 32, 97, 10, 111, 10,
- 110, 10, 99, 10, 116, 10, 105, 10,
- 111, 10, 110, 10, 110, 10, 97, 10,
- 108, 10, 105, 10, 116, -61, 10, -87,
- 10, 10, 111, 10, 114, 10, 115, 10,
- 113, 10, 117, 10, 39, 101, 10, 97,
- 10, 105, 10, 108, 10, 97, 10, 110,
- 10, 32, 10, 100, 10, 117, 10, 32,
- 10, 83, 115, 10, 99, -61, 10, -87,
- 10, 10, 110, 10, 97, 10, 114, 10,
- 105, 10, 111, 10, 117, 10, 97, 10,
- 110, 10, 100, 10, 99, 111, 10, 105,
- 10, 116, 105, 116, 32, 124, 9, 13,
- 10, 32, 92, 124, 9, 13, 10, 92,
- 124, 10, 92, 10, 32, 92, 124, 9,
- 13, -61, 10, 32, 34, 35, 37, 42,
- 64, 65, 67, 69, 70, 76, 77, 80,
- 81, 83, 124, 9, 13, 10, 32, 115,
- 10, 32, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 108,
- 10, 111, 10, 114, 10, 115, 10, 116,
- 10, 32, 97, 10, 111, 10, 110, 10,
- 99, 10, 116, 10, 105, 10, 111, 10,
- 110, 10, 110, 10, 97, 10, 108, 10,
- 105, 10, 116, -61, 10, -87, 10, 10,
- 58, 10, 111, 10, 114, 10, 115, 10,
- 113, 10, 117, 10, 39, 101, 10, 97,
- 10, 105, 10, 108, 10, 97, 10, 110,
- 10, 32, 10, 100, 10, 117, 10, 32,
- 10, 83, 115, 10, 99, -61, 10, -87,
- 10, 10, 110, 10, 97, 10, 114, 10,
- 105, 10, 111, 10, 117, 10, 97, 10,
- 110, 10, 100, 10, 99, 111, 10, 105,
- 10, 116, 32, 115, -69, -65, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 19, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 3, 2,
- 2, 18, 1, 1, 2, 2, 3, 3,
- 3, 3, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 3, 5, 3,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 15, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 4, 18, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 5, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 10, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 14, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 16, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 1, 1, 2, 4, 3, 2, 4,
- 18, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 1, 1,
- 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 1, 1,
- 1, 1, 1, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 1, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 1, 0, 0, 1,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 21, 23, 25, 27, 29, 31,
- 33, 35, 37, 39, 41, 43, 45, 49,
- 52, 55, 75, 77, 79, 82, 85, 90,
- 95, 100, 105, 109, 113, 116, 118, 120,
- 122, 124, 126, 128, 130, 132, 134, 136,
- 138, 140, 142, 144, 146, 148, 153, 160,
- 165, 167, 169, 171, 173, 175, 177, 179,
- 181, 183, 185, 187, 189, 191, 193, 210,
- 213, 216, 219, 222, 225, 228, 231, 234,
- 237, 240, 243, 246, 251, 271, 274, 277,
- 279, 281, 283, 285, 287, 289, 291, 293,
- 295, 302, 305, 308, 311, 314, 317, 320,
- 323, 326, 329, 332, 335, 338, 341, 344,
- 347, 349, 351, 353, 355, 357, 359, 361,
- 363, 365, 367, 369, 371, 373, 375, 377,
- 379, 381, 393, 396, 399, 402, 405, 408,
- 411, 414, 417, 420, 423, 426, 429, 432,
- 435, 438, 441, 444, 447, 450, 453, 456,
- 459, 462, 465, 468, 471, 474, 477, 480,
- 483, 486, 489, 492, 495, 498, 501, 504,
- 507, 510, 513, 516, 519, 522, 525, 528,
- 531, 534, 537, 540, 543, 547, 550, 553,
- 556, 559, 562, 565, 568, 571, 573, 575,
- 577, 579, 581, 584, 586, 588, 590, 592,
- 594, 596, 598, 600, 602, 605, 607, 609,
- 611, 613, 615, 617, 619, 621, 623, 625,
- 627, 643, 646, 649, 652, 655, 658, 661,
- 664, 667, 670, 673, 676, 679, 684, 688,
- 691, 694, 697, 700, 703, 706, 709, 712,
- 715, 718, 721, 724, 727, 730, 733, 736,
- 739, 742, 745, 748, 752, 755, 758, 761,
- 764, 767, 770, 773, 776, 779, 782, 785,
- 788, 791, 794, 797, 800, 803, 806, 809,
- 812, 816, 819, 822, 825, 828, 831, 834,
- 838, 841, 844, 847, 850, 853, 856, 859,
- 862, 865, 867, 869, 871, 873, 876, 878,
- 880, 882, 884, 886, 888, 890, 892, 894,
- 896, 914, 917, 920, 923, 926, 929, 932,
- 935, 938, 941, 944, 947, 950, 955, 959,
- 962, 965, 968, 971, 974, 977, 980, 983,
- 986, 989, 992, 995, 998, 1001, 1004, 1007,
- 1010, 1013, 1016, 1019, 1022, 1025, 1028, 1031,
- 1034, 1037, 1040, 1043, 1047, 1050, 1053, 1056,
- 1059, 1062, 1065, 1068, 1071, 1074, 1077, 1080,
- 1083, 1086, 1089, 1092, 1095, 1098, 1101, 1104,
- 1108, 1111, 1114, 1117, 1120, 1123, 1126, 1129,
- 1132, 1135, 1139, 1142, 1145, 1148, 1151, 1154,
- 1157, 1160, 1163, 1166, 1169, 1172, 1175, 1179,
- 1182, 1185, 1187, 1189, 1193, 1199, 1203, 1206,
- 1212, 1232, 1236, 1239, 1242, 1245, 1248, 1251,
- 1254, 1257, 1260, 1263, 1266, 1269, 1272, 1275,
- 1278, 1281, 1284, 1287, 1290, 1293, 1296, 1300,
- 1303, 1306, 1309, 1312, 1315, 1318, 1321, 1324,
- 1327, 1330, 1333, 1336, 1339, 1342, 1345, 1348,
- 1351, 1354, 1357, 1360, 1364, 1367, 1370, 1373,
- 1376, 1379, 1382, 1385, 1388, 1391, 1395, 1398,
- 1401, 1404, 1407, 1410, 1413, 1416, 1419, 1422,
- 1425, 1428, 1431, 1435, 1438, 1441, 1444, 1446,
- 1448
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 462, 17, 17, 18, 28, 30, 44,
- 45, 48, 52, 77, 104, 181, 187, 189,
- 281, 285, 387, 17, 0, 3, 0, 4,
- 0, 5, 0, 6, 0, 7, 0, 8,
- 0, 9, 0, 10, 0, 11, 0, 12,
- 0, 13, 0, 14, 0, 15, 461, 44,
- 0, 17, 29, 16, 17, 29, 16, 2,
- 17, 17, 18, 28, 30, 44, 45, 48,
- 52, 77, 104, 181, 187, 189, 281, 285,
- 387, 17, 0, 19, 0, 20, 0, 22,
- 21, 21, 22, 21, 21, 23, 23, 24,
- 23, 23, 23, 23, 24, 23, 23, 23,
- 23, 25, 23, 23, 23, 23, 26, 23,
- 23, 17, 27, 27, 0, 17, 27, 27,
- 0, 17, 29, 28, 17, 0, 31, 0,
- 32, 0, 33, 0, 34, 0, 35, 0,
- 36, 0, 37, 0, 38, 0, 39, 0,
- 40, 0, 41, 0, 42, 0, 43, 0,
- 464, 0, 15, 0, 0, 0, 0, 0,
- 46, 47, 17, 47, 47, 45, 46, 46,
- 17, 47, 45, 47, 0, 49, 0, 50,
- 0, 51, 0, 44, 0, 53, 0, 54,
- 0, 55, 0, 56, 0, 57, 0, 58,
- 0, 59, 0, 60, 0, 62, 61, 62,
- 61, 63, 62, 62, 17, 395, 394, 17,
- 409, 413, 415, 430, 436, 438, 454, 458,
- 62, 61, 64, 62, 61, 62, 65, 61,
- 62, 66, 61, 62, 67, 61, 62, 68,
- 61, 62, 69, 61, 62, 70, 61, 62,
- 71, 61, 62, 72, 61, 62, 73, 61,
- 74, 62, 61, 75, 62, 61, 62, 76,
- 393, 394, 61, 2, 17, 17, 18, 28,
- 30, 44, 45, 48, 52, 77, 104, 181,
- 187, 189, 281, 285, 387, 17, 0, 78,
- 79, 0, 15, 5, 0, 80, 0, 81,
- 0, 82, 0, 83, 0, 84, 0, 85,
- 0, 86, 0, 88, 87, 88, 87, 88,
- 88, 17, 89, 17, 88, 87, 88, 90,
- 87, 88, 91, 87, 88, 92, 87, 88,
- 93, 87, 88, 94, 87, 88, 95, 87,
- 88, 96, 87, 88, 97, 87, 88, 98,
- 87, 88, 99, 87, 88, 100, 87, 88,
- 101, 87, 102, 88, 87, 103, 88, 87,
- 88, 76, 87, 105, 0, 106, 0, 107,
- 0, 108, 0, 109, 0, 110, 0, 111,
- 0, 112, 0, 113, 0, 114, 0, 115,
- 0, 116, 0, 117, 0, 118, 0, 119,
- 0, 121, 120, 121, 120, 121, 121, 17,
- 122, 17, 136, 144, 151, 165, 173, 121,
- 120, 121, 123, 120, 121, 124, 120, 121,
- 125, 120, 121, 126, 120, 121, 127, 120,
- 121, 128, 120, 121, 129, 120, 121, 130,
- 120, 121, 131, 120, 121, 132, 120, 121,
- 133, 120, 121, 134, 120, 121, 135, 120,
- 121, 17, 120, 121, 137, 120, 121, 138,
- 120, 121, 139, 120, 121, 140, 120, 121,
- 141, 120, 121, 142, 120, 121, 143, 120,
- 121, 76, 120, 121, 145, 120, 121, 146,
- 120, 121, 147, 120, 121, 148, 120, 121,
- 149, 120, 121, 150, 120, 121, 143, 120,
- 121, 152, 120, 121, 153, 120, 121, 154,
- 120, 121, 155, 120, 121, 156, 120, 121,
- 157, 120, 121, 158, 120, 121, 159, 120,
- 121, 160, 120, 121, 161, 120, 121, 162,
- 120, 121, 163, 120, 164, 121, 120, 143,
- 121, 120, 121, 166, 120, 121, 167, 120,
- 121, 168, 120, 121, 169, 120, 121, 170,
- 120, 121, 171, 120, 121, 172, 120, 121,
- 173, 173, 120, 121, 174, 120, 175, 121,
- 120, 176, 121, 120, 121, 177, 120, 121,
- 178, 120, 121, 179, 120, 121, 180, 120,
- 121, 143, 120, 182, 0, 183, 0, 184,
- 0, 185, 0, 186, 0, 15, 44, 0,
- 188, 0, 51, 0, 190, 0, 191, 0,
- 192, 0, 193, 0, 194, 0, 195, 0,
- 196, 0, 197, 197, 0, 198, 0, 199,
- 0, 200, 0, 201, 0, 202, 0, 203,
- 0, 204, 0, 205, 0, 206, 0, 208,
- 207, 208, 207, 209, 208, 208, 17, 224,
- 223, 17, 238, 242, 244, 259, 265, 267,
- 271, 208, 207, 210, 208, 207, 208, 211,
- 207, 208, 212, 207, 208, 213, 207, 208,
- 214, 207, 208, 215, 207, 208, 216, 207,
- 208, 217, 207, 208, 218, 207, 208, 219,
- 207, 220, 208, 207, 221, 208, 207, 208,
- 76, 222, 223, 207, 208, 76, 223, 207,
- 208, 76, 207, 208, 225, 207, 208, 226,
- 207, 208, 227, 207, 208, 228, 207, 208,
- 229, 207, 208, 230, 207, 208, 231, 207,
- 208, 232, 207, 208, 233, 207, 208, 234,
- 207, 208, 235, 207, 208, 236, 207, 208,
- 237, 207, 208, 17, 207, 208, 239, 207,
- 208, 240, 207, 208, 241, 207, 208, 223,
- 207, 208, 243, 207, 208, 76, 212, 207,
- 208, 245, 207, 208, 246, 207, 208, 247,
- 207, 208, 248, 207, 208, 249, 207, 208,
- 250, 207, 208, 251, 207, 208, 252, 207,
- 208, 253, 207, 208, 254, 207, 208, 255,
- 207, 208, 256, 207, 257, 208, 207, 258,
- 208, 207, 208, 76, 207, 208, 260, 207,
- 208, 261, 207, 208, 262, 207, 208, 263,
- 207, 208, 264, 207, 208, 76, 223, 207,
- 208, 266, 207, 208, 241, 207, 208, 268,
- 207, 208, 269, 207, 208, 270, 207, 208,
- 223, 207, 208, 272, 279, 207, 273, 208,
- 207, 274, 208, 207, 208, 275, 207, 208,
- 276, 207, 208, 277, 207, 208, 278, 207,
- 208, 258, 207, 208, 280, 207, 208, 223,
- 207, 282, 0, 283, 0, 284, 0, 44,
- 0, 286, 385, 0, 287, 0, 288, 0,
- 289, 0, 290, 0, 291, 0, 292, 0,
- 293, 0, 294, 0, 296, 295, 296, 295,
- 297, 296, 296, 17, 312, 311, 17, 326,
- 330, 338, 340, 354, 360, 362, 378, 382,
- 296, 295, 298, 296, 295, 296, 299, 295,
- 296, 300, 295, 296, 301, 295, 296, 302,
- 295, 296, 303, 295, 296, 304, 295, 296,
- 305, 295, 296, 306, 295, 296, 307, 295,
- 308, 296, 295, 309, 296, 295, 296, 76,
- 310, 311, 295, 296, 76, 311, 295, 296,
- 76, 295, 296, 313, 295, 296, 314, 295,
- 296, 315, 295, 296, 316, 295, 296, 317,
- 295, 296, 318, 295, 296, 319, 295, 296,
- 320, 295, 296, 321, 295, 296, 322, 295,
- 296, 323, 295, 296, 324, 295, 296, 325,
- 295, 296, 17, 295, 296, 327, 295, 296,
- 328, 295, 296, 329, 295, 296, 311, 295,
- 296, 331, 295, 296, 332, 295, 296, 333,
- 295, 296, 334, 295, 296, 335, 295, 296,
- 336, 295, 296, 337, 295, 296, 76, 295,
- 296, 339, 295, 296, 76, 300, 295, 296,
- 341, 295, 296, 342, 295, 296, 343, 295,
- 296, 344, 295, 296, 345, 295, 296, 346,
- 295, 296, 347, 295, 296, 348, 295, 296,
- 349, 295, 296, 350, 295, 296, 351, 295,
- 296, 352, 295, 353, 296, 295, 337, 296,
- 295, 296, 355, 295, 296, 356, 295, 296,
- 357, 295, 296, 358, 295, 296, 359, 295,
- 296, 76, 311, 295, 296, 361, 295, 296,
- 329, 295, 296, 363, 295, 296, 364, 295,
- 296, 365, 295, 296, 366, 295, 296, 367,
- 295, 296, 368, 295, 296, 369, 295, 296,
- 370, 370, 295, 296, 371, 295, 372, 296,
- 295, 373, 296, 295, 296, 374, 295, 296,
- 375, 295, 296, 376, 295, 296, 377, 295,
- 296, 337, 295, 296, 379, 295, 296, 380,
- 295, 296, 381, 295, 296, 311, 295, 296,
- 371, 383, 295, 296, 384, 295, 296, 311,
- 295, 386, 0, 44, 0, 387, 388, 387,
- 0, 392, 391, 390, 388, 391, 389, 0,
- 390, 388, 389, 0, 390, 389, 392, 391,
- 390, 388, 391, 389, 2, 392, 392, 18,
- 28, 30, 44, 45, 48, 52, 77, 104,
- 181, 187, 189, 281, 285, 387, 392, 0,
- 62, 76, 394, 61, 62, 76, 61, 62,
- 396, 61, 62, 397, 61, 62, 398, 61,
- 62, 399, 61, 62, 400, 61, 62, 401,
- 61, 62, 402, 61, 62, 403, 61, 62,
- 404, 61, 62, 405, 61, 62, 406, 61,
- 62, 407, 61, 62, 408, 61, 62, 17,
- 61, 62, 410, 61, 62, 411, 61, 62,
- 412, 61, 62, 394, 61, 62, 414, 61,
- 62, 76, 66, 61, 62, 416, 61, 62,
- 417, 61, 62, 418, 61, 62, 419, 61,
- 62, 420, 61, 62, 421, 61, 62, 422,
- 61, 62, 423, 61, 62, 424, 61, 62,
- 425, 61, 62, 426, 61, 62, 427, 61,
- 428, 62, 61, 429, 62, 61, 62, 76,
- 61, 62, 431, 61, 62, 432, 61, 62,
- 433, 61, 62, 434, 61, 62, 435, 61,
- 62, 76, 394, 61, 62, 437, 61, 62,
- 412, 61, 62, 439, 61, 62, 440, 61,
- 62, 441, 61, 62, 442, 61, 62, 443,
- 61, 62, 444, 61, 62, 445, 61, 62,
- 446, 446, 61, 62, 447, 61, 448, 62,
- 61, 449, 62, 61, 62, 450, 61, 62,
- 451, 61, 62, 452, 61, 62, 453, 61,
- 62, 429, 61, 62, 455, 61, 62, 456,
- 61, 62, 457, 61, 62, 394, 61, 62,
- 447, 459, 61, 62, 460, 61, 62, 394,
- 61, 15, 44, 0, 463, 0, 17, 0,
- 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 29, 0, 54, 0, 5, 1, 0, 29,
- 1, 29, 29, 29, 29, 29, 29, 29,
- 29, 29, 35, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 0,
- 43, 149, 126, 57, 110, 23, 0, 29,
- 54, 0, 5, 1, 0, 29, 1, 29,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 139,
- 48, 9, 106, 11, 0, 134, 45, 45,
- 45, 3, 122, 33, 33, 33, 0, 122,
- 33, 33, 33, 0, 122, 33, 0, 33,
- 0, 102, 7, 7, 43, 54, 0, 0,
- 43, 114, 25, 0, 54, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 43, 43, 43, 43,
- 0, 27, 118, 27, 27, 51, 27, 0,
- 54, 0, 1, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 84, 54, 0, 72, 33, 84, 72,
- 84, 84, 84, 84, 84, 84, 84, 84,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 15,
- 0, 0, 0, 63, 130, 31, 60, 57,
- 31, 63, 57, 63, 63, 63, 63, 63,
- 63, 63, 63, 63, 66, 31, 43, 0,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 81, 84, 81, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 21, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 69,
- 33, 69, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 54, 0, 78, 33,
- 84, 78, 84, 84, 84, 84, 84, 84,
- 84, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 19, 0, 0, 0, 54, 19, 0, 0,
- 54, 19, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 19, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 19, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 84, 54, 0, 75, 33, 84, 75, 84,
- 84, 84, 84, 84, 84, 84, 84, 84,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 17,
- 0, 0, 0, 54, 17, 0, 0, 54,
- 17, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 17, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 0, 0, 54, 17, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 0, 0,
- 43, 54, 37, 37, 87, 37, 37, 43,
- 0, 39, 0, 43, 0, 0, 54, 0,
- 0, 39, 0, 0, 96, 54, 0, 93,
- 90, 41, 96, 90, 96, 96, 96, 96,
- 96, 96, 96, 96, 96, 99, 0, 43,
- 54, 15, 0, 0, 54, 15, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 15,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 0, 43, 0, 43, 0, 43,
- 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 464;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 1097 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
-
- #line 1104 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1394 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1457 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/fr.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_fr()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Fr", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/fr.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/fr.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 36,
- 38, 40, 60, 61, 62, 64, 66, 71,
- 76, 81, 86, 90, 94, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 117, 124,
- 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 160,
- 162, 164, 166, 168, 170, 172, 174, 176,
- 178, 180, 182, 184, 188, 208, 210, 212,
- 213, 214, 215, 216, 217, 218, 219, 220,
- 221, 228, 230, 232, 234, 236, 238, 240,
- 242, 244, 246, 248, 250, 252, 254, 256,
- 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 287, 289, 291, 293, 295, 297,
- 299, 301, 303, 305, 307, 309, 311, 313,
- 315, 317, 319, 321, 323, 325, 327, 329,
- 331, 333, 335, 337, 339, 341, 343, 345,
- 347, 349, 351, 353, 355, 357, 359, 361,
- 363, 365, 367, 369, 371, 373, 375, 377,
- 379, 381, 383, 385, 387, 390, 392, 394,
- 396, 398, 400, 402, 404, 406, 407, 408,
- 409, 410, 411, 413, 414, 415, 416, 417,
- 418, 419, 420, 421, 422, 424, 425, 426,
- 427, 428, 429, 430, 431, 432, 433, 434,
- 435, 451, 453, 455, 457, 459, 461, 463,
- 465, 467, 469, 471, 473, 475, 479, 482,
- 484, 486, 488, 490, 492, 494, 496, 498,
- 500, 502, 504, 506, 508, 510, 512, 514,
- 516, 518, 520, 522, 525, 527, 529, 531,
- 533, 535, 537, 539, 541, 543, 545, 547,
- 549, 551, 553, 555, 557, 559, 561, 563,
- 565, 568, 570, 572, 574, 576, 578, 580,
- 583, 585, 587, 589, 591, 593, 595, 597,
- 599, 601, 602, 603, 604, 605, 607, 608,
- 609, 610, 611, 612, 613, 614, 615, 616,
- 617, 635, 637, 639, 641, 643, 645, 647,
- 649, 651, 653, 655, 657, 659, 663, 666,
- 668, 670, 672, 674, 676, 678, 680, 682,
- 684, 686, 688, 690, 692, 694, 696, 698,
- 700, 702, 704, 706, 708, 710, 712, 714,
- 716, 718, 720, 722, 725, 727, 729, 731,
- 733, 735, 737, 739, 741, 743, 745, 747,
- 749, 751, 753, 755, 757, 759, 761, 763,
- 766, 768, 770, 772, 774, 776, 778, 780,
- 782, 784, 787, 789, 791, 793, 795, 797,
- 799, 801, 803, 805, 807, 809, 811, 814,
- 816, 818, 819, 820, 824, 830, 833, 835,
- 841, 861, 864, 866, 868, 870, 872, 874,
- 876, 878, 880, 882, 884, 886, 888, 890,
- 892, 894, 896, 898, 900, 902, 904, 907,
- 909, 911, 913, 915, 917, 919, 921, 923,
- 925, 927, 929, 931, 933, 935, 937, 939,
- 941, 943, 945, 947, 950, 952, 954, 956,
- 958, 960, 962, 964, 966, 968, 971, 973,
- 975, 977, 979, 981, 983, 985, 987, 989,
- 991, 993, 995, 998, 1000, 1002, 1004, 1005,
- 1006
-};
-
-static const char _lexer_trans_keys[] = {
- -61, -17, 10, 32, 34, 35, 37, 42,
- 64, 65, 67, 69, 70, 76, 77, 80,
- 81, 83, 124, 9, 13, -119, 116, 97,
- 110, 116, 32, 100, 111, 110, 110, -61,
- -87, 32, 101, 115, 10, 13, 10, 13,
- -61, 10, 32, 34, 35, 37, 42, 64,
- 65, 67, 69, 70, 76, 77, 80, 81,
- 83, 124, 9, 13, 34, 34, 10, 13,
- 10, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 9, 13, 10, 32, 9, 13, 10, 13,
- 10, 95, 70, 69, 65, 84, 85, 82,
- 69, 95, 69, 78, 68, 95, 37, 32,
- 13, 32, 64, 9, 10, 9, 10, 13,
- 32, 64, 11, 12, 10, 32, 64, 9,
- 13, 108, 111, 114, 115, 111, 110, 116,
- 101, 120, 116, 101, 58, 10, 10, -61,
- 10, 32, 35, 37, 42, 64, 65, 69,
- 70, 76, 77, 80, 81, 83, 9, 13,
- -119, 10, 10, 116, 10, 97, 10, 110,
- 10, 116, 10, 32, 10, 100, 10, 111,
- 10, 110, 10, 110, -61, 10, -87, 10,
- 10, 32, 101, 115, -61, 10, 32, 34,
- 35, 37, 42, 64, 65, 67, 69, 70,
- 76, 77, 80, 81, 83, 124, 9, 13,
- 116, 120, 32, 97, 101, 109, 112, 108,
- 101, 115, 58, 10, 10, 10, 32, 35,
- 70, 124, 9, 13, 10, 111, 10, 110,
- 10, 99, 10, 116, 10, 105, 10, 111,
- 10, 110, 10, 110, 10, 97, 10, 108,
- 10, 105, 10, 116, -61, 10, -87, 10,
- 10, 58, 111, 110, 99, 116, 105, 111,
- 110, 110, 97, 108, 105, 116, -61, -87,
- 58, 10, 10, 10, 32, 35, 37, 64,
- 67, 69, 70, 80, 83, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 111, 10, 110, 10,
- 116, 10, 101, 10, 120, 10, 116, 10,
- 101, 10, 58, 10, 120, 10, 101, 10,
- 109, 10, 112, 10, 108, 10, 101, 10,
- 115, 10, 111, 10, 110, 10, 99, 10,
- 116, 10, 105, 10, 111, 10, 110, 10,
- 110, 10, 97, 10, 108, 10, 105, 10,
- 116, -61, 10, -87, 10, 10, 108, 10,
- 97, 10, 110, 10, 32, 10, 100, 10,
- 117, 10, 32, 10, 83, 115, 10, 99,
- -61, 10, -87, 10, 10, 110, 10, 97,
- 10, 114, 10, 105, 10, 111, 111, 114,
- 115, 113, 117, 39, 101, 97, 105, 108,
- 97, 110, 32, 100, 117, 32, 83, 115,
- 99, -61, -87, 110, 97, 114, 105, 111,
- 58, 10, 10, -61, 10, 32, 35, 37,
- 42, 64, 65, 69, 70, 76, 77, 81,
- 83, 9, 13, -119, 10, 10, 116, 10,
- 97, 10, 110, 10, 116, 10, 32, 10,
- 100, 10, 111, 10, 110, 10, 110, -61,
- 10, -87, 10, 10, 32, 101, 115, 10,
- 32, 115, 10, 32, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 108, 10, 111, 10, 114, 10, 115,
- 10, 116, 10, 32, 97, 10, 111, 10,
- 110, 10, 99, 10, 116, 10, 105, 10,
- 111, 10, 110, 10, 110, 10, 97, 10,
- 108, 10, 105, 10, 116, -61, 10, -87,
- 10, 10, 58, 10, 111, 10, 114, 10,
- 115, 10, 113, 10, 117, 10, 39, 101,
- 10, 97, 10, 105, 10, 117, 10, 97,
- 10, 110, 10, 100, 10, 99, 111, -61,
- 10, -87, 10, 10, 110, 10, 97, 10,
- 114, 10, 105, 10, 111, 10, 105, 10,
- 116, 117, 97, 110, 100, 99, 111, -61,
- -87, 110, 97, 114, 105, 111, 58, 10,
- 10, -61, 10, 32, 35, 37, 42, 64,
- 65, 67, 69, 70, 76, 77, 80, 81,
- 83, 9, 13, -119, 10, 10, 116, 10,
- 97, 10, 110, 10, 116, 10, 32, 10,
- 100, 10, 111, 10, 110, 10, 110, -61,
- 10, -87, 10, 10, 32, 101, 115, 10,
- 32, 115, 10, 32, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 108, 10, 111, 10, 114, 10, 115,
- 10, 111, 10, 110, 10, 116, 10, 101,
- 10, 120, 10, 116, 10, 101, 10, 58,
- 10, 116, 10, 32, 97, 10, 111, 10,
- 110, 10, 99, 10, 116, 10, 105, 10,
- 111, 10, 110, 10, 110, 10, 97, 10,
- 108, 10, 105, 10, 116, -61, 10, -87,
- 10, 10, 111, 10, 114, 10, 115, 10,
- 113, 10, 117, 10, 39, 101, 10, 97,
- 10, 105, 10, 108, 10, 97, 10, 110,
- 10, 32, 10, 100, 10, 117, 10, 32,
- 10, 83, 115, 10, 99, -61, 10, -87,
- 10, 10, 110, 10, 97, 10, 114, 10,
- 105, 10, 111, 10, 117, 10, 97, 10,
- 110, 10, 100, 10, 99, 111, 10, 105,
- 10, 116, 105, 116, 32, 124, 9, 13,
- 10, 32, 92, 124, 9, 13, 10, 92,
- 124, 10, 92, 10, 32, 92, 124, 9,
- 13, -61, 10, 32, 34, 35, 37, 42,
- 64, 65, 67, 69, 70, 76, 77, 80,
- 81, 83, 124, 9, 13, 10, 32, 115,
- 10, 32, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 108,
- 10, 111, 10, 114, 10, 115, 10, 116,
- 10, 32, 97, 10, 111, 10, 110, 10,
- 99, 10, 116, 10, 105, 10, 111, 10,
- 110, 10, 110, 10, 97, 10, 108, 10,
- 105, 10, 116, -61, 10, -87, 10, 10,
- 58, 10, 111, 10, 114, 10, 115, 10,
- 113, 10, 117, 10, 39, 101, 10, 97,
- 10, 105, 10, 108, 10, 97, 10, 110,
- 10, 32, 10, 100, 10, 117, 10, 32,
- 10, 83, 115, 10, 99, -61, 10, -87,
- 10, 10, 110, 10, 97, 10, 114, 10,
- 105, 10, 111, 10, 117, 10, 97, 10,
- 110, 10, 100, 10, 99, 111, 10, 105,
- 10, 116, 32, 115, -69, -65, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 19, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 3, 2,
- 2, 18, 1, 1, 2, 2, 3, 3,
- 3, 3, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 3, 5, 3,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 15, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 4, 18, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 5, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 10, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 14, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 16, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 1, 1, 2, 4, 3, 2, 4,
- 18, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 1, 1,
- 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 1, 1,
- 1, 1, 1, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 1, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 1, 0, 0, 1,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 21, 23, 25, 27, 29, 31,
- 33, 35, 37, 39, 41, 43, 45, 49,
- 52, 55, 75, 77, 79, 82, 85, 90,
- 95, 100, 105, 109, 113, 116, 118, 120,
- 122, 124, 126, 128, 130, 132, 134, 136,
- 138, 140, 142, 144, 146, 148, 153, 160,
- 165, 167, 169, 171, 173, 175, 177, 179,
- 181, 183, 185, 187, 189, 191, 193, 210,
- 213, 216, 219, 222, 225, 228, 231, 234,
- 237, 240, 243, 246, 251, 271, 274, 277,
- 279, 281, 283, 285, 287, 289, 291, 293,
- 295, 302, 305, 308, 311, 314, 317, 320,
- 323, 326, 329, 332, 335, 338, 341, 344,
- 347, 349, 351, 353, 355, 357, 359, 361,
- 363, 365, 367, 369, 371, 373, 375, 377,
- 379, 381, 393, 396, 399, 402, 405, 408,
- 411, 414, 417, 420, 423, 426, 429, 432,
- 435, 438, 441, 444, 447, 450, 453, 456,
- 459, 462, 465, 468, 471, 474, 477, 480,
- 483, 486, 489, 492, 495, 498, 501, 504,
- 507, 510, 513, 516, 519, 522, 525, 528,
- 531, 534, 537, 540, 543, 547, 550, 553,
- 556, 559, 562, 565, 568, 571, 573, 575,
- 577, 579, 581, 584, 586, 588, 590, 592,
- 594, 596, 598, 600, 602, 605, 607, 609,
- 611, 613, 615, 617, 619, 621, 623, 625,
- 627, 643, 646, 649, 652, 655, 658, 661,
- 664, 667, 670, 673, 676, 679, 684, 688,
- 691, 694, 697, 700, 703, 706, 709, 712,
- 715, 718, 721, 724, 727, 730, 733, 736,
- 739, 742, 745, 748, 752, 755, 758, 761,
- 764, 767, 770, 773, 776, 779, 782, 785,
- 788, 791, 794, 797, 800, 803, 806, 809,
- 812, 816, 819, 822, 825, 828, 831, 834,
- 838, 841, 844, 847, 850, 853, 856, 859,
- 862, 865, 867, 869, 871, 873, 876, 878,
- 880, 882, 884, 886, 888, 890, 892, 894,
- 896, 914, 917, 920, 923, 926, 929, 932,
- 935, 938, 941, 944, 947, 950, 955, 959,
- 962, 965, 968, 971, 974, 977, 980, 983,
- 986, 989, 992, 995, 998, 1001, 1004, 1007,
- 1010, 1013, 1016, 1019, 1022, 1025, 1028, 1031,
- 1034, 1037, 1040, 1043, 1047, 1050, 1053, 1056,
- 1059, 1062, 1065, 1068, 1071, 1074, 1077, 1080,
- 1083, 1086, 1089, 1092, 1095, 1098, 1101, 1104,
- 1108, 1111, 1114, 1117, 1120, 1123, 1126, 1129,
- 1132, 1135, 1139, 1142, 1145, 1148, 1151, 1154,
- 1157, 1160, 1163, 1166, 1169, 1172, 1175, 1179,
- 1182, 1185, 1187, 1189, 1193, 1199, 1203, 1206,
- 1212, 1232, 1236, 1239, 1242, 1245, 1248, 1251,
- 1254, 1257, 1260, 1263, 1266, 1269, 1272, 1275,
- 1278, 1281, 1284, 1287, 1290, 1293, 1296, 1300,
- 1303, 1306, 1309, 1312, 1315, 1318, 1321, 1324,
- 1327, 1330, 1333, 1336, 1339, 1342, 1345, 1348,
- 1351, 1354, 1357, 1360, 1364, 1367, 1370, 1373,
- 1376, 1379, 1382, 1385, 1388, 1391, 1395, 1398,
- 1401, 1404, 1407, 1410, 1413, 1416, 1419, 1422,
- 1425, 1428, 1431, 1435, 1438, 1441, 1444, 1446,
- 1448
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 462, 17, 17, 18, 28, 30, 44,
- 45, 48, 52, 77, 104, 181, 187, 189,
- 281, 285, 387, 17, 0, 3, 0, 4,
- 0, 5, 0, 6, 0, 7, 0, 8,
- 0, 9, 0, 10, 0, 11, 0, 12,
- 0, 13, 0, 14, 0, 15, 461, 44,
- 0, 17, 29, 16, 17, 29, 16, 2,
- 17, 17, 18, 28, 30, 44, 45, 48,
- 52, 77, 104, 181, 187, 189, 281, 285,
- 387, 17, 0, 19, 0, 20, 0, 22,
- 21, 21, 22, 21, 21, 23, 23, 24,
- 23, 23, 23, 23, 24, 23, 23, 23,
- 23, 25, 23, 23, 23, 23, 26, 23,
- 23, 17, 27, 27, 0, 17, 27, 27,
- 0, 17, 29, 28, 17, 0, 31, 0,
- 32, 0, 33, 0, 34, 0, 35, 0,
- 36, 0, 37, 0, 38, 0, 39, 0,
- 40, 0, 41, 0, 42, 0, 43, 0,
- 464, 0, 15, 0, 0, 0, 0, 0,
- 46, 47, 17, 47, 47, 45, 46, 46,
- 17, 47, 45, 47, 0, 49, 0, 50,
- 0, 51, 0, 44, 0, 53, 0, 54,
- 0, 55, 0, 56, 0, 57, 0, 58,
- 0, 59, 0, 60, 0, 62, 61, 62,
- 61, 63, 62, 62, 17, 395, 394, 17,
- 409, 413, 415, 430, 436, 438, 454, 458,
- 62, 61, 64, 62, 61, 62, 65, 61,
- 62, 66, 61, 62, 67, 61, 62, 68,
- 61, 62, 69, 61, 62, 70, 61, 62,
- 71, 61, 62, 72, 61, 62, 73, 61,
- 74, 62, 61, 75, 62, 61, 62, 76,
- 393, 394, 61, 2, 17, 17, 18, 28,
- 30, 44, 45, 48, 52, 77, 104, 181,
- 187, 189, 281, 285, 387, 17, 0, 78,
- 79, 0, 15, 5, 0, 80, 0, 81,
- 0, 82, 0, 83, 0, 84, 0, 85,
- 0, 86, 0, 88, 87, 88, 87, 88,
- 88, 17, 89, 17, 88, 87, 88, 90,
- 87, 88, 91, 87, 88, 92, 87, 88,
- 93, 87, 88, 94, 87, 88, 95, 87,
- 88, 96, 87, 88, 97, 87, 88, 98,
- 87, 88, 99, 87, 88, 100, 87, 88,
- 101, 87, 102, 88, 87, 103, 88, 87,
- 88, 76, 87, 105, 0, 106, 0, 107,
- 0, 108, 0, 109, 0, 110, 0, 111,
- 0, 112, 0, 113, 0, 114, 0, 115,
- 0, 116, 0, 117, 0, 118, 0, 119,
- 0, 121, 120, 121, 120, 121, 121, 17,
- 122, 17, 136, 144, 151, 165, 173, 121,
- 120, 121, 123, 120, 121, 124, 120, 121,
- 125, 120, 121, 126, 120, 121, 127, 120,
- 121, 128, 120, 121, 129, 120, 121, 130,
- 120, 121, 131, 120, 121, 132, 120, 121,
- 133, 120, 121, 134, 120, 121, 135, 120,
- 121, 17, 120, 121, 137, 120, 121, 138,
- 120, 121, 139, 120, 121, 140, 120, 121,
- 141, 120, 121, 142, 120, 121, 143, 120,
- 121, 76, 120, 121, 145, 120, 121, 146,
- 120, 121, 147, 120, 121, 148, 120, 121,
- 149, 120, 121, 150, 120, 121, 143, 120,
- 121, 152, 120, 121, 153, 120, 121, 154,
- 120, 121, 155, 120, 121, 156, 120, 121,
- 157, 120, 121, 158, 120, 121, 159, 120,
- 121, 160, 120, 121, 161, 120, 121, 162,
- 120, 121, 163, 120, 164, 121, 120, 143,
- 121, 120, 121, 166, 120, 121, 167, 120,
- 121, 168, 120, 121, 169, 120, 121, 170,
- 120, 121, 171, 120, 121, 172, 120, 121,
- 173, 173, 120, 121, 174, 120, 175, 121,
- 120, 176, 121, 120, 121, 177, 120, 121,
- 178, 120, 121, 179, 120, 121, 180, 120,
- 121, 143, 120, 182, 0, 183, 0, 184,
- 0, 185, 0, 186, 0, 15, 44, 0,
- 188, 0, 51, 0, 190, 0, 191, 0,
- 192, 0, 193, 0, 194, 0, 195, 0,
- 196, 0, 197, 197, 0, 198, 0, 199,
- 0, 200, 0, 201, 0, 202, 0, 203,
- 0, 204, 0, 205, 0, 206, 0, 208,
- 207, 208, 207, 209, 208, 208, 17, 224,
- 223, 17, 238, 242, 244, 259, 265, 267,
- 271, 208, 207, 210, 208, 207, 208, 211,
- 207, 208, 212, 207, 208, 213, 207, 208,
- 214, 207, 208, 215, 207, 208, 216, 207,
- 208, 217, 207, 208, 218, 207, 208, 219,
- 207, 220, 208, 207, 221, 208, 207, 208,
- 76, 222, 223, 207, 208, 76, 223, 207,
- 208, 76, 207, 208, 225, 207, 208, 226,
- 207, 208, 227, 207, 208, 228, 207, 208,
- 229, 207, 208, 230, 207, 208, 231, 207,
- 208, 232, 207, 208, 233, 207, 208, 234,
- 207, 208, 235, 207, 208, 236, 207, 208,
- 237, 207, 208, 17, 207, 208, 239, 207,
- 208, 240, 207, 208, 241, 207, 208, 223,
- 207, 208, 243, 207, 208, 76, 212, 207,
- 208, 245, 207, 208, 246, 207, 208, 247,
- 207, 208, 248, 207, 208, 249, 207, 208,
- 250, 207, 208, 251, 207, 208, 252, 207,
- 208, 253, 207, 208, 254, 207, 208, 255,
- 207, 208, 256, 207, 257, 208, 207, 258,
- 208, 207, 208, 76, 207, 208, 260, 207,
- 208, 261, 207, 208, 262, 207, 208, 263,
- 207, 208, 264, 207, 208, 76, 223, 207,
- 208, 266, 207, 208, 241, 207, 208, 268,
- 207, 208, 269, 207, 208, 270, 207, 208,
- 223, 207, 208, 272, 279, 207, 273, 208,
- 207, 274, 208, 207, 208, 275, 207, 208,
- 276, 207, 208, 277, 207, 208, 278, 207,
- 208, 258, 207, 208, 280, 207, 208, 223,
- 207, 282, 0, 283, 0, 284, 0, 44,
- 0, 286, 385, 0, 287, 0, 288, 0,
- 289, 0, 290, 0, 291, 0, 292, 0,
- 293, 0, 294, 0, 296, 295, 296, 295,
- 297, 296, 296, 17, 312, 311, 17, 326,
- 330, 338, 340, 354, 360, 362, 378, 382,
- 296, 295, 298, 296, 295, 296, 299, 295,
- 296, 300, 295, 296, 301, 295, 296, 302,
- 295, 296, 303, 295, 296, 304, 295, 296,
- 305, 295, 296, 306, 295, 296, 307, 295,
- 308, 296, 295, 309, 296, 295, 296, 76,
- 310, 311, 295, 296, 76, 311, 295, 296,
- 76, 295, 296, 313, 295, 296, 314, 295,
- 296, 315, 295, 296, 316, 295, 296, 317,
- 295, 296, 318, 295, 296, 319, 295, 296,
- 320, 295, 296, 321, 295, 296, 322, 295,
- 296, 323, 295, 296, 324, 295, 296, 325,
- 295, 296, 17, 295, 296, 327, 295, 296,
- 328, 295, 296, 329, 295, 296, 311, 295,
- 296, 331, 295, 296, 332, 295, 296, 333,
- 295, 296, 334, 295, 296, 335, 295, 296,
- 336, 295, 296, 337, 295, 296, 76, 295,
- 296, 339, 295, 296, 76, 300, 295, 296,
- 341, 295, 296, 342, 295, 296, 343, 295,
- 296, 344, 295, 296, 345, 295, 296, 346,
- 295, 296, 347, 295, 296, 348, 295, 296,
- 349, 295, 296, 350, 295, 296, 351, 295,
- 296, 352, 295, 353, 296, 295, 337, 296,
- 295, 296, 355, 295, 296, 356, 295, 296,
- 357, 295, 296, 358, 295, 296, 359, 295,
- 296, 76, 311, 295, 296, 361, 295, 296,
- 329, 295, 296, 363, 295, 296, 364, 295,
- 296, 365, 295, 296, 366, 295, 296, 367,
- 295, 296, 368, 295, 296, 369, 295, 296,
- 370, 370, 295, 296, 371, 295, 372, 296,
- 295, 373, 296, 295, 296, 374, 295, 296,
- 375, 295, 296, 376, 295, 296, 377, 295,
- 296, 337, 295, 296, 379, 295, 296, 380,
- 295, 296, 381, 295, 296, 311, 295, 296,
- 371, 383, 295, 296, 384, 295, 296, 311,
- 295, 386, 0, 44, 0, 387, 388, 387,
- 0, 392, 391, 390, 388, 391, 389, 0,
- 390, 388, 389, 0, 390, 389, 392, 391,
- 390, 388, 391, 389, 2, 392, 392, 18,
- 28, 30, 44, 45, 48, 52, 77, 104,
- 181, 187, 189, 281, 285, 387, 392, 0,
- 62, 76, 394, 61, 62, 76, 61, 62,
- 396, 61, 62, 397, 61, 62, 398, 61,
- 62, 399, 61, 62, 400, 61, 62, 401,
- 61, 62, 402, 61, 62, 403, 61, 62,
- 404, 61, 62, 405, 61, 62, 406, 61,
- 62, 407, 61, 62, 408, 61, 62, 17,
- 61, 62, 410, 61, 62, 411, 61, 62,
- 412, 61, 62, 394, 61, 62, 414, 61,
- 62, 76, 66, 61, 62, 416, 61, 62,
- 417, 61, 62, 418, 61, 62, 419, 61,
- 62, 420, 61, 62, 421, 61, 62, 422,
- 61, 62, 423, 61, 62, 424, 61, 62,
- 425, 61, 62, 426, 61, 62, 427, 61,
- 428, 62, 61, 429, 62, 61, 62, 76,
- 61, 62, 431, 61, 62, 432, 61, 62,
- 433, 61, 62, 434, 61, 62, 435, 61,
- 62, 76, 394, 61, 62, 437, 61, 62,
- 412, 61, 62, 439, 61, 62, 440, 61,
- 62, 441, 61, 62, 442, 61, 62, 443,
- 61, 62, 444, 61, 62, 445, 61, 62,
- 446, 446, 61, 62, 447, 61, 448, 62,
- 61, 449, 62, 61, 62, 450, 61, 62,
- 451, 61, 62, 452, 61, 62, 453, 61,
- 62, 429, 61, 62, 455, 61, 62, 456,
- 61, 62, 457, 61, 62, 394, 61, 62,
- 447, 459, 61, 62, 460, 61, 62, 394,
- 61, 15, 44, 0, 463, 0, 17, 0,
- 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 29, 0, 54, 0, 5, 1, 0, 29,
- 1, 29, 29, 29, 29, 29, 29, 29,
- 29, 29, 35, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 0,
- 43, 149, 126, 57, 110, 23, 0, 29,
- 54, 0, 5, 1, 0, 29, 1, 29,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 139,
- 48, 9, 106, 11, 0, 134, 45, 45,
- 45, 3, 122, 33, 33, 33, 0, 122,
- 33, 33, 33, 0, 122, 33, 0, 33,
- 0, 102, 7, 7, 43, 54, 0, 0,
- 43, 114, 25, 0, 54, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 43, 43, 43, 43,
- 0, 27, 118, 27, 27, 51, 27, 0,
- 54, 0, 1, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 84, 54, 0, 72, 33, 84, 72,
- 84, 84, 84, 84, 84, 84, 84, 84,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 15,
- 0, 0, 0, 63, 130, 31, 60, 57,
- 31, 63, 57, 63, 63, 63, 63, 63,
- 63, 63, 63, 63, 66, 31, 43, 0,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 81, 84, 81, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 21, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 69,
- 33, 69, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 54, 0, 78, 33,
- 84, 78, 84, 84, 84, 84, 84, 84,
- 84, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 19, 0, 0, 0, 54, 19, 0, 0,
- 54, 19, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 19, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 19, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 84, 54, 0, 75, 33, 84, 75, 84,
- 84, 84, 84, 84, 84, 84, 84, 84,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 17,
- 0, 0, 0, 54, 17, 0, 0, 54,
- 17, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 17, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 0, 0, 54, 17, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 0, 0,
- 43, 54, 37, 37, 87, 37, 37, 43,
- 0, 39, 0, 43, 0, 0, 54, 0,
- 0, 39, 0, 0, 96, 54, 0, 93,
- 90, 41, 96, 90, 96, 96, 96, 96,
- 96, 96, 96, 96, 96, 99, 0, 43,
- 54, 15, 0, 0, 54, 15, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 15,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 0, 43, 0, 43, 0, 43,
- 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 464;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/fr.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 1097 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/fr.c.rl"
-
-#line 1104 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/fr.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/fr.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/fr.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/fr.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/fr.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/fr.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/fr.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/fr.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/fr.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/fr.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/fr.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/fr.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/fr.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/fr.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/fr.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/fr.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/fr.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/fr.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/fr.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/fr.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/fr.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/fr.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/fr.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/fr.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1394 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/fr.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1457 "ext/gherkin_lexer_fr/gherkin_lexer_fr.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/fr.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_fr()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Fr", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_he/extconf.rb
index cf6d3a2,cf6d3a2..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_he/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_he")
--have_library("c", "main")
--create_makefile("gherkin_lexer_he")
diff --cc ext/gherkin_lexer_he/gherkin_lexer_he.c
index a5865bf,49ff636..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_he/gherkin_lexer_he.c
+++ /dev/null
@@@ -1,1374 -1,1374 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 12, 19, 20, 22, 23, 24,
- 25, 27, 29, 40, 41, 42, 44, 46,
- 51, 56, 61, 66, 70, 74, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, 85,
- 86, 87, 88, 89, 90, 91, 96, 103,
- 108, 112, 118, 121, 123, 129, 140, 142,
- 143, 144, 145, 146, 147, 148, 149, 150,
- 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166,
- 167, 168, 175, 177, 179, 181, 183, 185,
- 187, 189, 191, 193, 195, 206, 207, 208,
- 209, 210, 211, 212, 213, 214, 215, 216,
- 217, 218, 219, 220, 221, 222, 223, 232,
- 238, 240, 243, 245, 247, 249, 252, 254,
- 256, 258, 260, 262, 264, 266, 268, 270,
- 272, 274, 276, 278, 280, 282, 284, 286,
- 288, 290, 292, 294, 296, 300, 302, 304,
- 306, 308, 310, 312, 314, 316, 318, 320,
- 322, 324, 326, 328, 330, 332, 334, 336,
- 338, 340, 342, 344, 346, 348, 350, 352,
- 354, 356, 358, 360, 362, 364, 366, 368,
- 370, 372, 374, 376, 377, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 394, 395, 396, 397, 398,
- 399, 400, 409, 415, 417, 420, 422, 424,
- 426, 429, 431, 433, 435, 437, 439, 441,
- 443, 445, 447, 449, 451, 453, 455, 457,
- 459, 461, 463, 465, 467, 469, 471, 473,
- 476, 478, 480, 482, 484, 486, 488, 490,
- 492, 494, 496, 498, 500, 502, 504, 506,
- 508, 510, 512, 514, 516, 518, 520, 522,
- 524, 526, 528, 530, 531, 532, 533, 534,
- 535, 536, 537, 538, 539, 547, 551, 553,
- 555, 557, 559, 561, 563, 565, 567, 569,
- 571, 573, 575, 577, 579, 581, 583, 585,
- 587, 591, 593, 595, 597, 599, 601, 603,
- 605, 607, 609, 611, 613, 615, 617, 619,
- 621, 623, 625, 627, 629, 631, 633, 635,
- 637, 639, 641, 643, 645, 647, 649, 651,
- 653, 655, 657, 659, 661, 663, 665, 666,
- 667, 668, 669, 670, 671, 672, 673, 674,
- 683, 690, 692, 695, 697, 699, 701, 704,
- 706, 708, 710, 712, 714, 716, 718, 720,
- 722, 724, 726, 728, 730, 732, 734, 736,
- 738, 740, 742, 744, 746, 748, 750, 752,
- 754, 756, 758, 762, 764, 766, 768, 770,
- 772, 774, 776, 778, 780, 782, 784, 786,
- 788, 790, 792, 794, 796, 798, 800, 802,
- 804, 806, 808, 810, 812, 814, 816, 818,
- 820, 822, 824, 826, 828, 830, 832, 834,
- 836, 837, 838
- };
-
- static const char _lexer_trans_keys[] = {
- -41, -17, 10, 32, 34, 35, 37, 42,
- 64, 124, 9, 13, -112, -111, -109, -107,
- -101, -88, -86, -41, -111, -106, -41, -100,
- 32, 10, 13, 10, 13, -41, 10, 32,
- 34, 35, 37, 42, 64, 124, 9, 13,
- 34, 34, 10, 13, 10, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 34,
- 9, 13, 10, 32, 9, 13, 10, 32,
- 9, 13, 10, 13, 10, 95, 70, 69,
- 65, 84, 85, 82, 69, 95, 69, 78,
- 68, 95, 37, 13, 32, 64, 9, 10,
- 9, 10, 13, 32, 64, 11, 12, 10,
- 32, 64, 9, 13, 32, 124, 9, 13,
- 10, 32, 92, 124, 9, 13, 10, 92,
- 124, 10, 92, 10, 32, 92, 124, 9,
- 13, -41, 10, 32, 34, 35, 37, 42,
- 64, 124, 9, 13, -41, 32, -103, -41,
- -108, -41, -103, -41, -96, -41, -86, -41,
- -97, -41, -107, -41, -110, -41, -98, -41,
- -112, -41, -107, -41, -86, 58, 10, 10,
- -41, 10, 32, 35, 124, 9, 13, -86,
- 10, -41, 10, -101, 10, -41, 10, -107,
- 10, -41, 10, -96, 10, -41, 10, -108,
- 10, 10, 58, -41, 10, 32, 34, 35,
- 37, 42, 64, 124, 9, 13, -41, -110,
- -41, -99, -41, -112, -41, -87, -41, -88,
- -41, -89, -41, -94, 58, 10, 10, -41,
- 10, 32, 35, 37, 42, 64, 9, 13,
- -112, -111, -107, -101, -86, 10, -41, 10,
- -111, -106, 10, -41, 10, -100, 10, 10,
- 32, -41, 10, 32, -103, 10, -41, 10,
- -108, 10, -41, 10, -103, 10, -41, 10,
- -96, 10, -41, 10, -86, 10, -41, 10,
- -97, 10, -41, 10, -110, 10, -41, 10,
- -99, 10, -41, 10, -112, 10, -41, 10,
- -87, 10, -41, 10, -88, 10, -41, 10,
- -111, -101, -88, 10, -41, 10, -96, 10,
- -41, 10, -103, 10, -41, 10, -86, 10,
- 10, 32, -41, 10, -86, 10, -41, 10,
- -88, 10, -41, 10, -105, 10, -41, 10,
- -103, 10, -41, 10, -87, 10, 10, 58,
- -41, 10, -107, 10, -41, 10, -96, 10,
- -41, 10, -108, 10, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- -41, -111, -101, -88, -41, -96, -41, -103,
- -41, -86, 32, -41, -86, -41, -88, -41,
- -105, -41, -103, -41, -87, 58, 10, 10,
- -41, 10, 32, 35, 37, 42, 64, 9,
- 13, -112, -111, -107, -101, -86, 10, -41,
- 10, -111, -106, 10, -41, 10, -100, 10,
- 10, 32, -41, 10, 32, -103, 10, -41,
- 10, -108, 10, -41, 10, -103, 10, -41,
- 10, -96, 10, -41, 10, -86, 10, -41,
- 10, -97, 10, -41, 10, -110, 10, -41,
- 10, -99, 10, -41, 10, -112, 10, -41,
- 10, -87, 10, -41, 10, -88, 10, -41,
- 10, -101, -88, 10, -41, 10, -107, 10,
- -41, 10, -96, 10, -41, 10, -108, 10,
- 10, 58, -41, 10, -105, 10, -41, 10,
- -103, 10, -41, 10, -87, 10, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, -41, -107, -41, -96, -41, -108,
- 58, 10, 10, -41, 10, 32, 35, 37,
- 64, 9, 13, -109, -88, -86, 10, -41,
- 10, -107, 10, -41, 10, -110, 10, -41,
- 10, -98, 10, -41, 10, -112, 10, -41,
- 10, -107, 10, -41, 10, -86, 10, 10,
- 58, -41, 10, -89, 10, -41, 10, -94,
- 10, -41, 10, -111, -101, -88, 10, -41,
- 10, -96, 10, -41, 10, -103, 10, -41,
- 10, -86, 10, 10, 32, -41, 10, -86,
- 10, -41, 10, -88, 10, -41, 10, -105,
- 10, -41, 10, -103, 10, -41, 10, -87,
- 10, -41, 10, -107, 10, -41, 10, -96,
- 10, -41, 10, -108, 10, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, -41, -105, -41, -103, -41, -87, 58,
- 10, 10, -41, 10, 32, 35, 37, 42,
- 64, 9, 13, -112, -111, -107, -101, -88,
- -86, 10, -41, 10, -111, -106, 10, -41,
- 10, -100, 10, 10, 32, -41, 10, 32,
- -103, 10, -41, 10, -108, 10, -41, 10,
- -103, 10, -41, 10, -96, 10, -41, 10,
- -86, 10, -41, 10, -97, 10, -41, 10,
- -110, 10, -41, 10, -99, 10, -41, 10,
- -112, 10, -41, 10, -87, 10, -41, 10,
- -88, 10, -41, 10, -89, 10, -41, 10,
- -94, 10, 10, 58, -41, 10, -111, -101,
- -88, 10, -41, 10, -96, 10, -41, 10,
- -103, 10, -41, 10, -86, 10, 10, 32,
- -41, 10, -86, 10, -41, 10, -88, 10,
- -41, 10, -105, 10, -41, 10, -103, 10,
- -41, 10, -87, 10, -41, 10, -107, 10,
- -41, 10, -96, 10, -41, 10, -108, 10,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, -69, -65, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 10, 7, 1, 2, 1, 1, 1,
- 2, 2, 9, 1, 1, 2, 2, 3,
- 3, 3, 3, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 3, 5, 3,
- 2, 4, 3, 2, 4, 9, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 5, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 9, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 7, 6,
- 2, 3, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 4, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 7, 6, 2, 3, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 6, 4, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 4, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 7,
- 7, 2, 3, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 4, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 1,
- 1, 1, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 1, 1,
- 1, 1, 0, 0, 1, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 12, 20, 22, 25, 27, 29,
- 31, 34, 37, 48, 50, 52, 55, 58,
- 63, 68, 73, 78, 82, 86, 89, 91,
- 93, 95, 97, 99, 101, 103, 105, 107,
- 109, 111, 113, 115, 117, 119, 124, 131,
- 136, 140, 146, 150, 153, 159, 170, 173,
- 175, 177, 179, 181, 183, 185, 187, 189,
- 191, 193, 195, 197, 199, 201, 203, 205,
- 207, 209, 211, 213, 215, 217, 219, 221,
- 223, 225, 232, 235, 238, 241, 244, 247,
- 250, 253, 256, 259, 262, 273, 275, 277,
- 279, 281, 283, 285, 287, 289, 291, 293,
- 295, 297, 299, 301, 303, 305, 307, 316,
- 323, 326, 330, 333, 336, 339, 343, 346,
- 349, 352, 355, 358, 361, 364, 367, 370,
- 373, 376, 379, 382, 385, 388, 391, 394,
- 397, 400, 403, 406, 409, 414, 417, 420,
- 423, 426, 429, 432, 435, 438, 441, 444,
- 447, 450, 453, 456, 459, 462, 465, 468,
- 471, 474, 477, 480, 483, 486, 489, 492,
- 495, 498, 501, 504, 507, 510, 513, 516,
- 519, 522, 525, 528, 530, 534, 536, 538,
- 540, 542, 544, 546, 548, 550, 552, 554,
- 556, 558, 560, 562, 564, 566, 568, 570,
- 572, 574, 583, 590, 593, 597, 600, 603,
- 606, 610, 613, 616, 619, 622, 625, 628,
- 631, 634, 637, 640, 643, 646, 649, 652,
- 655, 658, 661, 664, 667, 670, 673, 676,
- 680, 683, 686, 689, 692, 695, 698, 701,
- 704, 707, 710, 713, 716, 719, 722, 725,
- 728, 731, 734, 737, 740, 743, 746, 749,
- 752, 755, 758, 761, 763, 765, 767, 769,
- 771, 773, 775, 777, 779, 787, 792, 795,
- 798, 801, 804, 807, 810, 813, 816, 819,
- 822, 825, 828, 831, 834, 837, 840, 843,
- 846, 851, 854, 857, 860, 863, 866, 869,
- 872, 875, 878, 881, 884, 887, 890, 893,
- 896, 899, 902, 905, 908, 911, 914, 917,
- 920, 923, 926, 929, 932, 935, 938, 941,
- 944, 947, 950, 953, 956, 959, 962, 964,
- 966, 968, 970, 972, 974, 976, 978, 980,
- 989, 997, 1000, 1004, 1007, 1010, 1013, 1017,
- 1020, 1023, 1026, 1029, 1032, 1035, 1038, 1041,
- 1044, 1047, 1050, 1053, 1056, 1059, 1062, 1065,
- 1068, 1071, 1074, 1077, 1080, 1083, 1086, 1089,
- 1092, 1095, 1098, 1103, 1106, 1109, 1112, 1115,
- 1118, 1121, 1124, 1127, 1130, 1133, 1136, 1139,
- 1142, 1145, 1148, 1151, 1154, 1157, 1160, 1163,
- 1166, 1169, 1172, 1175, 1178, 1181, 1184, 1187,
- 1190, 1193, 1196, 1199, 1202, 1205, 1208, 1211,
- 1214, 1216, 1218
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 400, 10, 10, 11, 21, 23, 7,
- 37, 40, 10, 0, 3, 48, 58, 85,
- 89, 95, 171, 0, 4, 0, 5, 46,
- 0, 6, 0, 7, 0, 8, 0, 10,
- 22, 9, 10, 22, 9, 2, 10, 10,
- 11, 21, 23, 7, 37, 40, 10, 0,
- 12, 0, 13, 0, 15, 14, 14, 15,
- 14, 14, 16, 16, 17, 16, 16, 16,
- 16, 17, 16, 16, 16, 16, 18, 16,
- 16, 16, 16, 19, 16, 16, 10, 20,
- 20, 0, 10, 20, 20, 0, 10, 22,
- 21, 10, 0, 24, 0, 25, 0, 26,
- 0, 27, 0, 28, 0, 29, 0, 30,
- 0, 31, 0, 32, 0, 33, 0, 34,
- 0, 35, 0, 36, 0, 402, 0, 0,
- 0, 0, 0, 38, 39, 10, 39, 39,
- 37, 38, 38, 10, 39, 37, 39, 0,
- 40, 41, 40, 0, 45, 44, 43, 41,
- 44, 42, 0, 43, 41, 42, 0, 43,
- 42, 45, 44, 43, 41, 44, 42, 2,
- 45, 45, 11, 21, 23, 7, 37, 40,
- 45, 0, 47, 8, 0, 7, 0, 49,
- 0, 50, 0, 51, 0, 52, 0, 53,
- 0, 54, 0, 55, 0, 56, 0, 57,
- 0, 7, 0, 59, 0, 60, 0, 61,
- 0, 62, 0, 63, 0, 64, 0, 65,
- 0, 66, 0, 67, 0, 68, 0, 69,
- 0, 70, 0, 71, 0, 73, 72, 73,
- 72, 74, 73, 73, 10, 10, 73, 72,
- 75, 73, 72, 76, 73, 72, 77, 73,
- 72, 78, 73, 72, 79, 73, 72, 80,
- 73, 72, 81, 73, 72, 82, 73, 72,
- 83, 73, 72, 73, 84, 72, 2, 10,
- 10, 11, 21, 23, 7, 37, 40, 10,
- 0, 86, 0, 87, 0, 88, 0, 7,
- 0, 90, 0, 91, 0, 92, 0, 93,
- 0, 94, 0, 7, 0, 96, 0, 97,
- 0, 98, 0, 99, 0, 100, 0, 102,
- 101, 102, 101, 103, 102, 102, 10, 157,
- 108, 10, 102, 101, 104, 111, 121, 125,
- 131, 102, 101, 105, 102, 101, 106, 109,
- 102, 101, 107, 102, 101, 108, 102, 101,
- 102, 84, 101, 110, 102, 84, 101, 108,
- 102, 101, 112, 102, 101, 113, 102, 101,
- 114, 102, 101, 115, 102, 101, 116, 102,
- 101, 117, 102, 101, 118, 102, 101, 119,
- 102, 101, 120, 102, 101, 108, 102, 101,
- 122, 102, 101, 123, 102, 101, 124, 102,
- 101, 108, 102, 101, 126, 102, 101, 127,
- 102, 101, 128, 102, 101, 129, 102, 101,
- 130, 102, 101, 108, 102, 101, 132, 102,
- 101, 133, 151, 144, 102, 101, 134, 102,
- 101, 135, 102, 101, 136, 102, 101, 137,
- 102, 101, 138, 102, 101, 139, 102, 101,
- 102, 140, 101, 141, 102, 101, 142, 102,
- 101, 143, 102, 101, 144, 102, 101, 145,
- 102, 101, 146, 102, 101, 147, 102, 101,
- 148, 102, 101, 149, 102, 101, 150, 102,
- 101, 102, 84, 101, 152, 102, 101, 153,
- 102, 101, 154, 102, 101, 155, 102, 101,
- 156, 102, 101, 150, 102, 101, 102, 158,
- 101, 102, 159, 101, 102, 160, 101, 102,
- 161, 101, 102, 162, 101, 102, 163, 101,
- 102, 164, 101, 102, 165, 101, 102, 166,
- 101, 102, 167, 101, 102, 168, 101, 102,
- 169, 101, 102, 170, 101, 102, 10, 101,
- 172, 0, 173, 251, 318, 0, 174, 0,
- 175, 0, 176, 0, 177, 0, 178, 0,
- 179, 0, 180, 0, 181, 0, 182, 0,
- 183, 0, 184, 0, 185, 0, 186, 0,
- 187, 0, 188, 0, 189, 0, 190, 0,
- 191, 0, 193, 192, 193, 192, 194, 193,
- 193, 10, 237, 199, 10, 193, 192, 195,
- 202, 212, 216, 222, 193, 192, 196, 193,
- 192, 197, 200, 193, 192, 198, 193, 192,
- 199, 193, 192, 193, 84, 192, 201, 193,
- 84, 192, 199, 193, 192, 203, 193, 192,
- 204, 193, 192, 205, 193, 192, 206, 193,
- 192, 207, 193, 192, 208, 193, 192, 209,
- 193, 192, 210, 193, 192, 211, 193, 192,
- 199, 193, 192, 213, 193, 192, 214, 193,
- 192, 215, 193, 192, 199, 193, 192, 217,
- 193, 192, 218, 193, 192, 219, 193, 192,
- 220, 193, 192, 221, 193, 192, 199, 193,
- 192, 223, 193, 192, 224, 231, 193, 192,
- 225, 193, 192, 226, 193, 192, 227, 193,
- 192, 228, 193, 192, 229, 193, 192, 230,
- 193, 192, 193, 84, 192, 232, 193, 192,
- 233, 193, 192, 234, 193, 192, 235, 193,
- 192, 236, 193, 192, 230, 193, 192, 193,
- 238, 192, 193, 239, 192, 193, 240, 192,
- 193, 241, 192, 193, 242, 192, 193, 243,
- 192, 193, 244, 192, 193, 245, 192, 193,
- 246, 192, 193, 247, 192, 193, 248, 192,
- 193, 249, 192, 193, 250, 192, 193, 10,
- 192, 252, 0, 253, 0, 254, 0, 255,
- 0, 256, 0, 257, 0, 258, 0, 260,
- 259, 260, 259, 261, 260, 260, 10, 304,
- 10, 260, 259, 262, 275, 279, 260, 259,
- 263, 260, 259, 264, 260, 259, 265, 260,
- 259, 266, 260, 259, 267, 260, 259, 268,
- 260, 259, 269, 260, 259, 270, 260, 259,
- 271, 260, 259, 272, 260, 259, 273, 260,
- 259, 274, 260, 259, 260, 84, 259, 276,
- 260, 259, 277, 260, 259, 278, 260, 259,
- 274, 260, 259, 280, 260, 259, 281, 298,
- 292, 260, 259, 282, 260, 259, 283, 260,
- 259, 284, 260, 259, 285, 260, 259, 286,
- 260, 259, 287, 260, 259, 260, 288, 259,
- 289, 260, 259, 290, 260, 259, 291, 260,
- 259, 292, 260, 259, 293, 260, 259, 294,
- 260, 259, 295, 260, 259, 296, 260, 259,
- 297, 260, 259, 274, 260, 259, 299, 260,
- 259, 300, 260, 259, 301, 260, 259, 302,
- 260, 259, 303, 260, 259, 274, 260, 259,
- 260, 305, 259, 260, 306, 259, 260, 307,
- 259, 260, 308, 259, 260, 309, 259, 260,
- 310, 259, 260, 311, 259, 260, 312, 259,
- 260, 313, 259, 260, 314, 259, 260, 315,
- 259, 260, 316, 259, 260, 317, 259, 260,
- 10, 259, 319, 0, 320, 0, 321, 0,
- 322, 0, 323, 0, 324, 0, 325, 0,
- 327, 326, 327, 326, 328, 327, 327, 10,
- 386, 333, 10, 327, 326, 329, 336, 346,
- 350, 356, 361, 327, 326, 330, 327, 326,
- 331, 334, 327, 326, 332, 327, 326, 333,
- 327, 326, 327, 84, 326, 335, 327, 84,
- 326, 333, 327, 326, 337, 327, 326, 338,
- 327, 326, 339, 327, 326, 340, 327, 326,
- 341, 327, 326, 342, 327, 326, 343, 327,
- 326, 344, 327, 326, 345, 327, 326, 333,
- 327, 326, 347, 327, 326, 348, 327, 326,
- 349, 327, 326, 333, 327, 326, 351, 327,
- 326, 352, 327, 326, 353, 327, 326, 354,
- 327, 326, 355, 327, 326, 333, 327, 326,
- 357, 327, 326, 358, 327, 326, 359, 327,
- 326, 360, 327, 326, 327, 84, 326, 362,
- 327, 326, 363, 380, 374, 327, 326, 364,
- 327, 326, 365, 327, 326, 366, 327, 326,
- 367, 327, 326, 368, 327, 326, 369, 327,
- 326, 327, 370, 326, 371, 327, 326, 372,
- 327, 326, 373, 327, 326, 374, 327, 326,
- 375, 327, 326, 376, 327, 326, 377, 327,
- 326, 378, 327, 326, 379, 327, 326, 360,
- 327, 326, 381, 327, 326, 382, 327, 326,
- 383, 327, 326, 384, 327, 326, 385, 327,
- 326, 360, 327, 326, 327, 387, 326, 327,
- 388, 326, 327, 389, 326, 327, 390, 326,
- 327, 391, 326, 327, 392, 326, 327, 393,
- 326, 327, 394, 326, 327, 395, 326, 327,
- 396, 326, 327, 397, 326, 327, 398, 326,
- 327, 399, 326, 327, 10, 326, 401, 0,
- 10, 0, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 29, 0, 54, 0, 5, 1, 0, 29,
- 1, 35, 0, 43, 0, 0, 0, 0,
- 0, 0, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 149,
- 126, 57, 110, 23, 0, 29, 54, 0,
- 5, 1, 0, 29, 1, 35, 0, 43,
- 0, 43, 0, 43, 139, 48, 9, 106,
- 11, 0, 134, 45, 45, 45, 3, 122,
- 33, 33, 33, 0, 122, 33, 33, 33,
- 0, 122, 33, 0, 33, 0, 102, 7,
- 7, 43, 54, 0, 0, 43, 114, 25,
- 0, 54, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 43,
- 43, 43, 43, 0, 27, 118, 27, 27,
- 51, 27, 0, 54, 0, 1, 0, 43,
- 0, 0, 0, 43, 54, 37, 37, 87,
- 37, 37, 43, 0, 39, 0, 43, 0,
- 0, 54, 0, 0, 39, 0, 0, 96,
- 54, 0, 93, 90, 41, 96, 90, 99,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 84, 54, 0, 81, 81, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 21, 0, 63, 130,
- 31, 60, 57, 31, 63, 57, 66, 31,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 54, 0, 72, 33,
- 84, 72, 0, 0, 0, 0, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 15, 0, 0, 54, 15, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 15, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 15, 0,
- 0, 43, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 84, 54,
- 0, 78, 33, 84, 78, 0, 0, 0,
- 0, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 19, 0, 0, 54,
- 19, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 19, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 19,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 54, 0, 69, 33,
- 69, 0, 0, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 13, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 84, 54, 0, 75,
- 33, 84, 75, 0, 0, 0, 0, 0,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 17, 0, 0, 54, 17,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 17, 0, 0,
- 54, 0, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 17, 0, 0, 43,
- 0, 43, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 402;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 978 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
-
- #line 985 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1275 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1338 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/he.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_he()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "He", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/he.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/he.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 12, 19, 20, 22, 23, 24,
- 25, 27, 29, 40, 41, 42, 44, 46,
- 51, 56, 61, 66, 70, 74, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, 85,
- 86, 87, 88, 89, 90, 91, 96, 103,
- 108, 112, 118, 121, 123, 129, 140, 142,
- 143, 144, 145, 146, 147, 148, 149, 150,
- 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166,
- 167, 168, 175, 177, 179, 181, 183, 185,
- 187, 189, 191, 193, 195, 206, 207, 208,
- 209, 210, 211, 212, 213, 214, 215, 216,
- 217, 218, 219, 220, 221, 222, 223, 232,
- 238, 240, 243, 245, 247, 249, 252, 254,
- 256, 258, 260, 262, 264, 266, 268, 270,
- 272, 274, 276, 278, 280, 282, 284, 286,
- 288, 290, 292, 294, 296, 300, 302, 304,
- 306, 308, 310, 312, 314, 316, 318, 320,
- 322, 324, 326, 328, 330, 332, 334, 336,
- 338, 340, 342, 344, 346, 348, 350, 352,
- 354, 356, 358, 360, 362, 364, 366, 368,
- 370, 372, 374, 376, 377, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 389, 390,
- 391, 392, 393, 394, 395, 396, 397, 398,
- 399, 400, 409, 415, 417, 420, 422, 424,
- 426, 429, 431, 433, 435, 437, 439, 441,
- 443, 445, 447, 449, 451, 453, 455, 457,
- 459, 461, 463, 465, 467, 469, 471, 473,
- 476, 478, 480, 482, 484, 486, 488, 490,
- 492, 494, 496, 498, 500, 502, 504, 506,
- 508, 510, 512, 514, 516, 518, 520, 522,
- 524, 526, 528, 530, 531, 532, 533, 534,
- 535, 536, 537, 538, 539, 547, 551, 553,
- 555, 557, 559, 561, 563, 565, 567, 569,
- 571, 573, 575, 577, 579, 581, 583, 585,
- 587, 591, 593, 595, 597, 599, 601, 603,
- 605, 607, 609, 611, 613, 615, 617, 619,
- 621, 623, 625, 627, 629, 631, 633, 635,
- 637, 639, 641, 643, 645, 647, 649, 651,
- 653, 655, 657, 659, 661, 663, 665, 666,
- 667, 668, 669, 670, 671, 672, 673, 674,
- 683, 690, 692, 695, 697, 699, 701, 704,
- 706, 708, 710, 712, 714, 716, 718, 720,
- 722, 724, 726, 728, 730, 732, 734, 736,
- 738, 740, 742, 744, 746, 748, 750, 752,
- 754, 756, 758, 762, 764, 766, 768, 770,
- 772, 774, 776, 778, 780, 782, 784, 786,
- 788, 790, 792, 794, 796, 798, 800, 802,
- 804, 806, 808, 810, 812, 814, 816, 818,
- 820, 822, 824, 826, 828, 830, 832, 834,
- 836, 837, 838
-};
-
-static const char _lexer_trans_keys[] = {
- -41, -17, 10, 32, 34, 35, 37, 42,
- 64, 124, 9, 13, -112, -111, -109, -107,
- -101, -88, -86, -41, -111, -106, -41, -100,
- 32, 10, 13, 10, 13, -41, 10, 32,
- 34, 35, 37, 42, 64, 124, 9, 13,
- 34, 34, 10, 13, 10, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 34,
- 9, 13, 10, 32, 9, 13, 10, 32,
- 9, 13, 10, 13, 10, 95, 70, 69,
- 65, 84, 85, 82, 69, 95, 69, 78,
- 68, 95, 37, 13, 32, 64, 9, 10,
- 9, 10, 13, 32, 64, 11, 12, 10,
- 32, 64, 9, 13, 32, 124, 9, 13,
- 10, 32, 92, 124, 9, 13, 10, 92,
- 124, 10, 92, 10, 32, 92, 124, 9,
- 13, -41, 10, 32, 34, 35, 37, 42,
- 64, 124, 9, 13, -41, 32, -103, -41,
- -108, -41, -103, -41, -96, -41, -86, -41,
- -97, -41, -107, -41, -110, -41, -98, -41,
- -112, -41, -107, -41, -86, 58, 10, 10,
- -41, 10, 32, 35, 124, 9, 13, -86,
- 10, -41, 10, -101, 10, -41, 10, -107,
- 10, -41, 10, -96, 10, -41, 10, -108,
- 10, 10, 58, -41, 10, 32, 34, 35,
- 37, 42, 64, 124, 9, 13, -41, -110,
- -41, -99, -41, -112, -41, -87, -41, -88,
- -41, -89, -41, -94, 58, 10, 10, -41,
- 10, 32, 35, 37, 42, 64, 9, 13,
- -112, -111, -107, -101, -86, 10, -41, 10,
- -111, -106, 10, -41, 10, -100, 10, 10,
- 32, -41, 10, 32, -103, 10, -41, 10,
- -108, 10, -41, 10, -103, 10, -41, 10,
- -96, 10, -41, 10, -86, 10, -41, 10,
- -97, 10, -41, 10, -110, 10, -41, 10,
- -99, 10, -41, 10, -112, 10, -41, 10,
- -87, 10, -41, 10, -88, 10, -41, 10,
- -111, -101, -88, 10, -41, 10, -96, 10,
- -41, 10, -103, 10, -41, 10, -86, 10,
- 10, 32, -41, 10, -86, 10, -41, 10,
- -88, 10, -41, 10, -105, 10, -41, 10,
- -103, 10, -41, 10, -87, 10, 10, 58,
- -41, 10, -107, 10, -41, 10, -96, 10,
- -41, 10, -108, 10, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- -41, -111, -101, -88, -41, -96, -41, -103,
- -41, -86, 32, -41, -86, -41, -88, -41,
- -105, -41, -103, -41, -87, 58, 10, 10,
- -41, 10, 32, 35, 37, 42, 64, 9,
- 13, -112, -111, -107, -101, -86, 10, -41,
- 10, -111, -106, 10, -41, 10, -100, 10,
- 10, 32, -41, 10, 32, -103, 10, -41,
- 10, -108, 10, -41, 10, -103, 10, -41,
- 10, -96, 10, -41, 10, -86, 10, -41,
- 10, -97, 10, -41, 10, -110, 10, -41,
- 10, -99, 10, -41, 10, -112, 10, -41,
- 10, -87, 10, -41, 10, -88, 10, -41,
- 10, -101, -88, 10, -41, 10, -107, 10,
- -41, 10, -96, 10, -41, 10, -108, 10,
- 10, 58, -41, 10, -105, 10, -41, 10,
- -103, 10, -41, 10, -87, 10, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, -41, -107, -41, -96, -41, -108,
- 58, 10, 10, -41, 10, 32, 35, 37,
- 64, 9, 13, -109, -88, -86, 10, -41,
- 10, -107, 10, -41, 10, -110, 10, -41,
- 10, -98, 10, -41, 10, -112, 10, -41,
- 10, -107, 10, -41, 10, -86, 10, 10,
- 58, -41, 10, -89, 10, -41, 10, -94,
- 10, -41, 10, -111, -101, -88, 10, -41,
- 10, -96, 10, -41, 10, -103, 10, -41,
- 10, -86, 10, 10, 32, -41, 10, -86,
- 10, -41, 10, -88, 10, -41, 10, -105,
- 10, -41, 10, -103, 10, -41, 10, -87,
- 10, -41, 10, -107, 10, -41, 10, -96,
- 10, -41, 10, -108, 10, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, -41, -105, -41, -103, -41, -87, 58,
- 10, 10, -41, 10, 32, 35, 37, 42,
- 64, 9, 13, -112, -111, -107, -101, -88,
- -86, 10, -41, 10, -111, -106, 10, -41,
- 10, -100, 10, 10, 32, -41, 10, 32,
- -103, 10, -41, 10, -108, 10, -41, 10,
- -103, 10, -41, 10, -96, 10, -41, 10,
- -86, 10, -41, 10, -97, 10, -41, 10,
- -110, 10, -41, 10, -99, 10, -41, 10,
- -112, 10, -41, 10, -87, 10, -41, 10,
- -88, 10, -41, 10, -89, 10, -41, 10,
- -94, 10, 10, 58, -41, 10, -111, -101,
- -88, 10, -41, 10, -96, 10, -41, 10,
- -103, 10, -41, 10, -86, 10, 10, 32,
- -41, 10, -86, 10, -41, 10, -88, 10,
- -41, 10, -105, 10, -41, 10, -103, 10,
- -41, 10, -87, 10, -41, 10, -107, 10,
- -41, 10, -96, 10, -41, 10, -108, 10,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, -69, -65, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 10, 7, 1, 2, 1, 1, 1,
- 2, 2, 9, 1, 1, 2, 2, 3,
- 3, 3, 3, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 3, 5, 3,
- 2, 4, 3, 2, 4, 9, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 5, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 9, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 7, 6,
- 2, 3, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 4, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 7, 6, 2, 3, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 6, 4, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 4, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 7,
- 7, 2, 3, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 4, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 1,
- 1, 1, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 1, 1,
- 1, 1, 0, 0, 1, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 12, 20, 22, 25, 27, 29,
- 31, 34, 37, 48, 50, 52, 55, 58,
- 63, 68, 73, 78, 82, 86, 89, 91,
- 93, 95, 97, 99, 101, 103, 105, 107,
- 109, 111, 113, 115, 117, 119, 124, 131,
- 136, 140, 146, 150, 153, 159, 170, 173,
- 175, 177, 179, 181, 183, 185, 187, 189,
- 191, 193, 195, 197, 199, 201, 203, 205,
- 207, 209, 211, 213, 215, 217, 219, 221,
- 223, 225, 232, 235, 238, 241, 244, 247,
- 250, 253, 256, 259, 262, 273, 275, 277,
- 279, 281, 283, 285, 287, 289, 291, 293,
- 295, 297, 299, 301, 303, 305, 307, 316,
- 323, 326, 330, 333, 336, 339, 343, 346,
- 349, 352, 355, 358, 361, 364, 367, 370,
- 373, 376, 379, 382, 385, 388, 391, 394,
- 397, 400, 403, 406, 409, 414, 417, 420,
- 423, 426, 429, 432, 435, 438, 441, 444,
- 447, 450, 453, 456, 459, 462, 465, 468,
- 471, 474, 477, 480, 483, 486, 489, 492,
- 495, 498, 501, 504, 507, 510, 513, 516,
- 519, 522, 525, 528, 530, 534, 536, 538,
- 540, 542, 544, 546, 548, 550, 552, 554,
- 556, 558, 560, 562, 564, 566, 568, 570,
- 572, 574, 583, 590, 593, 597, 600, 603,
- 606, 610, 613, 616, 619, 622, 625, 628,
- 631, 634, 637, 640, 643, 646, 649, 652,
- 655, 658, 661, 664, 667, 670, 673, 676,
- 680, 683, 686, 689, 692, 695, 698, 701,
- 704, 707, 710, 713, 716, 719, 722, 725,
- 728, 731, 734, 737, 740, 743, 746, 749,
- 752, 755, 758, 761, 763, 765, 767, 769,
- 771, 773, 775, 777, 779, 787, 792, 795,
- 798, 801, 804, 807, 810, 813, 816, 819,
- 822, 825, 828, 831, 834, 837, 840, 843,
- 846, 851, 854, 857, 860, 863, 866, 869,
- 872, 875, 878, 881, 884, 887, 890, 893,
- 896, 899, 902, 905, 908, 911, 914, 917,
- 920, 923, 926, 929, 932, 935, 938, 941,
- 944, 947, 950, 953, 956, 959, 962, 964,
- 966, 968, 970, 972, 974, 976, 978, 980,
- 989, 997, 1000, 1004, 1007, 1010, 1013, 1017,
- 1020, 1023, 1026, 1029, 1032, 1035, 1038, 1041,
- 1044, 1047, 1050, 1053, 1056, 1059, 1062, 1065,
- 1068, 1071, 1074, 1077, 1080, 1083, 1086, 1089,
- 1092, 1095, 1098, 1103, 1106, 1109, 1112, 1115,
- 1118, 1121, 1124, 1127, 1130, 1133, 1136, 1139,
- 1142, 1145, 1148, 1151, 1154, 1157, 1160, 1163,
- 1166, 1169, 1172, 1175, 1178, 1181, 1184, 1187,
- 1190, 1193, 1196, 1199, 1202, 1205, 1208, 1211,
- 1214, 1216, 1218
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 400, 10, 10, 11, 21, 23, 7,
- 37, 40, 10, 0, 3, 48, 58, 85,
- 89, 95, 171, 0, 4, 0, 5, 46,
- 0, 6, 0, 7, 0, 8, 0, 10,
- 22, 9, 10, 22, 9, 2, 10, 10,
- 11, 21, 23, 7, 37, 40, 10, 0,
- 12, 0, 13, 0, 15, 14, 14, 15,
- 14, 14, 16, 16, 17, 16, 16, 16,
- 16, 17, 16, 16, 16, 16, 18, 16,
- 16, 16, 16, 19, 16, 16, 10, 20,
- 20, 0, 10, 20, 20, 0, 10, 22,
- 21, 10, 0, 24, 0, 25, 0, 26,
- 0, 27, 0, 28, 0, 29, 0, 30,
- 0, 31, 0, 32, 0, 33, 0, 34,
- 0, 35, 0, 36, 0, 402, 0, 0,
- 0, 0, 0, 38, 39, 10, 39, 39,
- 37, 38, 38, 10, 39, 37, 39, 0,
- 40, 41, 40, 0, 45, 44, 43, 41,
- 44, 42, 0, 43, 41, 42, 0, 43,
- 42, 45, 44, 43, 41, 44, 42, 2,
- 45, 45, 11, 21, 23, 7, 37, 40,
- 45, 0, 47, 8, 0, 7, 0, 49,
- 0, 50, 0, 51, 0, 52, 0, 53,
- 0, 54, 0, 55, 0, 56, 0, 57,
- 0, 7, 0, 59, 0, 60, 0, 61,
- 0, 62, 0, 63, 0, 64, 0, 65,
- 0, 66, 0, 67, 0, 68, 0, 69,
- 0, 70, 0, 71, 0, 73, 72, 73,
- 72, 74, 73, 73, 10, 10, 73, 72,
- 75, 73, 72, 76, 73, 72, 77, 73,
- 72, 78, 73, 72, 79, 73, 72, 80,
- 73, 72, 81, 73, 72, 82, 73, 72,
- 83, 73, 72, 73, 84, 72, 2, 10,
- 10, 11, 21, 23, 7, 37, 40, 10,
- 0, 86, 0, 87, 0, 88, 0, 7,
- 0, 90, 0, 91, 0, 92, 0, 93,
- 0, 94, 0, 7, 0, 96, 0, 97,
- 0, 98, 0, 99, 0, 100, 0, 102,
- 101, 102, 101, 103, 102, 102, 10, 157,
- 108, 10, 102, 101, 104, 111, 121, 125,
- 131, 102, 101, 105, 102, 101, 106, 109,
- 102, 101, 107, 102, 101, 108, 102, 101,
- 102, 84, 101, 110, 102, 84, 101, 108,
- 102, 101, 112, 102, 101, 113, 102, 101,
- 114, 102, 101, 115, 102, 101, 116, 102,
- 101, 117, 102, 101, 118, 102, 101, 119,
- 102, 101, 120, 102, 101, 108, 102, 101,
- 122, 102, 101, 123, 102, 101, 124, 102,
- 101, 108, 102, 101, 126, 102, 101, 127,
- 102, 101, 128, 102, 101, 129, 102, 101,
- 130, 102, 101, 108, 102, 101, 132, 102,
- 101, 133, 151, 144, 102, 101, 134, 102,
- 101, 135, 102, 101, 136, 102, 101, 137,
- 102, 101, 138, 102, 101, 139, 102, 101,
- 102, 140, 101, 141, 102, 101, 142, 102,
- 101, 143, 102, 101, 144, 102, 101, 145,
- 102, 101, 146, 102, 101, 147, 102, 101,
- 148, 102, 101, 149, 102, 101, 150, 102,
- 101, 102, 84, 101, 152, 102, 101, 153,
- 102, 101, 154, 102, 101, 155, 102, 101,
- 156, 102, 101, 150, 102, 101, 102, 158,
- 101, 102, 159, 101, 102, 160, 101, 102,
- 161, 101, 102, 162, 101, 102, 163, 101,
- 102, 164, 101, 102, 165, 101, 102, 166,
- 101, 102, 167, 101, 102, 168, 101, 102,
- 169, 101, 102, 170, 101, 102, 10, 101,
- 172, 0, 173, 251, 318, 0, 174, 0,
- 175, 0, 176, 0, 177, 0, 178, 0,
- 179, 0, 180, 0, 181, 0, 182, 0,
- 183, 0, 184, 0, 185, 0, 186, 0,
- 187, 0, 188, 0, 189, 0, 190, 0,
- 191, 0, 193, 192, 193, 192, 194, 193,
- 193, 10, 237, 199, 10, 193, 192, 195,
- 202, 212, 216, 222, 193, 192, 196, 193,
- 192, 197, 200, 193, 192, 198, 193, 192,
- 199, 193, 192, 193, 84, 192, 201, 193,
- 84, 192, 199, 193, 192, 203, 193, 192,
- 204, 193, 192, 205, 193, 192, 206, 193,
- 192, 207, 193, 192, 208, 193, 192, 209,
- 193, 192, 210, 193, 192, 211, 193, 192,
- 199, 193, 192, 213, 193, 192, 214, 193,
- 192, 215, 193, 192, 199, 193, 192, 217,
- 193, 192, 218, 193, 192, 219, 193, 192,
- 220, 193, 192, 221, 193, 192, 199, 193,
- 192, 223, 193, 192, 224, 231, 193, 192,
- 225, 193, 192, 226, 193, 192, 227, 193,
- 192, 228, 193, 192, 229, 193, 192, 230,
- 193, 192, 193, 84, 192, 232, 193, 192,
- 233, 193, 192, 234, 193, 192, 235, 193,
- 192, 236, 193, 192, 230, 193, 192, 193,
- 238, 192, 193, 239, 192, 193, 240, 192,
- 193, 241, 192, 193, 242, 192, 193, 243,
- 192, 193, 244, 192, 193, 245, 192, 193,
- 246, 192, 193, 247, 192, 193, 248, 192,
- 193, 249, 192, 193, 250, 192, 193, 10,
- 192, 252, 0, 253, 0, 254, 0, 255,
- 0, 256, 0, 257, 0, 258, 0, 260,
- 259, 260, 259, 261, 260, 260, 10, 304,
- 10, 260, 259, 262, 275, 279, 260, 259,
- 263, 260, 259, 264, 260, 259, 265, 260,
- 259, 266, 260, 259, 267, 260, 259, 268,
- 260, 259, 269, 260, 259, 270, 260, 259,
- 271, 260, 259, 272, 260, 259, 273, 260,
- 259, 274, 260, 259, 260, 84, 259, 276,
- 260, 259, 277, 260, 259, 278, 260, 259,
- 274, 260, 259, 280, 260, 259, 281, 298,
- 292, 260, 259, 282, 260, 259, 283, 260,
- 259, 284, 260, 259, 285, 260, 259, 286,
- 260, 259, 287, 260, 259, 260, 288, 259,
- 289, 260, 259, 290, 260, 259, 291, 260,
- 259, 292, 260, 259, 293, 260, 259, 294,
- 260, 259, 295, 260, 259, 296, 260, 259,
- 297, 260, 259, 274, 260, 259, 299, 260,
- 259, 300, 260, 259, 301, 260, 259, 302,
- 260, 259, 303, 260, 259, 274, 260, 259,
- 260, 305, 259, 260, 306, 259, 260, 307,
- 259, 260, 308, 259, 260, 309, 259, 260,
- 310, 259, 260, 311, 259, 260, 312, 259,
- 260, 313, 259, 260, 314, 259, 260, 315,
- 259, 260, 316, 259, 260, 317, 259, 260,
- 10, 259, 319, 0, 320, 0, 321, 0,
- 322, 0, 323, 0, 324, 0, 325, 0,
- 327, 326, 327, 326, 328, 327, 327, 10,
- 386, 333, 10, 327, 326, 329, 336, 346,
- 350, 356, 361, 327, 326, 330, 327, 326,
- 331, 334, 327, 326, 332, 327, 326, 333,
- 327, 326, 327, 84, 326, 335, 327, 84,
- 326, 333, 327, 326, 337, 327, 326, 338,
- 327, 326, 339, 327, 326, 340, 327, 326,
- 341, 327, 326, 342, 327, 326, 343, 327,
- 326, 344, 327, 326, 345, 327, 326, 333,
- 327, 326, 347, 327, 326, 348, 327, 326,
- 349, 327, 326, 333, 327, 326, 351, 327,
- 326, 352, 327, 326, 353, 327, 326, 354,
- 327, 326, 355, 327, 326, 333, 327, 326,
- 357, 327, 326, 358, 327, 326, 359, 327,
- 326, 360, 327, 326, 327, 84, 326, 362,
- 327, 326, 363, 380, 374, 327, 326, 364,
- 327, 326, 365, 327, 326, 366, 327, 326,
- 367, 327, 326, 368, 327, 326, 369, 327,
- 326, 327, 370, 326, 371, 327, 326, 372,
- 327, 326, 373, 327, 326, 374, 327, 326,
- 375, 327, 326, 376, 327, 326, 377, 327,
- 326, 378, 327, 326, 379, 327, 326, 360,
- 327, 326, 381, 327, 326, 382, 327, 326,
- 383, 327, 326, 384, 327, 326, 385, 327,
- 326, 360, 327, 326, 327, 387, 326, 327,
- 388, 326, 327, 389, 326, 327, 390, 326,
- 327, 391, 326, 327, 392, 326, 327, 393,
- 326, 327, 394, 326, 327, 395, 326, 327,
- 396, 326, 327, 397, 326, 327, 398, 326,
- 327, 399, 326, 327, 10, 326, 401, 0,
- 10, 0, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 29, 0, 54, 0, 5, 1, 0, 29,
- 1, 35, 0, 43, 0, 0, 0, 0,
- 0, 0, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 149,
- 126, 57, 110, 23, 0, 29, 54, 0,
- 5, 1, 0, 29, 1, 35, 0, 43,
- 0, 43, 0, 43, 139, 48, 9, 106,
- 11, 0, 134, 45, 45, 45, 3, 122,
- 33, 33, 33, 0, 122, 33, 33, 33,
- 0, 122, 33, 0, 33, 0, 102, 7,
- 7, 43, 54, 0, 0, 43, 114, 25,
- 0, 54, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 43,
- 43, 43, 43, 0, 27, 118, 27, 27,
- 51, 27, 0, 54, 0, 1, 0, 43,
- 0, 0, 0, 43, 54, 37, 37, 87,
- 37, 37, 43, 0, 39, 0, 43, 0,
- 0, 54, 0, 0, 39, 0, 0, 96,
- 54, 0, 93, 90, 41, 96, 90, 99,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 84, 54, 0, 81, 81, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 21, 0, 63, 130,
- 31, 60, 57, 31, 63, 57, 66, 31,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 54, 0, 72, 33,
- 84, 72, 0, 0, 0, 0, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 15, 0, 0, 54, 15, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 15, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 15, 0,
- 0, 43, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 84, 54,
- 0, 78, 33, 84, 78, 0, 0, 0,
- 0, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 19, 0, 0, 54,
- 19, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 19, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 19,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 54, 0, 69, 33,
- 69, 0, 0, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 13, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 84, 54, 0, 75,
- 33, 84, 75, 0, 0, 0, 0, 0,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 17, 0, 0, 54, 17,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 17, 0, 0,
- 54, 0, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 17, 0, 0, 43,
- 0, 43, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 402;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/he.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 978 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/he.c.rl"
-
-#line 985 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/he.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/he.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/he.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/he.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/he.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/he.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/he.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/he.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/he.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/he.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/he.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/he.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/he.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/he.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/he.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/he.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/he.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/he.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/he.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/he.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/he.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/he.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/he.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/he.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1275 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/he.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1338 "ext/gherkin_lexer_he/gherkin_lexer_he.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/he.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_he()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "He", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_hr/extconf.rb
index 71fcdc9,71fcdc9..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_hr/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_hr")
--have_library("c", "main")
--create_makefile("gherkin_lexer_hr")
diff --cc ext/gherkin_lexer_hr/gherkin_lexer_hr.c
index 49c8b4e,5d13c07..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_hr/gherkin_lexer_hr.c
+++ /dev/null
@@@ -1,1323 -1,1323 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 113, 114,
- 116, 117, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 142, 144, 146, 148, 150,
- 152, 154, 156, 158, 160, 162, 164, 166,
- 168, 170, 172, 190, 191, 192, 193, 195,
- 196, 197, 198, 199, 200, 201, 202, 203,
- 215, 217, 219, 221, 223, 225, 227, 229,
- 231, 233, 235, 237, 239, 241, 243, 245,
- 247, 249, 251, 253, 255, 257, 259, 261,
- 263, 266, 268, 270, 272, 274, 276, 278,
- 280, 282, 284, 286, 289, 291, 293, 295,
- 297, 299, 301, 303, 305, 307, 310, 312,
- 314, 316, 318, 320, 322, 325, 327, 329,
- 331, 332, 333, 334, 335, 336, 337, 338,
- 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 364, 366, 368, 370, 372, 374,
- 376, 378, 380, 382, 384, 386, 388, 390,
- 392, 394, 396, 398, 401, 403, 406, 408,
- 410, 412, 414, 416, 418, 420, 422, 424,
- 427, 429, 431, 433, 435, 438, 440, 442,
- 444, 446, 448, 450, 452, 455, 457, 459,
- 461, 463, 465, 467, 469, 471, 473, 475,
- 477, 479, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 500, 502, 504, 506,
- 509, 511, 513, 515, 517, 519, 521, 523,
- 525, 527, 529, 531, 533, 535, 536, 537,
- 538, 539, 540, 541, 543, 544, 545, 561,
- 563, 565, 567, 569, 571, 573, 575, 577,
- 579, 581, 583, 585, 587, 589, 591, 593,
- 595, 598, 600, 603, 605, 607, 609, 611,
- 613, 615, 617, 619, 621, 624, 626, 628,
- 630, 632, 635, 637, 639, 641, 643, 645,
- 647, 649, 651, 653, 655, 657, 660, 662,
- 664, 666, 668, 670, 672, 674, 676, 678,
- 680, 682, 684, 688, 689, 690, 691, 692,
- 693, 694, 695, 698, 702, 708, 711, 713,
- 719, 737, 739, 741, 743, 745, 748, 750,
- 752, 754, 757, 759, 761, 763, 765, 767,
- 769, 772, 774, 776, 778, 780, 782, 784,
- 786, 788, 790, 792, 794, 796, 798, 800,
- 802, 804, 806, 808, 812
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 73, 75, 77, 79, 80, 83, 90,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 65, 73, 75, 77,
- 79, 80, 83, 90, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 108, 105, 97, 111, 100, 32, 97, 110,
- 99, 101, 112, 116, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 65, 73, 75,
- 77, 79, 83, 90, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 32, 34, 35,
- 37, 42, 64, 65, 73, 75, 77, 79,
- 80, 83, 90, 124, 9, 13, 111, 103,
- 117, -60, 99, -121, 110, 111, 115, 116,
- 58, 10, 10, 10, 32, 35, 37, 64,
- 75, 77, 79, 80, 83, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 111, 10, 110, 10,
- 99, 10, 101, 10, 112, 10, 116, 10,
- 58, 10, 111, 10, 103, 10, 117, -60,
- 10, 99, -121, 10, 10, 110, 10, 111,
- 10, 115, 10, 115, 10, 111, 10, 98,
- 10, 105, 10, 110, 10, 97, 10, 111,
- 114, 10, 122, 10, 97, 10, 100, 10,
- 105, 10, 109, 10, 106, 10, 101, 10,
- 114, 10, 105, 10, 99, 107, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 106, 10, 58, 105, 10, 105, 10,
- 99, 110, 115, 100, 97, 111, 98, 105,
- 110, 97, 111, 114, 122, 97, 100, 105,
- 110, 97, 58, 10, 10, 10, 32, 35,
- 37, 42, 64, 65, 73, 75, 77, 79,
- 83, 90, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, 10, 108, 10, 105, 10, 97,
- 111, 10, 100, 10, 32, 97, 10, 110,
- 10, 99, 10, 101, 10, 112, 10, 116,
- 10, 58, 10, 111, 10, 103, 10, 117,
- -60, 10, 99, -121, 10, 10, 110, 10,
- 111, 10, 115, 10, 110, 115, 10, 100,
- 10, 97, 10, 111, 10, 98, 10, 105,
- 10, 110, 10, 97, 10, 99, 107, 10,
- 101, 10, 110, 10, 97, 10, 114, 10,
- 105, 10, 106, 10, 105, 10, 99, 10,
- 97, 10, 100, 10, 97, 10, 110, 10,
- 32, 105, 111, 105, 109, 106, 101, 114,
- 105, 58, 10, 10, 10, 32, 35, 77,
- 79, 124, 9, 13, 10, 111, 10, 103,
- 10, 117, -60, 10, 99, -121, 10, 10,
- 110, 10, 111, 10, 115, 10, 116, 10,
- 58, 10, 115, 10, 111, 10, 98, 10,
- 105, 10, 110, 10, 97, 99, 107, 101,
- 110, 97, 114, 105, 106, 58, 105, 10,
- 10, 10, 32, 35, 37, 42, 64, 65,
- 73, 75, 77, 79, 80, 83, 90, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 108, 10, 105, 10, 97, 111, 10, 100,
- 10, 32, 97, 10, 110, 10, 99, 10,
- 101, 10, 112, 10, 116, 10, 58, 10,
- 111, 10, 103, 10, 117, -60, 10, 99,
- -121, 10, 10, 110, 10, 111, 10, 115,
- 10, 110, 115, 10, 100, 10, 97, 10,
- 111, 10, 98, 10, 105, 10, 110, 10,
- 97, 10, 111, 10, 122, 10, 97, 10,
- 100, 10, 99, 107, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 106,
- 10, 105, 10, 99, 10, 97, 10, 100,
- 10, 97, 10, 110, 10, 32, 105, 111,
- 105, 99, 97, 97, 100, 97, 110, 32,
- 105, 111, 32, 124, 9, 13, 10, 32,
- 92, 124, 9, 13, 10, 92, 124, 10,
- 92, 10, 32, 92, 124, 9, 13, 10,
- 32, 34, 35, 37, 42, 64, 65, 73,
- 75, 77, 79, 80, 83, 90, 124, 9,
- 13, 10, 108, 10, 105, 10, 97, 10,
- 100, 10, 32, 97, 10, 111, 10, 103,
- 10, 117, -60, 10, 99, -121, 10, 10,
- 110, 10, 111, 10, 115, 10, 116, 10,
- 58, 10, 110, 115, 10, 100, 10, 97,
- 10, 111, 10, 98, 10, 105, 10, 110,
- 10, 97, 10, 99, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 106,
- 10, 97, 10, 100, 10, 97, 10, 110,
- 10, 32, 105, 111, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 2,
- 1, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 13, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 16, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 10,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 13, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 4, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 6, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 2, 1, 1, 14, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 4, 1, 1, 1, 1, 1,
- 1, 1, 3, 2, 4, 3, 2, 4,
- 16, 2, 2, 2, 2, 3, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 4, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 1, 0, 0, 1,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 139, 141,
- 144, 146, 149, 151, 153, 155, 157, 159,
- 161, 163, 165, 180, 183, 186, 189, 192,
- 195, 198, 201, 204, 207, 210, 213, 216,
- 219, 222, 225, 243, 245, 247, 249, 252,
- 254, 256, 258, 260, 262, 264, 266, 268,
- 280, 283, 286, 289, 292, 295, 298, 301,
- 304, 307, 310, 313, 316, 319, 322, 325,
- 328, 331, 334, 337, 340, 343, 346, 349,
- 352, 356, 359, 362, 365, 368, 371, 374,
- 377, 380, 383, 386, 390, 393, 396, 399,
- 402, 405, 408, 411, 414, 417, 421, 424,
- 427, 430, 433, 436, 439, 443, 446, 449,
- 452, 454, 456, 458, 460, 462, 464, 466,
- 469, 471, 473, 475, 477, 479, 481, 483,
- 485, 487, 502, 505, 508, 511, 514, 517,
- 520, 523, 526, 529, 532, 535, 538, 541,
- 544, 547, 550, 553, 557, 560, 564, 567,
- 570, 573, 576, 579, 582, 585, 588, 591,
- 595, 598, 601, 604, 607, 611, 614, 617,
- 620, 623, 626, 629, 632, 636, 639, 642,
- 645, 648, 651, 654, 657, 660, 663, 666,
- 669, 672, 677, 679, 681, 683, 685, 687,
- 689, 691, 693, 695, 703, 706, 709, 712,
- 716, 719, 722, 725, 728, 731, 734, 737,
- 740, 743, 746, 749, 752, 755, 757, 759,
- 761, 763, 765, 767, 770, 772, 774, 790,
- 793, 796, 799, 802, 805, 808, 811, 814,
- 817, 820, 823, 826, 829, 832, 835, 838,
- 841, 845, 848, 852, 855, 858, 861, 864,
- 867, 870, 873, 876, 879, 883, 886, 889,
- 892, 895, 899, 902, 905, 908, 911, 914,
- 917, 920, 923, 926, 929, 932, 936, 939,
- 942, 945, 948, 951, 954, 957, 960, 963,
- 966, 969, 972, 977, 979, 981, 983, 985,
- 987, 989, 991, 995, 999, 1005, 1009, 1012,
- 1018, 1036, 1039, 1042, 1045, 1048, 1052, 1055,
- 1058, 1061, 1065, 1068, 1071, 1074, 1077, 1080,
- 1083, 1087, 1090, 1093, 1096, 1099, 1102, 1105,
- 1108, 1111, 1114, 1117, 1120, 1123, 1126, 1129,
- 1132, 1135, 1138, 1141, 1146
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 31, 39, 67, 135, 143, 236, 310,
- 315, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 31,
- 39, 67, 135, 143, 236, 310, 315, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 356, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 0, 31, 0, 40, 42, 0,
- 41, 0, 32, 31, 0, 43, 0, 44,
- 0, 45, 0, 46, 0, 47, 0, 48,
- 0, 50, 49, 50, 49, 50, 50, 4,
- 51, 65, 4, 321, 65, 323, 326, 336,
- 344, 351, 50, 49, 50, 52, 49, 50,
- 53, 49, 50, 54, 49, 50, 55, 49,
- 50, 56, 49, 50, 57, 49, 50, 58,
- 49, 50, 59, 49, 50, 60, 49, 50,
- 61, 49, 50, 62, 49, 50, 63, 49,
- 50, 64, 49, 50, 4, 49, 50, 66,
- 49, 4, 4, 5, 15, 17, 31, 34,
- 37, 31, 39, 67, 135, 143, 236, 310,
- 315, 4, 0, 68, 0, 69, 0, 70,
- 0, 71, 72, 0, 72, 0, 73, 0,
- 74, 0, 75, 0, 76, 0, 77, 0,
- 79, 78, 79, 78, 79, 79, 4, 80,
- 4, 94, 101, 109, 115, 125, 79, 78,
- 79, 81, 78, 79, 82, 78, 79, 83,
- 78, 79, 84, 78, 79, 85, 78, 79,
- 86, 78, 79, 87, 78, 79, 88, 78,
- 79, 89, 78, 79, 90, 78, 79, 91,
- 78, 79, 92, 78, 79, 93, 78, 79,
- 4, 78, 79, 95, 78, 79, 96, 78,
- 79, 97, 78, 79, 98, 78, 79, 99,
- 78, 79, 100, 78, 79, 66, 78, 79,
- 102, 78, 79, 103, 78, 79, 104, 78,
- 105, 79, 106, 78, 106, 79, 78, 79,
- 107, 78, 79, 108, 78, 79, 99, 78,
- 79, 110, 78, 79, 111, 78, 79, 112,
- 78, 79, 113, 78, 79, 114, 78, 79,
- 100, 78, 79, 116, 119, 78, 79, 117,
- 78, 79, 118, 78, 79, 112, 78, 79,
- 120, 78, 79, 121, 78, 79, 122, 78,
- 79, 123, 78, 79, 124, 78, 79, 100,
- 78, 79, 126, 133, 78, 79, 127, 78,
- 79, 128, 78, 79, 129, 78, 79, 130,
- 78, 79, 131, 78, 79, 132, 78, 79,
- 66, 100, 78, 79, 134, 78, 79, 114,
- 78, 136, 138, 0, 137, 0, 31, 0,
- 139, 0, 140, 0, 141, 0, 142, 0,
- 76, 0, 144, 210, 0, 145, 0, 146,
- 0, 147, 0, 148, 0, 149, 0, 150,
- 0, 151, 0, 153, 152, 153, 152, 153,
- 153, 4, 154, 168, 4, 169, 168, 171,
- 180, 188, 196, 205, 153, 152, 153, 155,
- 152, 153, 156, 152, 153, 157, 152, 153,
- 158, 152, 153, 159, 152, 153, 160, 152,
- 153, 161, 152, 153, 162, 152, 153, 163,
- 152, 153, 164, 152, 153, 165, 152, 153,
- 166, 152, 153, 167, 152, 153, 4, 152,
- 153, 66, 152, 153, 170, 152, 153, 168,
- 152, 153, 172, 174, 152, 153, 173, 152,
- 153, 66, 168, 152, 153, 175, 152, 153,
- 176, 152, 153, 177, 152, 153, 178, 152,
- 153, 179, 152, 153, 66, 152, 153, 181,
- 152, 153, 182, 152, 153, 183, 152, 184,
- 153, 185, 152, 185, 153, 152, 153, 186,
- 152, 153, 187, 152, 153, 178, 152, 153,
- 189, 191, 152, 153, 190, 152, 153, 168,
- 152, 153, 192, 152, 153, 193, 152, 153,
- 194, 152, 153, 195, 152, 153, 179, 152,
- 153, 197, 203, 152, 153, 198, 152, 153,
- 199, 152, 153, 200, 152, 153, 201, 152,
- 153, 202, 152, 153, 179, 152, 153, 204,
- 152, 153, 195, 152, 153, 206, 152, 153,
- 207, 152, 153, 208, 152, 153, 209, 152,
- 153, 66, 168, 168, 152, 211, 0, 212,
- 0, 213, 0, 214, 0, 215, 0, 216,
- 0, 217, 0, 219, 218, 219, 218, 219,
- 219, 4, 220, 230, 4, 219, 218, 219,
- 221, 218, 219, 222, 218, 219, 223, 218,
- 224, 219, 225, 218, 225, 219, 218, 219,
- 226, 218, 219, 227, 218, 219, 228, 218,
- 219, 229, 218, 219, 66, 218, 219, 231,
- 218, 219, 232, 218, 219, 233, 218, 219,
- 234, 218, 219, 235, 218, 219, 229, 218,
- 237, 307, 0, 238, 0, 239, 0, 240,
- 0, 241, 0, 242, 0, 243, 0, 244,
- 216, 0, 246, 245, 246, 245, 246, 246,
- 4, 247, 261, 4, 262, 261, 264, 273,
- 281, 289, 293, 302, 246, 245, 246, 248,
- 245, 246, 249, 245, 246, 250, 245, 246,
- 251, 245, 246, 252, 245, 246, 253, 245,
- 246, 254, 245, 246, 255, 245, 246, 256,
- 245, 246, 257, 245, 246, 258, 245, 246,
- 259, 245, 246, 260, 245, 246, 4, 245,
- 246, 66, 245, 246, 263, 245, 246, 261,
- 245, 246, 265, 267, 245, 246, 266, 245,
- 246, 66, 261, 245, 246, 268, 245, 246,
- 269, 245, 246, 270, 245, 246, 271, 245,
- 246, 272, 245, 246, 66, 245, 246, 274,
- 245, 246, 275, 245, 246, 276, 245, 277,
- 246, 278, 245, 278, 246, 245, 246, 279,
- 245, 246, 280, 245, 246, 271, 245, 246,
- 282, 284, 245, 246, 283, 245, 246, 261,
- 245, 246, 285, 245, 246, 286, 245, 246,
- 287, 245, 246, 288, 245, 246, 272, 245,
- 246, 290, 245, 246, 291, 245, 246, 292,
- 245, 246, 286, 245, 246, 294, 300, 245,
- 246, 295, 245, 246, 296, 245, 246, 297,
- 245, 246, 298, 245, 246, 299, 245, 246,
- 272, 245, 246, 301, 245, 246, 288, 245,
- 246, 303, 245, 246, 304, 245, 246, 305,
- 245, 246, 306, 245, 246, 66, 261, 261,
- 245, 308, 0, 309, 0, 47, 0, 311,
- 0, 312, 0, 313, 0, 314, 0, 32,
- 31, 31, 0, 315, 316, 315, 0, 320,
- 319, 318, 316, 319, 317, 0, 318, 316,
- 317, 0, 318, 317, 320, 319, 318, 316,
- 319, 317, 320, 320, 5, 15, 17, 31,
- 34, 37, 31, 39, 67, 135, 143, 236,
- 310, 315, 320, 0, 50, 322, 49, 50,
- 65, 49, 50, 324, 49, 50, 325, 49,
- 50, 66, 65, 49, 50, 327, 49, 50,
- 328, 49, 50, 329, 49, 330, 50, 331,
- 49, 331, 50, 49, 50, 332, 49, 50,
- 333, 49, 50, 334, 49, 50, 335, 49,
- 50, 66, 49, 50, 337, 339, 49, 50,
- 338, 49, 50, 65, 49, 50, 340, 49,
- 50, 341, 49, 50, 342, 49, 50, 343,
- 49, 50, 335, 49, 50, 345, 49, 50,
- 346, 49, 50, 347, 49, 50, 348, 49,
- 50, 349, 49, 50, 350, 49, 50, 335,
- 49, 50, 352, 49, 50, 353, 49, 50,
- 354, 49, 50, 355, 49, 50, 66, 65,
- 65, 49, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 78,
- 33, 84, 78, 84, 84, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 19, 0, 54, 19,
- 0, 130, 31, 60, 57, 31, 63, 57,
- 63, 63, 63, 63, 63, 63, 63, 63,
- 66, 31, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 69, 33,
- 69, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 72, 33, 84, 72, 84, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 15, 0,
- 54, 15, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 15, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 15, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 81, 84, 84, 81, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 21, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 75, 33, 84, 75, 84, 84, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 17, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 17, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 17, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0, 0, 43, 0, 0, 0, 43, 54,
- 37, 37, 87, 37, 37, 43, 0, 39,
- 0, 43, 0, 0, 54, 0, 0, 39,
- 0, 0, 54, 0, 93, 90, 41, 96,
- 90, 96, 96, 96, 96, 96, 96, 96,
- 96, 99, 0, 43, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 19, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 19, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 19, 0,
- 0, 0, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 356;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 927 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
-
- #line 934 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1224 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1287 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hr.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_hr()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Hr", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/hr.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/hr.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 113, 114,
- 116, 117, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 142, 144, 146, 148, 150,
- 152, 154, 156, 158, 160, 162, 164, 166,
- 168, 170, 172, 190, 191, 192, 193, 195,
- 196, 197, 198, 199, 200, 201, 202, 203,
- 215, 217, 219, 221, 223, 225, 227, 229,
- 231, 233, 235, 237, 239, 241, 243, 245,
- 247, 249, 251, 253, 255, 257, 259, 261,
- 263, 266, 268, 270, 272, 274, 276, 278,
- 280, 282, 284, 286, 289, 291, 293, 295,
- 297, 299, 301, 303, 305, 307, 310, 312,
- 314, 316, 318, 320, 322, 325, 327, 329,
- 331, 332, 333, 334, 335, 336, 337, 338,
- 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 364, 366, 368, 370, 372, 374,
- 376, 378, 380, 382, 384, 386, 388, 390,
- 392, 394, 396, 398, 401, 403, 406, 408,
- 410, 412, 414, 416, 418, 420, 422, 424,
- 427, 429, 431, 433, 435, 438, 440, 442,
- 444, 446, 448, 450, 452, 455, 457, 459,
- 461, 463, 465, 467, 469, 471, 473, 475,
- 477, 479, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 500, 502, 504, 506,
- 509, 511, 513, 515, 517, 519, 521, 523,
- 525, 527, 529, 531, 533, 535, 536, 537,
- 538, 539, 540, 541, 543, 544, 545, 561,
- 563, 565, 567, 569, 571, 573, 575, 577,
- 579, 581, 583, 585, 587, 589, 591, 593,
- 595, 598, 600, 603, 605, 607, 609, 611,
- 613, 615, 617, 619, 621, 624, 626, 628,
- 630, 632, 635, 637, 639, 641, 643, 645,
- 647, 649, 651, 653, 655, 657, 660, 662,
- 664, 666, 668, 670, 672, 674, 676, 678,
- 680, 682, 684, 688, 689, 690, 691, 692,
- 693, 694, 695, 698, 702, 708, 711, 713,
- 719, 737, 739, 741, 743, 745, 748, 750,
- 752, 754, 757, 759, 761, 763, 765, 767,
- 769, 772, 774, 776, 778, 780, 782, 784,
- 786, 788, 790, 792, 794, 796, 798, 800,
- 802, 804, 806, 808, 812
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 73, 75, 77, 79, 80, 83, 90,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 65, 73, 75, 77,
- 79, 80, 83, 90, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 108, 105, 97, 111, 100, 32, 97, 110,
- 99, 101, 112, 116, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 65, 73, 75,
- 77, 79, 83, 90, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 32, 34, 35,
- 37, 42, 64, 65, 73, 75, 77, 79,
- 80, 83, 90, 124, 9, 13, 111, 103,
- 117, -60, 99, -121, 110, 111, 115, 116,
- 58, 10, 10, 10, 32, 35, 37, 64,
- 75, 77, 79, 80, 83, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 111, 10, 110, 10,
- 99, 10, 101, 10, 112, 10, 116, 10,
- 58, 10, 111, 10, 103, 10, 117, -60,
- 10, 99, -121, 10, 10, 110, 10, 111,
- 10, 115, 10, 115, 10, 111, 10, 98,
- 10, 105, 10, 110, 10, 97, 10, 111,
- 114, 10, 122, 10, 97, 10, 100, 10,
- 105, 10, 109, 10, 106, 10, 101, 10,
- 114, 10, 105, 10, 99, 107, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 106, 10, 58, 105, 10, 105, 10,
- 99, 110, 115, 100, 97, 111, 98, 105,
- 110, 97, 111, 114, 122, 97, 100, 105,
- 110, 97, 58, 10, 10, 10, 32, 35,
- 37, 42, 64, 65, 73, 75, 77, 79,
- 83, 90, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, 10, 108, 10, 105, 10, 97,
- 111, 10, 100, 10, 32, 97, 10, 110,
- 10, 99, 10, 101, 10, 112, 10, 116,
- 10, 58, 10, 111, 10, 103, 10, 117,
- -60, 10, 99, -121, 10, 10, 110, 10,
- 111, 10, 115, 10, 110, 115, 10, 100,
- 10, 97, 10, 111, 10, 98, 10, 105,
- 10, 110, 10, 97, 10, 99, 107, 10,
- 101, 10, 110, 10, 97, 10, 114, 10,
- 105, 10, 106, 10, 105, 10, 99, 10,
- 97, 10, 100, 10, 97, 10, 110, 10,
- 32, 105, 111, 105, 109, 106, 101, 114,
- 105, 58, 10, 10, 10, 32, 35, 77,
- 79, 124, 9, 13, 10, 111, 10, 103,
- 10, 117, -60, 10, 99, -121, 10, 10,
- 110, 10, 111, 10, 115, 10, 116, 10,
- 58, 10, 115, 10, 111, 10, 98, 10,
- 105, 10, 110, 10, 97, 99, 107, 101,
- 110, 97, 114, 105, 106, 58, 105, 10,
- 10, 10, 32, 35, 37, 42, 64, 65,
- 73, 75, 77, 79, 80, 83, 90, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 108, 10, 105, 10, 97, 111, 10, 100,
- 10, 32, 97, 10, 110, 10, 99, 10,
- 101, 10, 112, 10, 116, 10, 58, 10,
- 111, 10, 103, 10, 117, -60, 10, 99,
- -121, 10, 10, 110, 10, 111, 10, 115,
- 10, 110, 115, 10, 100, 10, 97, 10,
- 111, 10, 98, 10, 105, 10, 110, 10,
- 97, 10, 111, 10, 122, 10, 97, 10,
- 100, 10, 99, 107, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 106,
- 10, 105, 10, 99, 10, 97, 10, 100,
- 10, 97, 10, 110, 10, 32, 105, 111,
- 105, 99, 97, 97, 100, 97, 110, 32,
- 105, 111, 32, 124, 9, 13, 10, 32,
- 92, 124, 9, 13, 10, 92, 124, 10,
- 92, 10, 32, 92, 124, 9, 13, 10,
- 32, 34, 35, 37, 42, 64, 65, 73,
- 75, 77, 79, 80, 83, 90, 124, 9,
- 13, 10, 108, 10, 105, 10, 97, 10,
- 100, 10, 32, 97, 10, 111, 10, 103,
- 10, 117, -60, 10, 99, -121, 10, 10,
- 110, 10, 111, 10, 115, 10, 116, 10,
- 58, 10, 110, 115, 10, 100, 10, 97,
- 10, 111, 10, 98, 10, 105, 10, 110,
- 10, 97, 10, 99, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 106,
- 10, 97, 10, 100, 10, 97, 10, 110,
- 10, 32, 105, 111, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 2,
- 1, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 13, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 16, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 10,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 13, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 4, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 6, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 2, 1, 1, 14, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 4, 1, 1, 1, 1, 1,
- 1, 1, 3, 2, 4, 3, 2, 4,
- 16, 2, 2, 2, 2, 3, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 4, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 1, 0, 0, 1,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 139, 141,
- 144, 146, 149, 151, 153, 155, 157, 159,
- 161, 163, 165, 180, 183, 186, 189, 192,
- 195, 198, 201, 204, 207, 210, 213, 216,
- 219, 222, 225, 243, 245, 247, 249, 252,
- 254, 256, 258, 260, 262, 264, 266, 268,
- 280, 283, 286, 289, 292, 295, 298, 301,
- 304, 307, 310, 313, 316, 319, 322, 325,
- 328, 331, 334, 337, 340, 343, 346, 349,
- 352, 356, 359, 362, 365, 368, 371, 374,
- 377, 380, 383, 386, 390, 393, 396, 399,
- 402, 405, 408, 411, 414, 417, 421, 424,
- 427, 430, 433, 436, 439, 443, 446, 449,
- 452, 454, 456, 458, 460, 462, 464, 466,
- 469, 471, 473, 475, 477, 479, 481, 483,
- 485, 487, 502, 505, 508, 511, 514, 517,
- 520, 523, 526, 529, 532, 535, 538, 541,
- 544, 547, 550, 553, 557, 560, 564, 567,
- 570, 573, 576, 579, 582, 585, 588, 591,
- 595, 598, 601, 604, 607, 611, 614, 617,
- 620, 623, 626, 629, 632, 636, 639, 642,
- 645, 648, 651, 654, 657, 660, 663, 666,
- 669, 672, 677, 679, 681, 683, 685, 687,
- 689, 691, 693, 695, 703, 706, 709, 712,
- 716, 719, 722, 725, 728, 731, 734, 737,
- 740, 743, 746, 749, 752, 755, 757, 759,
- 761, 763, 765, 767, 770, 772, 774, 790,
- 793, 796, 799, 802, 805, 808, 811, 814,
- 817, 820, 823, 826, 829, 832, 835, 838,
- 841, 845, 848, 852, 855, 858, 861, 864,
- 867, 870, 873, 876, 879, 883, 886, 889,
- 892, 895, 899, 902, 905, 908, 911, 914,
- 917, 920, 923, 926, 929, 932, 936, 939,
- 942, 945, 948, 951, 954, 957, 960, 963,
- 966, 969, 972, 977, 979, 981, 983, 985,
- 987, 989, 991, 995, 999, 1005, 1009, 1012,
- 1018, 1036, 1039, 1042, 1045, 1048, 1052, 1055,
- 1058, 1061, 1065, 1068, 1071, 1074, 1077, 1080,
- 1083, 1087, 1090, 1093, 1096, 1099, 1102, 1105,
- 1108, 1111, 1114, 1117, 1120, 1123, 1126, 1129,
- 1132, 1135, 1138, 1141, 1146
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 31, 39, 67, 135, 143, 236, 310,
- 315, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 31,
- 39, 67, 135, 143, 236, 310, 315, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 356, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 0, 31, 0, 40, 42, 0,
- 41, 0, 32, 31, 0, 43, 0, 44,
- 0, 45, 0, 46, 0, 47, 0, 48,
- 0, 50, 49, 50, 49, 50, 50, 4,
- 51, 65, 4, 321, 65, 323, 326, 336,
- 344, 351, 50, 49, 50, 52, 49, 50,
- 53, 49, 50, 54, 49, 50, 55, 49,
- 50, 56, 49, 50, 57, 49, 50, 58,
- 49, 50, 59, 49, 50, 60, 49, 50,
- 61, 49, 50, 62, 49, 50, 63, 49,
- 50, 64, 49, 50, 4, 49, 50, 66,
- 49, 4, 4, 5, 15, 17, 31, 34,
- 37, 31, 39, 67, 135, 143, 236, 310,
- 315, 4, 0, 68, 0, 69, 0, 70,
- 0, 71, 72, 0, 72, 0, 73, 0,
- 74, 0, 75, 0, 76, 0, 77, 0,
- 79, 78, 79, 78, 79, 79, 4, 80,
- 4, 94, 101, 109, 115, 125, 79, 78,
- 79, 81, 78, 79, 82, 78, 79, 83,
- 78, 79, 84, 78, 79, 85, 78, 79,
- 86, 78, 79, 87, 78, 79, 88, 78,
- 79, 89, 78, 79, 90, 78, 79, 91,
- 78, 79, 92, 78, 79, 93, 78, 79,
- 4, 78, 79, 95, 78, 79, 96, 78,
- 79, 97, 78, 79, 98, 78, 79, 99,
- 78, 79, 100, 78, 79, 66, 78, 79,
- 102, 78, 79, 103, 78, 79, 104, 78,
- 105, 79, 106, 78, 106, 79, 78, 79,
- 107, 78, 79, 108, 78, 79, 99, 78,
- 79, 110, 78, 79, 111, 78, 79, 112,
- 78, 79, 113, 78, 79, 114, 78, 79,
- 100, 78, 79, 116, 119, 78, 79, 117,
- 78, 79, 118, 78, 79, 112, 78, 79,
- 120, 78, 79, 121, 78, 79, 122, 78,
- 79, 123, 78, 79, 124, 78, 79, 100,
- 78, 79, 126, 133, 78, 79, 127, 78,
- 79, 128, 78, 79, 129, 78, 79, 130,
- 78, 79, 131, 78, 79, 132, 78, 79,
- 66, 100, 78, 79, 134, 78, 79, 114,
- 78, 136, 138, 0, 137, 0, 31, 0,
- 139, 0, 140, 0, 141, 0, 142, 0,
- 76, 0, 144, 210, 0, 145, 0, 146,
- 0, 147, 0, 148, 0, 149, 0, 150,
- 0, 151, 0, 153, 152, 153, 152, 153,
- 153, 4, 154, 168, 4, 169, 168, 171,
- 180, 188, 196, 205, 153, 152, 153, 155,
- 152, 153, 156, 152, 153, 157, 152, 153,
- 158, 152, 153, 159, 152, 153, 160, 152,
- 153, 161, 152, 153, 162, 152, 153, 163,
- 152, 153, 164, 152, 153, 165, 152, 153,
- 166, 152, 153, 167, 152, 153, 4, 152,
- 153, 66, 152, 153, 170, 152, 153, 168,
- 152, 153, 172, 174, 152, 153, 173, 152,
- 153, 66, 168, 152, 153, 175, 152, 153,
- 176, 152, 153, 177, 152, 153, 178, 152,
- 153, 179, 152, 153, 66, 152, 153, 181,
- 152, 153, 182, 152, 153, 183, 152, 184,
- 153, 185, 152, 185, 153, 152, 153, 186,
- 152, 153, 187, 152, 153, 178, 152, 153,
- 189, 191, 152, 153, 190, 152, 153, 168,
- 152, 153, 192, 152, 153, 193, 152, 153,
- 194, 152, 153, 195, 152, 153, 179, 152,
- 153, 197, 203, 152, 153, 198, 152, 153,
- 199, 152, 153, 200, 152, 153, 201, 152,
- 153, 202, 152, 153, 179, 152, 153, 204,
- 152, 153, 195, 152, 153, 206, 152, 153,
- 207, 152, 153, 208, 152, 153, 209, 152,
- 153, 66, 168, 168, 152, 211, 0, 212,
- 0, 213, 0, 214, 0, 215, 0, 216,
- 0, 217, 0, 219, 218, 219, 218, 219,
- 219, 4, 220, 230, 4, 219, 218, 219,
- 221, 218, 219, 222, 218, 219, 223, 218,
- 224, 219, 225, 218, 225, 219, 218, 219,
- 226, 218, 219, 227, 218, 219, 228, 218,
- 219, 229, 218, 219, 66, 218, 219, 231,
- 218, 219, 232, 218, 219, 233, 218, 219,
- 234, 218, 219, 235, 218, 219, 229, 218,
- 237, 307, 0, 238, 0, 239, 0, 240,
- 0, 241, 0, 242, 0, 243, 0, 244,
- 216, 0, 246, 245, 246, 245, 246, 246,
- 4, 247, 261, 4, 262, 261, 264, 273,
- 281, 289, 293, 302, 246, 245, 246, 248,
- 245, 246, 249, 245, 246, 250, 245, 246,
- 251, 245, 246, 252, 245, 246, 253, 245,
- 246, 254, 245, 246, 255, 245, 246, 256,
- 245, 246, 257, 245, 246, 258, 245, 246,
- 259, 245, 246, 260, 245, 246, 4, 245,
- 246, 66, 245, 246, 263, 245, 246, 261,
- 245, 246, 265, 267, 245, 246, 266, 245,
- 246, 66, 261, 245, 246, 268, 245, 246,
- 269, 245, 246, 270, 245, 246, 271, 245,
- 246, 272, 245, 246, 66, 245, 246, 274,
- 245, 246, 275, 245, 246, 276, 245, 277,
- 246, 278, 245, 278, 246, 245, 246, 279,
- 245, 246, 280, 245, 246, 271, 245, 246,
- 282, 284, 245, 246, 283, 245, 246, 261,
- 245, 246, 285, 245, 246, 286, 245, 246,
- 287, 245, 246, 288, 245, 246, 272, 245,
- 246, 290, 245, 246, 291, 245, 246, 292,
- 245, 246, 286, 245, 246, 294, 300, 245,
- 246, 295, 245, 246, 296, 245, 246, 297,
- 245, 246, 298, 245, 246, 299, 245, 246,
- 272, 245, 246, 301, 245, 246, 288, 245,
- 246, 303, 245, 246, 304, 245, 246, 305,
- 245, 246, 306, 245, 246, 66, 261, 261,
- 245, 308, 0, 309, 0, 47, 0, 311,
- 0, 312, 0, 313, 0, 314, 0, 32,
- 31, 31, 0, 315, 316, 315, 0, 320,
- 319, 318, 316, 319, 317, 0, 318, 316,
- 317, 0, 318, 317, 320, 319, 318, 316,
- 319, 317, 320, 320, 5, 15, 17, 31,
- 34, 37, 31, 39, 67, 135, 143, 236,
- 310, 315, 320, 0, 50, 322, 49, 50,
- 65, 49, 50, 324, 49, 50, 325, 49,
- 50, 66, 65, 49, 50, 327, 49, 50,
- 328, 49, 50, 329, 49, 330, 50, 331,
- 49, 331, 50, 49, 50, 332, 49, 50,
- 333, 49, 50, 334, 49, 50, 335, 49,
- 50, 66, 49, 50, 337, 339, 49, 50,
- 338, 49, 50, 65, 49, 50, 340, 49,
- 50, 341, 49, 50, 342, 49, 50, 343,
- 49, 50, 335, 49, 50, 345, 49, 50,
- 346, 49, 50, 347, 49, 50, 348, 49,
- 50, 349, 49, 50, 350, 49, 50, 335,
- 49, 50, 352, 49, 50, 353, 49, 50,
- 354, 49, 50, 355, 49, 50, 66, 65,
- 65, 49, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 78,
- 33, 84, 78, 84, 84, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 19, 0, 54, 19,
- 0, 130, 31, 60, 57, 31, 63, 57,
- 63, 63, 63, 63, 63, 63, 63, 63,
- 66, 31, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 69, 33,
- 69, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 72, 33, 84, 72, 84, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 15, 0,
- 54, 15, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 15, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 15, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 81, 84, 84, 81, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 21, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 75, 33, 84, 75, 84, 84, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 17, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 17, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 17, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0, 0, 43, 0, 0, 0, 43, 54,
- 37, 37, 87, 37, 37, 43, 0, 39,
- 0, 43, 0, 0, 54, 0, 0, 39,
- 0, 0, 54, 0, 93, 90, 41, 96,
- 90, 96, 96, 96, 96, 96, 96, 96,
- 96, 99, 0, 43, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 19, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 19, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 19, 0,
- 0, 0, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 356;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/hr.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 927 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/hr.c.rl"
-
-#line 934 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/hr.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/hr.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/hr.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/hr.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/hr.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/hr.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/hr.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/hr.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/hr.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/hr.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/hr.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/hr.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/hr.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/hr.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/hr.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/hr.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/hr.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/hr.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/hr.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/hr.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/hr.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/hr.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/hr.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/hr.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1224 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/hr.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1287 "ext/gherkin_lexer_hr/gherkin_lexer_hr.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/hr.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_hr()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Hr", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_hu/extconf.rb
index daab13b,daab13b..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_hu/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_hu")
--have_library("c", "main")
--create_makefile("gherkin_lexer_hu")
diff --cc ext/gherkin_lexer_hu/gherkin_lexer_hu.c
index ec318ed,a5e7b07..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_hu/gherkin_lexer_hu.c
+++ /dev/null
@@@ -1,1376 -1,1376 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 22, 24, 26,
- 44, 45, 46, 48, 50, 55, 60, 65,
- 70, 74, 78, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 100, 107, 112, 115, 116,
- 117, 118, 119, 120, 121, 123, 124, 125,
- 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 146, 147, 148, 149, 150,
- 151, 152, 153, 154, 155, 156, 171, 173,
- 175, 177, 195, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 221, 223, 225,
- 227, 229, 231, 233, 235, 237, 239, 241,
- 243, 245, 247, 249, 251, 253, 255, 259,
- 261, 263, 265, 267, 269, 271, 274, 276,
- 278, 280, 282, 284, 286, 288, 290, 292,
- 294, 296, 298, 300, 302, 304, 306, 308,
- 310, 312, 314, 316, 319, 321, 323, 325,
- 327, 329, 331, 333, 335, 337, 339, 341,
- 343, 345, 347, 349, 351, 353, 355, 357,
- 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 381, 383, 385, 387,
- 389, 391, 393, 395, 397, 399, 401, 403,
- 405, 407, 409, 411, 413, 415, 417, 419,
- 421, 423, 425, 427, 429, 431, 433, 435,
- 438, 440, 442, 444, 446, 448, 450, 452,
- 454, 456, 458, 460, 462, 464, 466, 468,
- 470, 472, 474, 476, 478, 480, 482, 484,
- 486, 488, 490, 492, 494, 496, 498, 499,
- 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 518, 520, 522, 524,
- 526, 528, 530, 532, 534, 536, 540, 546,
- 549, 551, 557, 575, 577, 579, 581, 583,
- 585, 587, 589, 591, 593, 595, 597, 599,
- 601, 603, 607, 609, 611, 613, 615, 617,
- 619, 622, 624, 626, 628, 630, 632, 634,
- 636, 638, 640, 642, 644, 646, 648, 650,
- 652, 654, 656, 658, 660, 662, 664, 666,
- 668, 670, 672, 674, 676, 678, 680, 682,
- 684, 686, 688, 690, 691, 692, 707, 709,
- 711, 713, 715, 717, 719, 721, 723, 725,
- 727, 729, 731, 733, 735, 737, 739, 741,
- 745, 747, 749, 751, 753, 755, 757, 760,
- 762, 764, 766, 768, 770, 772, 774, 776,
- 778, 780, 782, 784, 786, 788, 790, 792,
- 794, 796, 798, 800, 802, 805, 807, 809,
- 811, 813, 815, 817, 819, 821, 824, 826,
- 828, 830, 832, 834, 836, 838, 840, 842,
- 844, 846, 848, 850, 852, 854, 856, 858,
- 859, 860
- };
-
- static const char _lexer_trans_keys[] = {
- -61, -17, 10, 32, 34, 35, 37, 42,
- 64, 65, 68, 70, 72, 74, 77, 80,
- 124, 9, 13, -119, 115, 32, 10, 13,
- 10, 13, -61, 10, 32, 34, 35, 37,
- 42, 64, 65, 68, 70, 72, 74, 77,
- 80, 124, 9, 13, 34, 34, 10, 13,
- 10, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 9, 13, 10, 32, 9, 13, 10, 13,
- 10, 95, 70, 69, 65, 84, 85, 82,
- 69, 95, 69, 78, 68, 95, 37, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 100, 107, 109, 111, 116, 116, 107, 111,
- 114, 101, 105, 110, 110, 121, 105, 98,
- 101, 110, 101, 111, 114, 103, 97, 116,
- -61, -77, 107, -61, -74, 110, 121, 118,
- 32, 58, 118, -61, -95, 122, 108, 97,
- 116, 58, 10, 10, -61, 10, 32, 35,
- 37, 42, 64, 65, 68, 70, 72, 74,
- 77, 9, 13, -119, 10, 10, 115, 10,
- 32, -61, 10, 32, 34, 35, 37, 42,
- 64, 65, 68, 70, 72, 74, 77, 80,
- 124, 9, 13, -61, 97, -95, 116, 116,
- -61, -87, 114, 58, 10, 10, -61, 10,
- 32, 35, 37, 42, 64, 65, 68, 70,
- 72, 74, 77, 9, 13, -119, 10, 10,
- 115, 10, 32, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 100, 107, 109, 10, 111, 10, 116, 10,
- 116, 10, 107, 10, 111, 10, 114, 10,
- 101, 105, 10, 110, 10, 110, 10, 121,
- 10, 105, 10, 98, 10, 101, 10, 110,
- 10, 101, 10, 111, 10, 114, 10, 103,
- 10, 97, 10, 116, -61, 10, -77, 10,
- 10, 107, -61, 10, -74, 10, 10, 110,
- 10, 121, 10, 118, 10, 32, 58, 10,
- 118, -61, 10, -95, 10, 10, 122, 10,
- 108, 10, 97, 10, 116, 10, 58, 10,
- 97, 10, 101, 10, 108, 10, 108, 10,
- 101, 10, 109, 10, 122, -59, 10, -111,
- 10, 10, 97, 10, 106, 10, 100, 101,
- 108, 108, 101, 109, 122, -59, -111, 58,
- 10, 10, 10, 32, 35, 37, 64, 70,
- 72, 74, 80, 9, 13, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 111, 10, 114, 10, 103, 10,
- 97, 10, 116, -61, 10, -77, 10, 10,
- 107, -61, 10, -74, 10, 10, 110, 10,
- 121, 10, 118, 10, 32, 58, 10, 118,
- -61, 10, -95, 10, 10, 122, 10, 108,
- 10, 97, 10, 116, 10, 58, -61, 10,
- -95, 10, 10, 116, 10, 116, -61, 10,
- -87, 10, 10, 114, 10, 101, 10, 108,
- 10, 108, 10, 101, 10, 109, 10, 122,
- -59, 10, -111, 10, -61, 10, -87, 10,
- 10, 108, 10, 100, -61, 10, -95, 10,
- 10, 107, 97, 106, 100, -61, -87, 108,
- 100, -61, -95, 107, 58, 10, 10, 10,
- 32, 35, 74, 124, 9, 13, 10, 101,
- 10, 108, 10, 108, 10, 101, 10, 109,
- 10, 122, -59, 10, -111, 10, 10, 58,
- 32, 124, 9, 13, 10, 32, 92, 124,
- 9, 13, 10, 92, 124, 10, 92, 10,
- 32, 92, 124, 9, 13, -61, 10, 32,
- 34, 35, 37, 42, 64, 65, 68, 70,
- 72, 74, 77, 80, 124, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 100, 107, 109, 10,
- 111, 10, 116, 10, 116, 10, 107, 10,
- 111, 10, 114, 10, 101, 105, 10, 110,
- 10, 110, 10, 121, 10, 105, 10, 98,
- 10, 101, 10, 110, 10, 101, 10, 111,
- 10, 114, 10, 103, 10, 97, 10, 116,
- -61, 10, -77, 10, 10, 107, -61, 10,
- -74, 10, 10, 110, 10, 121, 10, 118,
- 10, 58, 10, 97, 10, 101, 10, 108,
- 10, 108, 10, 101, 10, 109, 10, 122,
- -59, 10, -111, 10, 10, 97, 10, 106,
- 10, 100, 10, 10, -61, 10, 32, 35,
- 37, 42, 64, 65, 68, 70, 72, 74,
- 77, 9, 13, -119, 10, 10, 115, 10,
- 32, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 100, 107,
- 109, 10, 111, 10, 116, 10, 116, 10,
- 107, 10, 111, 10, 114, 10, 101, 105,
- 10, 110, 10, 110, 10, 121, 10, 105,
- 10, 98, 10, 101, 10, 110, 10, 101,
- 10, 111, 10, 114, 10, 103, 10, 97,
- 10, 116, -61, 10, -77, 10, 10, 107,
- -61, 10, -74, 10, 10, 110, 10, 121,
- 10, 118, 10, 32, 58, 10, 118, -61,
- 10, -95, 10, 10, 122, 10, 108, 10,
- 97, 10, 116, 10, 58, -61, 10, 97,
- -95, 10, 10, 116, 10, 116, -61, 10,
- -87, 10, 10, 114, 10, 101, 10, 108,
- 10, 108, 10, 101, 10, 109, 10, 122,
- -59, 10, -111, 10, 10, 97, 10, 106,
- 10, 100, -69, -65, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 1, 2, 2, 16,
- 1, 1, 2, 2, 3, 3, 3, 3,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 3, 5, 3, 3, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 13, 2, 2,
- 2, 16, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 13, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 4, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 9, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 5, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 4, 3,
- 2, 4, 16, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 4, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 13, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 4,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 1, 1, 1, 1,
- 1, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 1, 0,
- 0, 1, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 25, 28, 31,
- 49, 51, 53, 56, 59, 64, 69, 74,
- 79, 83, 87, 90, 92, 94, 96, 98,
- 100, 102, 104, 106, 108, 110, 112, 114,
- 116, 118, 120, 125, 132, 137, 141, 143,
- 145, 147, 149, 151, 153, 156, 158, 160,
- 162, 164, 166, 168, 170, 172, 174, 176,
- 178, 180, 182, 184, 186, 188, 190, 192,
- 194, 196, 198, 201, 203, 205, 207, 209,
- 211, 213, 215, 217, 219, 221, 236, 239,
- 242, 245, 263, 266, 268, 270, 272, 274,
- 276, 278, 280, 282, 284, 299, 302, 305,
- 308, 311, 314, 317, 320, 323, 326, 329,
- 332, 335, 338, 341, 344, 347, 350, 355,
- 358, 361, 364, 367, 370, 373, 377, 380,
- 383, 386, 389, 392, 395, 398, 401, 404,
- 407, 410, 413, 416, 419, 422, 425, 428,
- 431, 434, 437, 440, 444, 447, 450, 453,
- 456, 459, 462, 465, 468, 471, 474, 477,
- 480, 483, 486, 489, 492, 495, 498, 501,
- 504, 506, 508, 510, 512, 514, 516, 518,
- 520, 522, 524, 526, 537, 540, 543, 546,
- 549, 552, 555, 558, 561, 564, 567, 570,
- 573, 576, 579, 582, 585, 588, 591, 594,
- 597, 600, 603, 606, 609, 612, 615, 618,
- 622, 625, 628, 631, 634, 637, 640, 643,
- 646, 649, 652, 655, 658, 661, 664, 667,
- 670, 673, 676, 679, 682, 685, 688, 691,
- 694, 697, 700, 703, 706, 709, 712, 714,
- 716, 718, 720, 722, 724, 726, 728, 730,
- 732, 734, 736, 738, 745, 748, 751, 754,
- 757, 760, 763, 766, 769, 772, 776, 782,
- 786, 789, 795, 813, 816, 819, 822, 825,
- 828, 831, 834, 837, 840, 843, 846, 849,
- 852, 855, 860, 863, 866, 869, 872, 875,
- 878, 882, 885, 888, 891, 894, 897, 900,
- 903, 906, 909, 912, 915, 918, 921, 924,
- 927, 930, 933, 936, 939, 942, 945, 948,
- 951, 954, 957, 960, 963, 966, 969, 972,
- 975, 978, 981, 984, 986, 988, 1003, 1006,
- 1009, 1012, 1015, 1018, 1021, 1024, 1027, 1030,
- 1033, 1036, 1039, 1042, 1045, 1048, 1051, 1054,
- 1059, 1062, 1065, 1068, 1071, 1074, 1077, 1081,
- 1084, 1087, 1090, 1093, 1096, 1099, 1102, 1105,
- 1108, 1111, 1114, 1117, 1120, 1123, 1126, 1129,
- 1132, 1135, 1138, 1141, 1144, 1148, 1151, 1154,
- 1157, 1160, 1163, 1166, 1169, 1172, 1176, 1179,
- 1182, 1185, 1188, 1191, 1194, 1197, 1200, 1203,
- 1206, 1209, 1212, 1215, 1218, 1221, 1224, 1227,
- 1229, 1231
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 391, 7, 7, 8, 18, 20, 4,
- 34, 37, 52, 53, 82, 160, 230, 233,
- 253, 7, 0, 3, 0, 4, 0, 5,
- 0, 7, 19, 6, 7, 19, 6, 2,
- 7, 7, 8, 18, 20, 4, 34, 37,
- 52, 53, 82, 160, 230, 233, 253, 7,
- 0, 9, 0, 10, 0, 12, 11, 11,
- 12, 11, 11, 13, 13, 14, 13, 13,
- 13, 13, 14, 13, 13, 13, 13, 15,
- 13, 13, 13, 13, 16, 13, 13, 7,
- 17, 17, 0, 7, 17, 17, 0, 7,
- 19, 18, 7, 0, 21, 0, 22, 0,
- 23, 0, 24, 0, 25, 0, 26, 0,
- 27, 0, 28, 0, 29, 0, 30, 0,
- 31, 0, 32, 0, 33, 0, 393, 0,
- 0, 0, 0, 0, 35, 36, 7, 36,
- 36, 34, 35, 35, 7, 36, 34, 36,
- 0, 38, 41, 44, 0, 39, 0, 40,
- 0, 4, 0, 42, 0, 43, 0, 4,
- 0, 45, 41, 0, 46, 0, 47, 0,
- 48, 0, 49, 0, 50, 0, 51, 0,
- 4, 0, 4, 0, 54, 0, 55, 0,
- 56, 0, 57, 0, 58, 0, 59, 0,
- 60, 0, 61, 0, 62, 0, 63, 0,
- 64, 0, 65, 0, 66, 0, 67, 315,
- 0, 68, 0, 69, 0, 70, 0, 71,
- 0, 72, 0, 73, 0, 74, 0, 75,
- 0, 77, 76, 77, 76, 78, 77, 77,
- 7, 259, 80, 7, 273, 288, 289, 303,
- 304, 312, 77, 76, 79, 77, 76, 77,
- 80, 76, 77, 81, 76, 2, 7, 7,
- 8, 18, 20, 4, 34, 37, 52, 53,
- 82, 160, 230, 233, 253, 7, 0, 83,
- 4, 0, 84, 0, 85, 0, 86, 0,
- 87, 0, 88, 0, 89, 0, 90, 0,
- 92, 91, 92, 91, 93, 92, 92, 7,
- 96, 95, 7, 110, 125, 126, 148, 149,
- 157, 92, 91, 94, 92, 91, 92, 95,
- 91, 92, 81, 91, 92, 97, 91, 92,
- 98, 91, 92, 99, 91, 92, 100, 91,
- 92, 101, 91, 92, 102, 91, 92, 103,
- 91, 92, 104, 91, 92, 105, 91, 92,
- 106, 91, 92, 107, 91, 92, 108, 91,
- 92, 109, 91, 92, 7, 91, 92, 111,
- 114, 117, 91, 92, 112, 91, 92, 113,
- 91, 92, 95, 91, 92, 115, 91, 92,
- 116, 91, 92, 95, 91, 92, 118, 114,
- 91, 92, 119, 91, 92, 120, 91, 92,
- 121, 91, 92, 122, 91, 92, 123, 91,
- 92, 124, 91, 92, 95, 91, 92, 95,
- 91, 92, 127, 91, 92, 128, 91, 92,
- 129, 91, 92, 130, 91, 92, 131, 91,
- 132, 92, 91, 133, 92, 91, 92, 134,
- 91, 135, 92, 91, 136, 92, 91, 92,
- 137, 91, 92, 138, 91, 92, 139, 91,
- 92, 140, 81, 91, 92, 141, 91, 142,
- 92, 91, 143, 92, 91, 92, 144, 91,
- 92, 145, 91, 92, 146, 91, 92, 147,
- 91, 92, 81, 91, 92, 95, 91, 92,
- 150, 91, 92, 151, 91, 92, 152, 91,
- 92, 153, 91, 92, 154, 91, 92, 155,
- 91, 156, 92, 91, 147, 92, 91, 92,
- 158, 91, 92, 159, 91, 92, 95, 91,
- 161, 0, 162, 0, 163, 0, 164, 0,
- 165, 0, 166, 0, 167, 0, 168, 0,
- 169, 0, 171, 170, 171, 170, 171, 171,
- 7, 172, 7, 186, 208, 215, 223, 171,
- 170, 171, 173, 170, 171, 174, 170, 171,
- 175, 170, 171, 176, 170, 171, 177, 170,
- 171, 178, 170, 171, 179, 170, 171, 180,
- 170, 171, 181, 170, 171, 182, 170, 171,
- 183, 170, 171, 184, 170, 171, 185, 170,
- 171, 7, 170, 171, 187, 170, 171, 188,
- 170, 171, 189, 170, 171, 190, 170, 171,
- 191, 170, 192, 171, 170, 193, 171, 170,
- 171, 194, 170, 195, 171, 170, 196, 171,
- 170, 171, 197, 170, 171, 198, 170, 171,
- 199, 170, 171, 200, 81, 170, 171, 201,
- 170, 202, 171, 170, 203, 171, 170, 171,
- 204, 170, 171, 205, 170, 171, 206, 170,
- 171, 207, 170, 171, 81, 170, 209, 171,
- 170, 210, 171, 170, 171, 211, 170, 171,
- 212, 170, 213, 171, 170, 214, 171, 170,
- 171, 207, 170, 171, 216, 170, 171, 217,
- 170, 171, 218, 170, 171, 219, 170, 171,
- 220, 170, 171, 221, 170, 222, 171, 170,
- 207, 171, 170, 224, 171, 170, 225, 171,
- 170, 171, 226, 170, 171, 227, 170, 228,
- 171, 170, 229, 171, 170, 171, 207, 170,
- 231, 0, 232, 0, 4, 0, 234, 0,
- 235, 0, 236, 0, 237, 0, 238, 0,
- 239, 0, 240, 0, 241, 0, 243, 242,
- 243, 242, 243, 243, 7, 244, 7, 243,
- 242, 243, 245, 242, 243, 246, 242, 243,
- 247, 242, 243, 248, 242, 243, 249, 242,
- 243, 250, 242, 251, 243, 242, 252, 243,
- 242, 243, 81, 242, 253, 254, 253, 0,
- 258, 257, 256, 254, 257, 255, 0, 256,
- 254, 255, 0, 256, 255, 258, 257, 256,
- 254, 257, 255, 2, 258, 258, 8, 18,
- 20, 4, 34, 37, 52, 53, 82, 160,
- 230, 233, 253, 258, 0, 77, 260, 76,
- 77, 261, 76, 77, 262, 76, 77, 263,
- 76, 77, 264, 76, 77, 265, 76, 77,
- 266, 76, 77, 267, 76, 77, 268, 76,
- 77, 269, 76, 77, 270, 76, 77, 271,
- 76, 77, 272, 76, 77, 7, 76, 77,
- 274, 277, 280, 76, 77, 275, 76, 77,
- 276, 76, 77, 80, 76, 77, 278, 76,
- 77, 279, 76, 77, 80, 76, 77, 281,
- 277, 76, 77, 282, 76, 77, 283, 76,
- 77, 284, 76, 77, 285, 76, 77, 286,
- 76, 77, 287, 76, 77, 80, 76, 77,
- 80, 76, 77, 290, 76, 77, 291, 76,
- 77, 292, 76, 77, 293, 76, 77, 294,
- 76, 295, 77, 76, 296, 77, 76, 77,
- 297, 76, 298, 77, 76, 299, 77, 76,
- 77, 300, 76, 77, 301, 76, 77, 302,
- 76, 77, 81, 76, 77, 80, 76, 77,
- 305, 76, 77, 306, 76, 77, 307, 76,
- 77, 308, 76, 77, 309, 76, 77, 310,
- 76, 311, 77, 76, 302, 77, 76, 77,
- 313, 76, 77, 314, 76, 77, 80, 76,
- 317, 316, 317, 316, 318, 317, 317, 7,
- 321, 320, 7, 335, 350, 351, 373, 380,
- 388, 317, 316, 319, 317, 316, 317, 320,
- 316, 317, 81, 316, 317, 322, 316, 317,
- 323, 316, 317, 324, 316, 317, 325, 316,
- 317, 326, 316, 317, 327, 316, 317, 328,
- 316, 317, 329, 316, 317, 330, 316, 317,
- 331, 316, 317, 332, 316, 317, 333, 316,
- 317, 334, 316, 317, 7, 316, 317, 336,
- 339, 342, 316, 317, 337, 316, 317, 338,
- 316, 317, 320, 316, 317, 340, 316, 317,
- 341, 316, 317, 320, 316, 317, 343, 339,
- 316, 317, 344, 316, 317, 345, 316, 317,
- 346, 316, 317, 347, 316, 317, 348, 316,
- 317, 349, 316, 317, 320, 316, 317, 320,
- 316, 317, 352, 316, 317, 353, 316, 317,
- 354, 316, 317, 355, 316, 317, 356, 316,
- 357, 317, 316, 358, 317, 316, 317, 359,
- 316, 360, 317, 316, 361, 317, 316, 317,
- 362, 316, 317, 363, 316, 317, 364, 316,
- 317, 365, 81, 316, 317, 366, 316, 367,
- 317, 316, 368, 317, 316, 317, 369, 316,
- 317, 370, 316, 317, 371, 316, 317, 372,
- 316, 317, 81, 316, 374, 317, 320, 316,
- 375, 317, 316, 317, 376, 316, 317, 377,
- 316, 378, 317, 316, 379, 317, 316, 317,
- 372, 316, 317, 381, 316, 317, 382, 316,
- 317, 383, 316, 317, 384, 316, 317, 385,
- 316, 317, 386, 316, 387, 317, 316, 372,
- 317, 316, 317, 389, 316, 317, 390, 316,
- 317, 320, 316, 392, 0, 7, 0, 0,
- 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 29, 0, 54, 0, 5, 1, 0, 29,
- 1, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 0,
- 43, 149, 126, 57, 110, 23, 0, 29,
- 54, 0, 5, 1, 0, 29, 1, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 84, 54, 0,
- 78, 33, 84, 78, 84, 84, 84, 84,
- 84, 84, 0, 0, 0, 54, 0, 54,
- 0, 0, 54, 19, 0, 63, 130, 31,
- 60, 57, 31, 63, 57, 63, 63, 63,
- 63, 63, 63, 63, 66, 31, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 84, 54, 0, 72,
- 33, 84, 72, 84, 84, 84, 84, 84,
- 84, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 15, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 15, 0, 54, 0,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 15, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 15, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 69, 33, 69, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 13, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 13, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 81, 84, 81, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 21, 0, 0, 0, 0, 43,
- 54, 37, 37, 87, 37, 37, 43, 0,
- 39, 0, 43, 0, 0, 54, 0, 0,
- 39, 0, 0, 96, 54, 0, 93, 90,
- 41, 96, 90, 96, 96, 96, 96, 96,
- 96, 96, 99, 0, 43, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 54,
- 0, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 19, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 144, 57, 54, 0, 84, 54, 0, 75,
- 33, 84, 75, 84, 84, 84, 84, 84,
- 84, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 17, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 17, 0, 54, 0,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 17, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 17, 0, 0, 54, 0, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 43, 0, 43, 0,
- 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 393;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 980 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
-
- #line 987 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1277 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1340 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/hu.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_hu()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Hu", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/hu.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/hu.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 22, 24, 26,
- 44, 45, 46, 48, 50, 55, 60, 65,
- 70, 74, 78, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 100, 107, 112, 115, 116,
- 117, 118, 119, 120, 121, 123, 124, 125,
- 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 146, 147, 148, 149, 150,
- 151, 152, 153, 154, 155, 156, 171, 173,
- 175, 177, 195, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 221, 223, 225,
- 227, 229, 231, 233, 235, 237, 239, 241,
- 243, 245, 247, 249, 251, 253, 255, 259,
- 261, 263, 265, 267, 269, 271, 274, 276,
- 278, 280, 282, 284, 286, 288, 290, 292,
- 294, 296, 298, 300, 302, 304, 306, 308,
- 310, 312, 314, 316, 319, 321, 323, 325,
- 327, 329, 331, 333, 335, 337, 339, 341,
- 343, 345, 347, 349, 351, 353, 355, 357,
- 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 381, 383, 385, 387,
- 389, 391, 393, 395, 397, 399, 401, 403,
- 405, 407, 409, 411, 413, 415, 417, 419,
- 421, 423, 425, 427, 429, 431, 433, 435,
- 438, 440, 442, 444, 446, 448, 450, 452,
- 454, 456, 458, 460, 462, 464, 466, 468,
- 470, 472, 474, 476, 478, 480, 482, 484,
- 486, 488, 490, 492, 494, 496, 498, 499,
- 500, 501, 502, 503, 504, 505, 506, 507,
- 508, 509, 510, 511, 518, 520, 522, 524,
- 526, 528, 530, 532, 534, 536, 540, 546,
- 549, 551, 557, 575, 577, 579, 581, 583,
- 585, 587, 589, 591, 593, 595, 597, 599,
- 601, 603, 607, 609, 611, 613, 615, 617,
- 619, 622, 624, 626, 628, 630, 632, 634,
- 636, 638, 640, 642, 644, 646, 648, 650,
- 652, 654, 656, 658, 660, 662, 664, 666,
- 668, 670, 672, 674, 676, 678, 680, 682,
- 684, 686, 688, 690, 691, 692, 707, 709,
- 711, 713, 715, 717, 719, 721, 723, 725,
- 727, 729, 731, 733, 735, 737, 739, 741,
- 745, 747, 749, 751, 753, 755, 757, 760,
- 762, 764, 766, 768, 770, 772, 774, 776,
- 778, 780, 782, 784, 786, 788, 790, 792,
- 794, 796, 798, 800, 802, 805, 807, 809,
- 811, 813, 815, 817, 819, 821, 824, 826,
- 828, 830, 832, 834, 836, 838, 840, 842,
- 844, 846, 848, 850, 852, 854, 856, 858,
- 859, 860
-};
-
-static const char _lexer_trans_keys[] = {
- -61, -17, 10, 32, 34, 35, 37, 42,
- 64, 65, 68, 70, 72, 74, 77, 80,
- 124, 9, 13, -119, 115, 32, 10, 13,
- 10, 13, -61, 10, 32, 34, 35, 37,
- 42, 64, 65, 68, 70, 72, 74, 77,
- 80, 124, 9, 13, 34, 34, 10, 13,
- 10, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 9, 13, 10, 32, 9, 13, 10, 13,
- 10, 95, 70, 69, 65, 84, 85, 82,
- 69, 95, 69, 78, 68, 95, 37, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 100, 107, 109, 111, 116, 116, 107, 111,
- 114, 101, 105, 110, 110, 121, 105, 98,
- 101, 110, 101, 111, 114, 103, 97, 116,
- -61, -77, 107, -61, -74, 110, 121, 118,
- 32, 58, 118, -61, -95, 122, 108, 97,
- 116, 58, 10, 10, -61, 10, 32, 35,
- 37, 42, 64, 65, 68, 70, 72, 74,
- 77, 9, 13, -119, 10, 10, 115, 10,
- 32, -61, 10, 32, 34, 35, 37, 42,
- 64, 65, 68, 70, 72, 74, 77, 80,
- 124, 9, 13, -61, 97, -95, 116, 116,
- -61, -87, 114, 58, 10, 10, -61, 10,
- 32, 35, 37, 42, 64, 65, 68, 70,
- 72, 74, 77, 9, 13, -119, 10, 10,
- 115, 10, 32, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 100, 107, 109, 10, 111, 10, 116, 10,
- 116, 10, 107, 10, 111, 10, 114, 10,
- 101, 105, 10, 110, 10, 110, 10, 121,
- 10, 105, 10, 98, 10, 101, 10, 110,
- 10, 101, 10, 111, 10, 114, 10, 103,
- 10, 97, 10, 116, -61, 10, -77, 10,
- 10, 107, -61, 10, -74, 10, 10, 110,
- 10, 121, 10, 118, 10, 32, 58, 10,
- 118, -61, 10, -95, 10, 10, 122, 10,
- 108, 10, 97, 10, 116, 10, 58, 10,
- 97, 10, 101, 10, 108, 10, 108, 10,
- 101, 10, 109, 10, 122, -59, 10, -111,
- 10, 10, 97, 10, 106, 10, 100, 101,
- 108, 108, 101, 109, 122, -59, -111, 58,
- 10, 10, 10, 32, 35, 37, 64, 70,
- 72, 74, 80, 9, 13, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 111, 10, 114, 10, 103, 10,
- 97, 10, 116, -61, 10, -77, 10, 10,
- 107, -61, 10, -74, 10, 10, 110, 10,
- 121, 10, 118, 10, 32, 58, 10, 118,
- -61, 10, -95, 10, 10, 122, 10, 108,
- 10, 97, 10, 116, 10, 58, -61, 10,
- -95, 10, 10, 116, 10, 116, -61, 10,
- -87, 10, 10, 114, 10, 101, 10, 108,
- 10, 108, 10, 101, 10, 109, 10, 122,
- -59, 10, -111, 10, -61, 10, -87, 10,
- 10, 108, 10, 100, -61, 10, -95, 10,
- 10, 107, 97, 106, 100, -61, -87, 108,
- 100, -61, -95, 107, 58, 10, 10, 10,
- 32, 35, 74, 124, 9, 13, 10, 101,
- 10, 108, 10, 108, 10, 101, 10, 109,
- 10, 122, -59, 10, -111, 10, 10, 58,
- 32, 124, 9, 13, 10, 32, 92, 124,
- 9, 13, 10, 92, 124, 10, 92, 10,
- 32, 92, 124, 9, 13, -61, 10, 32,
- 34, 35, 37, 42, 64, 65, 68, 70,
- 72, 74, 77, 80, 124, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 100, 107, 109, 10,
- 111, 10, 116, 10, 116, 10, 107, 10,
- 111, 10, 114, 10, 101, 105, 10, 110,
- 10, 110, 10, 121, 10, 105, 10, 98,
- 10, 101, 10, 110, 10, 101, 10, 111,
- 10, 114, 10, 103, 10, 97, 10, 116,
- -61, 10, -77, 10, 10, 107, -61, 10,
- -74, 10, 10, 110, 10, 121, 10, 118,
- 10, 58, 10, 97, 10, 101, 10, 108,
- 10, 108, 10, 101, 10, 109, 10, 122,
- -59, 10, -111, 10, 10, 97, 10, 106,
- 10, 100, 10, 10, -61, 10, 32, 35,
- 37, 42, 64, 65, 68, 70, 72, 74,
- 77, 9, 13, -119, 10, 10, 115, 10,
- 32, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 100, 107,
- 109, 10, 111, 10, 116, 10, 116, 10,
- 107, 10, 111, 10, 114, 10, 101, 105,
- 10, 110, 10, 110, 10, 121, 10, 105,
- 10, 98, 10, 101, 10, 110, 10, 101,
- 10, 111, 10, 114, 10, 103, 10, 97,
- 10, 116, -61, 10, -77, 10, 10, 107,
- -61, 10, -74, 10, 10, 110, 10, 121,
- 10, 118, 10, 32, 58, 10, 118, -61,
- 10, -95, 10, 10, 122, 10, 108, 10,
- 97, 10, 116, 10, 58, -61, 10, 97,
- -95, 10, 10, 116, 10, 116, -61, 10,
- -87, 10, 10, 114, 10, 101, 10, 108,
- 10, 108, 10, 101, 10, 109, 10, 122,
- -59, 10, -111, 10, 10, 97, 10, 106,
- 10, 100, -69, -65, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 1, 2, 2, 16,
- 1, 1, 2, 2, 3, 3, 3, 3,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 3, 5, 3, 3, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 13, 2, 2,
- 2, 16, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 13, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 4, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 9, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 5, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 4, 3,
- 2, 4, 16, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 4, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 13, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 4,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 1, 1, 1, 1,
- 1, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 1, 0,
- 0, 1, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 25, 28, 31,
- 49, 51, 53, 56, 59, 64, 69, 74,
- 79, 83, 87, 90, 92, 94, 96, 98,
- 100, 102, 104, 106, 108, 110, 112, 114,
- 116, 118, 120, 125, 132, 137, 141, 143,
- 145, 147, 149, 151, 153, 156, 158, 160,
- 162, 164, 166, 168, 170, 172, 174, 176,
- 178, 180, 182, 184, 186, 188, 190, 192,
- 194, 196, 198, 201, 203, 205, 207, 209,
- 211, 213, 215, 217, 219, 221, 236, 239,
- 242, 245, 263, 266, 268, 270, 272, 274,
- 276, 278, 280, 282, 284, 299, 302, 305,
- 308, 311, 314, 317, 320, 323, 326, 329,
- 332, 335, 338, 341, 344, 347, 350, 355,
- 358, 361, 364, 367, 370, 373, 377, 380,
- 383, 386, 389, 392, 395, 398, 401, 404,
- 407, 410, 413, 416, 419, 422, 425, 428,
- 431, 434, 437, 440, 444, 447, 450, 453,
- 456, 459, 462, 465, 468, 471, 474, 477,
- 480, 483, 486, 489, 492, 495, 498, 501,
- 504, 506, 508, 510, 512, 514, 516, 518,
- 520, 522, 524, 526, 537, 540, 543, 546,
- 549, 552, 555, 558, 561, 564, 567, 570,
- 573, 576, 579, 582, 585, 588, 591, 594,
- 597, 600, 603, 606, 609, 612, 615, 618,
- 622, 625, 628, 631, 634, 637, 640, 643,
- 646, 649, 652, 655, 658, 661, 664, 667,
- 670, 673, 676, 679, 682, 685, 688, 691,
- 694, 697, 700, 703, 706, 709, 712, 714,
- 716, 718, 720, 722, 724, 726, 728, 730,
- 732, 734, 736, 738, 745, 748, 751, 754,
- 757, 760, 763, 766, 769, 772, 776, 782,
- 786, 789, 795, 813, 816, 819, 822, 825,
- 828, 831, 834, 837, 840, 843, 846, 849,
- 852, 855, 860, 863, 866, 869, 872, 875,
- 878, 882, 885, 888, 891, 894, 897, 900,
- 903, 906, 909, 912, 915, 918, 921, 924,
- 927, 930, 933, 936, 939, 942, 945, 948,
- 951, 954, 957, 960, 963, 966, 969, 972,
- 975, 978, 981, 984, 986, 988, 1003, 1006,
- 1009, 1012, 1015, 1018, 1021, 1024, 1027, 1030,
- 1033, 1036, 1039, 1042, 1045, 1048, 1051, 1054,
- 1059, 1062, 1065, 1068, 1071, 1074, 1077, 1081,
- 1084, 1087, 1090, 1093, 1096, 1099, 1102, 1105,
- 1108, 1111, 1114, 1117, 1120, 1123, 1126, 1129,
- 1132, 1135, 1138, 1141, 1144, 1148, 1151, 1154,
- 1157, 1160, 1163, 1166, 1169, 1172, 1176, 1179,
- 1182, 1185, 1188, 1191, 1194, 1197, 1200, 1203,
- 1206, 1209, 1212, 1215, 1218, 1221, 1224, 1227,
- 1229, 1231
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 391, 7, 7, 8, 18, 20, 4,
- 34, 37, 52, 53, 82, 160, 230, 233,
- 253, 7, 0, 3, 0, 4, 0, 5,
- 0, 7, 19, 6, 7, 19, 6, 2,
- 7, 7, 8, 18, 20, 4, 34, 37,
- 52, 53, 82, 160, 230, 233, 253, 7,
- 0, 9, 0, 10, 0, 12, 11, 11,
- 12, 11, 11, 13, 13, 14, 13, 13,
- 13, 13, 14, 13, 13, 13, 13, 15,
- 13, 13, 13, 13, 16, 13, 13, 7,
- 17, 17, 0, 7, 17, 17, 0, 7,
- 19, 18, 7, 0, 21, 0, 22, 0,
- 23, 0, 24, 0, 25, 0, 26, 0,
- 27, 0, 28, 0, 29, 0, 30, 0,
- 31, 0, 32, 0, 33, 0, 393, 0,
- 0, 0, 0, 0, 35, 36, 7, 36,
- 36, 34, 35, 35, 7, 36, 34, 36,
- 0, 38, 41, 44, 0, 39, 0, 40,
- 0, 4, 0, 42, 0, 43, 0, 4,
- 0, 45, 41, 0, 46, 0, 47, 0,
- 48, 0, 49, 0, 50, 0, 51, 0,
- 4, 0, 4, 0, 54, 0, 55, 0,
- 56, 0, 57, 0, 58, 0, 59, 0,
- 60, 0, 61, 0, 62, 0, 63, 0,
- 64, 0, 65, 0, 66, 0, 67, 315,
- 0, 68, 0, 69, 0, 70, 0, 71,
- 0, 72, 0, 73, 0, 74, 0, 75,
- 0, 77, 76, 77, 76, 78, 77, 77,
- 7, 259, 80, 7, 273, 288, 289, 303,
- 304, 312, 77, 76, 79, 77, 76, 77,
- 80, 76, 77, 81, 76, 2, 7, 7,
- 8, 18, 20, 4, 34, 37, 52, 53,
- 82, 160, 230, 233, 253, 7, 0, 83,
- 4, 0, 84, 0, 85, 0, 86, 0,
- 87, 0, 88, 0, 89, 0, 90, 0,
- 92, 91, 92, 91, 93, 92, 92, 7,
- 96, 95, 7, 110, 125, 126, 148, 149,
- 157, 92, 91, 94, 92, 91, 92, 95,
- 91, 92, 81, 91, 92, 97, 91, 92,
- 98, 91, 92, 99, 91, 92, 100, 91,
- 92, 101, 91, 92, 102, 91, 92, 103,
- 91, 92, 104, 91, 92, 105, 91, 92,
- 106, 91, 92, 107, 91, 92, 108, 91,
- 92, 109, 91, 92, 7, 91, 92, 111,
- 114, 117, 91, 92, 112, 91, 92, 113,
- 91, 92, 95, 91, 92, 115, 91, 92,
- 116, 91, 92, 95, 91, 92, 118, 114,
- 91, 92, 119, 91, 92, 120, 91, 92,
- 121, 91, 92, 122, 91, 92, 123, 91,
- 92, 124, 91, 92, 95, 91, 92, 95,
- 91, 92, 127, 91, 92, 128, 91, 92,
- 129, 91, 92, 130, 91, 92, 131, 91,
- 132, 92, 91, 133, 92, 91, 92, 134,
- 91, 135, 92, 91, 136, 92, 91, 92,
- 137, 91, 92, 138, 91, 92, 139, 91,
- 92, 140, 81, 91, 92, 141, 91, 142,
- 92, 91, 143, 92, 91, 92, 144, 91,
- 92, 145, 91, 92, 146, 91, 92, 147,
- 91, 92, 81, 91, 92, 95, 91, 92,
- 150, 91, 92, 151, 91, 92, 152, 91,
- 92, 153, 91, 92, 154, 91, 92, 155,
- 91, 156, 92, 91, 147, 92, 91, 92,
- 158, 91, 92, 159, 91, 92, 95, 91,
- 161, 0, 162, 0, 163, 0, 164, 0,
- 165, 0, 166, 0, 167, 0, 168, 0,
- 169, 0, 171, 170, 171, 170, 171, 171,
- 7, 172, 7, 186, 208, 215, 223, 171,
- 170, 171, 173, 170, 171, 174, 170, 171,
- 175, 170, 171, 176, 170, 171, 177, 170,
- 171, 178, 170, 171, 179, 170, 171, 180,
- 170, 171, 181, 170, 171, 182, 170, 171,
- 183, 170, 171, 184, 170, 171, 185, 170,
- 171, 7, 170, 171, 187, 170, 171, 188,
- 170, 171, 189, 170, 171, 190, 170, 171,
- 191, 170, 192, 171, 170, 193, 171, 170,
- 171, 194, 170, 195, 171, 170, 196, 171,
- 170, 171, 197, 170, 171, 198, 170, 171,
- 199, 170, 171, 200, 81, 170, 171, 201,
- 170, 202, 171, 170, 203, 171, 170, 171,
- 204, 170, 171, 205, 170, 171, 206, 170,
- 171, 207, 170, 171, 81, 170, 209, 171,
- 170, 210, 171, 170, 171, 211, 170, 171,
- 212, 170, 213, 171, 170, 214, 171, 170,
- 171, 207, 170, 171, 216, 170, 171, 217,
- 170, 171, 218, 170, 171, 219, 170, 171,
- 220, 170, 171, 221, 170, 222, 171, 170,
- 207, 171, 170, 224, 171, 170, 225, 171,
- 170, 171, 226, 170, 171, 227, 170, 228,
- 171, 170, 229, 171, 170, 171, 207, 170,
- 231, 0, 232, 0, 4, 0, 234, 0,
- 235, 0, 236, 0, 237, 0, 238, 0,
- 239, 0, 240, 0, 241, 0, 243, 242,
- 243, 242, 243, 243, 7, 244, 7, 243,
- 242, 243, 245, 242, 243, 246, 242, 243,
- 247, 242, 243, 248, 242, 243, 249, 242,
- 243, 250, 242, 251, 243, 242, 252, 243,
- 242, 243, 81, 242, 253, 254, 253, 0,
- 258, 257, 256, 254, 257, 255, 0, 256,
- 254, 255, 0, 256, 255, 258, 257, 256,
- 254, 257, 255, 2, 258, 258, 8, 18,
- 20, 4, 34, 37, 52, 53, 82, 160,
- 230, 233, 253, 258, 0, 77, 260, 76,
- 77, 261, 76, 77, 262, 76, 77, 263,
- 76, 77, 264, 76, 77, 265, 76, 77,
- 266, 76, 77, 267, 76, 77, 268, 76,
- 77, 269, 76, 77, 270, 76, 77, 271,
- 76, 77, 272, 76, 77, 7, 76, 77,
- 274, 277, 280, 76, 77, 275, 76, 77,
- 276, 76, 77, 80, 76, 77, 278, 76,
- 77, 279, 76, 77, 80, 76, 77, 281,
- 277, 76, 77, 282, 76, 77, 283, 76,
- 77, 284, 76, 77, 285, 76, 77, 286,
- 76, 77, 287, 76, 77, 80, 76, 77,
- 80, 76, 77, 290, 76, 77, 291, 76,
- 77, 292, 76, 77, 293, 76, 77, 294,
- 76, 295, 77, 76, 296, 77, 76, 77,
- 297, 76, 298, 77, 76, 299, 77, 76,
- 77, 300, 76, 77, 301, 76, 77, 302,
- 76, 77, 81, 76, 77, 80, 76, 77,
- 305, 76, 77, 306, 76, 77, 307, 76,
- 77, 308, 76, 77, 309, 76, 77, 310,
- 76, 311, 77, 76, 302, 77, 76, 77,
- 313, 76, 77, 314, 76, 77, 80, 76,
- 317, 316, 317, 316, 318, 317, 317, 7,
- 321, 320, 7, 335, 350, 351, 373, 380,
- 388, 317, 316, 319, 317, 316, 317, 320,
- 316, 317, 81, 316, 317, 322, 316, 317,
- 323, 316, 317, 324, 316, 317, 325, 316,
- 317, 326, 316, 317, 327, 316, 317, 328,
- 316, 317, 329, 316, 317, 330, 316, 317,
- 331, 316, 317, 332, 316, 317, 333, 316,
- 317, 334, 316, 317, 7, 316, 317, 336,
- 339, 342, 316, 317, 337, 316, 317, 338,
- 316, 317, 320, 316, 317, 340, 316, 317,
- 341, 316, 317, 320, 316, 317, 343, 339,
- 316, 317, 344, 316, 317, 345, 316, 317,
- 346, 316, 317, 347, 316, 317, 348, 316,
- 317, 349, 316, 317, 320, 316, 317, 320,
- 316, 317, 352, 316, 317, 353, 316, 317,
- 354, 316, 317, 355, 316, 317, 356, 316,
- 357, 317, 316, 358, 317, 316, 317, 359,
- 316, 360, 317, 316, 361, 317, 316, 317,
- 362, 316, 317, 363, 316, 317, 364, 316,
- 317, 365, 81, 316, 317, 366, 316, 367,
- 317, 316, 368, 317, 316, 317, 369, 316,
- 317, 370, 316, 317, 371, 316, 317, 372,
- 316, 317, 81, 316, 374, 317, 320, 316,
- 375, 317, 316, 317, 376, 316, 317, 377,
- 316, 378, 317, 316, 379, 317, 316, 317,
- 372, 316, 317, 381, 316, 317, 382, 316,
- 317, 383, 316, 317, 384, 316, 317, 385,
- 316, 317, 386, 316, 387, 317, 316, 372,
- 317, 316, 317, 389, 316, 317, 390, 316,
- 317, 320, 316, 392, 0, 7, 0, 0,
- 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 29, 0, 54, 0, 5, 1, 0, 29,
- 1, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 0,
- 43, 149, 126, 57, 110, 23, 0, 29,
- 54, 0, 5, 1, 0, 29, 1, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 84, 54, 0,
- 78, 33, 84, 78, 84, 84, 84, 84,
- 84, 84, 0, 0, 0, 54, 0, 54,
- 0, 0, 54, 19, 0, 63, 130, 31,
- 60, 57, 31, 63, 57, 63, 63, 63,
- 63, 63, 63, 63, 66, 31, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 84, 54, 0, 72,
- 33, 84, 72, 84, 84, 84, 84, 84,
- 84, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 15, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 15, 0, 54, 0,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 15, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 15, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 69, 33, 69, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 13, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 13, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 81, 84, 81, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 21, 0, 0, 0, 0, 43,
- 54, 37, 37, 87, 37, 37, 43, 0,
- 39, 0, 43, 0, 0, 54, 0, 0,
- 39, 0, 0, 96, 54, 0, 93, 90,
- 41, 96, 90, 96, 96, 96, 96, 96,
- 96, 96, 99, 0, 43, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 54,
- 0, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 19, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 144, 57, 54, 0, 84, 54, 0, 75,
- 33, 84, 75, 84, 84, 84, 84, 84,
- 84, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 17, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 17, 0, 54, 0,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 17, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 17, 0, 0, 54, 0, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 43, 0, 43, 0,
- 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 393;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/hu.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 980 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/hu.c.rl"
-
-#line 987 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/hu.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/hu.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/hu.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/hu.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/hu.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/hu.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/hu.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/hu.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/hu.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/hu.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/hu.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/hu.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/hu.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/hu.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/hu.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/hu.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/hu.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/hu.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/hu.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/hu.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/hu.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/hu.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/hu.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/hu.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1277 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/hu.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1340 "ext/gherkin_lexer_hu/gherkin_lexer_hu.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/hu.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_hu()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Hu", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_id/extconf.rb
index d807c2a,d807c2a..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_id/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_id")
--have_library("c", "main")
--create_makefile("gherkin_lexer_id")
diff --cc ext/gherkin_lexer_id/gherkin_lexer_id.c
index 2ac56f4,b504fc9..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_id/gherkin_lexer_id.c
+++ /dev/null
@@@ -1,1208 -1,1208 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 18, 19, 20, 37, 38, 39,
- 41, 43, 48, 53, 58, 63, 67, 71,
- 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 91, 93, 98, 105, 110, 111, 112,
- 113, 114, 115, 116, 117, 118, 125, 127,
- 129, 131, 133, 135, 152, 154, 156, 157,
- 158, 159, 160, 161, 175, 177, 179, 181,
- 183, 185, 187, 189, 191, 193, 195, 197,
- 199, 201, 203, 205, 208, 210, 212, 214,
- 216, 218, 220, 222, 224, 226, 228, 230,
- 232, 234, 236, 238, 240, 242, 244, 246,
- 248, 250, 252, 255, 257, 259, 261, 263,
- 265, 267, 269, 271, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284,
- 295, 297, 299, 301, 303, 305, 307, 309,
- 311, 313, 315, 317, 319, 321, 323, 325,
- 327, 329, 331, 333, 335, 337, 339, 341,
- 343, 345, 347, 349, 351, 353, 355, 357,
- 359, 361, 363, 366, 368, 370, 372, 374,
- 376, 378, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 389, 390, 391, 393,
- 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 416, 418, 420, 422, 424, 426, 428,
- 430, 432, 434, 436, 438, 440, 442, 444,
- 446, 449, 451, 453, 455, 457, 459, 461,
- 463, 465, 467, 469, 471, 473, 475, 477,
- 479, 481, 483, 485, 487, 489, 491, 493,
- 495, 497, 499, 500, 501, 515, 517, 519,
- 521, 523, 525, 527, 529, 531, 533, 535,
- 537, 539, 541, 543, 545, 548, 551, 553,
- 555, 557, 559, 561, 563, 565, 567, 569,
- 571, 573, 575, 577, 579, 581, 583, 585,
- 587, 589, 591, 593, 595, 597, 600, 602,
- 604, 606, 608, 610, 612, 614, 616, 618,
- 619, 620, 621, 625, 631, 634, 636, 642,
- 659
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 67, 68, 70, 75, 77, 83, 84, 124,
- 9, 13, -69, -65, 10, 32, 34, 35,
- 37, 42, 64, 67, 68, 70, 75, 77,
- 83, 84, 124, 9, 13, 34, 34, 10,
- 13, 10, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 9, 13, 10, 32, 9, 13, 10,
- 13, 10, 95, 70, 69, 65, 84, 85,
- 82, 69, 95, 69, 78, 68, 95, 37,
- 32, 10, 13, 10, 13, 13, 32, 64,
- 9, 10, 9, 10, 13, 32, 64, 11,
- 12, 10, 32, 64, 9, 13, 111, 110,
- 116, 111, 104, 58, 10, 10, 10, 32,
- 35, 70, 124, 9, 13, 10, 105, 10,
- 116, 10, 117, 10, 114, 10, 58, 10,
- 32, 34, 35, 37, 42, 64, 67, 68,
- 70, 75, 77, 83, 84, 124, 9, 13,
- 97, 101, 110, 115, 97, 114, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 68,
- 70, 75, 77, 83, 84, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 32, 10, 97, 101,
- 10, 110, 10, 110, 10, 103, 10, 97,
- 10, 105, 10, 116, 10, 117, 10, 114,
- 10, 58, 10, 101, 10, 116, 10, 105,
- 10, 107, 10, 97, 10, 97, 10, 107,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 111, 10, 32, 58, 10,
- 107, 10, 111, 10, 110, 10, 115, 10,
- 101, 10, 112, 10, 97, 10, 112, 10,
- 105, 110, 103, 97, 110, 105, 116, 117,
- 114, 58, 10, 10, 10, 32, 35, 37,
- 64, 67, 68, 70, 83, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 111, 10, 110, 10,
- 116, 10, 111, 10, 104, 10, 58, 10,
- 97, 10, 115, 10, 97, 10, 114, 10,
- 105, 10, 116, 10, 117, 10, 107, 10,
- 101, 10, 110, 10, 97, 10, 114, 10,
- 105, 10, 111, 10, 32, 58, 10, 107,
- 10, 111, 10, 110, 10, 115, 10, 101,
- 10, 112, 101, 116, 105, 107, 97, 97,
- 107, 101, 110, 97, 114, 105, 111, 32,
- 58, 107, 111, 110, 115, 101, 112, 58,
- 10, 10, 10, 32, 35, 37, 42, 64,
- 68, 70, 75, 77, 83, 84, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 97,
- 101, 10, 110, 10, 110, 10, 103, 10,
- 97, 10, 105, 10, 116, 10, 117, 10,
- 114, 10, 58, 10, 101, 10, 116, 10,
- 105, 10, 107, 10, 97, 10, 97, 10,
- 107, 10, 101, 10, 110, 10, 97, 10,
- 114, 10, 105, 10, 111, 10, 97, 10,
- 112, 10, 105, 10, 10, 10, 32, 35,
- 37, 42, 64, 68, 70, 75, 77, 83,
- 84, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 97, 101, 10, 110, 115, 10,
- 97, 10, 114, 10, 58, 10, 110, 10,
- 103, 10, 97, 10, 110, 10, 105, 10,
- 116, 10, 117, 10, 101, 10, 116, 10,
- 105, 10, 107, 10, 97, 10, 97, 10,
- 107, 10, 101, 10, 110, 10, 97, 10,
- 114, 10, 105, 10, 111, 10, 32, 58,
- 10, 107, 10, 111, 10, 110, 10, 115,
- 10, 101, 10, 112, 10, 97, 10, 112,
- 10, 105, 97, 112, 105, 32, 124, 9,
- 13, 10, 32, 92, 124, 9, 13, 10,
- 92, 124, 10, 92, 10, 32, 92, 124,
- 9, 13, 10, 32, 34, 35, 37, 42,
- 64, 67, 68, 70, 75, 77, 83, 84,
- 124, 9, 13, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 16, 1, 1, 15, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 5, 2, 2,
- 2, 2, 2, 15, 2, 2, 1, 1,
- 1, 1, 1, 12, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 9,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 12, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 12, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 2, 4, 3, 2, 4, 15,
- 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 0, 0, 1, 1,
- 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 18, 20, 22, 39, 41, 43,
- 46, 49, 54, 59, 64, 69, 73, 77,
- 80, 82, 84, 86, 88, 90, 92, 94,
- 96, 98, 100, 102, 104, 106, 108, 110,
- 112, 115, 118, 123, 130, 135, 137, 139,
- 141, 143, 145, 147, 149, 151, 158, 161,
- 164, 167, 170, 173, 190, 193, 196, 198,
- 200, 202, 204, 206, 220, 223, 226, 229,
- 232, 235, 238, 241, 244, 247, 250, 253,
- 256, 259, 262, 265, 269, 272, 275, 278,
- 281, 284, 287, 290, 293, 296, 299, 302,
- 305, 308, 311, 314, 317, 320, 323, 326,
- 329, 332, 335, 339, 342, 345, 348, 351,
- 354, 357, 360, 363, 366, 368, 370, 372,
- 374, 376, 378, 380, 382, 384, 386, 388,
- 399, 402, 405, 408, 411, 414, 417, 420,
- 423, 426, 429, 432, 435, 438, 441, 444,
- 447, 450, 453, 456, 459, 462, 465, 468,
- 471, 474, 477, 480, 483, 486, 489, 492,
- 495, 498, 501, 505, 508, 511, 514, 517,
- 520, 523, 525, 527, 529, 531, 533, 535,
- 537, 539, 541, 543, 545, 547, 549, 552,
- 554, 556, 558, 560, 562, 564, 566, 568,
- 570, 584, 587, 590, 593, 596, 599, 602,
- 605, 608, 611, 614, 617, 620, 623, 626,
- 629, 633, 636, 639, 642, 645, 648, 651,
- 654, 657, 660, 663, 666, 669, 672, 675,
- 678, 681, 684, 687, 690, 693, 696, 699,
- 702, 705, 708, 710, 712, 726, 729, 732,
- 735, 738, 741, 744, 747, 750, 753, 756,
- 759, 762, 765, 768, 771, 775, 779, 782,
- 785, 788, 791, 794, 797, 800, 803, 806,
- 809, 812, 815, 818, 821, 824, 827, 830,
- 833, 836, 839, 842, 845, 848, 852, 855,
- 858, 861, 864, 867, 870, 873, 876, 879,
- 881, 883, 885, 889, 895, 899, 902, 908,
- 925
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 52, 112, 161, 166, 167, 279, 282,
- 4, 0, 3, 0, 4, 0, 4, 4,
- 5, 15, 17, 31, 34, 37, 52, 112,
- 161, 166, 167, 279, 282, 4, 0, 6,
- 0, 7, 0, 9, 8, 8, 9, 8,
- 8, 10, 10, 11, 10, 10, 10, 10,
- 11, 10, 10, 10, 10, 12, 10, 10,
- 10, 10, 13, 10, 10, 4, 14, 14,
- 0, 4, 14, 14, 0, 4, 16, 15,
- 4, 0, 18, 0, 19, 0, 20, 0,
- 21, 0, 22, 0, 23, 0, 24, 0,
- 25, 0, 26, 0, 27, 0, 28, 0,
- 29, 0, 30, 0, 288, 0, 32, 0,
- 4, 16, 33, 4, 16, 33, 0, 0,
- 0, 0, 35, 36, 4, 36, 36, 34,
- 35, 35, 4, 36, 34, 36, 0, 38,
- 0, 39, 0, 40, 0, 41, 0, 42,
- 0, 43, 0, 45, 44, 45, 44, 45,
- 45, 4, 46, 4, 45, 44, 45, 47,
- 44, 45, 48, 44, 45, 49, 44, 45,
- 50, 44, 45, 51, 44, 4, 4, 5,
- 15, 17, 31, 34, 37, 52, 112, 161,
- 166, 167, 279, 282, 4, 0, 53, 108,
- 0, 31, 54, 0, 55, 0, 56, 0,
- 57, 0, 59, 58, 59, 58, 59, 59,
- 4, 60, 74, 4, 75, 80, 85, 90,
- 91, 105, 59, 58, 59, 61, 58, 59,
- 62, 58, 59, 63, 58, 59, 64, 58,
- 59, 65, 58, 59, 66, 58, 59, 67,
- 58, 59, 68, 58, 59, 69, 58, 59,
- 70, 58, 59, 71, 58, 59, 72, 58,
- 59, 73, 58, 59, 4, 58, 59, 51,
- 58, 59, 76, 77, 58, 59, 74, 58,
- 59, 78, 58, 59, 79, 58, 59, 76,
- 58, 59, 81, 58, 59, 82, 58, 59,
- 83, 58, 59, 84, 58, 59, 51, 58,
- 59, 86, 58, 59, 87, 58, 59, 88,
- 58, 59, 89, 58, 59, 74, 58, 59,
- 88, 58, 59, 92, 58, 59, 93, 58,
- 59, 94, 58, 59, 95, 58, 59, 96,
- 58, 59, 97, 58, 59, 98, 58, 59,
- 99, 51, 58, 59, 100, 58, 59, 101,
- 58, 59, 102, 58, 59, 103, 58, 59,
- 104, 58, 59, 84, 58, 59, 106, 58,
- 59, 107, 58, 59, 74, 58, 109, 0,
- 110, 0, 111, 0, 31, 0, 113, 0,
- 114, 0, 115, 0, 116, 0, 117, 0,
- 119, 118, 119, 118, 119, 119, 4, 120,
- 4, 134, 140, 144, 147, 119, 118, 119,
- 121, 118, 119, 122, 118, 119, 123, 118,
- 119, 124, 118, 119, 125, 118, 119, 126,
- 118, 119, 127, 118, 119, 128, 118, 119,
- 129, 118, 119, 130, 118, 119, 131, 118,
- 119, 132, 118, 119, 133, 118, 119, 4,
- 118, 119, 135, 118, 119, 136, 118, 119,
- 137, 118, 119, 138, 118, 119, 139, 118,
- 119, 51, 118, 119, 141, 118, 119, 142,
- 118, 119, 143, 118, 119, 139, 118, 119,
- 145, 118, 119, 146, 118, 119, 143, 118,
- 119, 148, 118, 119, 149, 118, 119, 150,
- 118, 119, 151, 118, 119, 152, 118, 119,
- 153, 118, 119, 154, 118, 119, 155, 51,
- 118, 119, 156, 118, 119, 157, 118, 119,
- 158, 118, 119, 159, 118, 119, 160, 118,
- 119, 139, 118, 162, 0, 163, 0, 164,
- 0, 165, 0, 31, 0, 164, 0, 168,
- 0, 169, 0, 170, 0, 171, 0, 172,
- 0, 173, 0, 174, 0, 175, 226, 0,
- 176, 0, 177, 0, 178, 0, 179, 0,
- 180, 0, 181, 0, 182, 0, 184, 183,
- 184, 183, 184, 184, 4, 185, 199, 4,
- 200, 205, 210, 215, 216, 223, 184, 183,
- 184, 186, 183, 184, 187, 183, 184, 188,
- 183, 184, 189, 183, 184, 190, 183, 184,
- 191, 183, 184, 192, 183, 184, 193, 183,
- 184, 194, 183, 184, 195, 183, 184, 196,
- 183, 184, 197, 183, 184, 198, 183, 184,
- 4, 183, 184, 51, 183, 184, 201, 202,
- 183, 184, 199, 183, 184, 203, 183, 184,
- 204, 183, 184, 201, 183, 184, 206, 183,
- 184, 207, 183, 184, 208, 183, 184, 209,
- 183, 184, 51, 183, 184, 211, 183, 184,
- 212, 183, 184, 213, 183, 184, 214, 183,
- 184, 199, 183, 184, 213, 183, 184, 217,
- 183, 184, 218, 183, 184, 219, 183, 184,
- 220, 183, 184, 221, 183, 184, 222, 183,
- 184, 209, 183, 184, 224, 183, 184, 225,
- 183, 184, 199, 183, 228, 227, 228, 227,
- 228, 228, 4, 229, 243, 4, 244, 253,
- 256, 261, 262, 276, 228, 227, 228, 230,
- 227, 228, 231, 227, 228, 232, 227, 228,
- 233, 227, 228, 234, 227, 228, 235, 227,
- 228, 236, 227, 228, 237, 227, 228, 238,
- 227, 228, 239, 227, 228, 240, 227, 228,
- 241, 227, 228, 242, 227, 228, 4, 227,
- 228, 51, 227, 228, 245, 249, 227, 228,
- 243, 246, 227, 228, 247, 227, 228, 248,
- 227, 228, 51, 227, 228, 250, 227, 228,
- 251, 227, 228, 252, 227, 228, 243, 227,
- 228, 254, 227, 228, 255, 227, 228, 247,
- 227, 228, 257, 227, 228, 258, 227, 228,
- 259, 227, 228, 260, 227, 228, 243, 227,
- 228, 259, 227, 228, 263, 227, 228, 264,
- 227, 228, 265, 227, 228, 266, 227, 228,
- 267, 227, 228, 268, 227, 228, 269, 227,
- 228, 270, 51, 227, 228, 271, 227, 228,
- 272, 227, 228, 273, 227, 228, 274, 227,
- 228, 275, 227, 228, 248, 227, 228, 277,
- 227, 228, 278, 227, 228, 243, 227, 280,
- 0, 281, 0, 31, 0, 282, 283, 282,
- 0, 287, 286, 285, 283, 286, 284, 0,
- 285, 283, 284, 0, 285, 284, 287, 286,
- 285, 283, 286, 284, 287, 287, 5, 15,
- 17, 31, 34, 37, 52, 112, 161, 166,
- 167, 279, 282, 287, 0, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 35,
- 0, 43, 0, 43, 0, 43, 54, 0,
- 5, 1, 0, 29, 1, 29, 29, 29,
- 29, 29, 29, 29, 35, 0, 43, 0,
- 43, 0, 43, 139, 48, 9, 106, 11,
- 0, 134, 45, 45, 45, 3, 122, 33,
- 33, 33, 0, 122, 33, 33, 33, 0,
- 122, 33, 0, 33, 0, 102, 7, 7,
- 43, 54, 0, 0, 43, 114, 25, 0,
- 54, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 149, 126, 57, 110, 23, 0, 43, 43,
- 43, 43, 0, 27, 118, 27, 27, 51,
- 27, 0, 54, 0, 1, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 81, 84, 81, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 21, 0, 130, 31, 60,
- 57, 31, 63, 57, 63, 63, 63, 63,
- 63, 63, 63, 66, 31, 43, 0, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 72, 33, 84, 72, 84, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 15, 0, 54, 15,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 15, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 15, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 69, 33,
- 69, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 13,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 13,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 78, 33, 84, 78,
- 84, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 19, 0, 54, 19, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 19, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 144, 57, 54, 0,
- 54, 0, 75, 33, 84, 75, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 17, 0, 54, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 17, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 17, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 0, 0,
- 43, 54, 37, 37, 87, 37, 37, 43,
- 0, 39, 0, 43, 0, 0, 54, 0,
- 0, 39, 0, 0, 54, 0, 93, 90,
- 41, 96, 90, 96, 96, 96, 96, 96,
- 96, 96, 99, 0, 43, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 288;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 812 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
-
- #line 819 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1109 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1172 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/id.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_id()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Id", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/id.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/id.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 18, 19, 20, 37, 38, 39,
- 41, 43, 48, 53, 58, 63, 67, 71,
- 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 91, 93, 98, 105, 110, 111, 112,
- 113, 114, 115, 116, 117, 118, 125, 127,
- 129, 131, 133, 135, 152, 154, 156, 157,
- 158, 159, 160, 161, 175, 177, 179, 181,
- 183, 185, 187, 189, 191, 193, 195, 197,
- 199, 201, 203, 205, 208, 210, 212, 214,
- 216, 218, 220, 222, 224, 226, 228, 230,
- 232, 234, 236, 238, 240, 242, 244, 246,
- 248, 250, 252, 255, 257, 259, 261, 263,
- 265, 267, 269, 271, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284,
- 295, 297, 299, 301, 303, 305, 307, 309,
- 311, 313, 315, 317, 319, 321, 323, 325,
- 327, 329, 331, 333, 335, 337, 339, 341,
- 343, 345, 347, 349, 351, 353, 355, 357,
- 359, 361, 363, 366, 368, 370, 372, 374,
- 376, 378, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 389, 390, 391, 393,
- 394, 395, 396, 397, 398, 399, 400, 401,
- 402, 416, 418, 420, 422, 424, 426, 428,
- 430, 432, 434, 436, 438, 440, 442, 444,
- 446, 449, 451, 453, 455, 457, 459, 461,
- 463, 465, 467, 469, 471, 473, 475, 477,
- 479, 481, 483, 485, 487, 489, 491, 493,
- 495, 497, 499, 500, 501, 515, 517, 519,
- 521, 523, 525, 527, 529, 531, 533, 535,
- 537, 539, 541, 543, 545, 548, 551, 553,
- 555, 557, 559, 561, 563, 565, 567, 569,
- 571, 573, 575, 577, 579, 581, 583, 585,
- 587, 589, 591, 593, 595, 597, 600, 602,
- 604, 606, 608, 610, 612, 614, 616, 618,
- 619, 620, 621, 625, 631, 634, 636, 642,
- 659
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 67, 68, 70, 75, 77, 83, 84, 124,
- 9, 13, -69, -65, 10, 32, 34, 35,
- 37, 42, 64, 67, 68, 70, 75, 77,
- 83, 84, 124, 9, 13, 34, 34, 10,
- 13, 10, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 9, 13, 10, 32, 9, 13, 10,
- 13, 10, 95, 70, 69, 65, 84, 85,
- 82, 69, 95, 69, 78, 68, 95, 37,
- 32, 10, 13, 10, 13, 13, 32, 64,
- 9, 10, 9, 10, 13, 32, 64, 11,
- 12, 10, 32, 64, 9, 13, 111, 110,
- 116, 111, 104, 58, 10, 10, 10, 32,
- 35, 70, 124, 9, 13, 10, 105, 10,
- 116, 10, 117, 10, 114, 10, 58, 10,
- 32, 34, 35, 37, 42, 64, 67, 68,
- 70, 75, 77, 83, 84, 124, 9, 13,
- 97, 101, 110, 115, 97, 114, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 68,
- 70, 75, 77, 83, 84, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 32, 10, 97, 101,
- 10, 110, 10, 110, 10, 103, 10, 97,
- 10, 105, 10, 116, 10, 117, 10, 114,
- 10, 58, 10, 101, 10, 116, 10, 105,
- 10, 107, 10, 97, 10, 97, 10, 107,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 111, 10, 32, 58, 10,
- 107, 10, 111, 10, 110, 10, 115, 10,
- 101, 10, 112, 10, 97, 10, 112, 10,
- 105, 110, 103, 97, 110, 105, 116, 117,
- 114, 58, 10, 10, 10, 32, 35, 37,
- 64, 67, 68, 70, 83, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 111, 10, 110, 10,
- 116, 10, 111, 10, 104, 10, 58, 10,
- 97, 10, 115, 10, 97, 10, 114, 10,
- 105, 10, 116, 10, 117, 10, 107, 10,
- 101, 10, 110, 10, 97, 10, 114, 10,
- 105, 10, 111, 10, 32, 58, 10, 107,
- 10, 111, 10, 110, 10, 115, 10, 101,
- 10, 112, 101, 116, 105, 107, 97, 97,
- 107, 101, 110, 97, 114, 105, 111, 32,
- 58, 107, 111, 110, 115, 101, 112, 58,
- 10, 10, 10, 32, 35, 37, 42, 64,
- 68, 70, 75, 77, 83, 84, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 97,
- 101, 10, 110, 10, 110, 10, 103, 10,
- 97, 10, 105, 10, 116, 10, 117, 10,
- 114, 10, 58, 10, 101, 10, 116, 10,
- 105, 10, 107, 10, 97, 10, 97, 10,
- 107, 10, 101, 10, 110, 10, 97, 10,
- 114, 10, 105, 10, 111, 10, 97, 10,
- 112, 10, 105, 10, 10, 10, 32, 35,
- 37, 42, 64, 68, 70, 75, 77, 83,
- 84, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 97, 101, 10, 110, 115, 10,
- 97, 10, 114, 10, 58, 10, 110, 10,
- 103, 10, 97, 10, 110, 10, 105, 10,
- 116, 10, 117, 10, 101, 10, 116, 10,
- 105, 10, 107, 10, 97, 10, 97, 10,
- 107, 10, 101, 10, 110, 10, 97, 10,
- 114, 10, 105, 10, 111, 10, 32, 58,
- 10, 107, 10, 111, 10, 110, 10, 115,
- 10, 101, 10, 112, 10, 97, 10, 112,
- 10, 105, 97, 112, 105, 32, 124, 9,
- 13, 10, 32, 92, 124, 9, 13, 10,
- 92, 124, 10, 92, 10, 32, 92, 124,
- 9, 13, 10, 32, 34, 35, 37, 42,
- 64, 67, 68, 70, 75, 77, 83, 84,
- 124, 9, 13, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 16, 1, 1, 15, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 5, 2, 2,
- 2, 2, 2, 15, 2, 2, 1, 1,
- 1, 1, 1, 12, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 9,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 12, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 12, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 2, 4, 3, 2, 4, 15,
- 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 0, 0, 1, 1,
- 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 18, 20, 22, 39, 41, 43,
- 46, 49, 54, 59, 64, 69, 73, 77,
- 80, 82, 84, 86, 88, 90, 92, 94,
- 96, 98, 100, 102, 104, 106, 108, 110,
- 112, 115, 118, 123, 130, 135, 137, 139,
- 141, 143, 145, 147, 149, 151, 158, 161,
- 164, 167, 170, 173, 190, 193, 196, 198,
- 200, 202, 204, 206, 220, 223, 226, 229,
- 232, 235, 238, 241, 244, 247, 250, 253,
- 256, 259, 262, 265, 269, 272, 275, 278,
- 281, 284, 287, 290, 293, 296, 299, 302,
- 305, 308, 311, 314, 317, 320, 323, 326,
- 329, 332, 335, 339, 342, 345, 348, 351,
- 354, 357, 360, 363, 366, 368, 370, 372,
- 374, 376, 378, 380, 382, 384, 386, 388,
- 399, 402, 405, 408, 411, 414, 417, 420,
- 423, 426, 429, 432, 435, 438, 441, 444,
- 447, 450, 453, 456, 459, 462, 465, 468,
- 471, 474, 477, 480, 483, 486, 489, 492,
- 495, 498, 501, 505, 508, 511, 514, 517,
- 520, 523, 525, 527, 529, 531, 533, 535,
- 537, 539, 541, 543, 545, 547, 549, 552,
- 554, 556, 558, 560, 562, 564, 566, 568,
- 570, 584, 587, 590, 593, 596, 599, 602,
- 605, 608, 611, 614, 617, 620, 623, 626,
- 629, 633, 636, 639, 642, 645, 648, 651,
- 654, 657, 660, 663, 666, 669, 672, 675,
- 678, 681, 684, 687, 690, 693, 696, 699,
- 702, 705, 708, 710, 712, 726, 729, 732,
- 735, 738, 741, 744, 747, 750, 753, 756,
- 759, 762, 765, 768, 771, 775, 779, 782,
- 785, 788, 791, 794, 797, 800, 803, 806,
- 809, 812, 815, 818, 821, 824, 827, 830,
- 833, 836, 839, 842, 845, 848, 852, 855,
- 858, 861, 864, 867, 870, 873, 876, 879,
- 881, 883, 885, 889, 895, 899, 902, 908,
- 925
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 52, 112, 161, 166, 167, 279, 282,
- 4, 0, 3, 0, 4, 0, 4, 4,
- 5, 15, 17, 31, 34, 37, 52, 112,
- 161, 166, 167, 279, 282, 4, 0, 6,
- 0, 7, 0, 9, 8, 8, 9, 8,
- 8, 10, 10, 11, 10, 10, 10, 10,
- 11, 10, 10, 10, 10, 12, 10, 10,
- 10, 10, 13, 10, 10, 4, 14, 14,
- 0, 4, 14, 14, 0, 4, 16, 15,
- 4, 0, 18, 0, 19, 0, 20, 0,
- 21, 0, 22, 0, 23, 0, 24, 0,
- 25, 0, 26, 0, 27, 0, 28, 0,
- 29, 0, 30, 0, 288, 0, 32, 0,
- 4, 16, 33, 4, 16, 33, 0, 0,
- 0, 0, 35, 36, 4, 36, 36, 34,
- 35, 35, 4, 36, 34, 36, 0, 38,
- 0, 39, 0, 40, 0, 41, 0, 42,
- 0, 43, 0, 45, 44, 45, 44, 45,
- 45, 4, 46, 4, 45, 44, 45, 47,
- 44, 45, 48, 44, 45, 49, 44, 45,
- 50, 44, 45, 51, 44, 4, 4, 5,
- 15, 17, 31, 34, 37, 52, 112, 161,
- 166, 167, 279, 282, 4, 0, 53, 108,
- 0, 31, 54, 0, 55, 0, 56, 0,
- 57, 0, 59, 58, 59, 58, 59, 59,
- 4, 60, 74, 4, 75, 80, 85, 90,
- 91, 105, 59, 58, 59, 61, 58, 59,
- 62, 58, 59, 63, 58, 59, 64, 58,
- 59, 65, 58, 59, 66, 58, 59, 67,
- 58, 59, 68, 58, 59, 69, 58, 59,
- 70, 58, 59, 71, 58, 59, 72, 58,
- 59, 73, 58, 59, 4, 58, 59, 51,
- 58, 59, 76, 77, 58, 59, 74, 58,
- 59, 78, 58, 59, 79, 58, 59, 76,
- 58, 59, 81, 58, 59, 82, 58, 59,
- 83, 58, 59, 84, 58, 59, 51, 58,
- 59, 86, 58, 59, 87, 58, 59, 88,
- 58, 59, 89, 58, 59, 74, 58, 59,
- 88, 58, 59, 92, 58, 59, 93, 58,
- 59, 94, 58, 59, 95, 58, 59, 96,
- 58, 59, 97, 58, 59, 98, 58, 59,
- 99, 51, 58, 59, 100, 58, 59, 101,
- 58, 59, 102, 58, 59, 103, 58, 59,
- 104, 58, 59, 84, 58, 59, 106, 58,
- 59, 107, 58, 59, 74, 58, 109, 0,
- 110, 0, 111, 0, 31, 0, 113, 0,
- 114, 0, 115, 0, 116, 0, 117, 0,
- 119, 118, 119, 118, 119, 119, 4, 120,
- 4, 134, 140, 144, 147, 119, 118, 119,
- 121, 118, 119, 122, 118, 119, 123, 118,
- 119, 124, 118, 119, 125, 118, 119, 126,
- 118, 119, 127, 118, 119, 128, 118, 119,
- 129, 118, 119, 130, 118, 119, 131, 118,
- 119, 132, 118, 119, 133, 118, 119, 4,
- 118, 119, 135, 118, 119, 136, 118, 119,
- 137, 118, 119, 138, 118, 119, 139, 118,
- 119, 51, 118, 119, 141, 118, 119, 142,
- 118, 119, 143, 118, 119, 139, 118, 119,
- 145, 118, 119, 146, 118, 119, 143, 118,
- 119, 148, 118, 119, 149, 118, 119, 150,
- 118, 119, 151, 118, 119, 152, 118, 119,
- 153, 118, 119, 154, 118, 119, 155, 51,
- 118, 119, 156, 118, 119, 157, 118, 119,
- 158, 118, 119, 159, 118, 119, 160, 118,
- 119, 139, 118, 162, 0, 163, 0, 164,
- 0, 165, 0, 31, 0, 164, 0, 168,
- 0, 169, 0, 170, 0, 171, 0, 172,
- 0, 173, 0, 174, 0, 175, 226, 0,
- 176, 0, 177, 0, 178, 0, 179, 0,
- 180, 0, 181, 0, 182, 0, 184, 183,
- 184, 183, 184, 184, 4, 185, 199, 4,
- 200, 205, 210, 215, 216, 223, 184, 183,
- 184, 186, 183, 184, 187, 183, 184, 188,
- 183, 184, 189, 183, 184, 190, 183, 184,
- 191, 183, 184, 192, 183, 184, 193, 183,
- 184, 194, 183, 184, 195, 183, 184, 196,
- 183, 184, 197, 183, 184, 198, 183, 184,
- 4, 183, 184, 51, 183, 184, 201, 202,
- 183, 184, 199, 183, 184, 203, 183, 184,
- 204, 183, 184, 201, 183, 184, 206, 183,
- 184, 207, 183, 184, 208, 183, 184, 209,
- 183, 184, 51, 183, 184, 211, 183, 184,
- 212, 183, 184, 213, 183, 184, 214, 183,
- 184, 199, 183, 184, 213, 183, 184, 217,
- 183, 184, 218, 183, 184, 219, 183, 184,
- 220, 183, 184, 221, 183, 184, 222, 183,
- 184, 209, 183, 184, 224, 183, 184, 225,
- 183, 184, 199, 183, 228, 227, 228, 227,
- 228, 228, 4, 229, 243, 4, 244, 253,
- 256, 261, 262, 276, 228, 227, 228, 230,
- 227, 228, 231, 227, 228, 232, 227, 228,
- 233, 227, 228, 234, 227, 228, 235, 227,
- 228, 236, 227, 228, 237, 227, 228, 238,
- 227, 228, 239, 227, 228, 240, 227, 228,
- 241, 227, 228, 242, 227, 228, 4, 227,
- 228, 51, 227, 228, 245, 249, 227, 228,
- 243, 246, 227, 228, 247, 227, 228, 248,
- 227, 228, 51, 227, 228, 250, 227, 228,
- 251, 227, 228, 252, 227, 228, 243, 227,
- 228, 254, 227, 228, 255, 227, 228, 247,
- 227, 228, 257, 227, 228, 258, 227, 228,
- 259, 227, 228, 260, 227, 228, 243, 227,
- 228, 259, 227, 228, 263, 227, 228, 264,
- 227, 228, 265, 227, 228, 266, 227, 228,
- 267, 227, 228, 268, 227, 228, 269, 227,
- 228, 270, 51, 227, 228, 271, 227, 228,
- 272, 227, 228, 273, 227, 228, 274, 227,
- 228, 275, 227, 228, 248, 227, 228, 277,
- 227, 228, 278, 227, 228, 243, 227, 280,
- 0, 281, 0, 31, 0, 282, 283, 282,
- 0, 287, 286, 285, 283, 286, 284, 0,
- 285, 283, 284, 0, 285, 284, 287, 286,
- 285, 283, 286, 284, 287, 287, 5, 15,
- 17, 31, 34, 37, 52, 112, 161, 166,
- 167, 279, 282, 287, 0, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 35,
- 0, 43, 0, 43, 0, 43, 54, 0,
- 5, 1, 0, 29, 1, 29, 29, 29,
- 29, 29, 29, 29, 35, 0, 43, 0,
- 43, 0, 43, 139, 48, 9, 106, 11,
- 0, 134, 45, 45, 45, 3, 122, 33,
- 33, 33, 0, 122, 33, 33, 33, 0,
- 122, 33, 0, 33, 0, 102, 7, 7,
- 43, 54, 0, 0, 43, 114, 25, 0,
- 54, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 149, 126, 57, 110, 23, 0, 43, 43,
- 43, 43, 0, 27, 118, 27, 27, 51,
- 27, 0, 54, 0, 1, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 81, 84, 81, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 21, 0, 130, 31, 60,
- 57, 31, 63, 57, 63, 63, 63, 63,
- 63, 63, 63, 66, 31, 43, 0, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 72, 33, 84, 72, 84, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 15, 0, 54, 15,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 15, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 15, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 69, 33,
- 69, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 13,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 13,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 78, 33, 84, 78,
- 84, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 19, 0, 54, 19, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 19, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 144, 57, 54, 0,
- 54, 0, 75, 33, 84, 75, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 17, 0, 54, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 17, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 17, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 0, 0,
- 43, 54, 37, 37, 87, 37, 37, 43,
- 0, 39, 0, 43, 0, 0, 54, 0,
- 0, 39, 0, 0, 54, 0, 93, 90,
- 41, 96, 90, 96, 96, 96, 96, 96,
- 96, 96, 99, 0, 43, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 288;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/id.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 812 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/id.c.rl"
-
-#line 819 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/id.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/id.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/id.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/id.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/id.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/id.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/id.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/id.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/id.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/id.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/id.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/id.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/id.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/id.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/id.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/id.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/id.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/id.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/id.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/id.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/id.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/id.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/id.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/id.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1109 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/id.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1172 "ext/gherkin_lexer_id/gherkin_lexer_id.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/id.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_id()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Id", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_is/extconf.rb
index 3a0751d,3a0751d..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_is/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_is")
--have_library("c", "main")
--create_makefile("gherkin_lexer_is")
diff --cc ext/gherkin_lexer_is/gherkin_lexer_is.c
index ec85837,061d6a2..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_is/gherkin_lexer_is.c
+++ /dev/null
@@@ -1,1376 -1,1376 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_is/gherkin_lexer_is.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 18, 19, 21, 22, 23, 25,
- 27, 44, 45, 46, 48, 50, 55, 60,
- 65, 70, 74, 78, 80, 81, 82, 83,
- 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 100, 107, 112, 113,
- 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 125, 126, 127, 141, 143, 146,
- 148, 150, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 178, 179, 192,
- 194, 197, 199, 201, 203, 205, 207, 209,
- 211, 213, 215, 217, 219, 221, 223, 225,
- 227, 229, 231, 233, 235, 237, 239, 241,
- 243, 245, 247, 249, 251, 253, 255, 257,
- 259, 263, 265, 267, 269, 271, 273, 275,
- 277, 279, 281, 283, 285, 287, 289, 291,
- 293, 296, 298, 300, 302, 304, 306, 308,
- 310, 312, 314, 316, 318, 320, 322, 324,
- 326, 328, 330, 332, 333, 334, 335, 336,
- 337, 338, 339, 346, 348, 350, 352, 354,
- 356, 358, 360, 362, 364, 366, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 392, 394, 396, 398, 400, 402,
- 404, 406, 408, 410, 412, 414, 416, 418,
- 420, 422, 424, 426, 428, 430, 432, 434,
- 436, 438, 440, 442, 445, 447, 449, 451,
- 453, 455, 457, 459, 461, 463, 465, 467,
- 469, 471, 473, 475, 477, 479, 481, 483,
- 485, 487, 489, 491, 493, 495, 497, 499,
- 501, 503, 506, 508, 510, 512, 514, 516,
- 518, 520, 522, 524, 526, 528, 530, 532,
- 534, 536, 538, 539, 540, 541, 542, 543,
- 544, 545, 547, 548, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 575, 577, 580, 582, 584,
- 586, 588, 590, 592, 594, 596, 598, 600,
- 602, 604, 606, 608, 610, 612, 614, 616,
- 618, 620, 622, 624, 626, 628, 630, 632,
- 634, 636, 638, 640, 642, 646, 648, 650,
- 652, 654, 656, 658, 660, 662, 664, 665,
- 666, 667, 668, 669, 673, 679, 682, 684,
- 690, 707, 709, 711, 713, 715, 717, 719,
- 721, 723, 725, 727, 729, 731, 733, 735,
- 737, 739, 741, 743, 745, 747, 749, 751,
- 753, 755, 757, 759, 761, 763, 765, 767,
- 769, 771, 773, 775, 777, 779, 781, 783,
- 787, 789, 791, 793, 795, 797, 799, 801,
- 803, 805, 807, 809, 811, 813, 815, 817,
- 820, 822, 824, 826, 828, 830, 832, 834,
- 836, 838, 840, 842, 844, 846, 848, 850,
- 852, 854, 855, 856, 857, 858, 859, 860
- };
-
- static const char _lexer_trans_keys[] = {
- -61, -17, 10, 32, 34, 35, 37, 42,
- 64, 65, 66, 68, 69, 76, 79, 124,
- 9, 13, -98, -61, 101, -95, 32, 10,
- 13, 10, 13, -61, 10, 32, 34, 35,
- 37, 42, 64, 65, 66, 68, 69, 76,
- 79, 124, 9, 13, 34, 34, 10, 13,
- 10, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 9, 13, 10, 32, 9, 13, 10, 13,
- 10, 95, 70, 69, 65, 84, 85, 82,
- 69, 95, 69, 78, 68, 95, 37, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 116, 98, 117, 114, -61, -80, 97, 114,
- -61, -95, 115, 58, 105, 10, 10, -61,
- 10, 32, 35, 37, 42, 64, 65, 66,
- 69, 76, 79, 9, 13, -98, 10, -61,
- 10, 101, -95, 10, 10, 32, -61, 10,
- 32, 34, 35, 37, 42, 64, 65, 66,
- 68, 69, 76, 79, 124, 9, 13, 97,
- 107, 103, 114, 117, 110, 110, 117, 114,
- 58, 10, 10, -61, 10, 32, 35, 37,
- 42, 64, 65, 69, 76, 79, 9, 13,
- -98, 10, -61, 10, 101, -95, 10, 10,
- 32, 10, 103, 10, 97, 10, 114, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 116, 10, 98, 10,
- 117, 10, 114, -61, 10, -80, 10, 10,
- 97, 10, 114, -61, 10, -95, 10, 10,
- 115, 10, 58, 10, 102, 105, 110, 10,
- 103, 10, 105, 10, 110, 10, 108, 10,
- 101, 10, 105, 10, 107, 10, 105, -61,
- 10, -67, 10, 10, 115, 10, 105, 10,
- 110, 10, 103, 10, 32, 10, 65, 68,
- 10, 116, 10, 98, 10, 117, 10, 114,
- -61, 10, -80, 10, 10, 97, 10, 114,
- -61, 10, -95, 10, 10, 115, 10, 97,
- 10, 114, -61, 10, -90, 10, 10, 109,
- 10, 97, 10, 103, -61, -90, 109, 105,
- 58, 10, 10, 10, 32, 35, 69, 124,
- 9, 13, 10, 105, 10, 103, 10, 105,
- 10, 110, 10, 108, 10, 101, 10, 105,
- 10, 107, 10, 105, 10, 58, 102, 105,
- 110, 103, 105, 110, 108, 101, 105, 107,
- 105, 58, 10, 10, 10, 32, 35, 37,
- 64, 65, 66, 68, 69, 76, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 116, 10, 98,
- 10, 117, 10, 114, -61, 10, -80, 10,
- 10, 97, 10, 114, -61, 10, -95, 10,
- 10, 115, 10, 58, 105, 10, 114, 10,
- 58, 10, 97, 10, 107, 10, 103, 10,
- 114, 10, 117, 10, 110, 10, 110, 10,
- 117, -61, 10, -90, 10, 10, 109, 10,
- 105, 10, 105, 10, 103, 10, 105, 10,
- 110, 10, 108, 10, 101, 10, 105, 10,
- 107, -61, 10, -67, 10, 10, 115, 10,
- 105, 10, 110, 10, 103, 10, 32, 10,
- 65, 68, 10, 116, 10, 98, 10, 117,
- 10, 114, -61, 10, -80, 10, 10, 97,
- 10, 114, -61, 10, -95, 10, 10, 115,
- 10, 97, -61, 10, -90, 10, 10, 109,
- 10, 97, -61, -67, 115, 105, 110, 103,
- 32, 65, 68, 116, 98, 117, 114, -61,
- -80, 97, 114, -61, -95, 115, 97, 114,
- 58, 10, 10, -61, 10, 32, 35, 37,
- 42, 64, 65, 69, 79, 9, 13, -98,
- 10, -61, 10, 101, -95, 10, 10, 32,
- 10, 103, 10, 97, 10, 114, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 116, 10, 98, 10, 117,
- 10, 114, -61, 10, -80, 10, 10, 97,
- 10, 114, -61, 10, -95, 10, 10, 115,
- 10, 58, 10, 102, 105, 110, 10, 103,
- 10, 105, 10, 110, 10, 108, 10, 101,
- 10, 105, 10, 107, 10, 105, 10, 103,
- -61, -90, 109, 97, 103, 32, 124, 9,
- 13, 10, 32, 92, 124, 9, 13, 10,
- 92, 124, 10, 92, 10, 32, 92, 124,
- 9, 13, -61, 10, 32, 34, 35, 37,
- 42, 64, 65, 66, 68, 69, 76, 79,
- 124, 9, 13, 10, 103, 10, 97, 10,
- 114, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 116, 10,
- 98, 10, 117, 10, 114, -61, 10, -80,
- 10, 10, 97, 10, 114, -61, 10, -95,
- 10, 10, 115, 10, 58, 10, 97, 10,
- 107, 10, 103, 10, 114, 10, 117, 10,
- 110, 10, 110, 10, 117, 10, 114, 10,
- 102, 105, 110, 10, 103, 10, 105, 10,
- 110, 10, 108, 10, 101, 10, 105, 10,
- 107, 10, 105, -61, 10, -67, 10, 10,
- 115, 10, 105, 10, 110, 10, 103, 10,
- 32, 10, 65, 68, 10, 116, 10, 98,
- 10, 117, 10, 114, -61, 10, -80, 10,
- 10, 97, 10, 114, -61, 10, -95, 10,
- 10, 115, 10, 97, -61, 10, -90, 10,
- 10, 109, 10, 97, 10, 103, 114, 103,
- 97, 114, -69, -65, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 16, 1, 2, 1, 1, 2, 2,
- 15, 1, 1, 2, 2, 3, 3, 3,
- 3, 2, 2, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 3, 5, 3, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 2, 1, 1, 12, 2, 3, 2,
- 2, 15, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 11, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 4, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 5, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 10, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 10, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 4, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 2, 4, 3, 2, 4,
- 15, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 4,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 1, 1, 1,
- 1, 1, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 1, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 1, 0, 0, 1,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 18, 20, 23, 25, 27, 30,
- 33, 50, 52, 54, 57, 60, 65, 70,
- 75, 80, 84, 88, 91, 93, 95, 97,
- 99, 101, 103, 105, 107, 109, 111, 113,
- 115, 117, 119, 121, 126, 133, 138, 140,
- 142, 144, 146, 148, 150, 152, 154, 156,
- 158, 160, 163, 165, 167, 181, 184, 188,
- 191, 194, 211, 213, 215, 217, 219, 221,
- 223, 225, 227, 229, 231, 233, 235, 248,
- 251, 255, 258, 261, 264, 267, 270, 273,
- 276, 279, 282, 285, 288, 291, 294, 297,
- 300, 303, 306, 309, 312, 315, 318, 321,
- 324, 327, 330, 333, 336, 339, 342, 345,
- 348, 353, 356, 359, 362, 365, 368, 371,
- 374, 377, 380, 383, 386, 389, 392, 395,
- 398, 402, 405, 408, 411, 414, 417, 420,
- 423, 426, 429, 432, 435, 438, 441, 444,
- 447, 450, 453, 456, 458, 460, 462, 464,
- 466, 468, 470, 477, 480, 483, 486, 489,
- 492, 495, 498, 501, 504, 507, 511, 513,
- 515, 517, 519, 521, 523, 525, 527, 529,
- 531, 533, 545, 548, 551, 554, 557, 560,
- 563, 566, 569, 572, 575, 578, 581, 584,
- 587, 590, 593, 596, 599, 602, 605, 608,
- 611, 614, 617, 620, 624, 627, 630, 633,
- 636, 639, 642, 645, 648, 651, 654, 657,
- 660, 663, 666, 669, 672, 675, 678, 681,
- 684, 687, 690, 693, 696, 699, 702, 705,
- 708, 711, 715, 718, 721, 724, 727, 730,
- 733, 736, 739, 742, 745, 748, 751, 754,
- 757, 760, 763, 765, 767, 769, 771, 773,
- 775, 777, 780, 782, 784, 786, 788, 790,
- 792, 794, 796, 798, 800, 802, 804, 806,
- 808, 810, 812, 824, 827, 831, 834, 837,
- 840, 843, 846, 849, 852, 855, 858, 861,
- 864, 867, 870, 873, 876, 879, 882, 885,
- 888, 891, 894, 897, 900, 903, 906, 909,
- 912, 915, 918, 921, 924, 929, 932, 935,
- 938, 941, 944, 947, 950, 953, 956, 958,
- 960, 962, 964, 966, 970, 976, 980, 983,
- 989, 1006, 1009, 1012, 1015, 1018, 1021, 1024,
- 1027, 1030, 1033, 1036, 1039, 1042, 1045, 1048,
- 1051, 1054, 1057, 1060, 1063, 1066, 1069, 1072,
- 1075, 1078, 1081, 1084, 1087, 1090, 1093, 1096,
- 1099, 1102, 1105, 1108, 1111, 1114, 1117, 1120,
- 1125, 1128, 1131, 1134, 1137, 1140, 1143, 1146,
- 1149, 1152, 1155, 1158, 1161, 1164, 1167, 1170,
- 1174, 1177, 1180, 1183, 1186, 1189, 1192, 1195,
- 1198, 1201, 1204, 1207, 1210, 1213, 1216, 1219,
- 1222, 1225, 1227, 1229, 1231, 1233, 1235, 1237
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 397, 8, 8, 9, 19, 21, 5,
- 35, 38, 58, 139, 157, 242, 314, 315,
- 8, 0, 3, 0, 4, 394, 0, 5,
- 0, 6, 0, 8, 20, 7, 8, 20,
- 7, 2, 8, 8, 9, 19, 21, 5,
- 35, 38, 58, 139, 157, 242, 314, 315,
- 8, 0, 10, 0, 11, 0, 13, 12,
- 12, 13, 12, 12, 14, 14, 15, 14,
- 14, 14, 14, 15, 14, 14, 14, 14,
- 16, 14, 14, 14, 14, 17, 14, 14,
- 8, 18, 18, 0, 8, 18, 18, 0,
- 8, 20, 19, 8, 0, 22, 0, 23,
- 0, 24, 0, 25, 0, 26, 0, 27,
- 0, 28, 0, 29, 0, 30, 0, 31,
- 0, 32, 0, 33, 0, 34, 0, 399,
- 0, 0, 0, 0, 0, 36, 37, 8,
- 37, 37, 35, 36, 36, 8, 37, 35,
- 37, 0, 39, 0, 40, 0, 41, 0,
- 42, 0, 43, 0, 44, 0, 45, 0,
- 46, 0, 47, 0, 48, 0, 49, 0,
- 50, 393, 0, 52, 51, 52, 51, 53,
- 52, 52, 8, 324, 56, 8, 338, 350,
- 359, 368, 392, 52, 51, 54, 52, 51,
- 55, 52, 321, 51, 56, 52, 51, 52,
- 57, 51, 2, 8, 8, 9, 19, 21,
- 5, 35, 38, 58, 139, 157, 242, 314,
- 315, 8, 0, 59, 0, 60, 0, 61,
- 0, 62, 0, 63, 0, 64, 0, 65,
- 0, 66, 0, 67, 0, 68, 0, 70,
- 69, 70, 69, 71, 70, 70, 8, 78,
- 74, 8, 92, 104, 113, 138, 70, 69,
- 72, 70, 69, 73, 70, 75, 69, 74,
- 70, 69, 70, 57, 69, 70, 76, 69,
- 70, 77, 69, 70, 74, 69, 70, 79,
- 69, 70, 80, 69, 70, 81, 69, 70,
- 82, 69, 70, 83, 69, 70, 84, 69,
- 70, 85, 69, 70, 86, 69, 70, 87,
- 69, 70, 88, 69, 70, 89, 69, 70,
- 90, 69, 70, 91, 69, 70, 8, 69,
- 70, 93, 69, 70, 94, 69, 70, 95,
- 69, 70, 96, 69, 97, 70, 69, 98,
- 70, 69, 70, 99, 69, 70, 100, 69,
- 101, 70, 69, 102, 70, 69, 70, 103,
- 69, 70, 57, 69, 70, 74, 105, 74,
- 69, 70, 106, 69, 70, 107, 69, 70,
- 108, 69, 70, 109, 69, 70, 110, 69,
- 70, 111, 69, 70, 112, 69, 70, 103,
- 69, 114, 70, 69, 115, 70, 69, 70,
- 116, 69, 70, 117, 69, 70, 118, 69,
- 70, 119, 69, 70, 120, 69, 70, 121,
- 134, 69, 70, 122, 69, 70, 123, 69,
- 70, 124, 69, 70, 125, 69, 126, 70,
- 69, 127, 70, 69, 70, 128, 69, 70,
- 129, 69, 130, 70, 69, 131, 70, 69,
- 70, 132, 69, 70, 133, 69, 70, 103,
- 69, 135, 70, 69, 136, 70, 69, 70,
- 137, 69, 70, 103, 69, 70, 74, 69,
- 140, 0, 141, 0, 142, 0, 143, 0,
- 144, 0, 146, 145, 146, 145, 146, 146,
- 8, 147, 8, 146, 145, 146, 148, 145,
- 146, 149, 145, 146, 150, 145, 146, 151,
- 145, 146, 152, 145, 146, 153, 145, 146,
- 154, 145, 146, 155, 145, 146, 156, 145,
- 146, 57, 145, 5, 158, 5, 0, 159,
- 0, 160, 0, 161, 0, 162, 0, 163,
- 0, 164, 0, 165, 0, 166, 0, 167,
- 0, 169, 168, 169, 168, 169, 169, 8,
- 170, 8, 184, 198, 206, 210, 218, 169,
- 168, 169, 171, 168, 169, 172, 168, 169,
- 173, 168, 169, 174, 168, 169, 175, 168,
- 169, 176, 168, 169, 177, 168, 169, 178,
- 168, 169, 179, 168, 169, 180, 168, 169,
- 181, 168, 169, 182, 168, 169, 183, 168,
- 169, 8, 168, 169, 185, 168, 169, 186,
- 168, 169, 187, 168, 169, 188, 168, 189,
- 169, 168, 190, 169, 168, 169, 191, 168,
- 169, 192, 168, 193, 169, 168, 194, 169,
- 168, 169, 195, 168, 169, 57, 196, 168,
- 169, 197, 168, 169, 57, 168, 169, 199,
- 168, 169, 200, 168, 169, 201, 168, 169,
- 202, 168, 169, 203, 168, 169, 204, 168,
- 169, 205, 168, 169, 196, 168, 207, 169,
- 168, 208, 169, 168, 169, 209, 168, 169,
- 197, 168, 169, 211, 168, 169, 212, 168,
- 169, 213, 168, 169, 214, 168, 169, 215,
- 168, 169, 216, 168, 169, 217, 168, 169,
- 209, 168, 219, 169, 168, 220, 169, 168,
- 169, 221, 168, 169, 222, 168, 169, 223,
- 168, 169, 224, 168, 169, 225, 168, 169,
- 226, 238, 168, 169, 227, 168, 169, 228,
- 168, 169, 229, 168, 169, 230, 168, 231,
- 169, 168, 232, 169, 168, 169, 233, 168,
- 169, 234, 168, 235, 169, 168, 236, 169,
- 168, 169, 237, 168, 169, 196, 168, 239,
- 169, 168, 240, 169, 168, 169, 241, 168,
- 169, 197, 168, 243, 0, 244, 0, 245,
- 0, 246, 0, 247, 0, 248, 0, 249,
- 0, 250, 310, 0, 251, 0, 252, 0,
- 253, 0, 254, 0, 255, 0, 256, 0,
- 257, 0, 258, 0, 259, 0, 260, 0,
- 261, 0, 262, 0, 263, 0, 264, 0,
- 266, 265, 266, 265, 267, 266, 266, 8,
- 274, 270, 8, 288, 300, 309, 266, 265,
- 268, 266, 265, 269, 266, 271, 265, 270,
- 266, 265, 266, 57, 265, 266, 272, 265,
- 266, 273, 265, 266, 270, 265, 266, 275,
- 265, 266, 276, 265, 266, 277, 265, 266,
- 278, 265, 266, 279, 265, 266, 280, 265,
- 266, 281, 265, 266, 282, 265, 266, 283,
- 265, 266, 284, 265, 266, 285, 265, 266,
- 286, 265, 266, 287, 265, 266, 8, 265,
- 266, 289, 265, 266, 290, 265, 266, 291,
- 265, 266, 292, 265, 293, 266, 265, 294,
- 266, 265, 266, 295, 265, 266, 296, 265,
- 297, 266, 265, 298, 266, 265, 266, 299,
- 265, 266, 57, 265, 266, 270, 301, 270,
- 265, 266, 302, 265, 266, 303, 265, 266,
- 304, 265, 266, 305, 265, 266, 306, 265,
- 266, 307, 265, 266, 308, 265, 266, 299,
- 265, 266, 270, 265, 311, 0, 312, 0,
- 313, 0, 263, 0, 5, 0, 315, 316,
- 315, 0, 320, 319, 318, 316, 319, 317,
- 0, 318, 316, 317, 0, 318, 317, 320,
- 319, 318, 316, 319, 317, 2, 320, 320,
- 9, 19, 21, 5, 35, 38, 58, 139,
- 157, 242, 314, 315, 320, 0, 52, 322,
- 51, 52, 323, 51, 52, 56, 51, 52,
- 325, 51, 52, 326, 51, 52, 327, 51,
- 52, 328, 51, 52, 329, 51, 52, 330,
- 51, 52, 331, 51, 52, 332, 51, 52,
- 333, 51, 52, 334, 51, 52, 335, 51,
- 52, 336, 51, 52, 337, 51, 52, 8,
- 51, 52, 339, 51, 52, 340, 51, 52,
- 341, 51, 52, 342, 51, 343, 52, 51,
- 344, 52, 51, 52, 345, 51, 52, 346,
- 51, 347, 52, 51, 348, 52, 51, 52,
- 349, 51, 52, 57, 51, 52, 351, 51,
- 52, 352, 51, 52, 353, 51, 52, 354,
- 51, 52, 355, 51, 52, 356, 51, 52,
- 357, 51, 52, 358, 51, 52, 349, 51,
- 52, 56, 360, 56, 51, 52, 361, 51,
- 52, 362, 51, 52, 363, 51, 52, 364,
- 51, 52, 365, 51, 52, 366, 51, 52,
- 367, 51, 52, 349, 51, 369, 52, 51,
- 370, 52, 51, 52, 371, 51, 52, 372,
- 51, 52, 373, 51, 52, 374, 51, 52,
- 375, 51, 52, 376, 388, 51, 52, 377,
- 51, 52, 378, 51, 52, 379, 51, 52,
- 380, 51, 381, 52, 51, 382, 52, 51,
- 52, 383, 51, 52, 384, 51, 385, 52,
- 51, 386, 52, 51, 52, 387, 51, 52,
- 358, 51, 389, 52, 51, 390, 52, 51,
- 52, 391, 51, 52, 349, 51, 52, 56,
- 51, 143, 0, 395, 0, 396, 0, 5,
- 0, 398, 0, 8, 0, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 29, 0, 54, 0, 5, 1, 0, 29,
- 1, 29, 29, 29, 29, 29, 29, 35,
- 0, 43, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 149, 126, 57, 110, 23,
- 0, 29, 54, 0, 5, 1, 0, 29,
- 1, 29, 29, 29, 29, 29, 29, 35,
- 0, 43, 0, 43, 0, 43, 139, 48,
- 9, 106, 11, 0, 134, 45, 45, 45,
- 3, 122, 33, 33, 33, 0, 122, 33,
- 33, 33, 0, 122, 33, 0, 33, 0,
- 102, 7, 7, 43, 54, 0, 0, 43,
- 114, 25, 0, 54, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 43, 43, 43, 43, 0, 27, 118,
- 27, 27, 51, 27, 0, 54, 0, 1,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 0, 43, 144, 57, 54, 0, 84,
- 54, 0, 75, 33, 84, 75, 84, 84,
- 84, 84, 84, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 54,
- 17, 0, 63, 130, 31, 60, 57, 31,
- 63, 57, 63, 63, 63, 63, 63, 63,
- 66, 31, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 54, 0, 72, 33,
- 84, 72, 84, 84, 84, 84, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 54, 15, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 15, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 15, 0, 54, 0, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 81, 84, 81, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 21, 0, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 69,
- 33, 69, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 13, 0, 0,
- 54, 0, 0, 54, 13, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 84, 54, 0, 78,
- 33, 84, 78, 84, 84, 84, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 54, 19, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 19, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 19, 0, 54, 0, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 0, 43, 54, 37, 37, 87, 37, 37,
- 43, 0, 39, 0, 43, 0, 0, 54,
- 0, 0, 39, 0, 0, 96, 54, 0,
- 93, 90, 41, 96, 90, 96, 96, 96,
- 96, 96, 96, 99, 0, 43, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 17,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 17, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 399;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 980 "ext/gherkin_lexer_is/gherkin_lexer_is.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
-
- #line 987 "ext/gherkin_lexer_is/gherkin_lexer_is.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1277 "ext/gherkin_lexer_is/gherkin_lexer_is.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1340 "ext/gherkin_lexer_is/gherkin_lexer_is.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/is.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_is()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Is", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/is.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/is.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_is/gherkin_lexer_is.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 18, 19, 21, 22, 23, 25,
- 27, 44, 45, 46, 48, 50, 55, 60,
- 65, 70, 74, 78, 80, 81, 82, 83,
- 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 100, 107, 112, 113,
- 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 125, 126, 127, 141, 143, 146,
- 148, 150, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 178, 179, 192,
- 194, 197, 199, 201, 203, 205, 207, 209,
- 211, 213, 215, 217, 219, 221, 223, 225,
- 227, 229, 231, 233, 235, 237, 239, 241,
- 243, 245, 247, 249, 251, 253, 255, 257,
- 259, 263, 265, 267, 269, 271, 273, 275,
- 277, 279, 281, 283, 285, 287, 289, 291,
- 293, 296, 298, 300, 302, 304, 306, 308,
- 310, 312, 314, 316, 318, 320, 322, 324,
- 326, 328, 330, 332, 333, 334, 335, 336,
- 337, 338, 339, 346, 348, 350, 352, 354,
- 356, 358, 360, 362, 364, 366, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 392, 394, 396, 398, 400, 402,
- 404, 406, 408, 410, 412, 414, 416, 418,
- 420, 422, 424, 426, 428, 430, 432, 434,
- 436, 438, 440, 442, 445, 447, 449, 451,
- 453, 455, 457, 459, 461, 463, 465, 467,
- 469, 471, 473, 475, 477, 479, 481, 483,
- 485, 487, 489, 491, 493, 495, 497, 499,
- 501, 503, 506, 508, 510, 512, 514, 516,
- 518, 520, 522, 524, 526, 528, 530, 532,
- 534, 536, 538, 539, 540, 541, 542, 543,
- 544, 545, 547, 548, 549, 550, 551, 552,
- 553, 554, 555, 556, 557, 558, 559, 560,
- 561, 562, 563, 575, 577, 580, 582, 584,
- 586, 588, 590, 592, 594, 596, 598, 600,
- 602, 604, 606, 608, 610, 612, 614, 616,
- 618, 620, 622, 624, 626, 628, 630, 632,
- 634, 636, 638, 640, 642, 646, 648, 650,
- 652, 654, 656, 658, 660, 662, 664, 665,
- 666, 667, 668, 669, 673, 679, 682, 684,
- 690, 707, 709, 711, 713, 715, 717, 719,
- 721, 723, 725, 727, 729, 731, 733, 735,
- 737, 739, 741, 743, 745, 747, 749, 751,
- 753, 755, 757, 759, 761, 763, 765, 767,
- 769, 771, 773, 775, 777, 779, 781, 783,
- 787, 789, 791, 793, 795, 797, 799, 801,
- 803, 805, 807, 809, 811, 813, 815, 817,
- 820, 822, 824, 826, 828, 830, 832, 834,
- 836, 838, 840, 842, 844, 846, 848, 850,
- 852, 854, 855, 856, 857, 858, 859, 860
-};
-
-static const char _lexer_trans_keys[] = {
- -61, -17, 10, 32, 34, 35, 37, 42,
- 64, 65, 66, 68, 69, 76, 79, 124,
- 9, 13, -98, -61, 101, -95, 32, 10,
- 13, 10, 13, -61, 10, 32, 34, 35,
- 37, 42, 64, 65, 66, 68, 69, 76,
- 79, 124, 9, 13, 34, 34, 10, 13,
- 10, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 9, 13, 10, 32, 9, 13, 10, 13,
- 10, 95, 70, 69, 65, 84, 85, 82,
- 69, 95, 69, 78, 68, 95, 37, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 116, 98, 117, 114, -61, -80, 97, 114,
- -61, -95, 115, 58, 105, 10, 10, -61,
- 10, 32, 35, 37, 42, 64, 65, 66,
- 69, 76, 79, 9, 13, -98, 10, -61,
- 10, 101, -95, 10, 10, 32, -61, 10,
- 32, 34, 35, 37, 42, 64, 65, 66,
- 68, 69, 76, 79, 124, 9, 13, 97,
- 107, 103, 114, 117, 110, 110, 117, 114,
- 58, 10, 10, -61, 10, 32, 35, 37,
- 42, 64, 65, 69, 76, 79, 9, 13,
- -98, 10, -61, 10, 101, -95, 10, 10,
- 32, 10, 103, 10, 97, 10, 114, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 116, 10, 98, 10,
- 117, 10, 114, -61, 10, -80, 10, 10,
- 97, 10, 114, -61, 10, -95, 10, 10,
- 115, 10, 58, 10, 102, 105, 110, 10,
- 103, 10, 105, 10, 110, 10, 108, 10,
- 101, 10, 105, 10, 107, 10, 105, -61,
- 10, -67, 10, 10, 115, 10, 105, 10,
- 110, 10, 103, 10, 32, 10, 65, 68,
- 10, 116, 10, 98, 10, 117, 10, 114,
- -61, 10, -80, 10, 10, 97, 10, 114,
- -61, 10, -95, 10, 10, 115, 10, 97,
- 10, 114, -61, 10, -90, 10, 10, 109,
- 10, 97, 10, 103, -61, -90, 109, 105,
- 58, 10, 10, 10, 32, 35, 69, 124,
- 9, 13, 10, 105, 10, 103, 10, 105,
- 10, 110, 10, 108, 10, 101, 10, 105,
- 10, 107, 10, 105, 10, 58, 102, 105,
- 110, 103, 105, 110, 108, 101, 105, 107,
- 105, 58, 10, 10, 10, 32, 35, 37,
- 64, 65, 66, 68, 69, 76, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 116, 10, 98,
- 10, 117, 10, 114, -61, 10, -80, 10,
- 10, 97, 10, 114, -61, 10, -95, 10,
- 10, 115, 10, 58, 105, 10, 114, 10,
- 58, 10, 97, 10, 107, 10, 103, 10,
- 114, 10, 117, 10, 110, 10, 110, 10,
- 117, -61, 10, -90, 10, 10, 109, 10,
- 105, 10, 105, 10, 103, 10, 105, 10,
- 110, 10, 108, 10, 101, 10, 105, 10,
- 107, -61, 10, -67, 10, 10, 115, 10,
- 105, 10, 110, 10, 103, 10, 32, 10,
- 65, 68, 10, 116, 10, 98, 10, 117,
- 10, 114, -61, 10, -80, 10, 10, 97,
- 10, 114, -61, 10, -95, 10, 10, 115,
- 10, 97, -61, 10, -90, 10, 10, 109,
- 10, 97, -61, -67, 115, 105, 110, 103,
- 32, 65, 68, 116, 98, 117, 114, -61,
- -80, 97, 114, -61, -95, 115, 97, 114,
- 58, 10, 10, -61, 10, 32, 35, 37,
- 42, 64, 65, 69, 79, 9, 13, -98,
- 10, -61, 10, 101, -95, 10, 10, 32,
- 10, 103, 10, 97, 10, 114, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 116, 10, 98, 10, 117,
- 10, 114, -61, 10, -80, 10, 10, 97,
- 10, 114, -61, 10, -95, 10, 10, 115,
- 10, 58, 10, 102, 105, 110, 10, 103,
- 10, 105, 10, 110, 10, 108, 10, 101,
- 10, 105, 10, 107, 10, 105, 10, 103,
- -61, -90, 109, 97, 103, 32, 124, 9,
- 13, 10, 32, 92, 124, 9, 13, 10,
- 92, 124, 10, 92, 10, 32, 92, 124,
- 9, 13, -61, 10, 32, 34, 35, 37,
- 42, 64, 65, 66, 68, 69, 76, 79,
- 124, 9, 13, 10, 103, 10, 97, 10,
- 114, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 116, 10,
- 98, 10, 117, 10, 114, -61, 10, -80,
- 10, 10, 97, 10, 114, -61, 10, -95,
- 10, 10, 115, 10, 58, 10, 97, 10,
- 107, 10, 103, 10, 114, 10, 117, 10,
- 110, 10, 110, 10, 117, 10, 114, 10,
- 102, 105, 110, 10, 103, 10, 105, 10,
- 110, 10, 108, 10, 101, 10, 105, 10,
- 107, 10, 105, -61, 10, -67, 10, 10,
- 115, 10, 105, 10, 110, 10, 103, 10,
- 32, 10, 65, 68, 10, 116, 10, 98,
- 10, 117, 10, 114, -61, 10, -80, 10,
- 10, 97, 10, 114, -61, 10, -95, 10,
- 10, 115, 10, 97, -61, 10, -90, 10,
- 10, 109, 10, 97, 10, 103, 114, 103,
- 97, 114, -69, -65, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 16, 1, 2, 1, 1, 2, 2,
- 15, 1, 1, 2, 2, 3, 3, 3,
- 3, 2, 2, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 3, 5, 3, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 2, 1, 1, 12, 2, 3, 2,
- 2, 15, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 11, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 4, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 5, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 10, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 10, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 4, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 2, 4, 3, 2, 4,
- 15, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 4,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 1, 1, 1,
- 1, 1, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 1, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 1, 0, 0, 1,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 18, 20, 23, 25, 27, 30,
- 33, 50, 52, 54, 57, 60, 65, 70,
- 75, 80, 84, 88, 91, 93, 95, 97,
- 99, 101, 103, 105, 107, 109, 111, 113,
- 115, 117, 119, 121, 126, 133, 138, 140,
- 142, 144, 146, 148, 150, 152, 154, 156,
- 158, 160, 163, 165, 167, 181, 184, 188,
- 191, 194, 211, 213, 215, 217, 219, 221,
- 223, 225, 227, 229, 231, 233, 235, 248,
- 251, 255, 258, 261, 264, 267, 270, 273,
- 276, 279, 282, 285, 288, 291, 294, 297,
- 300, 303, 306, 309, 312, 315, 318, 321,
- 324, 327, 330, 333, 336, 339, 342, 345,
- 348, 353, 356, 359, 362, 365, 368, 371,
- 374, 377, 380, 383, 386, 389, 392, 395,
- 398, 402, 405, 408, 411, 414, 417, 420,
- 423, 426, 429, 432, 435, 438, 441, 444,
- 447, 450, 453, 456, 458, 460, 462, 464,
- 466, 468, 470, 477, 480, 483, 486, 489,
- 492, 495, 498, 501, 504, 507, 511, 513,
- 515, 517, 519, 521, 523, 525, 527, 529,
- 531, 533, 545, 548, 551, 554, 557, 560,
- 563, 566, 569, 572, 575, 578, 581, 584,
- 587, 590, 593, 596, 599, 602, 605, 608,
- 611, 614, 617, 620, 624, 627, 630, 633,
- 636, 639, 642, 645, 648, 651, 654, 657,
- 660, 663, 666, 669, 672, 675, 678, 681,
- 684, 687, 690, 693, 696, 699, 702, 705,
- 708, 711, 715, 718, 721, 724, 727, 730,
- 733, 736, 739, 742, 745, 748, 751, 754,
- 757, 760, 763, 765, 767, 769, 771, 773,
- 775, 777, 780, 782, 784, 786, 788, 790,
- 792, 794, 796, 798, 800, 802, 804, 806,
- 808, 810, 812, 824, 827, 831, 834, 837,
- 840, 843, 846, 849, 852, 855, 858, 861,
- 864, 867, 870, 873, 876, 879, 882, 885,
- 888, 891, 894, 897, 900, 903, 906, 909,
- 912, 915, 918, 921, 924, 929, 932, 935,
- 938, 941, 944, 947, 950, 953, 956, 958,
- 960, 962, 964, 966, 970, 976, 980, 983,
- 989, 1006, 1009, 1012, 1015, 1018, 1021, 1024,
- 1027, 1030, 1033, 1036, 1039, 1042, 1045, 1048,
- 1051, 1054, 1057, 1060, 1063, 1066, 1069, 1072,
- 1075, 1078, 1081, 1084, 1087, 1090, 1093, 1096,
- 1099, 1102, 1105, 1108, 1111, 1114, 1117, 1120,
- 1125, 1128, 1131, 1134, 1137, 1140, 1143, 1146,
- 1149, 1152, 1155, 1158, 1161, 1164, 1167, 1170,
- 1174, 1177, 1180, 1183, 1186, 1189, 1192, 1195,
- 1198, 1201, 1204, 1207, 1210, 1213, 1216, 1219,
- 1222, 1225, 1227, 1229, 1231, 1233, 1235, 1237
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 397, 8, 8, 9, 19, 21, 5,
- 35, 38, 58, 139, 157, 242, 314, 315,
- 8, 0, 3, 0, 4, 394, 0, 5,
- 0, 6, 0, 8, 20, 7, 8, 20,
- 7, 2, 8, 8, 9, 19, 21, 5,
- 35, 38, 58, 139, 157, 242, 314, 315,
- 8, 0, 10, 0, 11, 0, 13, 12,
- 12, 13, 12, 12, 14, 14, 15, 14,
- 14, 14, 14, 15, 14, 14, 14, 14,
- 16, 14, 14, 14, 14, 17, 14, 14,
- 8, 18, 18, 0, 8, 18, 18, 0,
- 8, 20, 19, 8, 0, 22, 0, 23,
- 0, 24, 0, 25, 0, 26, 0, 27,
- 0, 28, 0, 29, 0, 30, 0, 31,
- 0, 32, 0, 33, 0, 34, 0, 399,
- 0, 0, 0, 0, 0, 36, 37, 8,
- 37, 37, 35, 36, 36, 8, 37, 35,
- 37, 0, 39, 0, 40, 0, 41, 0,
- 42, 0, 43, 0, 44, 0, 45, 0,
- 46, 0, 47, 0, 48, 0, 49, 0,
- 50, 393, 0, 52, 51, 52, 51, 53,
- 52, 52, 8, 324, 56, 8, 338, 350,
- 359, 368, 392, 52, 51, 54, 52, 51,
- 55, 52, 321, 51, 56, 52, 51, 52,
- 57, 51, 2, 8, 8, 9, 19, 21,
- 5, 35, 38, 58, 139, 157, 242, 314,
- 315, 8, 0, 59, 0, 60, 0, 61,
- 0, 62, 0, 63, 0, 64, 0, 65,
- 0, 66, 0, 67, 0, 68, 0, 70,
- 69, 70, 69, 71, 70, 70, 8, 78,
- 74, 8, 92, 104, 113, 138, 70, 69,
- 72, 70, 69, 73, 70, 75, 69, 74,
- 70, 69, 70, 57, 69, 70, 76, 69,
- 70, 77, 69, 70, 74, 69, 70, 79,
- 69, 70, 80, 69, 70, 81, 69, 70,
- 82, 69, 70, 83, 69, 70, 84, 69,
- 70, 85, 69, 70, 86, 69, 70, 87,
- 69, 70, 88, 69, 70, 89, 69, 70,
- 90, 69, 70, 91, 69, 70, 8, 69,
- 70, 93, 69, 70, 94, 69, 70, 95,
- 69, 70, 96, 69, 97, 70, 69, 98,
- 70, 69, 70, 99, 69, 70, 100, 69,
- 101, 70, 69, 102, 70, 69, 70, 103,
- 69, 70, 57, 69, 70, 74, 105, 74,
- 69, 70, 106, 69, 70, 107, 69, 70,
- 108, 69, 70, 109, 69, 70, 110, 69,
- 70, 111, 69, 70, 112, 69, 70, 103,
- 69, 114, 70, 69, 115, 70, 69, 70,
- 116, 69, 70, 117, 69, 70, 118, 69,
- 70, 119, 69, 70, 120, 69, 70, 121,
- 134, 69, 70, 122, 69, 70, 123, 69,
- 70, 124, 69, 70, 125, 69, 126, 70,
- 69, 127, 70, 69, 70, 128, 69, 70,
- 129, 69, 130, 70, 69, 131, 70, 69,
- 70, 132, 69, 70, 133, 69, 70, 103,
- 69, 135, 70, 69, 136, 70, 69, 70,
- 137, 69, 70, 103, 69, 70, 74, 69,
- 140, 0, 141, 0, 142, 0, 143, 0,
- 144, 0, 146, 145, 146, 145, 146, 146,
- 8, 147, 8, 146, 145, 146, 148, 145,
- 146, 149, 145, 146, 150, 145, 146, 151,
- 145, 146, 152, 145, 146, 153, 145, 146,
- 154, 145, 146, 155, 145, 146, 156, 145,
- 146, 57, 145, 5, 158, 5, 0, 159,
- 0, 160, 0, 161, 0, 162, 0, 163,
- 0, 164, 0, 165, 0, 166, 0, 167,
- 0, 169, 168, 169, 168, 169, 169, 8,
- 170, 8, 184, 198, 206, 210, 218, 169,
- 168, 169, 171, 168, 169, 172, 168, 169,
- 173, 168, 169, 174, 168, 169, 175, 168,
- 169, 176, 168, 169, 177, 168, 169, 178,
- 168, 169, 179, 168, 169, 180, 168, 169,
- 181, 168, 169, 182, 168, 169, 183, 168,
- 169, 8, 168, 169, 185, 168, 169, 186,
- 168, 169, 187, 168, 169, 188, 168, 189,
- 169, 168, 190, 169, 168, 169, 191, 168,
- 169, 192, 168, 193, 169, 168, 194, 169,
- 168, 169, 195, 168, 169, 57, 196, 168,
- 169, 197, 168, 169, 57, 168, 169, 199,
- 168, 169, 200, 168, 169, 201, 168, 169,
- 202, 168, 169, 203, 168, 169, 204, 168,
- 169, 205, 168, 169, 196, 168, 207, 169,
- 168, 208, 169, 168, 169, 209, 168, 169,
- 197, 168, 169, 211, 168, 169, 212, 168,
- 169, 213, 168, 169, 214, 168, 169, 215,
- 168, 169, 216, 168, 169, 217, 168, 169,
- 209, 168, 219, 169, 168, 220, 169, 168,
- 169, 221, 168, 169, 222, 168, 169, 223,
- 168, 169, 224, 168, 169, 225, 168, 169,
- 226, 238, 168, 169, 227, 168, 169, 228,
- 168, 169, 229, 168, 169, 230, 168, 231,
- 169, 168, 232, 169, 168, 169, 233, 168,
- 169, 234, 168, 235, 169, 168, 236, 169,
- 168, 169, 237, 168, 169, 196, 168, 239,
- 169, 168, 240, 169, 168, 169, 241, 168,
- 169, 197, 168, 243, 0, 244, 0, 245,
- 0, 246, 0, 247, 0, 248, 0, 249,
- 0, 250, 310, 0, 251, 0, 252, 0,
- 253, 0, 254, 0, 255, 0, 256, 0,
- 257, 0, 258, 0, 259, 0, 260, 0,
- 261, 0, 262, 0, 263, 0, 264, 0,
- 266, 265, 266, 265, 267, 266, 266, 8,
- 274, 270, 8, 288, 300, 309, 266, 265,
- 268, 266, 265, 269, 266, 271, 265, 270,
- 266, 265, 266, 57, 265, 266, 272, 265,
- 266, 273, 265, 266, 270, 265, 266, 275,
- 265, 266, 276, 265, 266, 277, 265, 266,
- 278, 265, 266, 279, 265, 266, 280, 265,
- 266, 281, 265, 266, 282, 265, 266, 283,
- 265, 266, 284, 265, 266, 285, 265, 266,
- 286, 265, 266, 287, 265, 266, 8, 265,
- 266, 289, 265, 266, 290, 265, 266, 291,
- 265, 266, 292, 265, 293, 266, 265, 294,
- 266, 265, 266, 295, 265, 266, 296, 265,
- 297, 266, 265, 298, 266, 265, 266, 299,
- 265, 266, 57, 265, 266, 270, 301, 270,
- 265, 266, 302, 265, 266, 303, 265, 266,
- 304, 265, 266, 305, 265, 266, 306, 265,
- 266, 307, 265, 266, 308, 265, 266, 299,
- 265, 266, 270, 265, 311, 0, 312, 0,
- 313, 0, 263, 0, 5, 0, 315, 316,
- 315, 0, 320, 319, 318, 316, 319, 317,
- 0, 318, 316, 317, 0, 318, 317, 320,
- 319, 318, 316, 319, 317, 2, 320, 320,
- 9, 19, 21, 5, 35, 38, 58, 139,
- 157, 242, 314, 315, 320, 0, 52, 322,
- 51, 52, 323, 51, 52, 56, 51, 52,
- 325, 51, 52, 326, 51, 52, 327, 51,
- 52, 328, 51, 52, 329, 51, 52, 330,
- 51, 52, 331, 51, 52, 332, 51, 52,
- 333, 51, 52, 334, 51, 52, 335, 51,
- 52, 336, 51, 52, 337, 51, 52, 8,
- 51, 52, 339, 51, 52, 340, 51, 52,
- 341, 51, 52, 342, 51, 343, 52, 51,
- 344, 52, 51, 52, 345, 51, 52, 346,
- 51, 347, 52, 51, 348, 52, 51, 52,
- 349, 51, 52, 57, 51, 52, 351, 51,
- 52, 352, 51, 52, 353, 51, 52, 354,
- 51, 52, 355, 51, 52, 356, 51, 52,
- 357, 51, 52, 358, 51, 52, 349, 51,
- 52, 56, 360, 56, 51, 52, 361, 51,
- 52, 362, 51, 52, 363, 51, 52, 364,
- 51, 52, 365, 51, 52, 366, 51, 52,
- 367, 51, 52, 349, 51, 369, 52, 51,
- 370, 52, 51, 52, 371, 51, 52, 372,
- 51, 52, 373, 51, 52, 374, 51, 52,
- 375, 51, 52, 376, 388, 51, 52, 377,
- 51, 52, 378, 51, 52, 379, 51, 52,
- 380, 51, 381, 52, 51, 382, 52, 51,
- 52, 383, 51, 52, 384, 51, 385, 52,
- 51, 386, 52, 51, 52, 387, 51, 52,
- 358, 51, 389, 52, 51, 390, 52, 51,
- 52, 391, 51, 52, 349, 51, 52, 56,
- 51, 143, 0, 395, 0, 396, 0, 5,
- 0, 398, 0, 8, 0, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 29, 0, 54, 0, 5, 1, 0, 29,
- 1, 29, 29, 29, 29, 29, 29, 35,
- 0, 43, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 149, 126, 57, 110, 23,
- 0, 29, 54, 0, 5, 1, 0, 29,
- 1, 29, 29, 29, 29, 29, 29, 35,
- 0, 43, 0, 43, 0, 43, 139, 48,
- 9, 106, 11, 0, 134, 45, 45, 45,
- 3, 122, 33, 33, 33, 0, 122, 33,
- 33, 33, 0, 122, 33, 0, 33, 0,
- 102, 7, 7, 43, 54, 0, 0, 43,
- 114, 25, 0, 54, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 43, 43, 43, 43, 0, 27, 118,
- 27, 27, 51, 27, 0, 54, 0, 1,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 0, 43, 144, 57, 54, 0, 84,
- 54, 0, 75, 33, 84, 75, 84, 84,
- 84, 84, 84, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 54,
- 17, 0, 63, 130, 31, 60, 57, 31,
- 63, 57, 63, 63, 63, 63, 63, 63,
- 66, 31, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 54, 0, 72, 33,
- 84, 72, 84, 84, 84, 84, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 54, 15, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 15, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 15, 0, 54, 0, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 81, 84, 81, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 21, 0, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 69,
- 33, 69, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 13, 0, 0,
- 54, 0, 0, 54, 13, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 84, 54, 0, 78,
- 33, 84, 78, 84, 84, 84, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 54, 19, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 19, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 19, 0, 54, 0, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 0, 43, 54, 37, 37, 87, 37, 37,
- 43, 0, 39, 0, 43, 0, 0, 54,
- 0, 0, 39, 0, 0, 96, 54, 0,
- 93, 90, 41, 96, 90, 96, 96, 96,
- 96, 96, 96, 99, 0, 43, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 17,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 17, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 399;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/is.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 980 "ext/gherkin_lexer_is/gherkin_lexer_is.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/is.c.rl"
-
-#line 987 "ext/gherkin_lexer_is/gherkin_lexer_is.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/is.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/is.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/is.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/is.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/is.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/is.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/is.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/is.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/is.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/is.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/is.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/is.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/is.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/is.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/is.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/is.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/is.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/is.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/is.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/is.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/is.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/is.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/is.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/is.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1277 "ext/gherkin_lexer_is/gherkin_lexer_is.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/is.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1340 "ext/gherkin_lexer_is/gherkin_lexer_is.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/is.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_is()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Is", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_it/extconf.rb
index f95c573,f95c573..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_it/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_it")
--have_library("c", "main")
--create_makefile("gherkin_lexer_it")
diff --cc ext/gherkin_lexer_it/gherkin_lexer_it.c
index dd99b42,b48a634..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_it/gherkin_lexer_it.c
+++ /dev/null
@@@ -1,1340 -1,1340 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 142, 144, 146,
- 148, 150, 152, 154, 156, 158, 160, 162,
- 164, 166, 168, 170, 172, 190, 191, 192,
- 196, 198, 199, 200, 201, 202, 203, 204,
- 205, 212, 214, 216, 218, 220, 222, 224,
- 226, 228, 230, 232, 234, 236, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 264, 266,
- 268, 270, 272, 274, 276, 278, 280, 282,
- 284, 286, 288, 290, 292, 294, 296, 298,
- 300, 302, 304, 306, 308, 310, 312, 314,
- 316, 318, 320, 322, 324, 326, 328, 330,
- 332, 334, 336, 338, 340, 342, 344, 347,
- 349, 351, 353, 355, 357, 359, 361, 363,
- 365, 367, 369, 371, 373, 375, 377, 379,
- 381, 382, 383, 384, 385, 386, 387, 389,
- 390, 391, 392, 393, 394, 395, 396, 397,
- 413, 415, 417, 419, 421, 423, 425, 427,
- 429, 431, 433, 435, 437, 439, 441, 443,
- 445, 447, 449, 451, 453, 455, 457, 459,
- 461, 463, 465, 467, 469, 471, 473, 478,
- 480, 482, 484, 486, 488, 490, 492, 494,
- 496, 498, 500, 502, 504, 506, 508, 510,
- 512, 514, 517, 519, 521, 523, 525, 527,
- 529, 531, 533, 535, 537, 539, 541, 543,
- 545, 547, 549, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 587, 589, 591, 593, 595, 597, 599,
- 601, 603, 605, 607, 609, 611, 613, 615,
- 617, 619, 621, 623, 625, 627, 629, 631,
- 636, 638, 640, 642, 644, 646, 648, 650,
- 652, 654, 656, 658, 660, 662, 664, 666,
- 668, 670, 672, 674, 676, 678, 680, 682,
- 684, 686, 690, 696, 699, 701, 707, 725,
- 727, 729, 731, 733, 735, 737, 739, 744,
- 746, 748, 750, 752, 754, 756, 758, 760,
- 762, 764, 766, 768, 770, 772, 774, 776,
- 778, 780, 782, 785, 787, 789, 791, 793,
- 795, 797, 799, 801, 803, 805, 807, 809,
- 811, 813, 815, 817, 819, 821
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 67, 68, 69, 70, 77, 81, 83,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 65, 67, 68, 69,
- 70, 77, 81, 83, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 108, 108, 111, 114, 97, 111, 110, 116,
- 101, 115, 116, 111, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 65, 68, 69,
- 70, 77, 81, 83, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 32, 34, 35,
- 37, 42, 64, 65, 67, 68, 69, 70,
- 77, 81, 83, 124, 9, 13, 97, 116,
- 97, 101, 105, 111, 32, 115, 101, 109,
- 112, 105, 58, 10, 10, 10, 32, 35,
- 70, 124, 9, 13, 10, 117, 10, 110,
- 10, 122, 10, 105, 10, 111, 10, 110,
- 10, 97, 10, 108, 10, 105, 10, 116,
- -61, 10, -96, 10, 10, 58, 117, 110,
- 122, 105, 111, 110, 97, 108, 105, 116,
- -61, -96, 58, 10, 10, 10, 32, 35,
- 37, 64, 67, 69, 70, 83, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 111, 10, 110,
- 10, 116, 10, 101, 10, 115, 10, 116,
- 10, 111, 10, 58, 10, 115, 10, 101,
- 10, 109, 10, 112, 10, 105, 10, 117,
- 10, 110, 10, 122, 10, 105, 10, 111,
- 10, 110, 10, 97, 10, 108, 10, 105,
- 10, 116, -61, 10, -96, 10, 10, 99,
- 10, 101, 104, 10, 110, 10, 97, 10,
- 114, 10, 105, 10, 101, 10, 109, 10,
- 97, 10, 32, 10, 100, 10, 101, 10,
- 108, 10, 108, 10, 111, 10, 32, 10,
- 115, 10, 99, 10, 101, 117, 97, 110,
- 100, 111, 99, 101, 104, 110, 97, 114,
- 105, 111, 58, 10, 10, 10, 32, 35,
- 37, 42, 64, 65, 67, 68, 69, 70,
- 77, 81, 83, 9, 13, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 32, 10, 108, 10, 108, 10,
- 111, 10, 114, 10, 97, 10, 111, 10,
- 110, 10, 116, 10, 101, 10, 115, 10,
- 116, 10, 111, 10, 58, 10, 97, 10,
- 116, 10, 97, 101, 105, 111, 10, 117,
- 10, 110, 10, 122, 10, 105, 10, 111,
- 10, 110, 10, 97, 10, 108, 10, 105,
- 10, 116, -61, 10, -96, 10, 10, 117,
- 10, 97, 10, 110, 10, 100, 10, 111,
- 10, 99, 10, 101, 104, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 101, 10,
- 109, 10, 97, 10, 32, 10, 100, 10,
- 101, 10, 108, 10, 108, 10, 111, 10,
- 32, 10, 115, 10, 99, 10, 101, 101,
- 109, 97, 32, 100, 101, 108, 108, 111,
- 32, 115, 99, 101, 110, 97, 114, 105,
- 111, 58, 10, 10, 10, 32, 35, 37,
- 42, 64, 65, 68, 69, 70, 77, 81,
- 83, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 108, 10, 108, 10, 111, 10,
- 114, 10, 97, 10, 97, 10, 116, 10,
- 97, 101, 105, 111, 10, 117, 10, 110,
- 10, 122, 10, 105, 10, 111, 10, 110,
- 10, 97, 10, 108, 10, 105, 10, 116,
- -61, 10, -96, 10, 10, 58, 10, 117,
- 10, 97, 10, 110, 10, 100, 10, 111,
- 10, 99, 10, 101, 10, 110, 10, 97,
- 10, 114, 10, 105, 10, 111, 32, 124,
- 9, 13, 10, 32, 92, 124, 9, 13,
- 10, 92, 124, 10, 92, 10, 32, 92,
- 124, 9, 13, 10, 32, 34, 35, 37,
- 42, 64, 65, 67, 68, 69, 70, 77,
- 81, 83, 124, 9, 13, 10, 108, 10,
- 108, 10, 111, 10, 114, 10, 97, 10,
- 97, 10, 116, 10, 97, 101, 105, 111,
- 10, 117, 10, 110, 10, 122, 10, 105,
- 10, 111, 10, 110, 10, 97, 10, 108,
- 10, 105, 10, 116, -61, 10, -96, 10,
- 10, 58, 10, 117, 10, 97, 10, 110,
- 10, 100, 10, 111, 10, 99, 10, 101,
- 104, 10, 110, 10, 97, 10, 114, 10,
- 105, 10, 111, 10, 101, 10, 109, 10,
- 97, 10, 32, 10, 100, 10, 101, 10,
- 108, 10, 108, 10, 111, 10, 32, 10,
- 115, 10, 99, 10, 101, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 13, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 16, 1, 1, 4,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 5, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 9, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 14,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 5, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 13, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 5,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 4, 3, 2, 4, 16, 2,
- 2, 2, 2, 2, 2, 2, 5, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 1, 0, 0, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 139, 141,
- 143, 145, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 165, 167, 182, 185, 188,
- 191, 194, 197, 200, 203, 206, 209, 212,
- 215, 218, 221, 224, 227, 245, 247, 249,
- 254, 257, 259, 261, 263, 265, 267, 269,
- 271, 278, 281, 284, 287, 290, 293, 296,
- 299, 302, 305, 308, 311, 314, 317, 319,
- 321, 323, 325, 327, 329, 331, 333, 335,
- 337, 339, 341, 343, 345, 347, 358, 361,
- 364, 367, 370, 373, 376, 379, 382, 385,
- 388, 391, 394, 397, 400, 403, 406, 409,
- 412, 415, 418, 421, 424, 427, 430, 433,
- 436, 439, 442, 445, 448, 451, 454, 457,
- 460, 463, 466, 469, 472, 475, 478, 482,
- 485, 488, 491, 494, 497, 500, 503, 506,
- 509, 512, 515, 518, 521, 524, 527, 530,
- 533, 535, 537, 539, 541, 543, 545, 548,
- 550, 552, 554, 556, 558, 560, 562, 564,
- 580, 583, 586, 589, 592, 595, 598, 601,
- 604, 607, 610, 613, 616, 619, 622, 625,
- 628, 631, 634, 637, 640, 643, 646, 649,
- 652, 655, 658, 661, 664, 667, 670, 676,
- 679, 682, 685, 688, 691, 694, 697, 700,
- 703, 706, 709, 712, 715, 718, 721, 724,
- 727, 730, 734, 737, 740, 743, 746, 749,
- 752, 755, 758, 761, 764, 767, 770, 773,
- 776, 779, 782, 785, 787, 789, 791, 793,
- 795, 797, 799, 801, 803, 805, 807, 809,
- 811, 813, 815, 817, 819, 821, 823, 825,
- 827, 842, 845, 848, 851, 854, 857, 860,
- 863, 866, 869, 872, 875, 878, 881, 884,
- 887, 890, 893, 896, 899, 902, 905, 908,
- 914, 917, 920, 923, 926, 929, 932, 935,
- 938, 941, 944, 947, 950, 953, 956, 959,
- 962, 965, 968, 971, 974, 977, 980, 983,
- 986, 989, 993, 999, 1003, 1006, 1012, 1030,
- 1033, 1036, 1039, 1042, 1045, 1048, 1051, 1057,
- 1060, 1063, 1066, 1069, 1072, 1075, 1078, 1081,
- 1084, 1087, 1090, 1093, 1096, 1099, 1102, 1105,
- 1108, 1111, 1114, 1118, 1121, 1124, 1127, 1130,
- 1133, 1136, 1139, 1142, 1145, 1148, 1151, 1154,
- 1157, 1160, 1163, 1166, 1169, 1172
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 42, 69, 72, 94, 41, 168, 173,
- 321, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 42,
- 69, 72, 94, 41, 168, 173, 321, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 373, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 0, 39, 0, 40, 0, 41,
- 0, 31, 0, 43, 0, 44, 0, 45,
- 0, 46, 0, 47, 0, 48, 0, 49,
- 0, 50, 0, 52, 51, 52, 51, 52,
- 52, 4, 53, 67, 4, 327, 332, 67,
- 335, 331, 348, 353, 52, 51, 52, 54,
- 51, 52, 55, 51, 52, 56, 51, 52,
- 57, 51, 52, 58, 51, 52, 59, 51,
- 52, 60, 51, 52, 61, 51, 52, 62,
- 51, 52, 63, 51, 52, 64, 51, 52,
- 65, 51, 52, 66, 51, 52, 4, 51,
- 52, 68, 51, 4, 4, 5, 15, 17,
- 31, 34, 37, 42, 69, 72, 94, 41,
- 168, 173, 321, 4, 0, 70, 0, 71,
- 0, 31, 31, 31, 31, 0, 32, 73,
- 0, 74, 0, 75, 0, 76, 0, 77,
- 0, 78, 0, 80, 79, 80, 79, 80,
- 80, 4, 81, 4, 80, 79, 80, 82,
- 79, 80, 83, 79, 80, 84, 79, 80,
- 85, 79, 80, 86, 79, 80, 87, 79,
- 80, 88, 79, 80, 89, 79, 80, 90,
- 79, 80, 91, 79, 92, 80, 79, 93,
- 80, 79, 80, 68, 79, 95, 0, 96,
- 0, 97, 0, 98, 0, 99, 0, 100,
- 0, 101, 0, 102, 0, 103, 0, 104,
- 0, 105, 0, 106, 0, 107, 0, 109,
- 108, 109, 108, 109, 109, 4, 110, 4,
- 124, 132, 137, 149, 109, 108, 109, 111,
- 108, 109, 112, 108, 109, 113, 108, 109,
- 114, 108, 109, 115, 108, 109, 116, 108,
- 109, 117, 108, 109, 118, 108, 109, 119,
- 108, 109, 120, 108, 109, 121, 108, 109,
- 122, 108, 109, 123, 108, 109, 4, 108,
- 109, 125, 108, 109, 126, 108, 109, 127,
- 108, 109, 128, 108, 109, 129, 108, 109,
- 130, 108, 109, 131, 108, 109, 68, 108,
- 109, 133, 108, 109, 134, 108, 109, 135,
- 108, 109, 136, 108, 109, 131, 108, 109,
- 138, 108, 109, 139, 108, 109, 140, 108,
- 109, 141, 108, 109, 142, 108, 109, 143,
- 108, 109, 144, 108, 109, 145, 108, 109,
- 146, 108, 109, 147, 108, 148, 109, 108,
- 131, 109, 108, 109, 150, 108, 109, 151,
- 155, 108, 109, 152, 108, 109, 153, 108,
- 109, 154, 108, 109, 130, 108, 109, 156,
- 108, 109, 157, 108, 109, 158, 108, 109,
- 159, 108, 109, 160, 108, 109, 161, 108,
- 109, 162, 108, 109, 163, 108, 109, 164,
- 108, 109, 165, 108, 109, 166, 108, 109,
- 167, 108, 109, 151, 108, 169, 0, 170,
- 0, 171, 0, 172, 0, 31, 0, 174,
- 0, 175, 251, 0, 176, 0, 177, 0,
- 178, 0, 179, 0, 180, 0, 181, 0,
- 183, 182, 183, 182, 183, 183, 4, 184,
- 198, 4, 199, 204, 212, 198, 215, 203,
- 227, 232, 183, 182, 183, 185, 182, 183,
- 186, 182, 183, 187, 182, 183, 188, 182,
- 183, 189, 182, 183, 190, 182, 183, 191,
- 182, 183, 192, 182, 183, 193, 182, 183,
- 194, 182, 183, 195, 182, 183, 196, 182,
- 183, 197, 182, 183, 4, 182, 183, 68,
- 182, 183, 200, 182, 183, 201, 182, 183,
- 202, 182, 183, 203, 182, 183, 198, 182,
- 183, 205, 182, 183, 206, 182, 183, 207,
- 182, 183, 208, 182, 183, 209, 182, 183,
- 210, 182, 183, 211, 182, 183, 68, 182,
- 183, 213, 182, 183, 214, 182, 183, 198,
- 198, 198, 198, 182, 183, 216, 182, 183,
- 217, 182, 183, 218, 182, 183, 219, 182,
- 183, 220, 182, 183, 221, 182, 183, 222,
- 182, 183, 223, 182, 183, 224, 182, 183,
- 225, 182, 226, 183, 182, 211, 183, 182,
- 183, 228, 182, 183, 229, 182, 183, 230,
- 182, 183, 231, 182, 183, 198, 182, 183,
- 233, 182, 183, 234, 238, 182, 183, 235,
- 182, 183, 236, 182, 183, 237, 182, 183,
- 210, 182, 183, 239, 182, 183, 240, 182,
- 183, 241, 182, 183, 242, 182, 183, 243,
- 182, 183, 244, 182, 183, 245, 182, 183,
- 246, 182, 183, 247, 182, 183, 248, 182,
- 183, 249, 182, 183, 250, 182, 183, 234,
- 182, 252, 0, 253, 0, 254, 0, 255,
- 0, 256, 0, 257, 0, 258, 0, 259,
- 0, 260, 0, 261, 0, 262, 0, 263,
- 0, 264, 0, 265, 0, 266, 0, 267,
- 0, 268, 0, 269, 0, 270, 0, 272,
- 271, 272, 271, 272, 272, 4, 273, 287,
- 4, 288, 293, 287, 296, 292, 309, 314,
- 272, 271, 272, 274, 271, 272, 275, 271,
- 272, 276, 271, 272, 277, 271, 272, 278,
- 271, 272, 279, 271, 272, 280, 271, 272,
- 281, 271, 272, 282, 271, 272, 283, 271,
- 272, 284, 271, 272, 285, 271, 272, 286,
- 271, 272, 4, 271, 272, 68, 271, 272,
- 289, 271, 272, 290, 271, 272, 291, 271,
- 272, 292, 271, 272, 287, 271, 272, 294,
- 271, 272, 295, 271, 272, 287, 287, 287,
- 287, 271, 272, 297, 271, 272, 298, 271,
- 272, 299, 271, 272, 300, 271, 272, 301,
- 271, 272, 302, 271, 272, 303, 271, 272,
- 304, 271, 272, 305, 271, 272, 306, 271,
- 307, 272, 271, 308, 272, 271, 272, 68,
- 271, 272, 310, 271, 272, 311, 271, 272,
- 312, 271, 272, 313, 271, 272, 287, 271,
- 272, 315, 271, 272, 316, 271, 272, 317,
- 271, 272, 318, 271, 272, 319, 271, 272,
- 320, 271, 272, 308, 271, 321, 322, 321,
- 0, 326, 325, 324, 322, 325, 323, 0,
- 324, 322, 323, 0, 324, 323, 326, 325,
- 324, 322, 325, 323, 326, 326, 5, 15,
- 17, 31, 34, 37, 42, 69, 72, 94,
- 41, 168, 173, 321, 326, 0, 52, 328,
- 51, 52, 329, 51, 52, 330, 51, 52,
- 331, 51, 52, 67, 51, 52, 333, 51,
- 52, 334, 51, 52, 67, 67, 67, 67,
- 51, 52, 336, 51, 52, 337, 51, 52,
- 338, 51, 52, 339, 51, 52, 340, 51,
- 52, 341, 51, 52, 342, 51, 52, 343,
- 51, 52, 344, 51, 52, 345, 51, 346,
- 52, 51, 347, 52, 51, 52, 68, 51,
- 52, 349, 51, 52, 350, 51, 52, 351,
- 51, 52, 352, 51, 52, 67, 51, 52,
- 354, 51, 52, 355, 360, 51, 52, 356,
- 51, 52, 357, 51, 52, 358, 51, 52,
- 359, 51, 52, 347, 51, 52, 361, 51,
- 52, 362, 51, 52, 363, 51, 52, 364,
- 51, 52, 365, 51, 52, 366, 51, 52,
- 367, 51, 52, 368, 51, 52, 369, 51,
- 52, 370, 51, 52, 371, 51, 52, 372,
- 51, 52, 355, 51, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 72, 33, 84, 72, 84, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 15, 0,
- 54, 15, 0, 130, 31, 60, 57, 31,
- 63, 57, 63, 63, 63, 63, 63, 63,
- 63, 63, 66, 31, 43, 0, 43, 0,
- 43, 0, 0, 0, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 81, 84, 81, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 21, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 69, 33, 69,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 13, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 13, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 75, 33,
- 84, 75, 84, 84, 84, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 17, 0, 54, 17,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 78, 33, 84,
- 78, 84, 84, 84, 84, 84, 84, 84,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 19, 0, 54, 19, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 19,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 0, 0,
- 43, 54, 37, 37, 87, 37, 37, 43,
- 0, 39, 0, 43, 0, 0, 54, 0,
- 0, 39, 0, 0, 54, 0, 93, 90,
- 41, 96, 90, 96, 96, 96, 96, 96,
- 96, 96, 96, 99, 0, 43, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 15, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 373;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 944 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
-
- #line 951 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1241 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1304 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/it.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_it()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "It", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/it.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/it.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 142, 144, 146,
- 148, 150, 152, 154, 156, 158, 160, 162,
- 164, 166, 168, 170, 172, 190, 191, 192,
- 196, 198, 199, 200, 201, 202, 203, 204,
- 205, 212, 214, 216, 218, 220, 222, 224,
- 226, 228, 230, 232, 234, 236, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 264, 266,
- 268, 270, 272, 274, 276, 278, 280, 282,
- 284, 286, 288, 290, 292, 294, 296, 298,
- 300, 302, 304, 306, 308, 310, 312, 314,
- 316, 318, 320, 322, 324, 326, 328, 330,
- 332, 334, 336, 338, 340, 342, 344, 347,
- 349, 351, 353, 355, 357, 359, 361, 363,
- 365, 367, 369, 371, 373, 375, 377, 379,
- 381, 382, 383, 384, 385, 386, 387, 389,
- 390, 391, 392, 393, 394, 395, 396, 397,
- 413, 415, 417, 419, 421, 423, 425, 427,
- 429, 431, 433, 435, 437, 439, 441, 443,
- 445, 447, 449, 451, 453, 455, 457, 459,
- 461, 463, 465, 467, 469, 471, 473, 478,
- 480, 482, 484, 486, 488, 490, 492, 494,
- 496, 498, 500, 502, 504, 506, 508, 510,
- 512, 514, 517, 519, 521, 523, 525, 527,
- 529, 531, 533, 535, 537, 539, 541, 543,
- 545, 547, 549, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 587, 589, 591, 593, 595, 597, 599,
- 601, 603, 605, 607, 609, 611, 613, 615,
- 617, 619, 621, 623, 625, 627, 629, 631,
- 636, 638, 640, 642, 644, 646, 648, 650,
- 652, 654, 656, 658, 660, 662, 664, 666,
- 668, 670, 672, 674, 676, 678, 680, 682,
- 684, 686, 690, 696, 699, 701, 707, 725,
- 727, 729, 731, 733, 735, 737, 739, 744,
- 746, 748, 750, 752, 754, 756, 758, 760,
- 762, 764, 766, 768, 770, 772, 774, 776,
- 778, 780, 782, 785, 787, 789, 791, 793,
- 795, 797, 799, 801, 803, 805, 807, 809,
- 811, 813, 815, 817, 819, 821
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 67, 68, 69, 70, 77, 81, 83,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 65, 67, 68, 69,
- 70, 77, 81, 83, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 108, 108, 111, 114, 97, 111, 110, 116,
- 101, 115, 116, 111, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 65, 68, 69,
- 70, 77, 81, 83, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 32, 34, 35,
- 37, 42, 64, 65, 67, 68, 69, 70,
- 77, 81, 83, 124, 9, 13, 97, 116,
- 97, 101, 105, 111, 32, 115, 101, 109,
- 112, 105, 58, 10, 10, 10, 32, 35,
- 70, 124, 9, 13, 10, 117, 10, 110,
- 10, 122, 10, 105, 10, 111, 10, 110,
- 10, 97, 10, 108, 10, 105, 10, 116,
- -61, 10, -96, 10, 10, 58, 117, 110,
- 122, 105, 111, 110, 97, 108, 105, 116,
- -61, -96, 58, 10, 10, 10, 32, 35,
- 37, 64, 67, 69, 70, 83, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 111, 10, 110,
- 10, 116, 10, 101, 10, 115, 10, 116,
- 10, 111, 10, 58, 10, 115, 10, 101,
- 10, 109, 10, 112, 10, 105, 10, 117,
- 10, 110, 10, 122, 10, 105, 10, 111,
- 10, 110, 10, 97, 10, 108, 10, 105,
- 10, 116, -61, 10, -96, 10, 10, 99,
- 10, 101, 104, 10, 110, 10, 97, 10,
- 114, 10, 105, 10, 101, 10, 109, 10,
- 97, 10, 32, 10, 100, 10, 101, 10,
- 108, 10, 108, 10, 111, 10, 32, 10,
- 115, 10, 99, 10, 101, 117, 97, 110,
- 100, 111, 99, 101, 104, 110, 97, 114,
- 105, 111, 58, 10, 10, 10, 32, 35,
- 37, 42, 64, 65, 67, 68, 69, 70,
- 77, 81, 83, 9, 13, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 32, 10, 108, 10, 108, 10,
- 111, 10, 114, 10, 97, 10, 111, 10,
- 110, 10, 116, 10, 101, 10, 115, 10,
- 116, 10, 111, 10, 58, 10, 97, 10,
- 116, 10, 97, 101, 105, 111, 10, 117,
- 10, 110, 10, 122, 10, 105, 10, 111,
- 10, 110, 10, 97, 10, 108, 10, 105,
- 10, 116, -61, 10, -96, 10, 10, 117,
- 10, 97, 10, 110, 10, 100, 10, 111,
- 10, 99, 10, 101, 104, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 101, 10,
- 109, 10, 97, 10, 32, 10, 100, 10,
- 101, 10, 108, 10, 108, 10, 111, 10,
- 32, 10, 115, 10, 99, 10, 101, 101,
- 109, 97, 32, 100, 101, 108, 108, 111,
- 32, 115, 99, 101, 110, 97, 114, 105,
- 111, 58, 10, 10, 10, 32, 35, 37,
- 42, 64, 65, 68, 69, 70, 77, 81,
- 83, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 108, 10, 108, 10, 111, 10,
- 114, 10, 97, 10, 97, 10, 116, 10,
- 97, 101, 105, 111, 10, 117, 10, 110,
- 10, 122, 10, 105, 10, 111, 10, 110,
- 10, 97, 10, 108, 10, 105, 10, 116,
- -61, 10, -96, 10, 10, 58, 10, 117,
- 10, 97, 10, 110, 10, 100, 10, 111,
- 10, 99, 10, 101, 10, 110, 10, 97,
- 10, 114, 10, 105, 10, 111, 32, 124,
- 9, 13, 10, 32, 92, 124, 9, 13,
- 10, 92, 124, 10, 92, 10, 32, 92,
- 124, 9, 13, 10, 32, 34, 35, 37,
- 42, 64, 65, 67, 68, 69, 70, 77,
- 81, 83, 124, 9, 13, 10, 108, 10,
- 108, 10, 111, 10, 114, 10, 97, 10,
- 97, 10, 116, 10, 97, 101, 105, 111,
- 10, 117, 10, 110, 10, 122, 10, 105,
- 10, 111, 10, 110, 10, 97, 10, 108,
- 10, 105, 10, 116, -61, 10, -96, 10,
- 10, 58, 10, 117, 10, 97, 10, 110,
- 10, 100, 10, 111, 10, 99, 10, 101,
- 104, 10, 110, 10, 97, 10, 114, 10,
- 105, 10, 111, 10, 101, 10, 109, 10,
- 97, 10, 32, 10, 100, 10, 101, 10,
- 108, 10, 108, 10, 111, 10, 32, 10,
- 115, 10, 99, 10, 101, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 13, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 16, 1, 1, 4,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 5, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 9, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 14,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 5, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 13, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 5,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 4, 3, 2, 4, 16, 2,
- 2, 2, 2, 2, 2, 2, 5, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 1, 0, 0, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 139, 141,
- 143, 145, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 165, 167, 182, 185, 188,
- 191, 194, 197, 200, 203, 206, 209, 212,
- 215, 218, 221, 224, 227, 245, 247, 249,
- 254, 257, 259, 261, 263, 265, 267, 269,
- 271, 278, 281, 284, 287, 290, 293, 296,
- 299, 302, 305, 308, 311, 314, 317, 319,
- 321, 323, 325, 327, 329, 331, 333, 335,
- 337, 339, 341, 343, 345, 347, 358, 361,
- 364, 367, 370, 373, 376, 379, 382, 385,
- 388, 391, 394, 397, 400, 403, 406, 409,
- 412, 415, 418, 421, 424, 427, 430, 433,
- 436, 439, 442, 445, 448, 451, 454, 457,
- 460, 463, 466, 469, 472, 475, 478, 482,
- 485, 488, 491, 494, 497, 500, 503, 506,
- 509, 512, 515, 518, 521, 524, 527, 530,
- 533, 535, 537, 539, 541, 543, 545, 548,
- 550, 552, 554, 556, 558, 560, 562, 564,
- 580, 583, 586, 589, 592, 595, 598, 601,
- 604, 607, 610, 613, 616, 619, 622, 625,
- 628, 631, 634, 637, 640, 643, 646, 649,
- 652, 655, 658, 661, 664, 667, 670, 676,
- 679, 682, 685, 688, 691, 694, 697, 700,
- 703, 706, 709, 712, 715, 718, 721, 724,
- 727, 730, 734, 737, 740, 743, 746, 749,
- 752, 755, 758, 761, 764, 767, 770, 773,
- 776, 779, 782, 785, 787, 789, 791, 793,
- 795, 797, 799, 801, 803, 805, 807, 809,
- 811, 813, 815, 817, 819, 821, 823, 825,
- 827, 842, 845, 848, 851, 854, 857, 860,
- 863, 866, 869, 872, 875, 878, 881, 884,
- 887, 890, 893, 896, 899, 902, 905, 908,
- 914, 917, 920, 923, 926, 929, 932, 935,
- 938, 941, 944, 947, 950, 953, 956, 959,
- 962, 965, 968, 971, 974, 977, 980, 983,
- 986, 989, 993, 999, 1003, 1006, 1012, 1030,
- 1033, 1036, 1039, 1042, 1045, 1048, 1051, 1057,
- 1060, 1063, 1066, 1069, 1072, 1075, 1078, 1081,
- 1084, 1087, 1090, 1093, 1096, 1099, 1102, 1105,
- 1108, 1111, 1114, 1118, 1121, 1124, 1127, 1130,
- 1133, 1136, 1139, 1142, 1145, 1148, 1151, 1154,
- 1157, 1160, 1163, 1166, 1169, 1172
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 42, 69, 72, 94, 41, 168, 173,
- 321, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 42,
- 69, 72, 94, 41, 168, 173, 321, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 373, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 0, 39, 0, 40, 0, 41,
- 0, 31, 0, 43, 0, 44, 0, 45,
- 0, 46, 0, 47, 0, 48, 0, 49,
- 0, 50, 0, 52, 51, 52, 51, 52,
- 52, 4, 53, 67, 4, 327, 332, 67,
- 335, 331, 348, 353, 52, 51, 52, 54,
- 51, 52, 55, 51, 52, 56, 51, 52,
- 57, 51, 52, 58, 51, 52, 59, 51,
- 52, 60, 51, 52, 61, 51, 52, 62,
- 51, 52, 63, 51, 52, 64, 51, 52,
- 65, 51, 52, 66, 51, 52, 4, 51,
- 52, 68, 51, 4, 4, 5, 15, 17,
- 31, 34, 37, 42, 69, 72, 94, 41,
- 168, 173, 321, 4, 0, 70, 0, 71,
- 0, 31, 31, 31, 31, 0, 32, 73,
- 0, 74, 0, 75, 0, 76, 0, 77,
- 0, 78, 0, 80, 79, 80, 79, 80,
- 80, 4, 81, 4, 80, 79, 80, 82,
- 79, 80, 83, 79, 80, 84, 79, 80,
- 85, 79, 80, 86, 79, 80, 87, 79,
- 80, 88, 79, 80, 89, 79, 80, 90,
- 79, 80, 91, 79, 92, 80, 79, 93,
- 80, 79, 80, 68, 79, 95, 0, 96,
- 0, 97, 0, 98, 0, 99, 0, 100,
- 0, 101, 0, 102, 0, 103, 0, 104,
- 0, 105, 0, 106, 0, 107, 0, 109,
- 108, 109, 108, 109, 109, 4, 110, 4,
- 124, 132, 137, 149, 109, 108, 109, 111,
- 108, 109, 112, 108, 109, 113, 108, 109,
- 114, 108, 109, 115, 108, 109, 116, 108,
- 109, 117, 108, 109, 118, 108, 109, 119,
- 108, 109, 120, 108, 109, 121, 108, 109,
- 122, 108, 109, 123, 108, 109, 4, 108,
- 109, 125, 108, 109, 126, 108, 109, 127,
- 108, 109, 128, 108, 109, 129, 108, 109,
- 130, 108, 109, 131, 108, 109, 68, 108,
- 109, 133, 108, 109, 134, 108, 109, 135,
- 108, 109, 136, 108, 109, 131, 108, 109,
- 138, 108, 109, 139, 108, 109, 140, 108,
- 109, 141, 108, 109, 142, 108, 109, 143,
- 108, 109, 144, 108, 109, 145, 108, 109,
- 146, 108, 109, 147, 108, 148, 109, 108,
- 131, 109, 108, 109, 150, 108, 109, 151,
- 155, 108, 109, 152, 108, 109, 153, 108,
- 109, 154, 108, 109, 130, 108, 109, 156,
- 108, 109, 157, 108, 109, 158, 108, 109,
- 159, 108, 109, 160, 108, 109, 161, 108,
- 109, 162, 108, 109, 163, 108, 109, 164,
- 108, 109, 165, 108, 109, 166, 108, 109,
- 167, 108, 109, 151, 108, 169, 0, 170,
- 0, 171, 0, 172, 0, 31, 0, 174,
- 0, 175, 251, 0, 176, 0, 177, 0,
- 178, 0, 179, 0, 180, 0, 181, 0,
- 183, 182, 183, 182, 183, 183, 4, 184,
- 198, 4, 199, 204, 212, 198, 215, 203,
- 227, 232, 183, 182, 183, 185, 182, 183,
- 186, 182, 183, 187, 182, 183, 188, 182,
- 183, 189, 182, 183, 190, 182, 183, 191,
- 182, 183, 192, 182, 183, 193, 182, 183,
- 194, 182, 183, 195, 182, 183, 196, 182,
- 183, 197, 182, 183, 4, 182, 183, 68,
- 182, 183, 200, 182, 183, 201, 182, 183,
- 202, 182, 183, 203, 182, 183, 198, 182,
- 183, 205, 182, 183, 206, 182, 183, 207,
- 182, 183, 208, 182, 183, 209, 182, 183,
- 210, 182, 183, 211, 182, 183, 68, 182,
- 183, 213, 182, 183, 214, 182, 183, 198,
- 198, 198, 198, 182, 183, 216, 182, 183,
- 217, 182, 183, 218, 182, 183, 219, 182,
- 183, 220, 182, 183, 221, 182, 183, 222,
- 182, 183, 223, 182, 183, 224, 182, 183,
- 225, 182, 226, 183, 182, 211, 183, 182,
- 183, 228, 182, 183, 229, 182, 183, 230,
- 182, 183, 231, 182, 183, 198, 182, 183,
- 233, 182, 183, 234, 238, 182, 183, 235,
- 182, 183, 236, 182, 183, 237, 182, 183,
- 210, 182, 183, 239, 182, 183, 240, 182,
- 183, 241, 182, 183, 242, 182, 183, 243,
- 182, 183, 244, 182, 183, 245, 182, 183,
- 246, 182, 183, 247, 182, 183, 248, 182,
- 183, 249, 182, 183, 250, 182, 183, 234,
- 182, 252, 0, 253, 0, 254, 0, 255,
- 0, 256, 0, 257, 0, 258, 0, 259,
- 0, 260, 0, 261, 0, 262, 0, 263,
- 0, 264, 0, 265, 0, 266, 0, 267,
- 0, 268, 0, 269, 0, 270, 0, 272,
- 271, 272, 271, 272, 272, 4, 273, 287,
- 4, 288, 293, 287, 296, 292, 309, 314,
- 272, 271, 272, 274, 271, 272, 275, 271,
- 272, 276, 271, 272, 277, 271, 272, 278,
- 271, 272, 279, 271, 272, 280, 271, 272,
- 281, 271, 272, 282, 271, 272, 283, 271,
- 272, 284, 271, 272, 285, 271, 272, 286,
- 271, 272, 4, 271, 272, 68, 271, 272,
- 289, 271, 272, 290, 271, 272, 291, 271,
- 272, 292, 271, 272, 287, 271, 272, 294,
- 271, 272, 295, 271, 272, 287, 287, 287,
- 287, 271, 272, 297, 271, 272, 298, 271,
- 272, 299, 271, 272, 300, 271, 272, 301,
- 271, 272, 302, 271, 272, 303, 271, 272,
- 304, 271, 272, 305, 271, 272, 306, 271,
- 307, 272, 271, 308, 272, 271, 272, 68,
- 271, 272, 310, 271, 272, 311, 271, 272,
- 312, 271, 272, 313, 271, 272, 287, 271,
- 272, 315, 271, 272, 316, 271, 272, 317,
- 271, 272, 318, 271, 272, 319, 271, 272,
- 320, 271, 272, 308, 271, 321, 322, 321,
- 0, 326, 325, 324, 322, 325, 323, 0,
- 324, 322, 323, 0, 324, 323, 326, 325,
- 324, 322, 325, 323, 326, 326, 5, 15,
- 17, 31, 34, 37, 42, 69, 72, 94,
- 41, 168, 173, 321, 326, 0, 52, 328,
- 51, 52, 329, 51, 52, 330, 51, 52,
- 331, 51, 52, 67, 51, 52, 333, 51,
- 52, 334, 51, 52, 67, 67, 67, 67,
- 51, 52, 336, 51, 52, 337, 51, 52,
- 338, 51, 52, 339, 51, 52, 340, 51,
- 52, 341, 51, 52, 342, 51, 52, 343,
- 51, 52, 344, 51, 52, 345, 51, 346,
- 52, 51, 347, 52, 51, 52, 68, 51,
- 52, 349, 51, 52, 350, 51, 52, 351,
- 51, 52, 352, 51, 52, 67, 51, 52,
- 354, 51, 52, 355, 360, 51, 52, 356,
- 51, 52, 357, 51, 52, 358, 51, 52,
- 359, 51, 52, 347, 51, 52, 361, 51,
- 52, 362, 51, 52, 363, 51, 52, 364,
- 51, 52, 365, 51, 52, 366, 51, 52,
- 367, 51, 52, 368, 51, 52, 369, 51,
- 52, 370, 51, 52, 371, 51, 52, 372,
- 51, 52, 355, 51, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 72, 33, 84, 72, 84, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 15, 0,
- 54, 15, 0, 130, 31, 60, 57, 31,
- 63, 57, 63, 63, 63, 63, 63, 63,
- 63, 63, 66, 31, 43, 0, 43, 0,
- 43, 0, 0, 0, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 81, 84, 81, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 21, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 69, 33, 69,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 13, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 13, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 75, 33,
- 84, 75, 84, 84, 84, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 17, 0, 54, 17,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 78, 33, 84,
- 78, 84, 84, 84, 84, 84, 84, 84,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 19, 0, 54, 19, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 19,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 0, 0,
- 43, 54, 37, 37, 87, 37, 37, 43,
- 0, 39, 0, 43, 0, 0, 54, 0,
- 0, 39, 0, 0, 54, 0, 93, 90,
- 41, 96, 90, 96, 96, 96, 96, 96,
- 96, 96, 96, 99, 0, 43, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 15, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 373;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/it.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 944 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/it.c.rl"
-
-#line 951 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/it.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/it.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/it.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/it.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/it.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/it.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/it.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/it.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/it.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/it.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/it.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/it.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/it.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/it.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/it.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/it.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/it.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/it.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/it.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/it.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/it.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/it.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/it.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/it.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1241 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/it.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1304 "ext/gherkin_lexer_it/gherkin_lexer_it.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/it.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_it()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "It", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_ja/extconf.rb
index 0b49f61,0b49f61..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_ja/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_ja")
--have_library("c", "main")
--create_makefile("gherkin_lexer_ja")
diff --cc ext/gherkin_lexer_ja/gherkin_lexer_ja.c
index daf7eca,944b047..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_ja/gherkin_lexer_ja.c
+++ /dev/null
@@@ -1,1699 -1,1699 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 16, 19, 23, 24, 25, 26,
- 28, 30, 45, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 63, 65, 67, 69,
- 71, 73, 75, 77, 79, 81, 83, 85,
- 87, 89, 91, 93, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 132, 135, 138, 140, 142, 144,
- 146, 148, 150, 152, 154, 156, 158, 160,
- 162, 164, 166, 168, 170, 172, 174, 176,
- 179, 182, 184, 186, 188, 190, 192, 194,
- 196, 198, 200, 202, 204, 206, 208, 210,
- 212, 214, 216, 218, 220, 222, 224, 226,
- 228, 230, 232, 234, 237, 239, 241, 243,
- 245, 247, 250, 252, 254, 256, 258, 260,
- 262, 264, 266, 268, 270, 272, 274, 276,
- 278, 280, 282, 284, 286, 288, 290, 292,
- 294, 296, 298, 300, 302, 304, 306, 308,
- 310, 312, 314, 316, 318, 320, 322, 324,
- 326, 328, 330, 332, 334, 336, 338, 340,
- 342, 344, 345, 346, 347, 348, 349, 350,
- 351, 352, 364, 368, 373, 375, 377, 379,
- 381, 383, 385, 387, 389, 391, 393, 395,
- 397, 399, 401, 403, 405, 407, 409, 412,
- 414, 416, 418, 420, 422, 424, 426, 428,
- 430, 433, 436, 438, 440, 442, 444, 446,
- 448, 450, 452, 454, 456, 458, 460, 462,
- 464, 466, 468, 470, 472, 474, 476, 478,
- 480, 482, 484, 486, 488, 490, 493, 495,
- 497, 499, 501, 503, 506, 508, 510, 512,
- 514, 516, 518, 520, 522, 524, 526, 528,
- 530, 532, 534, 536, 538, 540, 542, 544,
- 546, 548, 550, 552, 554, 556, 558, 560,
- 562, 564, 566, 568, 570, 572, 574, 576,
- 578, 580, 582, 584, 586, 588, 590, 592,
- 594, 596, 598, 600, 602, 603, 604, 606,
- 608, 613, 618, 623, 628, 632, 636, 638,
- 639, 640, 641, 642, 643, 644, 645, 646,
- 647, 648, 649, 650, 651, 652, 653, 654,
- 659, 666, 671, 675, 681, 684, 686, 692,
- 707, 709, 711, 713, 715, 717, 718, 719,
- 720, 721, 722, 723, 724, 725, 726, 727,
- 728, 729, 732, 733, 734, 735, 736, 737,
- 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, 750, 752, 754, 755,
- 756, 757, 758, 759, 760, 761, 762, 763,
- 764, 765, 766, 767, 768, 769, 770, 771,
- 772, 773, 785, 789, 794, 796, 798, 800,
- 802, 804, 806, 808, 810, 812, 814, 816,
- 818, 820, 822, 824, 826, 828, 830, 833,
- 835, 837, 839, 841, 843, 845, 847, 849,
- 851, 853, 855, 857, 859, 861, 863, 865,
- 867, 869, 871, 873, 875, 877, 879, 881,
- 883, 885, 887, 889, 891, 893, 895, 897,
- 899, 901, 903, 905, 907, 909, 911, 913,
- 915, 917, 919, 921, 923, 925, 927, 929,
- 931, 933, 934, 935, 936, 937, 938, 939,
- 940, 941, 942, 943, 945, 946, 947, 948,
- 949, 950, 951, 952, 965, 969, 974, 976,
- 978, 980, 982, 984, 986, 988, 990, 992,
- 994, 996, 998, 1000, 1002, 1004, 1006, 1008,
- 1010, 1013, 1015, 1017, 1019, 1021, 1023, 1025,
- 1027, 1029, 1031, 1034, 1037, 1039, 1041, 1043,
- 1045, 1047, 1049, 1051, 1053, 1055, 1057, 1059,
- 1061, 1063, 1065, 1067, 1069, 1071, 1073, 1075,
- 1077, 1079, 1081, 1083, 1085, 1087, 1089, 1091,
- 1094, 1096, 1098, 1100, 1102, 1104, 1107, 1109,
- 1111, 1113, 1115, 1117, 1119, 1121, 1123, 1125,
- 1127, 1129, 1131, 1133, 1135, 1137, 1139, 1141,
- 1143, 1145, 1147, 1149, 1151, 1153, 1155, 1157,
- 1159, 1161, 1163, 1165, 1167, 1169, 1171, 1173,
- 1175, 1177, 1179, 1181, 1183, 1185, 1187, 1189,
- 1191, 1193, 1195, 1197, 1199, 1201, 1203, 1205,
- 1207, 1209, 1211, 1213, 1215, 1216, 1217, 1218,
- 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226,
- 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234,
- 1235, 1236, 1237, 1238
- };
-
- static const char _lexer_trans_keys[] = {
- -29, -28, -27, -26, -24, -17, 10, 32,
- 34, 35, 37, 42, 64, 124, 9, 13,
- -127, -126, -125, -117, -105, -97, -86, -29,
- -127, -92, 10, 13, 10, 13, -29, -28,
- -27, -26, -24, 10, 32, 34, 35, 37,
- 42, 64, 124, 9, 13, -67, -66, -122,
- -29, -127, -105, -117, 58, 10, 10, -29,
- -26, 10, 32, 35, 124, 9, 13, -125,
- 10, -107, 10, -29, 10, -126, 10, -93,
- 10, -29, 10, -125, 10, -68, 10, -29,
- 10, -125, 10, -127, 10, -29, 10, -125,
- 10, -93, 10, 10, 58, -29, -28, -27,
- -26, -24, 10, 32, 34, 35, 37, 42,
- 64, 124, 9, 13, -119, -115, -26, -113,
- -112, -87, -97, -24, -125, -67, 58, 10,
- 10, -29, -28, -26, -24, 10, 32, 35,
- 37, 64, 9, 13, -126, -125, 10, -75,
- -73, 10, -29, 10, -125, 10, -77, 10,
- -29, 10, -125, 10, -105, 10, -29, 10,
- -125, 10, -85, 10, 10, 58, -29, 10,
- -125, 10, -118, 10, -29, 10, -125, 10,
- -86, 10, -29, 10, -126, 10, -86, 10,
- -29, 10, 58, -126, -125, 10, -94, 10,
- -29, 10, -126, 10, -90, 10, -29, 10,
- -125, 10, -120, 10, -29, 10, -125, 10,
- -87, 10, -29, 10, -126, 10, -92, 10,
- -29, 10, -125, 10, -77, 10, -122, 10,
- -29, 10, -125, 10, -77, 10, -29, 10,
- -125, 10, -105, 10, -29, 10, -125, 10,
- -84, 10, -29, 10, 58, -125, 10, -68,
- 10, -29, 10, -125, 10, -120, 10, -122,
- -107, 10, -29, 10, -125, 10, -77, 10,
- -29, 10, -125, 10, -105, 10, -29, 10,
- -125, 10, -84, 10, -29, 10, -126, 10,
- -93, 10, -29, 10, -125, 10, -68, 10,
- -29, 10, -125, 10, -127, 10, -29, 10,
- -125, 10, -93, 10, -66, 10, -117, 10,
- -87, 10, -97, 10, -24, 10, -125, 10,
- -67, 10, -125, 10, -116, 10, -26, 10,
- -103, 10, -81, 10, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- -125, -116, -26, -103, -81, 58, 10, 10,
- -29, -28, -27, -26, 10, 32, 35, 37,
- 42, 64, 9, 13, -127, -126, -125, 10,
- -117, -105, -97, -86, 10, -29, 10, -127,
- 10, -92, 10, -29, 10, -127, 10, -117,
- 10, -29, 10, -127, 10, -105, 10, -29,
- 10, -127, 10, -96, 10, -29, 10, -126,
- 10, -119, 10, -29, 10, -127, 10, -80,
- 10, -126, -73, 10, -29, 10, -125, 10,
- -118, 10, -29, 10, -125, 10, -86, 10,
- -29, 10, -126, 10, -86, 10, -29, 10,
- 58, -126, -125, 10, -94, 10, -29, 10,
- -126, 10, -90, 10, -29, 10, -125, 10,
- -120, 10, -29, 10, -125, 10, -87, 10,
- -29, 10, -126, 10, -92, 10, -29, 10,
- -125, 10, -77, 10, 10, 58, -122, 10,
- -29, 10, -125, 10, -77, 10, -29, 10,
- -125, 10, -105, 10, -29, 10, -125, 10,
- -84, 10, -29, 10, 58, -125, 10, -68,
- 10, -29, 10, -125, 10, -120, 10, -122,
- -107, 10, -29, 10, -125, 10, -77, 10,
- -29, 10, -125, 10, -105, 10, -29, 10,
- -125, 10, -84, 10, -29, 10, -126, 10,
- -93, 10, -29, 10, -125, 10, -68, 10,
- -29, 10, -125, 10, -127, 10, -29, 10,
- -125, 10, -93, 10, -67, 10, -122, 10,
- -119, 10, -115, 10, -26, 10, -113, 10,
- -112, 10, -87, 10, -97, 10, -24, 10,
- -125, 10, -67, 10, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, 34, 34, 10, 13, 10, 13,
- 10, 32, 34, 9, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 9, 13,
- 10, 32, 9, 13, 10, 13, 10, 95,
- 70, 69, 65, 84, 85, 82, 69, 95,
- 69, 78, 68, 95, 37, 32, 13, 32,
- 64, 9, 10, 9, 10, 13, 32, 64,
- 11, 12, 10, 32, 64, 9, 13, 32,
- 124, 9, 13, 10, 32, 92, 124, 9,
- 13, 10, 92, 124, 10, 92, 10, 32,
- 92, 124, 9, 13, -29, -28, -27, -26,
- -24, 10, 32, 34, 35, 37, 42, 64,
- 124, 9, 13, -87, 10, -97, 10, -24,
- 10, -125, 10, -67, 10, -29, -127, -117,
- -29, -127, -96, -29, -126, -119, -29, -127,
- -80, -126, -75, -73, -29, -125, -77, -29,
- -125, -105, -29, -125, -85, -29, -125, -118,
- -29, -125, -86, -29, -126, -86, -29, 58,
- -126, -125, -94, -29, -126, -90, -29, -125,
- -120, -29, -125, -87, -29, -126, -92, -29,
- -125, -77, 58, 10, 10, -29, -28, -27,
- -26, 10, 32, 35, 37, 42, 64, 9,
- 13, -127, -126, -125, 10, -117, -105, -97,
- -86, 10, -29, 10, -127, 10, -92, 10,
- -29, 10, -127, 10, -117, 10, -29, 10,
- -127, 10, -105, 10, -29, 10, -127, 10,
- -96, 10, -29, 10, -126, 10, -119, 10,
- -29, 10, -127, 10, -80, 10, -126, -73,
- 10, -29, 10, -125, 10, -118, 10, -29,
- 10, -125, 10, -86, 10, -29, 10, -126,
- 10, -86, 10, 10, 58, -107, 10, -29,
- 10, -126, 10, -93, 10, -29, 10, -125,
- 10, -68, 10, -29, 10, -125, 10, -127,
- 10, -29, 10, -125, 10, -93, 10, -67,
- 10, -122, 10, -119, 10, -115, 10, -26,
- 10, -113, 10, -112, 10, -87, 10, -97,
- 10, -24, 10, -125, 10, -67, 10, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 32, -122, -29, -125,
- -77, -29, -125, -105, -29, -125, -84, -29,
- 58, -125, -68, -29, -125, -120, 10, 10,
- -29, -28, -27, -26, -24, 10, 32, 35,
- 37, 42, 64, 9, 13, -127, -126, -125,
- 10, -117, -105, -97, -86, 10, -29, 10,
- -127, 10, -92, 10, -29, 10, -127, 10,
- -117, 10, -29, 10, -127, 10, -105, 10,
- -29, 10, -127, 10, -96, 10, -29, 10,
- -126, 10, -119, 10, -29, 10, -127, 10,
- -80, 10, -126, -73, 10, -29, 10, -125,
- 10, -118, 10, -29, 10, -125, 10, -86,
- 10, -29, 10, -126, 10, -86, 10, -29,
- 10, 58, -126, -125, 10, -94, 10, -29,
- 10, -126, 10, -90, 10, -29, 10, -125,
- 10, -120, 10, -29, 10, -125, 10, -87,
- 10, -29, 10, -126, 10, -92, 10, -29,
- 10, -125, 10, -77, 10, 10, 58, -122,
- 10, -29, 10, -125, 10, -77, 10, -29,
- 10, -125, 10, -105, 10, -29, 10, -125,
- 10, -84, 10, -29, 10, 58, -125, 10,
- -68, 10, -29, 10, -125, 10, -120, 10,
- -122, -107, 10, -29, 10, -125, 10, -77,
- 10, -29, 10, -125, 10, -105, 10, -29,
- 10, -125, 10, -84, 10, -29, 10, -126,
- 10, -93, 10, -29, 10, -125, 10, -68,
- 10, -29, 10, -125, 10, -127, 10, -29,
- 10, -125, 10, -93, 10, -67, 10, -122,
- 10, -119, 10, -115, 10, -26, 10, -113,
- 10, -112, 10, -87, 10, -97, 10, -24,
- 10, -125, 10, -67, 10, -125, 10, -116,
- 10, -26, 10, -103, 10, -81, 10, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 32, -122, -107, -29,
- -125, -77, -29, -125, -105, -29, -125, -84,
- -29, -126, -93, -29, -125, -68, -29, -125,
- -127, -29, -125, -93, -69, -65, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 14, 3, 4, 1, 1, 1, 2,
- 2, 13, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 6, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 13, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 9, 3, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 10, 4, 5, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 1, 1, 2, 2,
- 3, 3, 3, 3, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 3,
- 5, 3, 2, 4, 3, 2, 4, 13,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 10, 4, 5, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 11, 4, 5, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 1, 1, 1, 1, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 1, 1, 1, 1, 0, 0, 1, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 16, 20, 25, 27, 29, 31,
- 34, 37, 52, 55, 57, 59, 61, 63,
- 65, 67, 69, 71, 79, 82, 85, 88,
- 91, 94, 97, 100, 103, 106, 109, 112,
- 115, 118, 121, 124, 139, 141, 143, 145,
- 147, 149, 151, 153, 155, 157, 159, 161,
- 163, 165, 176, 180, 184, 187, 190, 193,
- 196, 199, 202, 205, 208, 211, 214, 217,
- 220, 223, 226, 229, 232, 235, 238, 241,
- 245, 249, 252, 255, 258, 261, 264, 267,
- 270, 273, 276, 279, 282, 285, 288, 291,
- 294, 297, 300, 303, 306, 309, 312, 315,
- 318, 321, 324, 327, 331, 334, 337, 340,
- 343, 346, 350, 353, 356, 359, 362, 365,
- 368, 371, 374, 377, 380, 383, 386, 389,
- 392, 395, 398, 401, 404, 407, 410, 413,
- 416, 419, 422, 425, 428, 431, 434, 437,
- 440, 443, 446, 449, 452, 455, 458, 461,
- 464, 467, 470, 473, 476, 479, 482, 485,
- 488, 491, 493, 495, 497, 499, 501, 503,
- 505, 507, 519, 524, 530, 533, 536, 539,
- 542, 545, 548, 551, 554, 557, 560, 563,
- 566, 569, 572, 575, 578, 581, 584, 588,
- 591, 594, 597, 600, 603, 606, 609, 612,
- 615, 619, 623, 626, 629, 632, 635, 638,
- 641, 644, 647, 650, 653, 656, 659, 662,
- 665, 668, 671, 674, 677, 680, 683, 686,
- 689, 692, 695, 698, 701, 704, 708, 711,
- 714, 717, 720, 723, 727, 730, 733, 736,
- 739, 742, 745, 748, 751, 754, 757, 760,
- 763, 766, 769, 772, 775, 778, 781, 784,
- 787, 790, 793, 796, 799, 802, 805, 808,
- 811, 814, 817, 820, 823, 826, 829, 832,
- 835, 838, 841, 844, 847, 850, 853, 856,
- 859, 862, 865, 868, 871, 873, 875, 878,
- 881, 886, 891, 896, 901, 905, 909, 912,
- 914, 916, 918, 920, 922, 924, 926, 928,
- 930, 932, 934, 936, 938, 940, 942, 944,
- 949, 956, 961, 965, 971, 975, 978, 984,
- 999, 1002, 1005, 1008, 1011, 1014, 1016, 1018,
- 1020, 1022, 1024, 1026, 1028, 1030, 1032, 1034,
- 1036, 1038, 1042, 1044, 1046, 1048, 1050, 1052,
- 1054, 1056, 1058, 1060, 1062, 1064, 1066, 1068,
- 1070, 1072, 1074, 1076, 1078, 1081, 1084, 1086,
- 1088, 1090, 1092, 1094, 1096, 1098, 1100, 1102,
- 1104, 1106, 1108, 1110, 1112, 1114, 1116, 1118,
- 1120, 1122, 1134, 1139, 1145, 1148, 1151, 1154,
- 1157, 1160, 1163, 1166, 1169, 1172, 1175, 1178,
- 1181, 1184, 1187, 1190, 1193, 1196, 1199, 1203,
- 1206, 1209, 1212, 1215, 1218, 1221, 1224, 1227,
- 1230, 1233, 1236, 1239, 1242, 1245, 1248, 1251,
- 1254, 1257, 1260, 1263, 1266, 1269, 1272, 1275,
- 1278, 1281, 1284, 1287, 1290, 1293, 1296, 1299,
- 1302, 1305, 1308, 1311, 1314, 1317, 1320, 1323,
- 1326, 1329, 1332, 1335, 1338, 1341, 1344, 1347,
- 1350, 1353, 1355, 1357, 1359, 1361, 1363, 1365,
- 1367, 1369, 1371, 1373, 1376, 1378, 1380, 1382,
- 1384, 1386, 1388, 1390, 1403, 1408, 1414, 1417,
- 1420, 1423, 1426, 1429, 1432, 1435, 1438, 1441,
- 1444, 1447, 1450, 1453, 1456, 1459, 1462, 1465,
- 1468, 1472, 1475, 1478, 1481, 1484, 1487, 1490,
- 1493, 1496, 1499, 1503, 1507, 1510, 1513, 1516,
- 1519, 1522, 1525, 1528, 1531, 1534, 1537, 1540,
- 1543, 1546, 1549, 1552, 1555, 1558, 1561, 1564,
- 1567, 1570, 1573, 1576, 1579, 1582, 1585, 1588,
- 1592, 1595, 1598, 1601, 1604, 1607, 1611, 1614,
- 1617, 1620, 1623, 1626, 1629, 1632, 1635, 1638,
- 1641, 1644, 1647, 1650, 1653, 1656, 1659, 1662,
- 1665, 1668, 1671, 1674, 1677, 1680, 1683, 1686,
- 1689, 1692, 1695, 1698, 1701, 1704, 1707, 1710,
- 1713, 1716, 1719, 1722, 1725, 1728, 1731, 1734,
- 1737, 1740, 1743, 1746, 1749, 1752, 1755, 1758,
- 1761, 1764, 1767, 1770, 1773, 1775, 1777, 1779,
- 1781, 1783, 1785, 1787, 1789, 1791, 1793, 1795,
- 1797, 1799, 1801, 1803, 1805, 1807, 1809, 1811,
- 1813, 1815, 1817, 1819
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 10, 36, 41, 153, 601, 9, 9,
- 276, 286, 288, 302, 303, 306, 9, 0,
- 3, 329, 579, 0, 4, 317, 320, 323,
- 0, 5, 0, 6, 0, 7, 0, 9,
- 287, 8, 9, 287, 8, 2, 10, 36,
- 41, 153, 9, 9, 276, 286, 288, 302,
- 303, 306, 9, 0, 11, 15, 0, 12,
- 0, 13, 0, 14, 0, 7, 0, 16,
- 0, 17, 0, 19, 18, 19, 18, 20,
- 312, 19, 19, 9, 9, 19, 18, 21,
- 19, 18, 22, 19, 18, 23, 19, 18,
- 24, 19, 18, 25, 19, 18, 26, 19,
- 18, 27, 19, 18, 28, 19, 18, 29,
- 19, 18, 30, 19, 18, 31, 19, 18,
- 32, 19, 18, 33, 19, 18, 34, 19,
- 18, 19, 35, 18, 2, 10, 36, 41,
- 153, 9, 9, 276, 286, 288, 302, 303,
- 306, 9, 0, 37, 0, 38, 0, 39,
- 0, 40, 0, 7, 0, 42, 0, 43,
- 0, 44, 0, 45, 0, 46, 0, 47,
- 0, 49, 48, 49, 48, 50, 127, 129,
- 134, 49, 49, 9, 139, 9, 49, 48,
- 51, 105, 49, 48, 52, 62, 49, 48,
- 53, 49, 48, 54, 49, 48, 55, 49,
- 48, 56, 49, 48, 57, 49, 48, 58,
- 49, 48, 59, 49, 48, 60, 49, 48,
- 61, 49, 48, 49, 35, 48, 63, 49,
- 48, 64, 49, 48, 65, 49, 48, 66,
- 49, 48, 67, 49, 48, 68, 49, 48,
- 69, 49, 48, 70, 49, 48, 71, 49,
- 48, 72, 49, 35, 48, 73, 89, 49,
- 48, 74, 49, 48, 75, 49, 48, 76,
- 49, 48, 77, 49, 48, 78, 49, 48,
- 79, 49, 48, 80, 49, 48, 81, 49,
- 48, 82, 49, 48, 83, 49, 48, 84,
- 49, 48, 85, 49, 48, 86, 49, 48,
- 87, 49, 48, 88, 49, 48, 61, 49,
- 48, 90, 49, 48, 91, 49, 48, 92,
- 49, 48, 93, 49, 48, 94, 49, 48,
- 95, 49, 48, 96, 49, 48, 97, 49,
- 48, 98, 49, 48, 99, 49, 48, 100,
- 49, 35, 48, 101, 49, 48, 102, 49,
- 48, 103, 49, 48, 104, 49, 48, 61,
- 49, 48, 106, 115, 49, 48, 107, 49,
- 48, 108, 49, 48, 109, 49, 48, 110,
- 49, 48, 111, 49, 48, 112, 49, 48,
- 113, 49, 48, 114, 49, 48, 61, 49,
- 48, 116, 49, 48, 117, 49, 48, 118,
- 49, 48, 119, 49, 48, 120, 49, 48,
- 121, 49, 48, 122, 49, 48, 123, 49,
- 48, 124, 49, 48, 125, 49, 48, 126,
- 49, 48, 61, 49, 48, 128, 49, 48,
- 61, 49, 48, 130, 49, 48, 131, 49,
- 48, 132, 49, 48, 133, 49, 48, 61,
- 49, 48, 135, 49, 48, 136, 49, 48,
- 137, 49, 48, 138, 49, 48, 61, 49,
- 48, 49, 140, 48, 49, 141, 48, 49,
- 142, 48, 49, 143, 48, 49, 144, 48,
- 49, 145, 48, 49, 146, 48, 49, 147,
- 48, 49, 148, 48, 49, 149, 48, 49,
- 150, 48, 49, 151, 48, 49, 152, 48,
- 49, 9, 48, 154, 0, 155, 0, 156,
- 0, 157, 0, 158, 0, 159, 0, 161,
- 160, 161, 160, 162, 249, 251, 256, 161,
- 161, 9, 261, 275, 9, 161, 160, 163,
- 182, 227, 161, 160, 164, 167, 173, 176,
- 161, 160, 165, 161, 160, 166, 161, 160,
- 35, 161, 160, 168, 161, 160, 169, 161,
- 160, 170, 161, 160, 171, 161, 160, 172,
- 161, 160, 35, 161, 160, 174, 161, 160,
- 175, 161, 160, 170, 161, 160, 177, 161,
- 160, 178, 161, 160, 179, 161, 160, 180,
- 161, 160, 181, 161, 160, 35, 161, 160,
- 170, 183, 161, 160, 184, 161, 160, 185,
- 161, 160, 186, 161, 160, 187, 161, 160,
- 188, 161, 160, 189, 161, 160, 190, 161,
- 160, 191, 161, 160, 192, 161, 160, 193,
- 161, 35, 160, 194, 211, 161, 160, 195,
- 161, 160, 196, 161, 160, 197, 161, 160,
- 198, 161, 160, 199, 161, 160, 200, 161,
- 160, 201, 161, 160, 202, 161, 160, 203,
- 161, 160, 204, 161, 160, 205, 161, 160,
- 206, 161, 160, 207, 161, 160, 208, 161,
- 160, 209, 161, 160, 210, 161, 160, 161,
- 35, 160, 212, 161, 160, 213, 161, 160,
- 214, 161, 160, 215, 161, 160, 216, 161,
- 160, 217, 161, 160, 218, 161, 160, 219,
- 161, 160, 220, 161, 160, 221, 161, 160,
- 222, 161, 35, 160, 223, 161, 160, 224,
- 161, 160, 225, 161, 160, 226, 161, 160,
- 210, 161, 160, 228, 237, 161, 160, 229,
- 161, 160, 230, 161, 160, 231, 161, 160,
- 232, 161, 160, 233, 161, 160, 234, 161,
- 160, 235, 161, 160, 236, 161, 160, 210,
- 161, 160, 238, 161, 160, 239, 161, 160,
- 240, 161, 160, 241, 161, 160, 242, 161,
- 160, 243, 161, 160, 244, 161, 160, 245,
- 161, 160, 246, 161, 160, 247, 161, 160,
- 248, 161, 160, 210, 161, 160, 250, 161,
- 160, 170, 161, 160, 252, 161, 160, 253,
- 161, 160, 254, 161, 160, 255, 161, 160,
- 35, 161, 160, 257, 161, 160, 258, 161,
- 160, 259, 161, 160, 260, 161, 160, 210,
- 161, 160, 161, 262, 160, 161, 263, 160,
- 161, 264, 160, 161, 265, 160, 161, 266,
- 160, 161, 267, 160, 161, 268, 160, 161,
- 269, 160, 161, 270, 160, 161, 271, 160,
- 161, 272, 160, 161, 273, 160, 161, 274,
- 160, 161, 9, 160, 161, 35, 160, 277,
- 0, 278, 0, 280, 279, 279, 280, 279,
- 279, 281, 281, 282, 281, 281, 281, 281,
- 282, 281, 281, 281, 281, 283, 281, 281,
- 281, 281, 284, 281, 281, 9, 285, 285,
- 0, 9, 285, 285, 0, 9, 287, 286,
- 9, 0, 289, 0, 290, 0, 291, 0,
- 292, 0, 293, 0, 294, 0, 295, 0,
- 296, 0, 297, 0, 298, 0, 299, 0,
- 300, 0, 301, 0, 603, 0, 7, 0,
- 0, 0, 0, 0, 304, 305, 9, 305,
- 305, 303, 304, 304, 9, 305, 303, 305,
- 0, 306, 307, 306, 0, 311, 310, 309,
- 307, 310, 308, 0, 309, 307, 308, 0,
- 309, 308, 311, 310, 309, 307, 310, 308,
- 2, 10, 36, 41, 153, 311, 311, 276,
- 286, 288, 302, 303, 306, 311, 0, 313,
- 19, 18, 314, 19, 18, 315, 19, 18,
- 316, 19, 18, 34, 19, 18, 318, 0,
- 319, 0, 12, 0, 321, 0, 322, 0,
- 12, 0, 324, 0, 325, 0, 326, 0,
- 327, 0, 328, 0, 7, 0, 12, 330,
- 339, 0, 331, 0, 332, 0, 333, 0,
- 334, 0, 335, 0, 336, 0, 337, 0,
- 338, 0, 16, 0, 340, 0, 341, 0,
- 342, 0, 343, 0, 344, 0, 345, 0,
- 346, 0, 347, 0, 348, 0, 349, 457,
- 0, 350, 441, 0, 351, 0, 352, 0,
- 353, 0, 354, 0, 355, 0, 356, 0,
- 357, 0, 358, 0, 359, 0, 360, 0,
- 361, 0, 362, 0, 363, 0, 364, 0,
- 365, 0, 366, 0, 367, 0, 369, 368,
- 369, 368, 370, 414, 416, 421, 369, 369,
- 9, 426, 440, 9, 369, 368, 371, 390,
- 401, 369, 368, 372, 375, 381, 384, 369,
- 368, 373, 369, 368, 374, 369, 368, 35,
- 369, 368, 376, 369, 368, 377, 369, 368,
- 378, 369, 368, 379, 369, 368, 380, 369,
- 368, 35, 369, 368, 382, 369, 368, 383,
- 369, 368, 378, 369, 368, 385, 369, 368,
- 386, 369, 368, 387, 369, 368, 388, 369,
- 368, 389, 369, 368, 35, 369, 368, 378,
- 391, 369, 368, 392, 369, 368, 393, 369,
- 368, 394, 369, 368, 395, 369, 368, 396,
- 369, 368, 397, 369, 368, 398, 369, 368,
- 399, 369, 368, 400, 369, 368, 369, 35,
- 368, 402, 369, 368, 403, 369, 368, 404,
- 369, 368, 405, 369, 368, 406, 369, 368,
- 407, 369, 368, 408, 369, 368, 409, 369,
- 368, 410, 369, 368, 411, 369, 368, 412,
- 369, 368, 413, 369, 368, 400, 369, 368,
- 415, 369, 368, 378, 369, 368, 417, 369,
- 368, 418, 369, 368, 419, 369, 368, 420,
- 369, 368, 35, 369, 368, 422, 369, 368,
- 423, 369, 368, 424, 369, 368, 425, 369,
- 368, 400, 369, 368, 369, 427, 368, 369,
- 428, 368, 369, 429, 368, 369, 430, 368,
- 369, 431, 368, 369, 432, 368, 369, 433,
- 368, 369, 434, 368, 369, 435, 368, 369,
- 436, 368, 369, 437, 368, 369, 438, 368,
- 369, 439, 368, 369, 9, 368, 369, 35,
- 368, 442, 0, 443, 0, 444, 0, 445,
- 0, 446, 0, 447, 0, 448, 0, 449,
- 0, 450, 0, 451, 0, 452, 367, 0,
- 453, 0, 454, 0, 455, 0, 456, 0,
- 366, 0, 459, 458, 459, 458, 460, 547,
- 549, 554, 559, 459, 459, 9, 564, 578,
- 9, 459, 458, 461, 480, 525, 459, 458,
- 462, 465, 471, 474, 459, 458, 463, 459,
- 458, 464, 459, 458, 35, 459, 458, 466,
- 459, 458, 467, 459, 458, 468, 459, 458,
- 469, 459, 458, 470, 459, 458, 35, 459,
- 458, 472, 459, 458, 473, 459, 458, 468,
- 459, 458, 475, 459, 458, 476, 459, 458,
- 477, 459, 458, 478, 459, 458, 479, 459,
- 458, 35, 459, 458, 468, 481, 459, 458,
- 482, 459, 458, 483, 459, 458, 484, 459,
- 458, 485, 459, 458, 486, 459, 458, 487,
- 459, 458, 488, 459, 458, 489, 459, 458,
- 490, 459, 458, 491, 459, 35, 458, 492,
- 509, 459, 458, 493, 459, 458, 494, 459,
- 458, 495, 459, 458, 496, 459, 458, 497,
- 459, 458, 498, 459, 458, 499, 459, 458,
- 500, 459, 458, 501, 459, 458, 502, 459,
- 458, 503, 459, 458, 504, 459, 458, 505,
- 459, 458, 506, 459, 458, 507, 459, 458,
- 508, 459, 458, 459, 35, 458, 510, 459,
- 458, 511, 459, 458, 512, 459, 458, 513,
- 459, 458, 514, 459, 458, 515, 459, 458,
- 516, 459, 458, 517, 459, 458, 518, 459,
- 458, 519, 459, 458, 520, 459, 35, 458,
- 521, 459, 458, 522, 459, 458, 523, 459,
- 458, 524, 459, 458, 508, 459, 458, 526,
- 535, 459, 458, 527, 459, 458, 528, 459,
- 458, 529, 459, 458, 530, 459, 458, 531,
- 459, 458, 532, 459, 458, 533, 459, 458,
- 534, 459, 458, 508, 459, 458, 536, 459,
- 458, 537, 459, 458, 538, 459, 458, 539,
- 459, 458, 540, 459, 458, 541, 459, 458,
- 542, 459, 458, 543, 459, 458, 544, 459,
- 458, 545, 459, 458, 546, 459, 458, 508,
- 459, 458, 548, 459, 458, 468, 459, 458,
- 550, 459, 458, 551, 459, 458, 552, 459,
- 458, 553, 459, 458, 35, 459, 458, 555,
- 459, 458, 556, 459, 458, 557, 459, 458,
- 558, 459, 458, 508, 459, 458, 560, 459,
- 458, 561, 459, 458, 562, 459, 458, 563,
- 459, 458, 508, 459, 458, 459, 565, 458,
- 459, 566, 458, 459, 567, 458, 459, 568,
- 458, 459, 569, 458, 459, 570, 458, 459,
- 571, 458, 459, 572, 458, 459, 573, 458,
- 459, 574, 458, 459, 575, 458, 459, 576,
- 458, 459, 577, 458, 459, 9, 458, 459,
- 35, 458, 580, 589, 0, 581, 0, 582,
- 0, 583, 0, 584, 0, 585, 0, 586,
- 0, 587, 0, 588, 0, 366, 0, 590,
- 0, 591, 0, 592, 0, 593, 0, 594,
- 0, 595, 0, 596, 0, 597, 0, 598,
- 0, 599, 0, 600, 0, 46, 0, 602,
- 0, 9, 0, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 29, 29, 29, 29, 29, 0, 54, 0,
- 5, 1, 0, 29, 1, 35, 0, 43,
- 0, 0, 0, 43, 0, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 149,
- 126, 57, 110, 23, 0, 29, 29, 29,
- 29, 29, 54, 0, 5, 1, 0, 29,
- 1, 35, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 84,
- 84, 54, 0, 81, 81, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 21, 0, 63, 63, 63, 63,
- 63, 130, 31, 60, 57, 31, 63, 57,
- 66, 31, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 84, 84, 84,
- 84, 54, 0, 69, 33, 69, 0, 0,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 13, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 13, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 84, 84, 84, 54,
- 0, 72, 33, 84, 72, 0, 0, 0,
- 0, 0, 54, 0, 0, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 15, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 15, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 15, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 15, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 15, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 15, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 15, 0, 54, 15, 0, 0,
- 43, 0, 43, 139, 48, 9, 106, 11,
- 0, 134, 45, 45, 45, 3, 122, 33,
- 33, 33, 0, 122, 33, 33, 33, 0,
- 122, 33, 0, 33, 0, 102, 7, 7,
- 43, 54, 0, 0, 43, 114, 25, 0,
- 54, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 0, 0, 43, 54, 37, 37,
- 87, 37, 37, 43, 0, 39, 0, 43,
- 0, 0, 54, 0, 0, 39, 0, 0,
- 96, 96, 96, 96, 96, 54, 0, 93,
- 90, 41, 96, 90, 99, 0, 43, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 84, 84, 84, 84, 54, 0,
- 78, 33, 84, 78, 0, 0, 0, 0,
- 0, 54, 0, 0, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 19,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 19, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 19, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 19,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 19, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 19, 0, 54, 19,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 84, 84,
- 84, 84, 84, 54, 0, 75, 33, 84,
- 75, 0, 0, 0, 0, 0, 54, 0,
- 0, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 17, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 17, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 17, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 17, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 17, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 54,
- 17, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 603;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 1303 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
-
- #line 1310 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1600 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1663 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ja.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_ja()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Ja", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/ja.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/ja.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 16, 19, 23, 24, 25, 26,
- 28, 30, 45, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 63, 65, 67, 69,
- 71, 73, 75, 77, 79, 81, 83, 85,
- 87, 89, 91, 93, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 132, 135, 138, 140, 142, 144,
- 146, 148, 150, 152, 154, 156, 158, 160,
- 162, 164, 166, 168, 170, 172, 174, 176,
- 179, 182, 184, 186, 188, 190, 192, 194,
- 196, 198, 200, 202, 204, 206, 208, 210,
- 212, 214, 216, 218, 220, 222, 224, 226,
- 228, 230, 232, 234, 237, 239, 241, 243,
- 245, 247, 250, 252, 254, 256, 258, 260,
- 262, 264, 266, 268, 270, 272, 274, 276,
- 278, 280, 282, 284, 286, 288, 290, 292,
- 294, 296, 298, 300, 302, 304, 306, 308,
- 310, 312, 314, 316, 318, 320, 322, 324,
- 326, 328, 330, 332, 334, 336, 338, 340,
- 342, 344, 345, 346, 347, 348, 349, 350,
- 351, 352, 364, 368, 373, 375, 377, 379,
- 381, 383, 385, 387, 389, 391, 393, 395,
- 397, 399, 401, 403, 405, 407, 409, 412,
- 414, 416, 418, 420, 422, 424, 426, 428,
- 430, 433, 436, 438, 440, 442, 444, 446,
- 448, 450, 452, 454, 456, 458, 460, 462,
- 464, 466, 468, 470, 472, 474, 476, 478,
- 480, 482, 484, 486, 488, 490, 493, 495,
- 497, 499, 501, 503, 506, 508, 510, 512,
- 514, 516, 518, 520, 522, 524, 526, 528,
- 530, 532, 534, 536, 538, 540, 542, 544,
- 546, 548, 550, 552, 554, 556, 558, 560,
- 562, 564, 566, 568, 570, 572, 574, 576,
- 578, 580, 582, 584, 586, 588, 590, 592,
- 594, 596, 598, 600, 602, 603, 604, 606,
- 608, 613, 618, 623, 628, 632, 636, 638,
- 639, 640, 641, 642, 643, 644, 645, 646,
- 647, 648, 649, 650, 651, 652, 653, 654,
- 659, 666, 671, 675, 681, 684, 686, 692,
- 707, 709, 711, 713, 715, 717, 718, 719,
- 720, 721, 722, 723, 724, 725, 726, 727,
- 728, 729, 732, 733, 734, 735, 736, 737,
- 738, 739, 740, 741, 742, 743, 744, 745,
- 746, 747, 748, 749, 750, 752, 754, 755,
- 756, 757, 758, 759, 760, 761, 762, 763,
- 764, 765, 766, 767, 768, 769, 770, 771,
- 772, 773, 785, 789, 794, 796, 798, 800,
- 802, 804, 806, 808, 810, 812, 814, 816,
- 818, 820, 822, 824, 826, 828, 830, 833,
- 835, 837, 839, 841, 843, 845, 847, 849,
- 851, 853, 855, 857, 859, 861, 863, 865,
- 867, 869, 871, 873, 875, 877, 879, 881,
- 883, 885, 887, 889, 891, 893, 895, 897,
- 899, 901, 903, 905, 907, 909, 911, 913,
- 915, 917, 919, 921, 923, 925, 927, 929,
- 931, 933, 934, 935, 936, 937, 938, 939,
- 940, 941, 942, 943, 945, 946, 947, 948,
- 949, 950, 951, 952, 965, 969, 974, 976,
- 978, 980, 982, 984, 986, 988, 990, 992,
- 994, 996, 998, 1000, 1002, 1004, 1006, 1008,
- 1010, 1013, 1015, 1017, 1019, 1021, 1023, 1025,
- 1027, 1029, 1031, 1034, 1037, 1039, 1041, 1043,
- 1045, 1047, 1049, 1051, 1053, 1055, 1057, 1059,
- 1061, 1063, 1065, 1067, 1069, 1071, 1073, 1075,
- 1077, 1079, 1081, 1083, 1085, 1087, 1089, 1091,
- 1094, 1096, 1098, 1100, 1102, 1104, 1107, 1109,
- 1111, 1113, 1115, 1117, 1119, 1121, 1123, 1125,
- 1127, 1129, 1131, 1133, 1135, 1137, 1139, 1141,
- 1143, 1145, 1147, 1149, 1151, 1153, 1155, 1157,
- 1159, 1161, 1163, 1165, 1167, 1169, 1171, 1173,
- 1175, 1177, 1179, 1181, 1183, 1185, 1187, 1189,
- 1191, 1193, 1195, 1197, 1199, 1201, 1203, 1205,
- 1207, 1209, 1211, 1213, 1215, 1216, 1217, 1218,
- 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226,
- 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234,
- 1235, 1236, 1237, 1238
-};
-
-static const char _lexer_trans_keys[] = {
- -29, -28, -27, -26, -24, -17, 10, 32,
- 34, 35, 37, 42, 64, 124, 9, 13,
- -127, -126, -125, -117, -105, -97, -86, -29,
- -127, -92, 10, 13, 10, 13, -29, -28,
- -27, -26, -24, 10, 32, 34, 35, 37,
- 42, 64, 124, 9, 13, -67, -66, -122,
- -29, -127, -105, -117, 58, 10, 10, -29,
- -26, 10, 32, 35, 124, 9, 13, -125,
- 10, -107, 10, -29, 10, -126, 10, -93,
- 10, -29, 10, -125, 10, -68, 10, -29,
- 10, -125, 10, -127, 10, -29, 10, -125,
- 10, -93, 10, 10, 58, -29, -28, -27,
- -26, -24, 10, 32, 34, 35, 37, 42,
- 64, 124, 9, 13, -119, -115, -26, -113,
- -112, -87, -97, -24, -125, -67, 58, 10,
- 10, -29, -28, -26, -24, 10, 32, 35,
- 37, 64, 9, 13, -126, -125, 10, -75,
- -73, 10, -29, 10, -125, 10, -77, 10,
- -29, 10, -125, 10, -105, 10, -29, 10,
- -125, 10, -85, 10, 10, 58, -29, 10,
- -125, 10, -118, 10, -29, 10, -125, 10,
- -86, 10, -29, 10, -126, 10, -86, 10,
- -29, 10, 58, -126, -125, 10, -94, 10,
- -29, 10, -126, 10, -90, 10, -29, 10,
- -125, 10, -120, 10, -29, 10, -125, 10,
- -87, 10, -29, 10, -126, 10, -92, 10,
- -29, 10, -125, 10, -77, 10, -122, 10,
- -29, 10, -125, 10, -77, 10, -29, 10,
- -125, 10, -105, 10, -29, 10, -125, 10,
- -84, 10, -29, 10, 58, -125, 10, -68,
- 10, -29, 10, -125, 10, -120, 10, -122,
- -107, 10, -29, 10, -125, 10, -77, 10,
- -29, 10, -125, 10, -105, 10, -29, 10,
- -125, 10, -84, 10, -29, 10, -126, 10,
- -93, 10, -29, 10, -125, 10, -68, 10,
- -29, 10, -125, 10, -127, 10, -29, 10,
- -125, 10, -93, 10, -66, 10, -117, 10,
- -87, 10, -97, 10, -24, 10, -125, 10,
- -67, 10, -125, 10, -116, 10, -26, 10,
- -103, 10, -81, 10, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- -125, -116, -26, -103, -81, 58, 10, 10,
- -29, -28, -27, -26, 10, 32, 35, 37,
- 42, 64, 9, 13, -127, -126, -125, 10,
- -117, -105, -97, -86, 10, -29, 10, -127,
- 10, -92, 10, -29, 10, -127, 10, -117,
- 10, -29, 10, -127, 10, -105, 10, -29,
- 10, -127, 10, -96, 10, -29, 10, -126,
- 10, -119, 10, -29, 10, -127, 10, -80,
- 10, -126, -73, 10, -29, 10, -125, 10,
- -118, 10, -29, 10, -125, 10, -86, 10,
- -29, 10, -126, 10, -86, 10, -29, 10,
- 58, -126, -125, 10, -94, 10, -29, 10,
- -126, 10, -90, 10, -29, 10, -125, 10,
- -120, 10, -29, 10, -125, 10, -87, 10,
- -29, 10, -126, 10, -92, 10, -29, 10,
- -125, 10, -77, 10, 10, 58, -122, 10,
- -29, 10, -125, 10, -77, 10, -29, 10,
- -125, 10, -105, 10, -29, 10, -125, 10,
- -84, 10, -29, 10, 58, -125, 10, -68,
- 10, -29, 10, -125, 10, -120, 10, -122,
- -107, 10, -29, 10, -125, 10, -77, 10,
- -29, 10, -125, 10, -105, 10, -29, 10,
- -125, 10, -84, 10, -29, 10, -126, 10,
- -93, 10, -29, 10, -125, 10, -68, 10,
- -29, 10, -125, 10, -127, 10, -29, 10,
- -125, 10, -93, 10, -67, 10, -122, 10,
- -119, 10, -115, 10, -26, 10, -113, 10,
- -112, 10, -87, 10, -97, 10, -24, 10,
- -125, 10, -67, 10, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, 34, 34, 10, 13, 10, 13,
- 10, 32, 34, 9, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 9, 13,
- 10, 32, 9, 13, 10, 13, 10, 95,
- 70, 69, 65, 84, 85, 82, 69, 95,
- 69, 78, 68, 95, 37, 32, 13, 32,
- 64, 9, 10, 9, 10, 13, 32, 64,
- 11, 12, 10, 32, 64, 9, 13, 32,
- 124, 9, 13, 10, 32, 92, 124, 9,
- 13, 10, 92, 124, 10, 92, 10, 32,
- 92, 124, 9, 13, -29, -28, -27, -26,
- -24, 10, 32, 34, 35, 37, 42, 64,
- 124, 9, 13, -87, 10, -97, 10, -24,
- 10, -125, 10, -67, 10, -29, -127, -117,
- -29, -127, -96, -29, -126, -119, -29, -127,
- -80, -126, -75, -73, -29, -125, -77, -29,
- -125, -105, -29, -125, -85, -29, -125, -118,
- -29, -125, -86, -29, -126, -86, -29, 58,
- -126, -125, -94, -29, -126, -90, -29, -125,
- -120, -29, -125, -87, -29, -126, -92, -29,
- -125, -77, 58, 10, 10, -29, -28, -27,
- -26, 10, 32, 35, 37, 42, 64, 9,
- 13, -127, -126, -125, 10, -117, -105, -97,
- -86, 10, -29, 10, -127, 10, -92, 10,
- -29, 10, -127, 10, -117, 10, -29, 10,
- -127, 10, -105, 10, -29, 10, -127, 10,
- -96, 10, -29, 10, -126, 10, -119, 10,
- -29, 10, -127, 10, -80, 10, -126, -73,
- 10, -29, 10, -125, 10, -118, 10, -29,
- 10, -125, 10, -86, 10, -29, 10, -126,
- 10, -86, 10, 10, 58, -107, 10, -29,
- 10, -126, 10, -93, 10, -29, 10, -125,
- 10, -68, 10, -29, 10, -125, 10, -127,
- 10, -29, 10, -125, 10, -93, 10, -67,
- 10, -122, 10, -119, 10, -115, 10, -26,
- 10, -113, 10, -112, 10, -87, 10, -97,
- 10, -24, 10, -125, 10, -67, 10, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 32, -122, -29, -125,
- -77, -29, -125, -105, -29, -125, -84, -29,
- 58, -125, -68, -29, -125, -120, 10, 10,
- -29, -28, -27, -26, -24, 10, 32, 35,
- 37, 42, 64, 9, 13, -127, -126, -125,
- 10, -117, -105, -97, -86, 10, -29, 10,
- -127, 10, -92, 10, -29, 10, -127, 10,
- -117, 10, -29, 10, -127, 10, -105, 10,
- -29, 10, -127, 10, -96, 10, -29, 10,
- -126, 10, -119, 10, -29, 10, -127, 10,
- -80, 10, -126, -73, 10, -29, 10, -125,
- 10, -118, 10, -29, 10, -125, 10, -86,
- 10, -29, 10, -126, 10, -86, 10, -29,
- 10, 58, -126, -125, 10, -94, 10, -29,
- 10, -126, 10, -90, 10, -29, 10, -125,
- 10, -120, 10, -29, 10, -125, 10, -87,
- 10, -29, 10, -126, 10, -92, 10, -29,
- 10, -125, 10, -77, 10, 10, 58, -122,
- 10, -29, 10, -125, 10, -77, 10, -29,
- 10, -125, 10, -105, 10, -29, 10, -125,
- 10, -84, 10, -29, 10, 58, -125, 10,
- -68, 10, -29, 10, -125, 10, -120, 10,
- -122, -107, 10, -29, 10, -125, 10, -77,
- 10, -29, 10, -125, 10, -105, 10, -29,
- 10, -125, 10, -84, 10, -29, 10, -126,
- 10, -93, 10, -29, 10, -125, 10, -68,
- 10, -29, 10, -125, 10, -127, 10, -29,
- 10, -125, 10, -93, 10, -67, 10, -122,
- 10, -119, 10, -115, 10, -26, 10, -113,
- 10, -112, 10, -87, 10, -97, 10, -24,
- 10, -125, 10, -67, 10, -125, 10, -116,
- 10, -26, 10, -103, 10, -81, 10, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 32, -122, -107, -29,
- -125, -77, -29, -125, -105, -29, -125, -84,
- -29, -126, -93, -29, -125, -68, -29, -125,
- -127, -29, -125, -93, -69, -65, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 14, 3, 4, 1, 1, 1, 2,
- 2, 13, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 6, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 13, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 9, 3, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 10, 4, 5, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 1, 1, 2, 2,
- 3, 3, 3, 3, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 3,
- 5, 3, 2, 4, 3, 2, 4, 13,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 10, 4, 5, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 11, 4, 5, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 1, 1, 1, 1, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 1, 1, 1, 1, 0, 0, 1, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 16, 20, 25, 27, 29, 31,
- 34, 37, 52, 55, 57, 59, 61, 63,
- 65, 67, 69, 71, 79, 82, 85, 88,
- 91, 94, 97, 100, 103, 106, 109, 112,
- 115, 118, 121, 124, 139, 141, 143, 145,
- 147, 149, 151, 153, 155, 157, 159, 161,
- 163, 165, 176, 180, 184, 187, 190, 193,
- 196, 199, 202, 205, 208, 211, 214, 217,
- 220, 223, 226, 229, 232, 235, 238, 241,
- 245, 249, 252, 255, 258, 261, 264, 267,
- 270, 273, 276, 279, 282, 285, 288, 291,
- 294, 297, 300, 303, 306, 309, 312, 315,
- 318, 321, 324, 327, 331, 334, 337, 340,
- 343, 346, 350, 353, 356, 359, 362, 365,
- 368, 371, 374, 377, 380, 383, 386, 389,
- 392, 395, 398, 401, 404, 407, 410, 413,
- 416, 419, 422, 425, 428, 431, 434, 437,
- 440, 443, 446, 449, 452, 455, 458, 461,
- 464, 467, 470, 473, 476, 479, 482, 485,
- 488, 491, 493, 495, 497, 499, 501, 503,
- 505, 507, 519, 524, 530, 533, 536, 539,
- 542, 545, 548, 551, 554, 557, 560, 563,
- 566, 569, 572, 575, 578, 581, 584, 588,
- 591, 594, 597, 600, 603, 606, 609, 612,
- 615, 619, 623, 626, 629, 632, 635, 638,
- 641, 644, 647, 650, 653, 656, 659, 662,
- 665, 668, 671, 674, 677, 680, 683, 686,
- 689, 692, 695, 698, 701, 704, 708, 711,
- 714, 717, 720, 723, 727, 730, 733, 736,
- 739, 742, 745, 748, 751, 754, 757, 760,
- 763, 766, 769, 772, 775, 778, 781, 784,
- 787, 790, 793, 796, 799, 802, 805, 808,
- 811, 814, 817, 820, 823, 826, 829, 832,
- 835, 838, 841, 844, 847, 850, 853, 856,
- 859, 862, 865, 868, 871, 873, 875, 878,
- 881, 886, 891, 896, 901, 905, 909, 912,
- 914, 916, 918, 920, 922, 924, 926, 928,
- 930, 932, 934, 936, 938, 940, 942, 944,
- 949, 956, 961, 965, 971, 975, 978, 984,
- 999, 1002, 1005, 1008, 1011, 1014, 1016, 1018,
- 1020, 1022, 1024, 1026, 1028, 1030, 1032, 1034,
- 1036, 1038, 1042, 1044, 1046, 1048, 1050, 1052,
- 1054, 1056, 1058, 1060, 1062, 1064, 1066, 1068,
- 1070, 1072, 1074, 1076, 1078, 1081, 1084, 1086,
- 1088, 1090, 1092, 1094, 1096, 1098, 1100, 1102,
- 1104, 1106, 1108, 1110, 1112, 1114, 1116, 1118,
- 1120, 1122, 1134, 1139, 1145, 1148, 1151, 1154,
- 1157, 1160, 1163, 1166, 1169, 1172, 1175, 1178,
- 1181, 1184, 1187, 1190, 1193, 1196, 1199, 1203,
- 1206, 1209, 1212, 1215, 1218, 1221, 1224, 1227,
- 1230, 1233, 1236, 1239, 1242, 1245, 1248, 1251,
- 1254, 1257, 1260, 1263, 1266, 1269, 1272, 1275,
- 1278, 1281, 1284, 1287, 1290, 1293, 1296, 1299,
- 1302, 1305, 1308, 1311, 1314, 1317, 1320, 1323,
- 1326, 1329, 1332, 1335, 1338, 1341, 1344, 1347,
- 1350, 1353, 1355, 1357, 1359, 1361, 1363, 1365,
- 1367, 1369, 1371, 1373, 1376, 1378, 1380, 1382,
- 1384, 1386, 1388, 1390, 1403, 1408, 1414, 1417,
- 1420, 1423, 1426, 1429, 1432, 1435, 1438, 1441,
- 1444, 1447, 1450, 1453, 1456, 1459, 1462, 1465,
- 1468, 1472, 1475, 1478, 1481, 1484, 1487, 1490,
- 1493, 1496, 1499, 1503, 1507, 1510, 1513, 1516,
- 1519, 1522, 1525, 1528, 1531, 1534, 1537, 1540,
- 1543, 1546, 1549, 1552, 1555, 1558, 1561, 1564,
- 1567, 1570, 1573, 1576, 1579, 1582, 1585, 1588,
- 1592, 1595, 1598, 1601, 1604, 1607, 1611, 1614,
- 1617, 1620, 1623, 1626, 1629, 1632, 1635, 1638,
- 1641, 1644, 1647, 1650, 1653, 1656, 1659, 1662,
- 1665, 1668, 1671, 1674, 1677, 1680, 1683, 1686,
- 1689, 1692, 1695, 1698, 1701, 1704, 1707, 1710,
- 1713, 1716, 1719, 1722, 1725, 1728, 1731, 1734,
- 1737, 1740, 1743, 1746, 1749, 1752, 1755, 1758,
- 1761, 1764, 1767, 1770, 1773, 1775, 1777, 1779,
- 1781, 1783, 1785, 1787, 1789, 1791, 1793, 1795,
- 1797, 1799, 1801, 1803, 1805, 1807, 1809, 1811,
- 1813, 1815, 1817, 1819
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 10, 36, 41, 153, 601, 9, 9,
- 276, 286, 288, 302, 303, 306, 9, 0,
- 3, 329, 579, 0, 4, 317, 320, 323,
- 0, 5, 0, 6, 0, 7, 0, 9,
- 287, 8, 9, 287, 8, 2, 10, 36,
- 41, 153, 9, 9, 276, 286, 288, 302,
- 303, 306, 9, 0, 11, 15, 0, 12,
- 0, 13, 0, 14, 0, 7, 0, 16,
- 0, 17, 0, 19, 18, 19, 18, 20,
- 312, 19, 19, 9, 9, 19, 18, 21,
- 19, 18, 22, 19, 18, 23, 19, 18,
- 24, 19, 18, 25, 19, 18, 26, 19,
- 18, 27, 19, 18, 28, 19, 18, 29,
- 19, 18, 30, 19, 18, 31, 19, 18,
- 32, 19, 18, 33, 19, 18, 34, 19,
- 18, 19, 35, 18, 2, 10, 36, 41,
- 153, 9, 9, 276, 286, 288, 302, 303,
- 306, 9, 0, 37, 0, 38, 0, 39,
- 0, 40, 0, 7, 0, 42, 0, 43,
- 0, 44, 0, 45, 0, 46, 0, 47,
- 0, 49, 48, 49, 48, 50, 127, 129,
- 134, 49, 49, 9, 139, 9, 49, 48,
- 51, 105, 49, 48, 52, 62, 49, 48,
- 53, 49, 48, 54, 49, 48, 55, 49,
- 48, 56, 49, 48, 57, 49, 48, 58,
- 49, 48, 59, 49, 48, 60, 49, 48,
- 61, 49, 48, 49, 35, 48, 63, 49,
- 48, 64, 49, 48, 65, 49, 48, 66,
- 49, 48, 67, 49, 48, 68, 49, 48,
- 69, 49, 48, 70, 49, 48, 71, 49,
- 48, 72, 49, 35, 48, 73, 89, 49,
- 48, 74, 49, 48, 75, 49, 48, 76,
- 49, 48, 77, 49, 48, 78, 49, 48,
- 79, 49, 48, 80, 49, 48, 81, 49,
- 48, 82, 49, 48, 83, 49, 48, 84,
- 49, 48, 85, 49, 48, 86, 49, 48,
- 87, 49, 48, 88, 49, 48, 61, 49,
- 48, 90, 49, 48, 91, 49, 48, 92,
- 49, 48, 93, 49, 48, 94, 49, 48,
- 95, 49, 48, 96, 49, 48, 97, 49,
- 48, 98, 49, 48, 99, 49, 48, 100,
- 49, 35, 48, 101, 49, 48, 102, 49,
- 48, 103, 49, 48, 104, 49, 48, 61,
- 49, 48, 106, 115, 49, 48, 107, 49,
- 48, 108, 49, 48, 109, 49, 48, 110,
- 49, 48, 111, 49, 48, 112, 49, 48,
- 113, 49, 48, 114, 49, 48, 61, 49,
- 48, 116, 49, 48, 117, 49, 48, 118,
- 49, 48, 119, 49, 48, 120, 49, 48,
- 121, 49, 48, 122, 49, 48, 123, 49,
- 48, 124, 49, 48, 125, 49, 48, 126,
- 49, 48, 61, 49, 48, 128, 49, 48,
- 61, 49, 48, 130, 49, 48, 131, 49,
- 48, 132, 49, 48, 133, 49, 48, 61,
- 49, 48, 135, 49, 48, 136, 49, 48,
- 137, 49, 48, 138, 49, 48, 61, 49,
- 48, 49, 140, 48, 49, 141, 48, 49,
- 142, 48, 49, 143, 48, 49, 144, 48,
- 49, 145, 48, 49, 146, 48, 49, 147,
- 48, 49, 148, 48, 49, 149, 48, 49,
- 150, 48, 49, 151, 48, 49, 152, 48,
- 49, 9, 48, 154, 0, 155, 0, 156,
- 0, 157, 0, 158, 0, 159, 0, 161,
- 160, 161, 160, 162, 249, 251, 256, 161,
- 161, 9, 261, 275, 9, 161, 160, 163,
- 182, 227, 161, 160, 164, 167, 173, 176,
- 161, 160, 165, 161, 160, 166, 161, 160,
- 35, 161, 160, 168, 161, 160, 169, 161,
- 160, 170, 161, 160, 171, 161, 160, 172,
- 161, 160, 35, 161, 160, 174, 161, 160,
- 175, 161, 160, 170, 161, 160, 177, 161,
- 160, 178, 161, 160, 179, 161, 160, 180,
- 161, 160, 181, 161, 160, 35, 161, 160,
- 170, 183, 161, 160, 184, 161, 160, 185,
- 161, 160, 186, 161, 160, 187, 161, 160,
- 188, 161, 160, 189, 161, 160, 190, 161,
- 160, 191, 161, 160, 192, 161, 160, 193,
- 161, 35, 160, 194, 211, 161, 160, 195,
- 161, 160, 196, 161, 160, 197, 161, 160,
- 198, 161, 160, 199, 161, 160, 200, 161,
- 160, 201, 161, 160, 202, 161, 160, 203,
- 161, 160, 204, 161, 160, 205, 161, 160,
- 206, 161, 160, 207, 161, 160, 208, 161,
- 160, 209, 161, 160, 210, 161, 160, 161,
- 35, 160, 212, 161, 160, 213, 161, 160,
- 214, 161, 160, 215, 161, 160, 216, 161,
- 160, 217, 161, 160, 218, 161, 160, 219,
- 161, 160, 220, 161, 160, 221, 161, 160,
- 222, 161, 35, 160, 223, 161, 160, 224,
- 161, 160, 225, 161, 160, 226, 161, 160,
- 210, 161, 160, 228, 237, 161, 160, 229,
- 161, 160, 230, 161, 160, 231, 161, 160,
- 232, 161, 160, 233, 161, 160, 234, 161,
- 160, 235, 161, 160, 236, 161, 160, 210,
- 161, 160, 238, 161, 160, 239, 161, 160,
- 240, 161, 160, 241, 161, 160, 242, 161,
- 160, 243, 161, 160, 244, 161, 160, 245,
- 161, 160, 246, 161, 160, 247, 161, 160,
- 248, 161, 160, 210, 161, 160, 250, 161,
- 160, 170, 161, 160, 252, 161, 160, 253,
- 161, 160, 254, 161, 160, 255, 161, 160,
- 35, 161, 160, 257, 161, 160, 258, 161,
- 160, 259, 161, 160, 260, 161, 160, 210,
- 161, 160, 161, 262, 160, 161, 263, 160,
- 161, 264, 160, 161, 265, 160, 161, 266,
- 160, 161, 267, 160, 161, 268, 160, 161,
- 269, 160, 161, 270, 160, 161, 271, 160,
- 161, 272, 160, 161, 273, 160, 161, 274,
- 160, 161, 9, 160, 161, 35, 160, 277,
- 0, 278, 0, 280, 279, 279, 280, 279,
- 279, 281, 281, 282, 281, 281, 281, 281,
- 282, 281, 281, 281, 281, 283, 281, 281,
- 281, 281, 284, 281, 281, 9, 285, 285,
- 0, 9, 285, 285, 0, 9, 287, 286,
- 9, 0, 289, 0, 290, 0, 291, 0,
- 292, 0, 293, 0, 294, 0, 295, 0,
- 296, 0, 297, 0, 298, 0, 299, 0,
- 300, 0, 301, 0, 603, 0, 7, 0,
- 0, 0, 0, 0, 304, 305, 9, 305,
- 305, 303, 304, 304, 9, 305, 303, 305,
- 0, 306, 307, 306, 0, 311, 310, 309,
- 307, 310, 308, 0, 309, 307, 308, 0,
- 309, 308, 311, 310, 309, 307, 310, 308,
- 2, 10, 36, 41, 153, 311, 311, 276,
- 286, 288, 302, 303, 306, 311, 0, 313,
- 19, 18, 314, 19, 18, 315, 19, 18,
- 316, 19, 18, 34, 19, 18, 318, 0,
- 319, 0, 12, 0, 321, 0, 322, 0,
- 12, 0, 324, 0, 325, 0, 326, 0,
- 327, 0, 328, 0, 7, 0, 12, 330,
- 339, 0, 331, 0, 332, 0, 333, 0,
- 334, 0, 335, 0, 336, 0, 337, 0,
- 338, 0, 16, 0, 340, 0, 341, 0,
- 342, 0, 343, 0, 344, 0, 345, 0,
- 346, 0, 347, 0, 348, 0, 349, 457,
- 0, 350, 441, 0, 351, 0, 352, 0,
- 353, 0, 354, 0, 355, 0, 356, 0,
- 357, 0, 358, 0, 359, 0, 360, 0,
- 361, 0, 362, 0, 363, 0, 364, 0,
- 365, 0, 366, 0, 367, 0, 369, 368,
- 369, 368, 370, 414, 416, 421, 369, 369,
- 9, 426, 440, 9, 369, 368, 371, 390,
- 401, 369, 368, 372, 375, 381, 384, 369,
- 368, 373, 369, 368, 374, 369, 368, 35,
- 369, 368, 376, 369, 368, 377, 369, 368,
- 378, 369, 368, 379, 369, 368, 380, 369,
- 368, 35, 369, 368, 382, 369, 368, 383,
- 369, 368, 378, 369, 368, 385, 369, 368,
- 386, 369, 368, 387, 369, 368, 388, 369,
- 368, 389, 369, 368, 35, 369, 368, 378,
- 391, 369, 368, 392, 369, 368, 393, 369,
- 368, 394, 369, 368, 395, 369, 368, 396,
- 369, 368, 397, 369, 368, 398, 369, 368,
- 399, 369, 368, 400, 369, 368, 369, 35,
- 368, 402, 369, 368, 403, 369, 368, 404,
- 369, 368, 405, 369, 368, 406, 369, 368,
- 407, 369, 368, 408, 369, 368, 409, 369,
- 368, 410, 369, 368, 411, 369, 368, 412,
- 369, 368, 413, 369, 368, 400, 369, 368,
- 415, 369, 368, 378, 369, 368, 417, 369,
- 368, 418, 369, 368, 419, 369, 368, 420,
- 369, 368, 35, 369, 368, 422, 369, 368,
- 423, 369, 368, 424, 369, 368, 425, 369,
- 368, 400, 369, 368, 369, 427, 368, 369,
- 428, 368, 369, 429, 368, 369, 430, 368,
- 369, 431, 368, 369, 432, 368, 369, 433,
- 368, 369, 434, 368, 369, 435, 368, 369,
- 436, 368, 369, 437, 368, 369, 438, 368,
- 369, 439, 368, 369, 9, 368, 369, 35,
- 368, 442, 0, 443, 0, 444, 0, 445,
- 0, 446, 0, 447, 0, 448, 0, 449,
- 0, 450, 0, 451, 0, 452, 367, 0,
- 453, 0, 454, 0, 455, 0, 456, 0,
- 366, 0, 459, 458, 459, 458, 460, 547,
- 549, 554, 559, 459, 459, 9, 564, 578,
- 9, 459, 458, 461, 480, 525, 459, 458,
- 462, 465, 471, 474, 459, 458, 463, 459,
- 458, 464, 459, 458, 35, 459, 458, 466,
- 459, 458, 467, 459, 458, 468, 459, 458,
- 469, 459, 458, 470, 459, 458, 35, 459,
- 458, 472, 459, 458, 473, 459, 458, 468,
- 459, 458, 475, 459, 458, 476, 459, 458,
- 477, 459, 458, 478, 459, 458, 479, 459,
- 458, 35, 459, 458, 468, 481, 459, 458,
- 482, 459, 458, 483, 459, 458, 484, 459,
- 458, 485, 459, 458, 486, 459, 458, 487,
- 459, 458, 488, 459, 458, 489, 459, 458,
- 490, 459, 458, 491, 459, 35, 458, 492,
- 509, 459, 458, 493, 459, 458, 494, 459,
- 458, 495, 459, 458, 496, 459, 458, 497,
- 459, 458, 498, 459, 458, 499, 459, 458,
- 500, 459, 458, 501, 459, 458, 502, 459,
- 458, 503, 459, 458, 504, 459, 458, 505,
- 459, 458, 506, 459, 458, 507, 459, 458,
- 508, 459, 458, 459, 35, 458, 510, 459,
- 458, 511, 459, 458, 512, 459, 458, 513,
- 459, 458, 514, 459, 458, 515, 459, 458,
- 516, 459, 458, 517, 459, 458, 518, 459,
- 458, 519, 459, 458, 520, 459, 35, 458,
- 521, 459, 458, 522, 459, 458, 523, 459,
- 458, 524, 459, 458, 508, 459, 458, 526,
- 535, 459, 458, 527, 459, 458, 528, 459,
- 458, 529, 459, 458, 530, 459, 458, 531,
- 459, 458, 532, 459, 458, 533, 459, 458,
- 534, 459, 458, 508, 459, 458, 536, 459,
- 458, 537, 459, 458, 538, 459, 458, 539,
- 459, 458, 540, 459, 458, 541, 459, 458,
- 542, 459, 458, 543, 459, 458, 544, 459,
- 458, 545, 459, 458, 546, 459, 458, 508,
- 459, 458, 548, 459, 458, 468, 459, 458,
- 550, 459, 458, 551, 459, 458, 552, 459,
- 458, 553, 459, 458, 35, 459, 458, 555,
- 459, 458, 556, 459, 458, 557, 459, 458,
- 558, 459, 458, 508, 459, 458, 560, 459,
- 458, 561, 459, 458, 562, 459, 458, 563,
- 459, 458, 508, 459, 458, 459, 565, 458,
- 459, 566, 458, 459, 567, 458, 459, 568,
- 458, 459, 569, 458, 459, 570, 458, 459,
- 571, 458, 459, 572, 458, 459, 573, 458,
- 459, 574, 458, 459, 575, 458, 459, 576,
- 458, 459, 577, 458, 459, 9, 458, 459,
- 35, 458, 580, 589, 0, 581, 0, 582,
- 0, 583, 0, 584, 0, 585, 0, 586,
- 0, 587, 0, 588, 0, 366, 0, 590,
- 0, 591, 0, 592, 0, 593, 0, 594,
- 0, 595, 0, 596, 0, 597, 0, 598,
- 0, 599, 0, 600, 0, 46, 0, 602,
- 0, 9, 0, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 29, 29, 29, 29, 29, 0, 54, 0,
- 5, 1, 0, 29, 1, 35, 0, 43,
- 0, 0, 0, 43, 0, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 149,
- 126, 57, 110, 23, 0, 29, 29, 29,
- 29, 29, 54, 0, 5, 1, 0, 29,
- 1, 35, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 84,
- 84, 54, 0, 81, 81, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 21, 0, 63, 63, 63, 63,
- 63, 130, 31, 60, 57, 31, 63, 57,
- 66, 31, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 84, 84, 84,
- 84, 54, 0, 69, 33, 69, 0, 0,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 13, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 13, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 84, 84, 84, 54,
- 0, 72, 33, 84, 72, 0, 0, 0,
- 0, 0, 54, 0, 0, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 15, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 15, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 15, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 15, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 15, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 15, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 15, 0, 54, 15, 0, 0,
- 43, 0, 43, 139, 48, 9, 106, 11,
- 0, 134, 45, 45, 45, 3, 122, 33,
- 33, 33, 0, 122, 33, 33, 33, 0,
- 122, 33, 0, 33, 0, 102, 7, 7,
- 43, 54, 0, 0, 43, 114, 25, 0,
- 54, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 0, 0, 43, 54, 37, 37,
- 87, 37, 37, 43, 0, 39, 0, 43,
- 0, 0, 54, 0, 0, 39, 0, 0,
- 96, 96, 96, 96, 96, 54, 0, 93,
- 90, 41, 96, 90, 99, 0, 43, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 84, 84, 84, 84, 54, 0,
- 78, 33, 84, 78, 0, 0, 0, 0,
- 0, 54, 0, 0, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 19,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 19, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 19, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 19,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 19, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 19, 0, 54, 19,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 84, 84,
- 84, 84, 84, 54, 0, 75, 33, 84,
- 75, 0, 0, 0, 0, 0, 54, 0,
- 0, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 17, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 17, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 17, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 17, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 17, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 54,
- 17, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 603;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/ja.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 1303 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/ja.c.rl"
-
-#line 1310 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/ja.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/ja.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/ja.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/ja.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/ja.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/ja.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/ja.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/ja.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/ja.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/ja.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/ja.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/ja.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/ja.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/ja.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/ja.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/ja.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/ja.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/ja.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/ja.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/ja.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/ja.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/ja.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/ja.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/ja.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1600 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/ja.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1663 "ext/gherkin_lexer_ja/gherkin_lexer_ja.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/ja.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_ja()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Ja", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_ko/extconf.rb
index 31dfba2,31dfba2..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_ko/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_ko")
--have_library("c", "main")
--create_makefile("gherkin_lexer_ko")
diff --cc ext/gherkin_lexer_ko/gherkin_lexer_ko.c
index fcba3e0,91e9fd7..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_ko/gherkin_lexer_ko.c
+++ /dev/null
@@@ -1,1360 -1,1360 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 15, 17, 18, 19, 21, 22,
- 23, 24, 25, 27, 29, 43, 47, 48,
- 49, 50, 52, 53, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65,
- 77, 80, 82, 84, 87, 89, 91, 93,
- 95, 109, 112, 113, 114, 115, 116, 117,
- 118, 119, 120, 121, 122, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 145,
- 148, 150, 152, 155, 157, 159, 161, 163,
- 165, 167, 169, 171, 173, 175, 177, 179,
- 181, 185, 187, 189, 191, 194, 196, 198,
- 200, 202, 204, 206, 209, 211, 213, 215,
- 217, 219, 221, 223, 225, 227, 229, 231,
- 233, 235, 237, 239, 241, 243, 245, 247,
- 249, 251, 253, 255, 257, 259, 261, 263,
- 265, 267, 269, 271, 273, 275, 277, 279,
- 281, 282, 283, 295, 298, 300, 302, 305,
- 307, 309, 311, 313, 315, 317, 319, 321,
- 323, 325, 327, 329, 331, 336, 338, 340,
- 342, 345, 347, 349, 351, 353, 355, 357,
- 359, 361, 363, 365, 368, 370, 372, 374,
- 376, 378, 380, 382, 384, 386, 388, 391,
- 393, 395, 397, 399, 401, 403, 405, 407,
- 409, 411, 413, 415, 417, 419, 421, 423,
- 425, 427, 429, 431, 433, 435, 437, 439,
- 441, 443, 445, 447, 449, 451, 453, 455,
- 456, 457, 458, 459, 466, 468, 470, 472,
- 474, 476, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491,
- 493, 495, 500, 505, 510, 515, 519, 523,
- 525, 526, 527, 528, 529, 530, 531, 532,
- 533, 534, 535, 536, 537, 538, 539, 540,
- 541, 546, 553, 558, 562, 568, 571, 573,
- 579, 593, 595, 597, 599, 601, 603, 605,
- 607, 609, 611, 615, 617, 619, 621, 624,
- 626, 628, 630, 632, 634, 636, 639, 641,
- 643, 645, 647, 649, 651, 653, 655, 657,
- 659, 662, 664, 666, 668, 670, 672, 674,
- 676, 678, 680, 682, 684, 686, 688, 690,
- 692, 694, 696, 698, 700, 702, 704, 706,
- 708, 710, 712, 714, 716, 718, 720, 722,
- 724, 726, 727, 728, 729, 730, 731, 732,
- 733, 734, 735, 736, 737, 747, 749, 751,
- 753, 755, 757, 759, 761, 763, 765, 767,
- 769, 772, 774, 776, 778, 780, 782, 784,
- 786, 788, 790, 792, 795, 797, 799, 801,
- 803, 805, 807, 809, 811, 813, 815, 817,
- 819, 821, 823, 825, 827, 829, 831, 833,
- 835, 837, 838, 839
- };
-
- static const char _lexer_trans_keys[] = {
- -22, -21, -20, -19, -17, 10, 32, 34,
- 35, 37, 42, 64, 124, 9, 13, -73,
- -72, -72, -21, -97, -90, -84, -21, -87,
- -76, 10, 13, 10, 13, -22, -21, -20,
- -19, 10, 32, 34, 35, 37, 42, 64,
- 124, 9, 13, -117, -89, -88, -80, -88,
- -116, -20, -107, -99, -67, -68, -68, -20,
- -96, -128, -80, -22, -78, -67, 58, 10,
- 10, -22, -21, -20, -19, 10, 32, 35,
- 37, 42, 64, 9, 13, -73, -72, 10,
- -72, 10, -21, 10, -97, -90, 10, -84,
- 10, -21, 10, -87, 10, -76, 10, -22,
- -21, -20, -19, 10, 32, 34, 35, 37,
- 42, 64, 124, 9, 13, -117, -104, -95,
- -100, -21, -126, -104, -21, -90, -84, -20,
- -104, -92, 32, 58, -22, -80, -100, -20,
- -102, -108, 58, 10, 10, -22, -21, -20,
- -19, 10, 32, 35, 37, 42, 64, 9,
- 13, -73, -72, 10, -72, 10, -21, 10,
- -97, -90, 10, -84, 10, -21, 10, -87,
- 10, -76, 10, -84, 10, -22, 10, -77,
- 10, -96, 10, -80, 10, -21, 10, -118,
- 10, -91, 10, 10, 58, -117, -89, -88,
- 10, -88, 10, -116, 10, -20, 10, -107,
- -99, 10, -67, 10, -68, 10, -68, 10,
- -20, 10, -96, 10, -128, 10, -117, -95,
- 10, -100, 10, -21, 10, -126, 10, -104,
- 10, -21, 10, -90, 10, -84, 10, -20,
- 10, -104, 10, -92, 10, -80, 10, -22,
- 10, -79, 10, -107, 10, -104, 10, -20,
- 10, -89, 10, -128, 10, -21, 10, -89,
- 10, -116, 10, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 10, -22, -21, -20, -19, 10,
- 32, 35, 37, 42, 64, 9, 13, -73,
- -72, 10, -72, 10, -21, 10, -97, -90,
- 10, -84, 10, -21, 10, -87, 10, -76,
- 10, -84, 10, -22, 10, -77, 10, -96,
- 10, -80, 10, -21, 10, -118, 10, -91,
- 10, 10, 58, -117, -89, -88, -80, 10,
- -88, 10, -116, 10, -20, 10, -107, -99,
- 10, -67, 10, -68, 10, -68, 10, -20,
- 10, -96, 10, -128, 10, -80, 10, -22,
- 10, -78, 10, -67, 10, -117, -95, 10,
- -100, 10, -21, 10, -126, 10, -104, 10,
- -21, 10, -90, 10, -84, 10, -20, 10,
- -104, 10, -92, 10, 10, 32, 58, -22,
- 10, -80, 10, -100, 10, -20, 10, -102,
- 10, -108, 10, -80, 10, -22, 10, -79,
- 10, -107, 10, -104, 10, -20, 10, -89,
- 10, -128, 10, -21, 10, -89, 10, -116,
- 10, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, -120,
- 58, 10, 10, -22, 10, 32, 35, 124,
- 9, 13, -72, 10, -80, 10, -21, 10,
- -118, 10, -91, 10, 10, 58, -80, -22,
- -79, -107, -104, -20, -89, -128, -21, -89,
- -116, 34, 34, 10, 13, 10, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 9, 13, 10,
- 32, 9, 13, 10, 13, 10, 95, 70,
- 69, 65, 84, 85, 82, 69, 95, 69,
- 78, 68, 95, 37, 32, 13, 32, 64,
- 9, 10, 9, 10, 13, 32, 64, 11,
- 12, 10, 32, 64, 9, 13, 32, 124,
- 9, 13, 10, 32, 92, 124, 9, 13,
- 10, 92, 124, 10, 92, 10, 32, 92,
- 124, 9, 13, -22, -21, -20, -19, 10,
- 32, 34, 35, 37, 42, 64, 124, 9,
- 13, -84, 10, -22, 10, -77, 10, -96,
- 10, -80, 10, -21, 10, -118, 10, -91,
- 10, 10, 58, -117, -89, -88, 10, -88,
- 10, -116, 10, -20, 10, -107, -99, 10,
- -67, 10, -68, 10, -68, 10, -20, 10,
- -96, 10, -128, 10, -117, -95, 10, -100,
- 10, -21, 10, -126, 10, -104, 10, -21,
- 10, -90, 10, -84, 10, -20, 10, -104,
- 10, -92, 10, 10, 32, 58, -22, 10,
- -80, 10, -100, 10, -20, 10, -102, 10,
- -108, 10, -80, 10, -22, 10, -79, 10,
- -107, 10, -104, 10, -20, 10, -89, 10,
- -128, 10, -21, 10, -89, 10, -116, 10,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, -84, -22,
- -77, -96, -80, -21, -118, -91, 58, 10,
- 10, -22, -21, -20, 10, 32, 35, 37,
- 64, 9, 13, -72, 10, -80, 10, -21,
- 10, -118, 10, -91, 10, 10, 58, -80,
- 10, -80, 10, -22, 10, -78, 10, -67,
- 10, -117, -104, 10, -100, 10, -21, 10,
- -126, 10, -104, 10, -21, 10, -90, 10,
- -84, 10, -20, 10, -104, 10, -92, 10,
- 10, 32, 58, -22, 10, -80, 10, -100,
- 10, -20, 10, -102, 10, -108, 10, -120,
- 10, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, -69, -65, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 13, 2, 1, 1, 2, 1, 1,
- 1, 1, 2, 2, 12, 4, 1, 1,
- 1, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 10,
- 3, 2, 2, 3, 2, 2, 2, 2,
- 12, 3, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 10, 3,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 4, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 10, 3, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 5, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 5, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 3, 5, 3, 2, 4, 3, 2, 4,
- 12, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 4, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 8, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 1, 1, 1, 1, 0, 0, 1,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 15, 18, 20, 22, 25, 27,
- 29, 31, 33, 36, 39, 53, 58, 60,
- 62, 64, 67, 69, 71, 73, 75, 77,
- 79, 81, 83, 85, 87, 89, 91, 93,
- 105, 109, 112, 115, 119, 122, 125, 128,
- 131, 145, 149, 151, 153, 155, 157, 159,
- 161, 163, 165, 167, 169, 172, 174, 176,
- 178, 180, 182, 184, 186, 188, 190, 202,
- 206, 209, 212, 216, 219, 222, 225, 228,
- 231, 234, 237, 240, 243, 246, 249, 252,
- 255, 260, 263, 266, 269, 273, 276, 279,
- 282, 285, 288, 291, 295, 298, 301, 304,
- 307, 310, 313, 316, 319, 322, 325, 328,
- 331, 334, 337, 340, 343, 346, 349, 352,
- 355, 358, 361, 364, 367, 370, 373, 376,
- 379, 382, 385, 388, 391, 394, 397, 400,
- 403, 405, 407, 419, 423, 426, 429, 433,
- 436, 439, 442, 445, 448, 451, 454, 457,
- 460, 463, 466, 469, 472, 478, 481, 484,
- 487, 491, 494, 497, 500, 503, 506, 509,
- 512, 515, 518, 521, 525, 528, 531, 534,
- 537, 540, 543, 546, 549, 552, 555, 559,
- 562, 565, 568, 571, 574, 577, 580, 583,
- 586, 589, 592, 595, 598, 601, 604, 607,
- 610, 613, 616, 619, 622, 625, 628, 631,
- 634, 637, 640, 643, 646, 649, 652, 655,
- 657, 659, 661, 663, 670, 673, 676, 679,
- 682, 685, 688, 690, 692, 694, 696, 698,
- 700, 702, 704, 706, 708, 710, 712, 714,
- 717, 720, 725, 730, 735, 740, 744, 748,
- 751, 753, 755, 757, 759, 761, 763, 765,
- 767, 769, 771, 773, 775, 777, 779, 781,
- 783, 788, 795, 800, 804, 810, 814, 817,
- 823, 837, 840, 843, 846, 849, 852, 855,
- 858, 861, 864, 869, 872, 875, 878, 882,
- 885, 888, 891, 894, 897, 900, 904, 907,
- 910, 913, 916, 919, 922, 925, 928, 931,
- 934, 938, 941, 944, 947, 950, 953, 956,
- 959, 962, 965, 968, 971, 974, 977, 980,
- 983, 986, 989, 992, 995, 998, 1001, 1004,
- 1007, 1010, 1013, 1016, 1019, 1022, 1025, 1028,
- 1031, 1034, 1036, 1038, 1040, 1042, 1044, 1046,
- 1048, 1050, 1052, 1054, 1056, 1066, 1069, 1072,
- 1075, 1078, 1081, 1084, 1087, 1090, 1093, 1096,
- 1099, 1103, 1106, 1109, 1112, 1115, 1118, 1121,
- 1124, 1127, 1130, 1133, 1137, 1140, 1143, 1146,
- 1149, 1152, 1155, 1158, 1161, 1164, 1167, 1170,
- 1173, 1176, 1179, 1182, 1185, 1188, 1191, 1194,
- 1197, 1200, 1202, 1204
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 13, 41, 221, 385, 12, 12, 229,
- 239, 241, 255, 256, 259, 12, 0, 3,
- 333, 0, 4, 0, 5, 0, 6, 329,
- 0, 7, 0, 8, 0, 9, 0, 10,
- 0, 12, 240, 11, 12, 240, 11, 2,
- 13, 41, 221, 12, 12, 229, 239, 241,
- 255, 256, 259, 12, 0, 14, 15, 20,
- 24, 0, 10, 0, 16, 0, 17, 0,
- 18, 19, 0, 10, 0, 10, 0, 21,
- 0, 22, 0, 23, 0, 10, 0, 25,
- 0, 26, 0, 27, 0, 28, 0, 29,
- 0, 31, 30, 31, 30, 32, 274, 285,
- 306, 31, 31, 12, 314, 328, 12, 31,
- 30, 33, 269, 31, 30, 34, 31, 30,
- 35, 31, 30, 36, 265, 31, 30, 37,
- 31, 30, 38, 31, 30, 39, 31, 30,
- 40, 31, 30, 2, 13, 41, 221, 12,
- 12, 229, 239, 241, 255, 256, 259, 12,
- 0, 42, 207, 218, 0, 43, 0, 44,
- 0, 45, 0, 46, 0, 47, 0, 48,
- 0, 49, 0, 50, 0, 51, 0, 52,
- 0, 53, 128, 0, 54, 0, 55, 0,
- 56, 0, 57, 0, 58, 0, 59, 0,
- 60, 0, 62, 61, 62, 61, 63, 80,
- 91, 105, 62, 62, 12, 113, 127, 12,
- 62, 61, 64, 75, 62, 61, 65, 62,
- 61, 66, 62, 61, 67, 71, 62, 61,
- 68, 62, 61, 69, 62, 61, 70, 62,
- 61, 40, 62, 61, 72, 62, 61, 73,
- 62, 61, 74, 62, 61, 40, 62, 61,
- 76, 62, 61, 77, 62, 61, 78, 62,
- 61, 79, 62, 61, 62, 40, 61, 81,
- 82, 87, 62, 61, 40, 62, 61, 83,
- 62, 61, 84, 62, 61, 85, 86, 62,
- 61, 40, 62, 61, 40, 62, 61, 88,
- 62, 61, 89, 62, 61, 90, 62, 61,
- 40, 62, 61, 92, 102, 62, 61, 93,
- 62, 61, 94, 62, 61, 95, 62, 61,
- 96, 62, 61, 97, 62, 61, 98, 62,
- 61, 99, 62, 61, 100, 62, 61, 101,
- 62, 61, 79, 62, 61, 103, 62, 61,
- 104, 62, 61, 70, 62, 61, 106, 62,
- 61, 107, 62, 61, 108, 62, 61, 109,
- 62, 61, 110, 62, 61, 111, 62, 61,
- 112, 62, 61, 40, 62, 61, 62, 114,
- 61, 62, 115, 61, 62, 116, 61, 62,
- 117, 61, 62, 118, 61, 62, 119, 61,
- 62, 120, 61, 62, 121, 61, 62, 122,
- 61, 62, 123, 61, 62, 124, 61, 62,
- 125, 61, 62, 126, 61, 62, 12, 61,
- 62, 40, 61, 130, 129, 130, 129, 131,
- 148, 163, 184, 130, 130, 12, 192, 206,
- 12, 130, 129, 132, 143, 130, 129, 133,
- 130, 129, 134, 130, 129, 135, 139, 130,
- 129, 136, 130, 129, 137, 130, 129, 138,
- 130, 129, 40, 130, 129, 140, 130, 129,
- 141, 130, 129, 142, 130, 129, 40, 130,
- 129, 144, 130, 129, 145, 130, 129, 146,
- 130, 129, 147, 130, 129, 130, 40, 129,
- 149, 150, 155, 159, 130, 129, 40, 130,
- 129, 151, 130, 129, 152, 130, 129, 153,
- 154, 130, 129, 40, 130, 129, 40, 130,
- 129, 156, 130, 129, 157, 130, 129, 158,
- 130, 129, 40, 130, 129, 160, 130, 129,
- 161, 130, 129, 162, 130, 129, 147, 130,
- 129, 164, 181, 130, 129, 165, 130, 129,
- 166, 130, 129, 167, 130, 129, 168, 130,
- 129, 169, 130, 129, 170, 130, 129, 171,
- 130, 129, 172, 130, 129, 173, 130, 129,
- 174, 130, 129, 130, 175, 40, 129, 176,
- 130, 129, 177, 130, 129, 178, 130, 129,
- 179, 130, 129, 180, 130, 129, 147, 130,
- 129, 182, 130, 129, 183, 130, 129, 138,
- 130, 129, 185, 130, 129, 186, 130, 129,
- 187, 130, 129, 188, 130, 129, 189, 130,
- 129, 190, 130, 129, 191, 130, 129, 40,
- 130, 129, 130, 193, 129, 130, 194, 129,
- 130, 195, 129, 130, 196, 129, 130, 197,
- 129, 130, 198, 129, 130, 199, 129, 130,
- 200, 129, 130, 201, 129, 130, 202, 129,
- 130, 203, 129, 130, 204, 129, 130, 205,
- 129, 130, 12, 129, 130, 40, 129, 208,
- 0, 209, 0, 211, 210, 211, 210, 212,
- 211, 211, 12, 12, 211, 210, 213, 211,
- 210, 214, 211, 210, 215, 211, 210, 216,
- 211, 210, 217, 211, 210, 211, 40, 210,
- 219, 0, 220, 0, 9, 0, 222, 0,
- 223, 0, 224, 0, 225, 0, 226, 0,
- 227, 0, 228, 0, 10, 0, 230, 0,
- 231, 0, 233, 232, 232, 233, 232, 232,
- 234, 234, 235, 234, 234, 234, 234, 235,
- 234, 234, 234, 234, 236, 234, 234, 234,
- 234, 237, 234, 234, 12, 238, 238, 0,
- 12, 238, 238, 0, 12, 240, 239, 12,
- 0, 242, 0, 243, 0, 244, 0, 245,
- 0, 246, 0, 247, 0, 248, 0, 249,
- 0, 250, 0, 251, 0, 252, 0, 253,
- 0, 254, 0, 387, 0, 10, 0, 0,
- 0, 0, 0, 257, 258, 12, 258, 258,
- 256, 257, 257, 12, 258, 256, 258, 0,
- 259, 260, 259, 0, 264, 263, 262, 260,
- 263, 261, 0, 262, 260, 261, 0, 262,
- 261, 264, 263, 262, 260, 263, 261, 2,
- 13, 41, 221, 264, 264, 229, 239, 241,
- 255, 256, 259, 264, 0, 266, 31, 30,
- 267, 31, 30, 268, 31, 30, 40, 31,
- 30, 270, 31, 30, 271, 31, 30, 272,
- 31, 30, 273, 31, 30, 31, 40, 30,
- 275, 276, 281, 31, 30, 40, 31, 30,
- 277, 31, 30, 278, 31, 30, 279, 280,
- 31, 30, 40, 31, 30, 40, 31, 30,
- 282, 31, 30, 283, 31, 30, 284, 31,
- 30, 40, 31, 30, 286, 303, 31, 30,
- 287, 31, 30, 288, 31, 30, 289, 31,
- 30, 290, 31, 30, 291, 31, 30, 292,
- 31, 30, 293, 31, 30, 294, 31, 30,
- 295, 31, 30, 296, 31, 30, 31, 297,
- 40, 30, 298, 31, 30, 299, 31, 30,
- 300, 31, 30, 301, 31, 30, 302, 31,
- 30, 273, 31, 30, 304, 31, 30, 305,
- 31, 30, 39, 31, 30, 307, 31, 30,
- 308, 31, 30, 309, 31, 30, 310, 31,
- 30, 311, 31, 30, 312, 31, 30, 313,
- 31, 30, 40, 31, 30, 31, 315, 30,
- 31, 316, 30, 31, 317, 30, 31, 318,
- 30, 31, 319, 30, 31, 320, 30, 31,
- 321, 30, 31, 322, 30, 31, 323, 30,
- 31, 324, 30, 31, 325, 30, 31, 326,
- 30, 31, 327, 30, 31, 12, 30, 31,
- 40, 30, 330, 0, 331, 0, 332, 0,
- 10, 0, 334, 0, 335, 0, 336, 0,
- 337, 0, 338, 0, 340, 339, 340, 339,
- 341, 347, 352, 340, 340, 12, 371, 12,
- 340, 339, 342, 340, 339, 343, 340, 339,
- 344, 340, 339, 345, 340, 339, 346, 340,
- 339, 340, 40, 339, 348, 340, 339, 349,
- 340, 339, 350, 340, 339, 351, 340, 339,
- 346, 340, 339, 353, 370, 340, 339, 354,
- 340, 339, 355, 340, 339, 356, 340, 339,
- 357, 340, 339, 358, 340, 339, 359, 340,
- 339, 360, 340, 339, 361, 340, 339, 362,
- 340, 339, 363, 340, 339, 340, 364, 40,
- 339, 365, 340, 339, 366, 340, 339, 367,
- 340, 339, 368, 340, 339, 369, 340, 339,
- 346, 340, 339, 346, 340, 339, 340, 372,
- 339, 340, 373, 339, 340, 374, 339, 340,
- 375, 339, 340, 376, 339, 340, 377, 339,
- 340, 378, 339, 340, 379, 339, 340, 380,
- 339, 340, 381, 339, 340, 382, 339, 340,
- 383, 339, 340, 384, 339, 340, 12, 339,
- 386, 0, 12, 0, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 29, 29, 29, 29, 0, 54, 0, 5,
- 1, 0, 29, 1, 35, 0, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 149, 126, 57, 110, 23, 0, 29,
- 29, 29, 29, 54, 0, 5, 1, 0,
- 29, 1, 35, 0, 43, 0, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 84, 84, 84,
- 84, 54, 0, 72, 33, 84, 72, 0,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 15, 54, 0, 63, 63, 63, 63, 130,
- 31, 60, 57, 31, 63, 57, 66, 31,
- 43, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 84, 84,
- 84, 84, 54, 0, 78, 33, 84, 78,
- 0, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 19, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 19, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 19, 0, 0,
- 0, 0, 54, 0, 19, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 19, 54, 0, 19, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 19, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 19, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 19, 0,
- 54, 19, 0, 144, 57, 54, 0, 84,
- 84, 84, 84, 54, 0, 75, 33, 84,
- 75, 0, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 17, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 17, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 17, 0,
- 0, 0, 0, 0, 54, 0, 17, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 17, 54, 0, 17, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 17, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 17, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 17,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 17, 0, 54, 17, 0, 0,
- 43, 0, 43, 144, 57, 54, 0, 84,
- 54, 0, 81, 81, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 21, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 139, 48, 9, 106, 11, 0,
- 134, 45, 45, 45, 3, 122, 33, 33,
- 33, 0, 122, 33, 33, 33, 0, 122,
- 33, 0, 33, 0, 102, 7, 7, 43,
- 54, 0, 0, 43, 114, 25, 0, 54,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 43,
- 43, 43, 43, 0, 27, 118, 27, 27,
- 51, 27, 0, 54, 0, 1, 0, 43,
- 0, 0, 0, 43, 54, 37, 37, 87,
- 37, 37, 43, 0, 39, 0, 43, 0,
- 0, 54, 0, 0, 39, 0, 0, 96,
- 96, 96, 96, 54, 0, 93, 90, 41,
- 96, 90, 99, 0, 43, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 15, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 15, 0,
- 0, 0, 0, 54, 0, 15, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 15, 54, 0, 15, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 15, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 15, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 15, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 15, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 84, 84, 84, 54, 0, 69, 33, 69,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 13, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 13,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 13, 0,
- 0, 43, 0, 43, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 387;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 964 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
-
- #line 971 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1261 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1324 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ko.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_ko()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Ko", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/ko.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/ko.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 15, 17, 18, 19, 21, 22,
- 23, 24, 25, 27, 29, 43, 47, 48,
- 49, 50, 52, 53, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65,
- 77, 80, 82, 84, 87, 89, 91, 93,
- 95, 109, 112, 113, 114, 115, 116, 117,
- 118, 119, 120, 121, 122, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 145,
- 148, 150, 152, 155, 157, 159, 161, 163,
- 165, 167, 169, 171, 173, 175, 177, 179,
- 181, 185, 187, 189, 191, 194, 196, 198,
- 200, 202, 204, 206, 209, 211, 213, 215,
- 217, 219, 221, 223, 225, 227, 229, 231,
- 233, 235, 237, 239, 241, 243, 245, 247,
- 249, 251, 253, 255, 257, 259, 261, 263,
- 265, 267, 269, 271, 273, 275, 277, 279,
- 281, 282, 283, 295, 298, 300, 302, 305,
- 307, 309, 311, 313, 315, 317, 319, 321,
- 323, 325, 327, 329, 331, 336, 338, 340,
- 342, 345, 347, 349, 351, 353, 355, 357,
- 359, 361, 363, 365, 368, 370, 372, 374,
- 376, 378, 380, 382, 384, 386, 388, 391,
- 393, 395, 397, 399, 401, 403, 405, 407,
- 409, 411, 413, 415, 417, 419, 421, 423,
- 425, 427, 429, 431, 433, 435, 437, 439,
- 441, 443, 445, 447, 449, 451, 453, 455,
- 456, 457, 458, 459, 466, 468, 470, 472,
- 474, 476, 478, 479, 480, 481, 482, 483,
- 484, 485, 486, 487, 488, 489, 490, 491,
- 493, 495, 500, 505, 510, 515, 519, 523,
- 525, 526, 527, 528, 529, 530, 531, 532,
- 533, 534, 535, 536, 537, 538, 539, 540,
- 541, 546, 553, 558, 562, 568, 571, 573,
- 579, 593, 595, 597, 599, 601, 603, 605,
- 607, 609, 611, 615, 617, 619, 621, 624,
- 626, 628, 630, 632, 634, 636, 639, 641,
- 643, 645, 647, 649, 651, 653, 655, 657,
- 659, 662, 664, 666, 668, 670, 672, 674,
- 676, 678, 680, 682, 684, 686, 688, 690,
- 692, 694, 696, 698, 700, 702, 704, 706,
- 708, 710, 712, 714, 716, 718, 720, 722,
- 724, 726, 727, 728, 729, 730, 731, 732,
- 733, 734, 735, 736, 737, 747, 749, 751,
- 753, 755, 757, 759, 761, 763, 765, 767,
- 769, 772, 774, 776, 778, 780, 782, 784,
- 786, 788, 790, 792, 795, 797, 799, 801,
- 803, 805, 807, 809, 811, 813, 815, 817,
- 819, 821, 823, 825, 827, 829, 831, 833,
- 835, 837, 838, 839
-};
-
-static const char _lexer_trans_keys[] = {
- -22, -21, -20, -19, -17, 10, 32, 34,
- 35, 37, 42, 64, 124, 9, 13, -73,
- -72, -72, -21, -97, -90, -84, -21, -87,
- -76, 10, 13, 10, 13, -22, -21, -20,
- -19, 10, 32, 34, 35, 37, 42, 64,
- 124, 9, 13, -117, -89, -88, -80, -88,
- -116, -20, -107, -99, -67, -68, -68, -20,
- -96, -128, -80, -22, -78, -67, 58, 10,
- 10, -22, -21, -20, -19, 10, 32, 35,
- 37, 42, 64, 9, 13, -73, -72, 10,
- -72, 10, -21, 10, -97, -90, 10, -84,
- 10, -21, 10, -87, 10, -76, 10, -22,
- -21, -20, -19, 10, 32, 34, 35, 37,
- 42, 64, 124, 9, 13, -117, -104, -95,
- -100, -21, -126, -104, -21, -90, -84, -20,
- -104, -92, 32, 58, -22, -80, -100, -20,
- -102, -108, 58, 10, 10, -22, -21, -20,
- -19, 10, 32, 35, 37, 42, 64, 9,
- 13, -73, -72, 10, -72, 10, -21, 10,
- -97, -90, 10, -84, 10, -21, 10, -87,
- 10, -76, 10, -84, 10, -22, 10, -77,
- 10, -96, 10, -80, 10, -21, 10, -118,
- 10, -91, 10, 10, 58, -117, -89, -88,
- 10, -88, 10, -116, 10, -20, 10, -107,
- -99, 10, -67, 10, -68, 10, -68, 10,
- -20, 10, -96, 10, -128, 10, -117, -95,
- 10, -100, 10, -21, 10, -126, 10, -104,
- 10, -21, 10, -90, 10, -84, 10, -20,
- 10, -104, 10, -92, 10, -80, 10, -22,
- 10, -79, 10, -107, 10, -104, 10, -20,
- 10, -89, 10, -128, 10, -21, 10, -89,
- 10, -116, 10, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 10, -22, -21, -20, -19, 10,
- 32, 35, 37, 42, 64, 9, 13, -73,
- -72, 10, -72, 10, -21, 10, -97, -90,
- 10, -84, 10, -21, 10, -87, 10, -76,
- 10, -84, 10, -22, 10, -77, 10, -96,
- 10, -80, 10, -21, 10, -118, 10, -91,
- 10, 10, 58, -117, -89, -88, -80, 10,
- -88, 10, -116, 10, -20, 10, -107, -99,
- 10, -67, 10, -68, 10, -68, 10, -20,
- 10, -96, 10, -128, 10, -80, 10, -22,
- 10, -78, 10, -67, 10, -117, -95, 10,
- -100, 10, -21, 10, -126, 10, -104, 10,
- -21, 10, -90, 10, -84, 10, -20, 10,
- -104, 10, -92, 10, 10, 32, 58, -22,
- 10, -80, 10, -100, 10, -20, 10, -102,
- 10, -108, 10, -80, 10, -22, 10, -79,
- 10, -107, 10, -104, 10, -20, 10, -89,
- 10, -128, 10, -21, 10, -89, 10, -116,
- 10, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, -120,
- 58, 10, 10, -22, 10, 32, 35, 124,
- 9, 13, -72, 10, -80, 10, -21, 10,
- -118, 10, -91, 10, 10, 58, -80, -22,
- -79, -107, -104, -20, -89, -128, -21, -89,
- -116, 34, 34, 10, 13, 10, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 9, 13, 10,
- 32, 9, 13, 10, 13, 10, 95, 70,
- 69, 65, 84, 85, 82, 69, 95, 69,
- 78, 68, 95, 37, 32, 13, 32, 64,
- 9, 10, 9, 10, 13, 32, 64, 11,
- 12, 10, 32, 64, 9, 13, 32, 124,
- 9, 13, 10, 32, 92, 124, 9, 13,
- 10, 92, 124, 10, 92, 10, 32, 92,
- 124, 9, 13, -22, -21, -20, -19, 10,
- 32, 34, 35, 37, 42, 64, 124, 9,
- 13, -84, 10, -22, 10, -77, 10, -96,
- 10, -80, 10, -21, 10, -118, 10, -91,
- 10, 10, 58, -117, -89, -88, 10, -88,
- 10, -116, 10, -20, 10, -107, -99, 10,
- -67, 10, -68, 10, -68, 10, -20, 10,
- -96, 10, -128, 10, -117, -95, 10, -100,
- 10, -21, 10, -126, 10, -104, 10, -21,
- 10, -90, 10, -84, 10, -20, 10, -104,
- 10, -92, 10, 10, 32, 58, -22, 10,
- -80, 10, -100, 10, -20, 10, -102, 10,
- -108, 10, -80, 10, -22, 10, -79, 10,
- -107, 10, -104, 10, -20, 10, -89, 10,
- -128, 10, -21, 10, -89, 10, -116, 10,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, -84, -22,
- -77, -96, -80, -21, -118, -91, 58, 10,
- 10, -22, -21, -20, 10, 32, 35, 37,
- 64, 9, 13, -72, 10, -80, 10, -21,
- 10, -118, 10, -91, 10, 10, 58, -80,
- 10, -80, 10, -22, 10, -78, 10, -67,
- 10, -117, -104, 10, -100, 10, -21, 10,
- -126, 10, -104, 10, -21, 10, -90, 10,
- -84, 10, -20, 10, -104, 10, -92, 10,
- 10, 32, 58, -22, 10, -80, 10, -100,
- 10, -20, 10, -102, 10, -108, 10, -120,
- 10, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, -69, -65, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 13, 2, 1, 1, 2, 1, 1,
- 1, 1, 2, 2, 12, 4, 1, 1,
- 1, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 10,
- 3, 2, 2, 3, 2, 2, 2, 2,
- 12, 3, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 10, 3,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 4, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 10, 3, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 5, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 5, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 3, 5, 3, 2, 4, 3, 2, 4,
- 12, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 4, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 8, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 1, 1, 1, 1, 0, 0, 1,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 15, 18, 20, 22, 25, 27,
- 29, 31, 33, 36, 39, 53, 58, 60,
- 62, 64, 67, 69, 71, 73, 75, 77,
- 79, 81, 83, 85, 87, 89, 91, 93,
- 105, 109, 112, 115, 119, 122, 125, 128,
- 131, 145, 149, 151, 153, 155, 157, 159,
- 161, 163, 165, 167, 169, 172, 174, 176,
- 178, 180, 182, 184, 186, 188, 190, 202,
- 206, 209, 212, 216, 219, 222, 225, 228,
- 231, 234, 237, 240, 243, 246, 249, 252,
- 255, 260, 263, 266, 269, 273, 276, 279,
- 282, 285, 288, 291, 295, 298, 301, 304,
- 307, 310, 313, 316, 319, 322, 325, 328,
- 331, 334, 337, 340, 343, 346, 349, 352,
- 355, 358, 361, 364, 367, 370, 373, 376,
- 379, 382, 385, 388, 391, 394, 397, 400,
- 403, 405, 407, 419, 423, 426, 429, 433,
- 436, 439, 442, 445, 448, 451, 454, 457,
- 460, 463, 466, 469, 472, 478, 481, 484,
- 487, 491, 494, 497, 500, 503, 506, 509,
- 512, 515, 518, 521, 525, 528, 531, 534,
- 537, 540, 543, 546, 549, 552, 555, 559,
- 562, 565, 568, 571, 574, 577, 580, 583,
- 586, 589, 592, 595, 598, 601, 604, 607,
- 610, 613, 616, 619, 622, 625, 628, 631,
- 634, 637, 640, 643, 646, 649, 652, 655,
- 657, 659, 661, 663, 670, 673, 676, 679,
- 682, 685, 688, 690, 692, 694, 696, 698,
- 700, 702, 704, 706, 708, 710, 712, 714,
- 717, 720, 725, 730, 735, 740, 744, 748,
- 751, 753, 755, 757, 759, 761, 763, 765,
- 767, 769, 771, 773, 775, 777, 779, 781,
- 783, 788, 795, 800, 804, 810, 814, 817,
- 823, 837, 840, 843, 846, 849, 852, 855,
- 858, 861, 864, 869, 872, 875, 878, 882,
- 885, 888, 891, 894, 897, 900, 904, 907,
- 910, 913, 916, 919, 922, 925, 928, 931,
- 934, 938, 941, 944, 947, 950, 953, 956,
- 959, 962, 965, 968, 971, 974, 977, 980,
- 983, 986, 989, 992, 995, 998, 1001, 1004,
- 1007, 1010, 1013, 1016, 1019, 1022, 1025, 1028,
- 1031, 1034, 1036, 1038, 1040, 1042, 1044, 1046,
- 1048, 1050, 1052, 1054, 1056, 1066, 1069, 1072,
- 1075, 1078, 1081, 1084, 1087, 1090, 1093, 1096,
- 1099, 1103, 1106, 1109, 1112, 1115, 1118, 1121,
- 1124, 1127, 1130, 1133, 1137, 1140, 1143, 1146,
- 1149, 1152, 1155, 1158, 1161, 1164, 1167, 1170,
- 1173, 1176, 1179, 1182, 1185, 1188, 1191, 1194,
- 1197, 1200, 1202, 1204
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 13, 41, 221, 385, 12, 12, 229,
- 239, 241, 255, 256, 259, 12, 0, 3,
- 333, 0, 4, 0, 5, 0, 6, 329,
- 0, 7, 0, 8, 0, 9, 0, 10,
- 0, 12, 240, 11, 12, 240, 11, 2,
- 13, 41, 221, 12, 12, 229, 239, 241,
- 255, 256, 259, 12, 0, 14, 15, 20,
- 24, 0, 10, 0, 16, 0, 17, 0,
- 18, 19, 0, 10, 0, 10, 0, 21,
- 0, 22, 0, 23, 0, 10, 0, 25,
- 0, 26, 0, 27, 0, 28, 0, 29,
- 0, 31, 30, 31, 30, 32, 274, 285,
- 306, 31, 31, 12, 314, 328, 12, 31,
- 30, 33, 269, 31, 30, 34, 31, 30,
- 35, 31, 30, 36, 265, 31, 30, 37,
- 31, 30, 38, 31, 30, 39, 31, 30,
- 40, 31, 30, 2, 13, 41, 221, 12,
- 12, 229, 239, 241, 255, 256, 259, 12,
- 0, 42, 207, 218, 0, 43, 0, 44,
- 0, 45, 0, 46, 0, 47, 0, 48,
- 0, 49, 0, 50, 0, 51, 0, 52,
- 0, 53, 128, 0, 54, 0, 55, 0,
- 56, 0, 57, 0, 58, 0, 59, 0,
- 60, 0, 62, 61, 62, 61, 63, 80,
- 91, 105, 62, 62, 12, 113, 127, 12,
- 62, 61, 64, 75, 62, 61, 65, 62,
- 61, 66, 62, 61, 67, 71, 62, 61,
- 68, 62, 61, 69, 62, 61, 70, 62,
- 61, 40, 62, 61, 72, 62, 61, 73,
- 62, 61, 74, 62, 61, 40, 62, 61,
- 76, 62, 61, 77, 62, 61, 78, 62,
- 61, 79, 62, 61, 62, 40, 61, 81,
- 82, 87, 62, 61, 40, 62, 61, 83,
- 62, 61, 84, 62, 61, 85, 86, 62,
- 61, 40, 62, 61, 40, 62, 61, 88,
- 62, 61, 89, 62, 61, 90, 62, 61,
- 40, 62, 61, 92, 102, 62, 61, 93,
- 62, 61, 94, 62, 61, 95, 62, 61,
- 96, 62, 61, 97, 62, 61, 98, 62,
- 61, 99, 62, 61, 100, 62, 61, 101,
- 62, 61, 79, 62, 61, 103, 62, 61,
- 104, 62, 61, 70, 62, 61, 106, 62,
- 61, 107, 62, 61, 108, 62, 61, 109,
- 62, 61, 110, 62, 61, 111, 62, 61,
- 112, 62, 61, 40, 62, 61, 62, 114,
- 61, 62, 115, 61, 62, 116, 61, 62,
- 117, 61, 62, 118, 61, 62, 119, 61,
- 62, 120, 61, 62, 121, 61, 62, 122,
- 61, 62, 123, 61, 62, 124, 61, 62,
- 125, 61, 62, 126, 61, 62, 12, 61,
- 62, 40, 61, 130, 129, 130, 129, 131,
- 148, 163, 184, 130, 130, 12, 192, 206,
- 12, 130, 129, 132, 143, 130, 129, 133,
- 130, 129, 134, 130, 129, 135, 139, 130,
- 129, 136, 130, 129, 137, 130, 129, 138,
- 130, 129, 40, 130, 129, 140, 130, 129,
- 141, 130, 129, 142, 130, 129, 40, 130,
- 129, 144, 130, 129, 145, 130, 129, 146,
- 130, 129, 147, 130, 129, 130, 40, 129,
- 149, 150, 155, 159, 130, 129, 40, 130,
- 129, 151, 130, 129, 152, 130, 129, 153,
- 154, 130, 129, 40, 130, 129, 40, 130,
- 129, 156, 130, 129, 157, 130, 129, 158,
- 130, 129, 40, 130, 129, 160, 130, 129,
- 161, 130, 129, 162, 130, 129, 147, 130,
- 129, 164, 181, 130, 129, 165, 130, 129,
- 166, 130, 129, 167, 130, 129, 168, 130,
- 129, 169, 130, 129, 170, 130, 129, 171,
- 130, 129, 172, 130, 129, 173, 130, 129,
- 174, 130, 129, 130, 175, 40, 129, 176,
- 130, 129, 177, 130, 129, 178, 130, 129,
- 179, 130, 129, 180, 130, 129, 147, 130,
- 129, 182, 130, 129, 183, 130, 129, 138,
- 130, 129, 185, 130, 129, 186, 130, 129,
- 187, 130, 129, 188, 130, 129, 189, 130,
- 129, 190, 130, 129, 191, 130, 129, 40,
- 130, 129, 130, 193, 129, 130, 194, 129,
- 130, 195, 129, 130, 196, 129, 130, 197,
- 129, 130, 198, 129, 130, 199, 129, 130,
- 200, 129, 130, 201, 129, 130, 202, 129,
- 130, 203, 129, 130, 204, 129, 130, 205,
- 129, 130, 12, 129, 130, 40, 129, 208,
- 0, 209, 0, 211, 210, 211, 210, 212,
- 211, 211, 12, 12, 211, 210, 213, 211,
- 210, 214, 211, 210, 215, 211, 210, 216,
- 211, 210, 217, 211, 210, 211, 40, 210,
- 219, 0, 220, 0, 9, 0, 222, 0,
- 223, 0, 224, 0, 225, 0, 226, 0,
- 227, 0, 228, 0, 10, 0, 230, 0,
- 231, 0, 233, 232, 232, 233, 232, 232,
- 234, 234, 235, 234, 234, 234, 234, 235,
- 234, 234, 234, 234, 236, 234, 234, 234,
- 234, 237, 234, 234, 12, 238, 238, 0,
- 12, 238, 238, 0, 12, 240, 239, 12,
- 0, 242, 0, 243, 0, 244, 0, 245,
- 0, 246, 0, 247, 0, 248, 0, 249,
- 0, 250, 0, 251, 0, 252, 0, 253,
- 0, 254, 0, 387, 0, 10, 0, 0,
- 0, 0, 0, 257, 258, 12, 258, 258,
- 256, 257, 257, 12, 258, 256, 258, 0,
- 259, 260, 259, 0, 264, 263, 262, 260,
- 263, 261, 0, 262, 260, 261, 0, 262,
- 261, 264, 263, 262, 260, 263, 261, 2,
- 13, 41, 221, 264, 264, 229, 239, 241,
- 255, 256, 259, 264, 0, 266, 31, 30,
- 267, 31, 30, 268, 31, 30, 40, 31,
- 30, 270, 31, 30, 271, 31, 30, 272,
- 31, 30, 273, 31, 30, 31, 40, 30,
- 275, 276, 281, 31, 30, 40, 31, 30,
- 277, 31, 30, 278, 31, 30, 279, 280,
- 31, 30, 40, 31, 30, 40, 31, 30,
- 282, 31, 30, 283, 31, 30, 284, 31,
- 30, 40, 31, 30, 286, 303, 31, 30,
- 287, 31, 30, 288, 31, 30, 289, 31,
- 30, 290, 31, 30, 291, 31, 30, 292,
- 31, 30, 293, 31, 30, 294, 31, 30,
- 295, 31, 30, 296, 31, 30, 31, 297,
- 40, 30, 298, 31, 30, 299, 31, 30,
- 300, 31, 30, 301, 31, 30, 302, 31,
- 30, 273, 31, 30, 304, 31, 30, 305,
- 31, 30, 39, 31, 30, 307, 31, 30,
- 308, 31, 30, 309, 31, 30, 310, 31,
- 30, 311, 31, 30, 312, 31, 30, 313,
- 31, 30, 40, 31, 30, 31, 315, 30,
- 31, 316, 30, 31, 317, 30, 31, 318,
- 30, 31, 319, 30, 31, 320, 30, 31,
- 321, 30, 31, 322, 30, 31, 323, 30,
- 31, 324, 30, 31, 325, 30, 31, 326,
- 30, 31, 327, 30, 31, 12, 30, 31,
- 40, 30, 330, 0, 331, 0, 332, 0,
- 10, 0, 334, 0, 335, 0, 336, 0,
- 337, 0, 338, 0, 340, 339, 340, 339,
- 341, 347, 352, 340, 340, 12, 371, 12,
- 340, 339, 342, 340, 339, 343, 340, 339,
- 344, 340, 339, 345, 340, 339, 346, 340,
- 339, 340, 40, 339, 348, 340, 339, 349,
- 340, 339, 350, 340, 339, 351, 340, 339,
- 346, 340, 339, 353, 370, 340, 339, 354,
- 340, 339, 355, 340, 339, 356, 340, 339,
- 357, 340, 339, 358, 340, 339, 359, 340,
- 339, 360, 340, 339, 361, 340, 339, 362,
- 340, 339, 363, 340, 339, 340, 364, 40,
- 339, 365, 340, 339, 366, 340, 339, 367,
- 340, 339, 368, 340, 339, 369, 340, 339,
- 346, 340, 339, 346, 340, 339, 340, 372,
- 339, 340, 373, 339, 340, 374, 339, 340,
- 375, 339, 340, 376, 339, 340, 377, 339,
- 340, 378, 339, 340, 379, 339, 340, 380,
- 339, 340, 381, 339, 340, 382, 339, 340,
- 383, 339, 340, 384, 339, 340, 12, 339,
- 386, 0, 12, 0, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 29, 29, 29, 29, 0, 54, 0, 5,
- 1, 0, 29, 1, 35, 0, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 149, 126, 57, 110, 23, 0, 29,
- 29, 29, 29, 54, 0, 5, 1, 0,
- 29, 1, 35, 0, 43, 0, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 84, 84, 84,
- 84, 54, 0, 72, 33, 84, 72, 0,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 15, 54, 0, 63, 63, 63, 63, 130,
- 31, 60, 57, 31, 63, 57, 66, 31,
- 43, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 84, 84,
- 84, 84, 54, 0, 78, 33, 84, 78,
- 0, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 19, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 19, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 19, 0, 0,
- 0, 0, 54, 0, 19, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 19, 54, 0, 19, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 19, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 19, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 19, 0,
- 54, 19, 0, 144, 57, 54, 0, 84,
- 84, 84, 84, 54, 0, 75, 33, 84,
- 75, 0, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 17, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 17, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 17, 0,
- 0, 0, 0, 0, 54, 0, 17, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 17, 54, 0, 17, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 17, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 17, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 17,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 17, 0, 54, 17, 0, 0,
- 43, 0, 43, 144, 57, 54, 0, 84,
- 54, 0, 81, 81, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 21, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 139, 48, 9, 106, 11, 0,
- 134, 45, 45, 45, 3, 122, 33, 33,
- 33, 0, 122, 33, 33, 33, 0, 122,
- 33, 0, 33, 0, 102, 7, 7, 43,
- 54, 0, 0, 43, 114, 25, 0, 54,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 43,
- 43, 43, 43, 0, 27, 118, 27, 27,
- 51, 27, 0, 54, 0, 1, 0, 43,
- 0, 0, 0, 43, 54, 37, 37, 87,
- 37, 37, 43, 0, 39, 0, 43, 0,
- 0, 54, 0, 0, 39, 0, 0, 96,
- 96, 96, 96, 54, 0, 93, 90, 41,
- 96, 90, 99, 0, 43, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 15, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 15, 0,
- 0, 0, 0, 54, 0, 15, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 15, 54, 0, 15, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 15, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 15, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 15, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 15, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 84, 84, 84, 54, 0, 69, 33, 69,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 13, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 13,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 13, 0,
- 0, 43, 0, 43, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 387;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/ko.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 964 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/ko.c.rl"
-
-#line 971 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/ko.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/ko.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/ko.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/ko.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/ko.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/ko.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/ko.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/ko.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/ko.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/ko.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/ko.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/ko.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/ko.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/ko.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/ko.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/ko.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/ko.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/ko.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/ko.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/ko.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/ko.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/ko.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/ko.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/ko.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1261 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/ko.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1324 "ext/gherkin_lexer_ko/gherkin_lexer_ko.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/ko.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_ko()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Ko", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_lt/extconf.rb
index 23c050d,23c050d..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_lt/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_lt")
--have_library("c", "main")
--create_makefile("gherkin_lexer_lt")
diff --cc ext/gherkin_lexer_lt/gherkin_lexer_lt.c
index 0bdc0c0,32e51c8..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_lt/gherkin_lexer_lt.c
+++ /dev/null
@@@ -1,1296 -1,1296 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 113, 114,
- 115, 116, 117, 118, 119, 121, 122, 123,
- 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 165, 167, 169, 171, 173,
- 175, 177, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208,
- 215, 217, 219, 221, 223, 225, 227, 229,
- 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 250, 252, 254, 256, 258, 260, 262,
- 264, 266, 268, 270, 272, 274, 276, 278,
- 280, 282, 284, 286, 288, 290, 292, 294,
- 296, 298, 300, 302, 304, 306, 308, 310,
- 312, 314, 316, 318, 321, 323, 325, 327,
- 329, 331, 333, 335, 337, 339, 341, 343,
- 346, 349, 351, 353, 355, 357, 359, 361,
- 363, 365, 367, 369, 371, 373, 375, 377,
- 379, 380, 381, 382, 383, 384, 385, 387,
- 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 417,
- 419, 421, 423, 425, 427, 429, 431, 433,
- 435, 437, 439, 441, 443, 445, 447, 449,
- 451, 453, 455, 457, 459, 461, 463, 465,
- 468, 470, 472, 474, 476, 478, 480, 482,
- 484, 486, 488, 490, 492, 494, 496, 498,
- 500, 501, 502, 503, 504, 518, 520, 522,
- 524, 526, 528, 530, 532, 534, 536, 538,
- 540, 542, 544, 546, 548, 550, 552, 554,
- 556, 558, 560, 562, 565, 567, 569, 571,
- 573, 575, 577, 579, 581, 583, 585, 588,
- 590, 592, 594, 596, 598, 600, 602, 604,
- 606, 608, 610, 613, 615, 617, 619, 621,
- 623, 625, 627, 629, 631, 633, 635, 637,
- 638, 639, 640, 641, 642, 643, 644, 645,
- 649, 655, 658, 660, 666, 684, 686, 688,
- 690, 692, 694, 696, 698, 700, 702, 705,
- 707, 709, 711, 713, 715, 717, 719, 721,
- 723, 725, 727, 729, 732, 734, 736, 738,
- 740, 742, 744, 746, 748, 750, 752, 754,
- 756, 758, 760
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 66, 68, 73, 75, 80, 83, 84, 86,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 66, 68, 73, 75,
- 80, 83, 84, 86, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 101, 116, 117, 111, 116, 97, 114, 97,
- 111, 105, 110, 116, 101, 107, 115, 116,
- 97, 115, 58, 10, 10, 10, 32, 35,
- 37, 42, 64, 66, 68, 73, 75, 83,
- 84, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 32, 34, 35, 37, 42, 64,
- 66, 68, 73, 75, 80, 83, 84, 86,
- 124, 9, 13, 97, 118, 121, 122, 100,
- -59, -66, 105, 97, 105, 58, 10, 10,
- 10, 32, 35, 83, 124, 9, 13, 10,
- 97, 10, 118, 10, 121, 10, 98, -60,
- 10, -105, 10, 10, 58, 97, 99, 118,
- 121, 98, -60, -105, 58, 10, 10, 10,
- 32, 35, 37, 64, 75, 80, 83, 86,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 111,
- 10, 110, 10, 116, 10, 101, 10, 107,
- 10, 115, 10, 116, 10, 97, 10, 115,
- 10, 58, 10, 97, 10, 118, 10, 121,
- 10, 122, 10, 100, -59, 10, -66, 10,
- 10, 105, 10, 97, 10, 105, 10, 97,
- 99, 10, 118, 10, 121, 10, 98, -60,
- 10, -105, 10, 10, 101, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 106, 10,
- 97, 117, 10, 105, 117, 10, 115, 10,
- 32, -59, 10, -95, 10, 10, 97, 10,
- 98, 10, 108, 10, 111, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 97, 10,
- 110, 10, 116, 101, 110, 97, 114, 105,
- 106, 97, 117, 105, 117, 115, 32, -59,
- -95, 97, 98, 108, 111, 110, 97, 115,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 66, 68, 73, 75, 83, 84, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 101, 10, 116, 10, 117, 10, 111, 10,
- 116, 10, 97, 10, 114, 10, 97, 10,
- 105, 10, 97, 99, 10, 118, 10, 121,
- 10, 98, -60, 10, -105, 10, 10, 58,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 106, 10, 117, 10, 115,
- 10, 97, 10, 100, 115, 58, 10, 10,
- 10, 32, 35, 37, 42, 64, 66, 68,
- 73, 75, 83, 84, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 101, 10, 116,
- 10, 117, 10, 111, 10, 116, 10, 97,
- 10, 114, 10, 97, 111, 10, 105, 10,
- 110, 10, 116, 10, 101, 10, 107, 10,
- 115, 10, 116, 10, 97, 10, 115, 10,
- 58, 10, 97, 99, 10, 118, 10, 121,
- 10, 98, -60, 10, -105, 10, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 106, 10, 97, 117, 10, 117, 10,
- 115, 10, 32, -59, 10, -95, 10, 10,
- 97, 10, 98, 10, 108, 10, 111, 10,
- 110, 10, 97, 10, 100, 97, 100, 97,
- 114, 105, 97, 110, 116, 32, 124, 9,
- 13, 10, 32, 92, 124, 9, 13, 10,
- 92, 124, 10, 92, 10, 32, 92, 124,
- 9, 13, 10, 32, 34, 35, 37, 42,
- 64, 66, 68, 73, 75, 80, 83, 84,
- 86, 124, 9, 13, 10, 101, 10, 116,
- 10, 117, 10, 111, 10, 116, 10, 97,
- 10, 114, 10, 97, 10, 105, 10, 97,
- 99, 10, 118, 10, 121, 10, 98, -60,
- 10, -105, 10, 10, 58, 10, 101, 10,
- 110, 10, 97, 10, 114, 10, 105, 10,
- 106, 10, 97, 117, 10, 117, 10, 115,
- 10, 32, -59, 10, -95, 10, 10, 97,
- 10, 98, 10, 108, 10, 111, 10, 110,
- 10, 97, 10, 115, 10, 97, 10, 100,
- 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 12, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 16, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 5,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 9, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 12, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 12, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 2,
- 4, 3, 2, 4, 16, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 1, 0, 0, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 139, 141,
- 143, 145, 147, 149, 151, 154, 156, 158,
- 160, 162, 164, 166, 168, 170, 172, 174,
- 176, 178, 192, 195, 198, 201, 204, 207,
- 210, 213, 216, 219, 222, 225, 228, 231,
- 234, 237, 255, 257, 259, 261, 263, 265,
- 267, 269, 271, 273, 275, 277, 279, 281,
- 288, 291, 294, 297, 300, 303, 306, 309,
- 312, 314, 316, 318, 320, 322, 324, 326,
- 328, 339, 342, 345, 348, 351, 354, 357,
- 360, 363, 366, 369, 372, 375, 378, 381,
- 384, 387, 390, 393, 396, 399, 402, 405,
- 408, 411, 414, 417, 420, 423, 426, 429,
- 432, 435, 438, 441, 445, 448, 451, 454,
- 457, 460, 463, 466, 469, 472, 475, 478,
- 482, 486, 489, 492, 495, 498, 501, 504,
- 507, 510, 513, 516, 519, 522, 525, 528,
- 531, 533, 535, 537, 539, 541, 543, 546,
- 549, 551, 553, 555, 557, 559, 561, 563,
- 565, 567, 569, 571, 573, 575, 577, 591,
- 594, 597, 600, 603, 606, 609, 612, 615,
- 618, 621, 624, 627, 630, 633, 636, 639,
- 642, 645, 648, 651, 654, 657, 660, 663,
- 667, 670, 673, 676, 679, 682, 685, 688,
- 691, 694, 697, 700, 703, 706, 709, 712,
- 715, 717, 719, 721, 723, 737, 740, 743,
- 746, 749, 752, 755, 758, 761, 764, 767,
- 770, 773, 776, 779, 782, 785, 788, 791,
- 794, 797, 800, 803, 807, 810, 813, 816,
- 819, 822, 825, 828, 831, 834, 837, 841,
- 844, 847, 850, 853, 856, 859, 862, 865,
- 868, 871, 874, 878, 881, 884, 887, 890,
- 893, 896, 899, 902, 905, 908, 911, 914,
- 916, 918, 920, 922, 924, 926, 928, 930,
- 934, 940, 944, 947, 953, 971, 974, 977,
- 980, 983, 986, 989, 992, 995, 998, 1002,
- 1005, 1008, 1011, 1014, 1017, 1020, 1023, 1026,
- 1029, 1032, 1035, 1038, 1042, 1045, 1048, 1051,
- 1054, 1057, 1060, 1063, 1066, 1069, 1072, 1075,
- 1078, 1081, 1084
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 39, 43, 44, 74, 95, 295, 297,
- 303, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 39,
- 43, 44, 74, 95, 295, 297, 303, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 346, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 0, 31, 0, 40, 0, 41,
- 0, 42, 0, 31, 0, 31, 0, 45,
- 46, 0, 31, 0, 47, 0, 48, 0,
- 49, 0, 50, 0, 51, 0, 52, 0,
- 53, 0, 54, 0, 55, 0, 57, 56,
- 57, 56, 57, 57, 4, 58, 72, 4,
- 309, 311, 315, 316, 318, 344, 57, 56,
- 57, 59, 56, 57, 60, 56, 57, 61,
- 56, 57, 62, 56, 57, 63, 56, 57,
- 64, 56, 57, 65, 56, 57, 66, 56,
- 57, 67, 56, 57, 68, 56, 57, 69,
- 56, 57, 70, 56, 57, 71, 56, 57,
- 4, 56, 57, 73, 56, 4, 4, 5,
- 15, 17, 31, 34, 37, 39, 43, 44,
- 74, 95, 295, 297, 303, 4, 0, 75,
- 0, 76, 0, 77, 0, 78, 0, 79,
- 0, 80, 0, 81, 0, 82, 0, 83,
- 0, 84, 0, 85, 0, 87, 86, 87,
- 86, 87, 87, 4, 88, 4, 87, 86,
- 87, 89, 86, 87, 90, 86, 87, 91,
- 86, 87, 92, 86, 93, 87, 86, 94,
- 87, 86, 87, 73, 86, 96, 168, 0,
- 97, 0, 98, 0, 99, 0, 100, 0,
- 101, 0, 102, 0, 104, 103, 104, 103,
- 104, 104, 4, 105, 4, 119, 129, 139,
- 162, 104, 103, 104, 106, 103, 104, 107,
- 103, 104, 108, 103, 104, 109, 103, 104,
- 110, 103, 104, 111, 103, 104, 112, 103,
- 104, 113, 103, 104, 114, 103, 104, 115,
- 103, 104, 116, 103, 104, 117, 103, 104,
- 118, 103, 104, 4, 103, 104, 120, 103,
- 104, 121, 103, 104, 122, 103, 104, 123,
- 103, 104, 124, 103, 104, 125, 103, 104,
- 126, 103, 104, 127, 103, 104, 128, 103,
- 104, 73, 103, 104, 130, 103, 104, 131,
- 103, 104, 132, 103, 104, 133, 103, 104,
- 134, 103, 135, 104, 103, 136, 104, 103,
- 104, 137, 103, 104, 138, 103, 104, 128,
- 103, 104, 140, 145, 103, 104, 141, 103,
- 104, 142, 103, 104, 143, 103, 144, 104,
- 103, 128, 104, 103, 104, 146, 103, 104,
- 147, 103, 104, 148, 103, 104, 149, 103,
- 104, 150, 103, 104, 151, 103, 104, 152,
- 127, 103, 104, 128, 153, 103, 104, 154,
- 103, 104, 155, 103, 156, 104, 103, 157,
- 104, 103, 104, 158, 103, 104, 159, 103,
- 104, 160, 103, 104, 161, 103, 104, 126,
- 103, 104, 163, 103, 104, 164, 103, 104,
- 165, 103, 104, 166, 103, 104, 167, 103,
- 104, 137, 103, 169, 0, 170, 0, 171,
- 0, 172, 0, 173, 0, 174, 0, 175,
- 232, 0, 84, 176, 0, 177, 0, 178,
- 0, 179, 0, 180, 0, 181, 0, 182,
- 0, 183, 0, 184, 0, 185, 0, 186,
- 0, 187, 0, 188, 0, 190, 189, 190,
- 189, 190, 190, 4, 191, 205, 4, 206,
- 208, 212, 213, 215, 230, 190, 189, 190,
- 192, 189, 190, 193, 189, 190, 194, 189,
- 190, 195, 189, 190, 196, 189, 190, 197,
- 189, 190, 198, 189, 190, 199, 189, 190,
- 200, 189, 190, 201, 189, 190, 202, 189,
- 190, 203, 189, 190, 204, 189, 190, 4,
- 189, 190, 73, 189, 190, 207, 189, 190,
- 205, 189, 190, 209, 189, 190, 210, 189,
- 190, 211, 189, 190, 205, 189, 190, 205,
- 189, 190, 214, 189, 190, 205, 189, 190,
- 216, 222, 189, 190, 217, 189, 190, 218,
- 189, 190, 219, 189, 220, 190, 189, 221,
- 190, 189, 190, 73, 189, 190, 223, 189,
- 190, 224, 189, 190, 225, 189, 190, 226,
- 189, 190, 227, 189, 190, 228, 189, 190,
- 229, 189, 190, 221, 189, 190, 231, 189,
- 190, 211, 189, 233, 0, 234, 0, 236,
- 235, 236, 235, 236, 236, 4, 237, 251,
- 4, 252, 254, 258, 259, 270, 293, 236,
- 235, 236, 238, 235, 236, 239, 235, 236,
- 240, 235, 236, 241, 235, 236, 242, 235,
- 236, 243, 235, 236, 244, 235, 236, 245,
- 235, 236, 246, 235, 236, 247, 235, 236,
- 248, 235, 236, 249, 235, 236, 250, 235,
- 236, 4, 235, 236, 73, 235, 236, 253,
- 235, 236, 251, 235, 236, 255, 235, 236,
- 256, 235, 236, 257, 235, 236, 251, 235,
- 236, 251, 235, 236, 260, 261, 235, 236,
- 251, 235, 236, 262, 235, 236, 263, 235,
- 236, 264, 235, 236, 265, 235, 236, 266,
- 235, 236, 267, 235, 236, 268, 235, 236,
- 269, 235, 236, 73, 235, 236, 271, 276,
- 235, 236, 272, 235, 236, 273, 235, 236,
- 274, 235, 275, 236, 235, 269, 236, 235,
- 236, 277, 235, 236, 278, 235, 236, 279,
- 235, 236, 280, 235, 236, 281, 235, 236,
- 282, 235, 236, 283, 268, 235, 236, 284,
- 235, 236, 285, 235, 236, 286, 235, 287,
- 236, 235, 288, 236, 235, 236, 289, 235,
- 236, 290, 235, 236, 291, 235, 236, 292,
- 235, 236, 267, 235, 236, 294, 235, 236,
- 257, 235, 296, 0, 42, 0, 298, 0,
- 299, 0, 300, 0, 301, 0, 302, 0,
- 82, 0, 303, 304, 303, 0, 308, 307,
- 306, 304, 307, 305, 0, 306, 304, 305,
- 0, 306, 305, 308, 307, 306, 304, 307,
- 305, 308, 308, 5, 15, 17, 31, 34,
- 37, 39, 43, 44, 74, 95, 295, 297,
- 303, 308, 0, 57, 310, 56, 57, 72,
- 56, 57, 312, 56, 57, 313, 56, 57,
- 314, 56, 57, 72, 56, 57, 72, 56,
- 57, 317, 56, 57, 72, 56, 57, 319,
- 325, 56, 57, 320, 56, 57, 321, 56,
- 57, 322, 56, 323, 57, 56, 324, 57,
- 56, 57, 73, 56, 57, 326, 56, 57,
- 327, 56, 57, 328, 56, 57, 329, 56,
- 57, 330, 56, 57, 331, 56, 57, 332,
- 343, 56, 57, 333, 56, 57, 334, 56,
- 57, 335, 56, 336, 57, 56, 337, 57,
- 56, 57, 338, 56, 57, 339, 56, 57,
- 340, 56, 57, 341, 56, 57, 342, 56,
- 57, 343, 56, 57, 324, 56, 57, 345,
- 56, 57, 314, 56, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 72, 33, 84, 72,
- 84, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 15, 0, 54, 15, 0, 130, 31, 60,
- 57, 31, 63, 57, 63, 63, 63, 63,
- 63, 63, 63, 63, 66, 31, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 81, 84, 81, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 21, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 69, 33, 69, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 13, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 78, 33, 84, 78, 84,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 19,
- 0, 54, 19, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 19, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 75, 33, 84,
- 75, 84, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 54, 17, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 17, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0, 0, 43, 54, 37,
- 37, 87, 37, 37, 43, 0, 39, 0,
- 43, 0, 0, 54, 0, 0, 39, 0,
- 0, 54, 0, 93, 90, 41, 96, 90,
- 96, 96, 96, 96, 96, 96, 96, 96,
- 99, 0, 43, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 15, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 346;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 900 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
-
- #line 907 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1197 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1260 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lt.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_lt()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Lt", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/lt.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/lt.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 113, 114,
- 115, 116, 117, 118, 119, 121, 122, 123,
- 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 165, 167, 169, 171, 173,
- 175, 177, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208,
- 215, 217, 219, 221, 223, 225, 227, 229,
- 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 250, 252, 254, 256, 258, 260, 262,
- 264, 266, 268, 270, 272, 274, 276, 278,
- 280, 282, 284, 286, 288, 290, 292, 294,
- 296, 298, 300, 302, 304, 306, 308, 310,
- 312, 314, 316, 318, 321, 323, 325, 327,
- 329, 331, 333, 335, 337, 339, 341, 343,
- 346, 349, 351, 353, 355, 357, 359, 361,
- 363, 365, 367, 369, 371, 373, 375, 377,
- 379, 380, 381, 382, 383, 384, 385, 387,
- 389, 390, 391, 392, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 403, 417,
- 419, 421, 423, 425, 427, 429, 431, 433,
- 435, 437, 439, 441, 443, 445, 447, 449,
- 451, 453, 455, 457, 459, 461, 463, 465,
- 468, 470, 472, 474, 476, 478, 480, 482,
- 484, 486, 488, 490, 492, 494, 496, 498,
- 500, 501, 502, 503, 504, 518, 520, 522,
- 524, 526, 528, 530, 532, 534, 536, 538,
- 540, 542, 544, 546, 548, 550, 552, 554,
- 556, 558, 560, 562, 565, 567, 569, 571,
- 573, 575, 577, 579, 581, 583, 585, 588,
- 590, 592, 594, 596, 598, 600, 602, 604,
- 606, 608, 610, 613, 615, 617, 619, 621,
- 623, 625, 627, 629, 631, 633, 635, 637,
- 638, 639, 640, 641, 642, 643, 644, 645,
- 649, 655, 658, 660, 666, 684, 686, 688,
- 690, 692, 694, 696, 698, 700, 702, 705,
- 707, 709, 711, 713, 715, 717, 719, 721,
- 723, 725, 727, 729, 732, 734, 736, 738,
- 740, 742, 744, 746, 748, 750, 752, 754,
- 756, 758, 760
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 66, 68, 73, 75, 80, 83, 84, 86,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 66, 68, 73, 75,
- 80, 83, 84, 86, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 101, 116, 117, 111, 116, 97, 114, 97,
- 111, 105, 110, 116, 101, 107, 115, 116,
- 97, 115, 58, 10, 10, 10, 32, 35,
- 37, 42, 64, 66, 68, 73, 75, 83,
- 84, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 32, 34, 35, 37, 42, 64,
- 66, 68, 73, 75, 80, 83, 84, 86,
- 124, 9, 13, 97, 118, 121, 122, 100,
- -59, -66, 105, 97, 105, 58, 10, 10,
- 10, 32, 35, 83, 124, 9, 13, 10,
- 97, 10, 118, 10, 121, 10, 98, -60,
- 10, -105, 10, 10, 58, 97, 99, 118,
- 121, 98, -60, -105, 58, 10, 10, 10,
- 32, 35, 37, 64, 75, 80, 83, 86,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 111,
- 10, 110, 10, 116, 10, 101, 10, 107,
- 10, 115, 10, 116, 10, 97, 10, 115,
- 10, 58, 10, 97, 10, 118, 10, 121,
- 10, 122, 10, 100, -59, 10, -66, 10,
- 10, 105, 10, 97, 10, 105, 10, 97,
- 99, 10, 118, 10, 121, 10, 98, -60,
- 10, -105, 10, 10, 101, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 106, 10,
- 97, 117, 10, 105, 117, 10, 115, 10,
- 32, -59, 10, -95, 10, 10, 97, 10,
- 98, 10, 108, 10, 111, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 97, 10,
- 110, 10, 116, 101, 110, 97, 114, 105,
- 106, 97, 117, 105, 117, 115, 32, -59,
- -95, 97, 98, 108, 111, 110, 97, 115,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 66, 68, 73, 75, 83, 84, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 101, 10, 116, 10, 117, 10, 111, 10,
- 116, 10, 97, 10, 114, 10, 97, 10,
- 105, 10, 97, 99, 10, 118, 10, 121,
- 10, 98, -60, 10, -105, 10, 10, 58,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 106, 10, 117, 10, 115,
- 10, 97, 10, 100, 115, 58, 10, 10,
- 10, 32, 35, 37, 42, 64, 66, 68,
- 73, 75, 83, 84, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 101, 10, 116,
- 10, 117, 10, 111, 10, 116, 10, 97,
- 10, 114, 10, 97, 111, 10, 105, 10,
- 110, 10, 116, 10, 101, 10, 107, 10,
- 115, 10, 116, 10, 97, 10, 115, 10,
- 58, 10, 97, 99, 10, 118, 10, 121,
- 10, 98, -60, 10, -105, 10, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 106, 10, 97, 117, 10, 117, 10,
- 115, 10, 32, -59, 10, -95, 10, 10,
- 97, 10, 98, 10, 108, 10, 111, 10,
- 110, 10, 97, 10, 100, 97, 100, 97,
- 114, 105, 97, 110, 116, 32, 124, 9,
- 13, 10, 32, 92, 124, 9, 13, 10,
- 92, 124, 10, 92, 10, 32, 92, 124,
- 9, 13, 10, 32, 34, 35, 37, 42,
- 64, 66, 68, 73, 75, 80, 83, 84,
- 86, 124, 9, 13, 10, 101, 10, 116,
- 10, 117, 10, 111, 10, 116, 10, 97,
- 10, 114, 10, 97, 10, 105, 10, 97,
- 99, 10, 118, 10, 121, 10, 98, -60,
- 10, -105, 10, 10, 58, 10, 101, 10,
- 110, 10, 97, 10, 114, 10, 105, 10,
- 106, 10, 97, 117, 10, 117, 10, 115,
- 10, 32, -59, 10, -95, 10, 10, 97,
- 10, 98, 10, 108, 10, 111, 10, 110,
- 10, 97, 10, 115, 10, 97, 10, 100,
- 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 12, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 16, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 5,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 9, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 12, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 12, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 2,
- 4, 3, 2, 4, 16, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 1, 0, 0, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 139, 141,
- 143, 145, 147, 149, 151, 154, 156, 158,
- 160, 162, 164, 166, 168, 170, 172, 174,
- 176, 178, 192, 195, 198, 201, 204, 207,
- 210, 213, 216, 219, 222, 225, 228, 231,
- 234, 237, 255, 257, 259, 261, 263, 265,
- 267, 269, 271, 273, 275, 277, 279, 281,
- 288, 291, 294, 297, 300, 303, 306, 309,
- 312, 314, 316, 318, 320, 322, 324, 326,
- 328, 339, 342, 345, 348, 351, 354, 357,
- 360, 363, 366, 369, 372, 375, 378, 381,
- 384, 387, 390, 393, 396, 399, 402, 405,
- 408, 411, 414, 417, 420, 423, 426, 429,
- 432, 435, 438, 441, 445, 448, 451, 454,
- 457, 460, 463, 466, 469, 472, 475, 478,
- 482, 486, 489, 492, 495, 498, 501, 504,
- 507, 510, 513, 516, 519, 522, 525, 528,
- 531, 533, 535, 537, 539, 541, 543, 546,
- 549, 551, 553, 555, 557, 559, 561, 563,
- 565, 567, 569, 571, 573, 575, 577, 591,
- 594, 597, 600, 603, 606, 609, 612, 615,
- 618, 621, 624, 627, 630, 633, 636, 639,
- 642, 645, 648, 651, 654, 657, 660, 663,
- 667, 670, 673, 676, 679, 682, 685, 688,
- 691, 694, 697, 700, 703, 706, 709, 712,
- 715, 717, 719, 721, 723, 737, 740, 743,
- 746, 749, 752, 755, 758, 761, 764, 767,
- 770, 773, 776, 779, 782, 785, 788, 791,
- 794, 797, 800, 803, 807, 810, 813, 816,
- 819, 822, 825, 828, 831, 834, 837, 841,
- 844, 847, 850, 853, 856, 859, 862, 865,
- 868, 871, 874, 878, 881, 884, 887, 890,
- 893, 896, 899, 902, 905, 908, 911, 914,
- 916, 918, 920, 922, 924, 926, 928, 930,
- 934, 940, 944, 947, 953, 971, 974, 977,
- 980, 983, 986, 989, 992, 995, 998, 1002,
- 1005, 1008, 1011, 1014, 1017, 1020, 1023, 1026,
- 1029, 1032, 1035, 1038, 1042, 1045, 1048, 1051,
- 1054, 1057, 1060, 1063, 1066, 1069, 1072, 1075,
- 1078, 1081, 1084
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 39, 43, 44, 74, 95, 295, 297,
- 303, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 39,
- 43, 44, 74, 95, 295, 297, 303, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 346, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 0, 31, 0, 40, 0, 41,
- 0, 42, 0, 31, 0, 31, 0, 45,
- 46, 0, 31, 0, 47, 0, 48, 0,
- 49, 0, 50, 0, 51, 0, 52, 0,
- 53, 0, 54, 0, 55, 0, 57, 56,
- 57, 56, 57, 57, 4, 58, 72, 4,
- 309, 311, 315, 316, 318, 344, 57, 56,
- 57, 59, 56, 57, 60, 56, 57, 61,
- 56, 57, 62, 56, 57, 63, 56, 57,
- 64, 56, 57, 65, 56, 57, 66, 56,
- 57, 67, 56, 57, 68, 56, 57, 69,
- 56, 57, 70, 56, 57, 71, 56, 57,
- 4, 56, 57, 73, 56, 4, 4, 5,
- 15, 17, 31, 34, 37, 39, 43, 44,
- 74, 95, 295, 297, 303, 4, 0, 75,
- 0, 76, 0, 77, 0, 78, 0, 79,
- 0, 80, 0, 81, 0, 82, 0, 83,
- 0, 84, 0, 85, 0, 87, 86, 87,
- 86, 87, 87, 4, 88, 4, 87, 86,
- 87, 89, 86, 87, 90, 86, 87, 91,
- 86, 87, 92, 86, 93, 87, 86, 94,
- 87, 86, 87, 73, 86, 96, 168, 0,
- 97, 0, 98, 0, 99, 0, 100, 0,
- 101, 0, 102, 0, 104, 103, 104, 103,
- 104, 104, 4, 105, 4, 119, 129, 139,
- 162, 104, 103, 104, 106, 103, 104, 107,
- 103, 104, 108, 103, 104, 109, 103, 104,
- 110, 103, 104, 111, 103, 104, 112, 103,
- 104, 113, 103, 104, 114, 103, 104, 115,
- 103, 104, 116, 103, 104, 117, 103, 104,
- 118, 103, 104, 4, 103, 104, 120, 103,
- 104, 121, 103, 104, 122, 103, 104, 123,
- 103, 104, 124, 103, 104, 125, 103, 104,
- 126, 103, 104, 127, 103, 104, 128, 103,
- 104, 73, 103, 104, 130, 103, 104, 131,
- 103, 104, 132, 103, 104, 133, 103, 104,
- 134, 103, 135, 104, 103, 136, 104, 103,
- 104, 137, 103, 104, 138, 103, 104, 128,
- 103, 104, 140, 145, 103, 104, 141, 103,
- 104, 142, 103, 104, 143, 103, 144, 104,
- 103, 128, 104, 103, 104, 146, 103, 104,
- 147, 103, 104, 148, 103, 104, 149, 103,
- 104, 150, 103, 104, 151, 103, 104, 152,
- 127, 103, 104, 128, 153, 103, 104, 154,
- 103, 104, 155, 103, 156, 104, 103, 157,
- 104, 103, 104, 158, 103, 104, 159, 103,
- 104, 160, 103, 104, 161, 103, 104, 126,
- 103, 104, 163, 103, 104, 164, 103, 104,
- 165, 103, 104, 166, 103, 104, 167, 103,
- 104, 137, 103, 169, 0, 170, 0, 171,
- 0, 172, 0, 173, 0, 174, 0, 175,
- 232, 0, 84, 176, 0, 177, 0, 178,
- 0, 179, 0, 180, 0, 181, 0, 182,
- 0, 183, 0, 184, 0, 185, 0, 186,
- 0, 187, 0, 188, 0, 190, 189, 190,
- 189, 190, 190, 4, 191, 205, 4, 206,
- 208, 212, 213, 215, 230, 190, 189, 190,
- 192, 189, 190, 193, 189, 190, 194, 189,
- 190, 195, 189, 190, 196, 189, 190, 197,
- 189, 190, 198, 189, 190, 199, 189, 190,
- 200, 189, 190, 201, 189, 190, 202, 189,
- 190, 203, 189, 190, 204, 189, 190, 4,
- 189, 190, 73, 189, 190, 207, 189, 190,
- 205, 189, 190, 209, 189, 190, 210, 189,
- 190, 211, 189, 190, 205, 189, 190, 205,
- 189, 190, 214, 189, 190, 205, 189, 190,
- 216, 222, 189, 190, 217, 189, 190, 218,
- 189, 190, 219, 189, 220, 190, 189, 221,
- 190, 189, 190, 73, 189, 190, 223, 189,
- 190, 224, 189, 190, 225, 189, 190, 226,
- 189, 190, 227, 189, 190, 228, 189, 190,
- 229, 189, 190, 221, 189, 190, 231, 189,
- 190, 211, 189, 233, 0, 234, 0, 236,
- 235, 236, 235, 236, 236, 4, 237, 251,
- 4, 252, 254, 258, 259, 270, 293, 236,
- 235, 236, 238, 235, 236, 239, 235, 236,
- 240, 235, 236, 241, 235, 236, 242, 235,
- 236, 243, 235, 236, 244, 235, 236, 245,
- 235, 236, 246, 235, 236, 247, 235, 236,
- 248, 235, 236, 249, 235, 236, 250, 235,
- 236, 4, 235, 236, 73, 235, 236, 253,
- 235, 236, 251, 235, 236, 255, 235, 236,
- 256, 235, 236, 257, 235, 236, 251, 235,
- 236, 251, 235, 236, 260, 261, 235, 236,
- 251, 235, 236, 262, 235, 236, 263, 235,
- 236, 264, 235, 236, 265, 235, 236, 266,
- 235, 236, 267, 235, 236, 268, 235, 236,
- 269, 235, 236, 73, 235, 236, 271, 276,
- 235, 236, 272, 235, 236, 273, 235, 236,
- 274, 235, 275, 236, 235, 269, 236, 235,
- 236, 277, 235, 236, 278, 235, 236, 279,
- 235, 236, 280, 235, 236, 281, 235, 236,
- 282, 235, 236, 283, 268, 235, 236, 284,
- 235, 236, 285, 235, 236, 286, 235, 287,
- 236, 235, 288, 236, 235, 236, 289, 235,
- 236, 290, 235, 236, 291, 235, 236, 292,
- 235, 236, 267, 235, 236, 294, 235, 236,
- 257, 235, 296, 0, 42, 0, 298, 0,
- 299, 0, 300, 0, 301, 0, 302, 0,
- 82, 0, 303, 304, 303, 0, 308, 307,
- 306, 304, 307, 305, 0, 306, 304, 305,
- 0, 306, 305, 308, 307, 306, 304, 307,
- 305, 308, 308, 5, 15, 17, 31, 34,
- 37, 39, 43, 44, 74, 95, 295, 297,
- 303, 308, 0, 57, 310, 56, 57, 72,
- 56, 57, 312, 56, 57, 313, 56, 57,
- 314, 56, 57, 72, 56, 57, 72, 56,
- 57, 317, 56, 57, 72, 56, 57, 319,
- 325, 56, 57, 320, 56, 57, 321, 56,
- 57, 322, 56, 323, 57, 56, 324, 57,
- 56, 57, 73, 56, 57, 326, 56, 57,
- 327, 56, 57, 328, 56, 57, 329, 56,
- 57, 330, 56, 57, 331, 56, 57, 332,
- 343, 56, 57, 333, 56, 57, 334, 56,
- 57, 335, 56, 336, 57, 56, 337, 57,
- 56, 57, 338, 56, 57, 339, 56, 57,
- 340, 56, 57, 341, 56, 57, 342, 56,
- 57, 343, 56, 57, 324, 56, 57, 345,
- 56, 57, 314, 56, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 72, 33, 84, 72,
- 84, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 15, 0, 54, 15, 0, 130, 31, 60,
- 57, 31, 63, 57, 63, 63, 63, 63,
- 63, 63, 63, 63, 66, 31, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 81, 84, 81, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 21, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 69, 33, 69, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 13, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 78, 33, 84, 78, 84,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 19,
- 0, 54, 19, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 19, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 75, 33, 84,
- 75, 84, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 54, 17, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 17, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0, 0, 43, 54, 37,
- 37, 87, 37, 37, 43, 0, 39, 0,
- 43, 0, 0, 54, 0, 0, 39, 0,
- 0, 54, 0, 93, 90, 41, 96, 90,
- 96, 96, 96, 96, 96, 96, 96, 96,
- 99, 0, 43, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 15, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 346;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/lt.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 900 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/lt.c.rl"
-
-#line 907 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/lt.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/lt.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/lt.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/lt.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/lt.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/lt.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/lt.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/lt.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/lt.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/lt.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/lt.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/lt.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/lt.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/lt.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/lt.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/lt.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/lt.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/lt.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/lt.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/lt.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/lt.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/lt.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/lt.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/lt.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1197 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/lt.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1260 "ext/gherkin_lexer_lt/gherkin_lexer_lt.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/lt.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_lt()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Lt", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_lu/extconf.rb
index 4cb0777,4cb0777..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_lu/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_lu")
--have_library("c", "main")
--create_makefile("gherkin_lexer_lu")
diff --cc ext/gherkin_lexer_lu/gherkin_lexer_lu.c
index 5393e90,a2425d0..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_lu/gherkin_lexer_lu.c
+++ /dev/null
@@@ -1,1389 -1,1389 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 21, 22, 23, 43, 44, 45,
- 47, 49, 54, 59, 64, 69, 73, 77,
- 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 97, 99, 104, 111, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 135, 137, 139, 141, 143, 145,
- 147, 149, 151, 153, 155, 157, 159, 161,
- 163, 165, 167, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 217, 219,
- 221, 223, 225, 227, 229, 231, 233, 235,
- 237, 239, 241, 243, 245, 247, 249, 251,
- 253, 255, 257, 259, 261, 263, 265, 267,
- 269, 271, 273, 275, 277, 279, 281, 283,
- 285, 287, 289, 291, 293, 295, 297, 299,
- 301, 303, 305, 307, 309, 311, 313, 315,
- 317, 319, 321, 323, 325, 327, 329, 331,
- 333, 335, 337, 339, 341, 343, 345, 347,
- 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 378, 380,
- 382, 384, 386, 388, 390, 392, 394, 396,
- 398, 400, 402, 404, 406, 408, 410, 412,
- 414, 416, 418, 420, 422, 424, 426, 428,
- 430, 432, 434, 436, 438, 440, 442, 444,
- 446, 448, 450, 452, 454, 456, 458, 460,
- 462, 464, 466, 468, 470, 472, 474, 478,
- 480, 482, 484, 486, 488, 490, 492, 494,
- 496, 498, 500, 502, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 539, 541, 543, 545, 547, 549, 551,
- 553, 555, 557, 559, 561, 563, 565, 567,
- 569, 571, 573, 575, 577, 579, 581, 583,
- 585, 587, 589, 591, 593, 595, 597, 599,
- 601, 603, 605, 607, 609, 611, 613, 615,
- 619, 621, 623, 625, 627, 629, 631, 633,
- 635, 637, 639, 641, 643, 645, 646, 647,
- 648, 649, 650, 651, 652, 653, 654, 655,
- 672, 674, 676, 678, 680, 682, 684, 686,
- 688, 690, 692, 694, 696, 698, 700, 702,
- 704, 706, 708, 710, 712, 714, 716, 718,
- 720, 722, 724, 726, 728, 730, 732, 734,
- 736, 738, 740, 742, 744, 746, 748, 750,
- 752, 754, 756, 758, 760, 762, 764, 766,
- 768, 770, 772, 774, 776, 778, 780, 782,
- 784, 786, 788, 792, 794, 796, 798, 800,
- 802, 804, 806, 808, 810, 812, 814, 816,
- 818, 821, 822, 823, 824, 825, 826, 827,
- 828, 829, 830, 831, 832, 833, 834, 838,
- 844, 847, 849, 855, 875
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 66, 70, 72, 80, 83, 97, 100, 109,
- 117, 119, 124, 9, 13, -69, -65, 10,
- 32, 34, 35, 37, 42, 64, 66, 70,
- 72, 80, 83, 97, 100, 109, 117, 119,
- 124, 9, 13, 34, 34, 10, 13, 10,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 9,
- 13, 10, 32, 9, 13, 10, 13, 10,
- 95, 70, 69, 65, 84, 85, 82, 69,
- 95, 69, 78, 68, 95, 37, 32, 10,
- 13, 10, 13, 13, 32, 64, 9, 10,
- 9, 10, 13, 32, 64, 11, 12, 10,
- 32, 64, 9, 13, 101, 105, 115, 112,
- 105, 108, 108, 101, 114, 58, 10, 10,
- 10, 32, 35, 70, 124, 9, 13, 10,
- 117, 10, 110, 10, 107, 10, 116, 10,
- 105, 10, 111, 10, 110, 10, 97, 10,
- 108, 10, 105, 10, 116, -61, 10, -87,
- 10, 10, 105, 10, 116, 10, 58, 10,
- 32, 34, 35, 37, 42, 64, 66, 70,
- 72, 80, 83, 97, 100, 109, 117, 119,
- 124, 9, 13, 117, 110, 107, 116, 105,
- 111, 110, 97, 108, 105, 116, -61, -87,
- 105, 116, 58, 10, 10, 10, 32, 35,
- 37, 64, 66, 70, 72, 80, 83, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 101, 10,
- 105, 10, 115, 10, 112, 10, 105, 10,
- 108, 10, 108, 10, 101, 10, 114, 10,
- 58, 10, 117, 10, 110, 10, 107, 10,
- 116, 10, 105, 10, 111, 10, 110, 10,
- 97, 10, 108, 10, 105, 10, 116, -61,
- 10, -87, 10, 10, 105, 10, 116, 10,
- 97, 10, 110, 10, 110, 10, 101, 10,
- 114, 10, 103, 10, 114, 10, 111, 10,
- 110, 10, 100, 10, 108, 10, 97, 10,
- 110, 10, 103, 10, 32, 10, 118, 10,
- 117, 10, 109, 10, 32, 10, 83, 10,
- 122, 10, 101, 10, 110, 10, 97, 10,
- 114, 10, 105, 10, 111, 97, 110, 110,
- 101, 114, 103, 114, 111, 110, 100, 58,
- 10, 10, 10, 32, 35, 37, 42, 64,
- 70, 80, 83, 97, 100, 109, 117, 119,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 32,
- 10, 117, 10, 110, 10, 107, 10, 116,
- 10, 105, 10, 111, 10, 110, 10, 97,
- 10, 108, 10, 105, 10, 116, -61, 10,
- -87, 10, 10, 105, 10, 116, 10, 58,
- 10, 108, 10, 97, 10, 110, 10, 103,
- 10, 32, 10, 118, 10, 117, 10, 109,
- 10, 32, 10, 83, 10, 122, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 111, 10, 32, 110, 119, 10, 101,
- 10, 114, 10, 97, 10, 110, 10, 110,
- -61, 10, -92, 10, 10, 103, 10, 101,
- 10, 104, 10, 111, 10, 108, 10, 108,
- 108, 97, 110, 103, 32, 118, 117, 109,
- 32, 83, 122, 101, 110, 97, 114, 105,
- 111, 58, 10, 10, 10, 32, 35, 37,
- 42, 64, 70, 83, 97, 100, 109, 117,
- 119, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 117, 10, 110, 10, 107, 10,
- 116, 10, 105, 10, 111, 10, 110, 10,
- 97, 10, 108, 10, 105, 10, 116, -61,
- 10, -87, 10, 10, 105, 10, 116, 10,
- 58, 10, 122, 10, 101, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 111, 10,
- 32, 110, 119, 10, 101, 10, 114, 10,
- 97, 10, 110, 10, 110, -61, 10, -92,
- 10, 10, 103, 10, 101, 10, 104, 10,
- 111, 10, 108, 10, 108, 122, 101, 110,
- 97, 114, 105, 111, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 70, 72, 80,
- 83, 97, 100, 109, 117, 119, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 117,
- 10, 110, 10, 107, 10, 116, 10, 105,
- 10, 111, 10, 110, 10, 97, 10, 108,
- 10, 105, 10, 116, -61, 10, -87, 10,
- 10, 105, 10, 116, 10, 58, 10, 97,
- 10, 110, 10, 110, 10, 101, 10, 114,
- 10, 103, 10, 114, 10, 111, 10, 110,
- 10, 100, 10, 108, 10, 97, 10, 110,
- 10, 103, 10, 32, 10, 118, 10, 117,
- 10, 109, 10, 32, 10, 83, 10, 122,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 111, 10, 32, 110, 119,
- 10, 101, 10, 114, 10, 97, 10, 110,
- 10, 110, -61, 10, -92, 10, 10, 103,
- 10, 101, 10, 104, 10, 111, 10, 108,
- 10, 108, 32, 110, 119, 101, 114, 97,
- 110, 110, -61, -92, 103, 101, 104, 111,
- 108, 108, 32, 124, 9, 13, 10, 32,
- 92, 124, 9, 13, 10, 92, 124, 10,
- 92, 10, 32, 92, 124, 9, 13, 10,
- 32, 34, 35, 37, 42, 64, 66, 70,
- 72, 80, 83, 97, 100, 109, 117, 119,
- 124, 9, 13, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 19, 1, 1, 18, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 5, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 18, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 10, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 14, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 4, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 13, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 4,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 15,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 4, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 4,
- 3, 2, 4, 18, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 1,
- 0, 0, 1, 1, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 21, 23, 25, 45, 47, 49,
- 52, 55, 60, 65, 70, 75, 79, 83,
- 86, 88, 90, 92, 94, 96, 98, 100,
- 102, 104, 106, 108, 110, 112, 114, 116,
- 118, 121, 124, 129, 136, 141, 143, 145,
- 147, 149, 151, 153, 155, 157, 159, 161,
- 163, 165, 172, 175, 178, 181, 184, 187,
- 190, 193, 196, 199, 202, 205, 208, 211,
- 214, 217, 220, 240, 242, 244, 246, 248,
- 250, 252, 254, 256, 258, 260, 262, 264,
- 266, 268, 270, 272, 274, 276, 288, 291,
- 294, 297, 300, 303, 306, 309, 312, 315,
- 318, 321, 324, 327, 330, 333, 336, 339,
- 342, 345, 348, 351, 354, 357, 360, 363,
- 366, 369, 372, 375, 378, 381, 384, 387,
- 390, 393, 396, 399, 402, 405, 408, 411,
- 414, 417, 420, 423, 426, 429, 432, 435,
- 438, 441, 444, 447, 450, 453, 456, 459,
- 462, 465, 468, 471, 474, 477, 480, 483,
- 486, 488, 490, 492, 494, 496, 498, 500,
- 502, 504, 506, 508, 510, 512, 528, 531,
- 534, 537, 540, 543, 546, 549, 552, 555,
- 558, 561, 564, 567, 570, 573, 576, 579,
- 582, 585, 588, 591, 594, 597, 600, 603,
- 606, 609, 612, 615, 618, 621, 624, 627,
- 630, 633, 636, 639, 642, 645, 648, 651,
- 654, 657, 660, 663, 666, 669, 672, 677,
- 680, 683, 686, 689, 692, 695, 698, 701,
- 704, 707, 710, 713, 716, 718, 720, 722,
- 724, 726, 728, 730, 732, 734, 736, 738,
- 740, 742, 744, 746, 748, 750, 752, 754,
- 756, 771, 774, 777, 780, 783, 786, 789,
- 792, 795, 798, 801, 804, 807, 810, 813,
- 816, 819, 822, 825, 828, 831, 834, 837,
- 840, 843, 846, 849, 852, 855, 858, 861,
- 864, 867, 870, 873, 876, 879, 882, 885,
- 890, 893, 896, 899, 902, 905, 908, 911,
- 914, 917, 920, 923, 926, 929, 931, 933,
- 935, 937, 939, 941, 943, 945, 947, 949,
- 966, 969, 972, 975, 978, 981, 984, 987,
- 990, 993, 996, 999, 1002, 1005, 1008, 1011,
- 1014, 1017, 1020, 1023, 1026, 1029, 1032, 1035,
- 1038, 1041, 1044, 1047, 1050, 1053, 1056, 1059,
- 1062, 1065, 1068, 1071, 1074, 1077, 1080, 1083,
- 1086, 1089, 1092, 1095, 1098, 1101, 1104, 1107,
- 1110, 1113, 1116, 1119, 1122, 1125, 1128, 1131,
- 1134, 1137, 1140, 1145, 1148, 1151, 1154, 1157,
- 1160, 1163, 1166, 1169, 1172, 1175, 1178, 1181,
- 1184, 1188, 1190, 1192, 1194, 1196, 1198, 1200,
- 1202, 1204, 1206, 1208, 1210, 1212, 1214, 1218,
- 1224, 1228, 1231, 1237, 1257
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 67, 152, 228, 301, 384, 387, 390,
- 392, 387, 398, 4, 0, 3, 0, 4,
- 0, 4, 4, 5, 15, 17, 31, 34,
- 37, 67, 152, 228, 301, 384, 387, 390,
- 392, 387, 398, 4, 0, 6, 0, 7,
- 0, 9, 8, 8, 9, 8, 8, 10,
- 10, 11, 10, 10, 10, 10, 11, 10,
- 10, 10, 10, 12, 10, 10, 10, 10,
- 13, 10, 10, 4, 14, 14, 0, 4,
- 14, 14, 0, 4, 16, 15, 4, 0,
- 18, 0, 19, 0, 20, 0, 21, 0,
- 22, 0, 23, 0, 24, 0, 25, 0,
- 26, 0, 27, 0, 28, 0, 29, 0,
- 30, 0, 404, 0, 32, 0, 4, 16,
- 33, 4, 16, 33, 0, 0, 0, 0,
- 35, 36, 4, 36, 36, 34, 35, 35,
- 4, 36, 34, 36, 0, 38, 0, 39,
- 0, 40, 0, 41, 0, 42, 0, 43,
- 0, 44, 0, 45, 0, 46, 0, 47,
- 0, 49, 48, 49, 48, 49, 49, 4,
- 50, 4, 49, 48, 49, 51, 48, 49,
- 52, 48, 49, 53, 48, 49, 54, 48,
- 49, 55, 48, 49, 56, 48, 49, 57,
- 48, 49, 58, 48, 49, 59, 48, 49,
- 60, 48, 49, 61, 48, 62, 49, 48,
- 63, 49, 48, 49, 64, 48, 49, 65,
- 48, 49, 66, 48, 4, 4, 5, 15,
- 17, 31, 34, 37, 67, 152, 228, 301,
- 384, 387, 390, 392, 387, 398, 4, 0,
- 68, 0, 69, 0, 70, 0, 71, 0,
- 72, 0, 73, 0, 74, 0, 75, 0,
- 76, 0, 77, 0, 78, 0, 79, 0,
- 80, 0, 81, 0, 82, 0, 83, 0,
- 85, 84, 85, 84, 85, 85, 4, 86,
- 4, 100, 110, 125, 135, 145, 85, 84,
- 85, 87, 84, 85, 88, 84, 85, 89,
- 84, 85, 90, 84, 85, 91, 84, 85,
- 92, 84, 85, 93, 84, 85, 94, 84,
- 85, 95, 84, 85, 96, 84, 85, 97,
- 84, 85, 98, 84, 85, 99, 84, 85,
- 4, 84, 85, 101, 84, 85, 102, 84,
- 85, 103, 84, 85, 104, 84, 85, 105,
- 84, 85, 106, 84, 85, 107, 84, 85,
- 108, 84, 85, 109, 84, 85, 66, 84,
- 85, 111, 84, 85, 112, 84, 85, 113,
- 84, 85, 114, 84, 85, 115, 84, 85,
- 116, 84, 85, 117, 84, 85, 118, 84,
- 85, 119, 84, 85, 120, 84, 85, 121,
- 84, 122, 85, 84, 123, 85, 84, 85,
- 124, 84, 85, 109, 84, 85, 126, 84,
- 85, 127, 84, 85, 128, 84, 85, 129,
- 84, 85, 130, 84, 85, 131, 84, 85,
- 132, 84, 85, 133, 84, 85, 134, 84,
- 85, 109, 84, 85, 136, 84, 85, 137,
- 84, 85, 138, 84, 85, 139, 84, 85,
- 140, 84, 85, 141, 84, 85, 142, 84,
- 85, 143, 84, 85, 144, 84, 85, 145,
- 84, 85, 146, 84, 85, 147, 84, 85,
- 148, 84, 85, 149, 84, 85, 150, 84,
- 85, 151, 84, 85, 109, 84, 153, 0,
- 154, 0, 155, 0, 156, 0, 157, 0,
- 158, 0, 159, 0, 160, 0, 161, 0,
- 162, 0, 163, 0, 165, 164, 165, 164,
- 165, 165, 4, 166, 180, 4, 181, 197,
- 207, 214, 217, 220, 222, 217, 165, 164,
- 165, 167, 164, 165, 168, 164, 165, 169,
- 164, 165, 170, 164, 165, 171, 164, 165,
- 172, 164, 165, 173, 164, 165, 174, 164,
- 165, 175, 164, 165, 176, 164, 165, 177,
- 164, 165, 178, 164, 165, 179, 164, 165,
- 4, 164, 165, 66, 164, 165, 182, 164,
- 165, 183, 164, 165, 184, 164, 165, 185,
- 164, 165, 186, 164, 165, 187, 164, 165,
- 188, 164, 165, 189, 164, 165, 190, 164,
- 165, 191, 164, 165, 192, 164, 193, 165,
- 164, 194, 165, 164, 165, 195, 164, 165,
- 196, 164, 165, 66, 164, 165, 198, 164,
- 165, 199, 164, 165, 200, 164, 165, 201,
- 164, 165, 202, 164, 165, 203, 164, 165,
- 204, 164, 165, 205, 164, 165, 206, 164,
- 165, 207, 164, 165, 208, 164, 165, 209,
- 164, 165, 210, 164, 165, 211, 164, 165,
- 212, 164, 165, 213, 164, 165, 196, 164,
- 165, 66, 180, 215, 164, 165, 216, 164,
- 165, 180, 164, 165, 218, 164, 165, 219,
- 164, 165, 180, 164, 221, 165, 164, 180,
- 165, 164, 165, 223, 164, 165, 224, 164,
- 165, 225, 164, 165, 226, 164, 165, 227,
- 164, 165, 180, 164, 229, 0, 230, 0,
- 231, 0, 232, 0, 233, 0, 234, 0,
- 235, 0, 236, 0, 237, 0, 238, 0,
- 239, 0, 240, 0, 241, 0, 242, 0,
- 243, 0, 244, 0, 245, 0, 246, 0,
- 248, 247, 248, 247, 248, 248, 4, 249,
- 263, 4, 264, 280, 287, 290, 293, 295,
- 290, 248, 247, 248, 250, 247, 248, 251,
- 247, 248, 252, 247, 248, 253, 247, 248,
- 254, 247, 248, 255, 247, 248, 256, 247,
- 248, 257, 247, 248, 258, 247, 248, 259,
- 247, 248, 260, 247, 248, 261, 247, 248,
- 262, 247, 248, 4, 247, 248, 66, 247,
- 248, 265, 247, 248, 266, 247, 248, 267,
- 247, 248, 268, 247, 248, 269, 247, 248,
- 270, 247, 248, 271, 247, 248, 272, 247,
- 248, 273, 247, 248, 274, 247, 248, 275,
- 247, 276, 248, 247, 277, 248, 247, 248,
- 278, 247, 248, 279, 247, 248, 66, 247,
- 248, 281, 247, 248, 282, 247, 248, 283,
- 247, 248, 284, 247, 248, 285, 247, 248,
- 286, 247, 248, 279, 247, 248, 66, 263,
- 288, 247, 248, 289, 247, 248, 263, 247,
- 248, 291, 247, 248, 292, 247, 248, 263,
- 247, 294, 248, 247, 263, 248, 247, 248,
- 296, 247, 248, 297, 247, 248, 298, 247,
- 248, 299, 247, 248, 300, 247, 248, 263,
- 247, 302, 0, 303, 0, 304, 0, 305,
- 0, 306, 0, 307, 0, 308, 0, 309,
- 0, 311, 310, 311, 310, 311, 311, 4,
- 312, 326, 4, 327, 343, 353, 363, 370,
- 373, 376, 378, 373, 311, 310, 311, 313,
- 310, 311, 314, 310, 311, 315, 310, 311,
- 316, 310, 311, 317, 310, 311, 318, 310,
- 311, 319, 310, 311, 320, 310, 311, 321,
- 310, 311, 322, 310, 311, 323, 310, 311,
- 324, 310, 311, 325, 310, 311, 4, 310,
- 311, 66, 310, 311, 328, 310, 311, 329,
- 310, 311, 330, 310, 311, 331, 310, 311,
- 332, 310, 311, 333, 310, 311, 334, 310,
- 311, 335, 310, 311, 336, 310, 311, 337,
- 310, 311, 338, 310, 339, 311, 310, 340,
- 311, 310, 311, 341, 310, 311, 342, 310,
- 311, 66, 310, 311, 344, 310, 311, 345,
- 310, 311, 346, 310, 311, 347, 310, 311,
- 348, 310, 311, 349, 310, 311, 350, 310,
- 311, 351, 310, 311, 352, 310, 311, 342,
- 310, 311, 354, 310, 311, 355, 310, 311,
- 356, 310, 311, 357, 310, 311, 358, 310,
- 311, 359, 310, 311, 360, 310, 311, 361,
- 310, 311, 362, 310, 311, 363, 310, 311,
- 364, 310, 311, 365, 310, 311, 366, 310,
- 311, 367, 310, 311, 368, 310, 311, 369,
- 310, 311, 342, 310, 311, 66, 326, 371,
- 310, 311, 372, 310, 311, 326, 310, 311,
- 374, 310, 311, 375, 310, 311, 326, 310,
- 377, 311, 310, 326, 311, 310, 311, 379,
- 310, 311, 380, 310, 311, 381, 310, 311,
- 382, 310, 311, 383, 310, 311, 326, 310,
- 32, 31, 385, 0, 386, 0, 31, 0,
- 388, 0, 389, 0, 31, 0, 391, 0,
- 31, 0, 393, 0, 394, 0, 395, 0,
- 396, 0, 397, 0, 31, 0, 398, 399,
- 398, 0, 403, 402, 401, 399, 402, 400,
- 0, 401, 399, 400, 0, 401, 400, 403,
- 402, 401, 399, 402, 400, 403, 403, 5,
- 15, 17, 31, 34, 37, 67, 152, 228,
- 301, 384, 387, 390, 392, 387, 398, 403,
- 0, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 29, 29, 35, 0, 43, 0, 43, 0,
- 43, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 29, 29, 35, 0, 43, 0, 43, 0,
- 43, 139, 48, 9, 106, 11, 0, 134,
- 45, 45, 45, 3, 122, 33, 33, 33,
- 0, 122, 33, 33, 33, 0, 122, 33,
- 0, 33, 0, 102, 7, 7, 43, 54,
- 0, 0, 43, 114, 25, 0, 54, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 149, 126,
- 57, 110, 23, 0, 43, 43, 43, 43,
- 0, 27, 118, 27, 27, 51, 27, 0,
- 54, 0, 1, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 81,
- 84, 81, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 21, 0, 130, 31, 60, 57,
- 31, 63, 57, 63, 63, 63, 63, 63,
- 63, 63, 63, 63, 63, 66, 31, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 69, 33,
- 69, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 13, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 72, 33, 84, 72, 84, 84,
- 84, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 15, 0, 54, 15, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 15, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 78, 33,
- 84, 78, 84, 84, 84, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 19, 0, 54, 19, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 19, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 19, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 75,
- 33, 84, 75, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 17, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 0, 43, 54, 37, 37, 87, 37, 37,
- 43, 0, 39, 0, 43, 0, 0, 54,
- 0, 0, 39, 0, 0, 54, 0, 93,
- 90, 41, 96, 90, 96, 96, 96, 96,
- 96, 96, 96, 96, 96, 96, 99, 0,
- 43, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 404;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 993 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
-
- #line 1000 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1290 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1353 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lu.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_lu()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Lu", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/lu.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/lu.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 21, 22, 23, 43, 44, 45,
- 47, 49, 54, 59, 64, 69, 73, 77,
- 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 97, 99, 104, 111, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 135, 137, 139, 141, 143, 145,
- 147, 149, 151, 153, 155, 157, 159, 161,
- 163, 165, 167, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 217, 219,
- 221, 223, 225, 227, 229, 231, 233, 235,
- 237, 239, 241, 243, 245, 247, 249, 251,
- 253, 255, 257, 259, 261, 263, 265, 267,
- 269, 271, 273, 275, 277, 279, 281, 283,
- 285, 287, 289, 291, 293, 295, 297, 299,
- 301, 303, 305, 307, 309, 311, 313, 315,
- 317, 319, 321, 323, 325, 327, 329, 331,
- 333, 335, 337, 339, 341, 343, 345, 347,
- 349, 350, 351, 352, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 378, 380,
- 382, 384, 386, 388, 390, 392, 394, 396,
- 398, 400, 402, 404, 406, 408, 410, 412,
- 414, 416, 418, 420, 422, 424, 426, 428,
- 430, 432, 434, 436, 438, 440, 442, 444,
- 446, 448, 450, 452, 454, 456, 458, 460,
- 462, 464, 466, 468, 470, 472, 474, 478,
- 480, 482, 484, 486, 488, 490, 492, 494,
- 496, 498, 500, 502, 504, 505, 506, 507,
- 508, 509, 510, 511, 512, 513, 514, 515,
- 516, 517, 518, 519, 520, 521, 522, 523,
- 524, 539, 541, 543, 545, 547, 549, 551,
- 553, 555, 557, 559, 561, 563, 565, 567,
- 569, 571, 573, 575, 577, 579, 581, 583,
- 585, 587, 589, 591, 593, 595, 597, 599,
- 601, 603, 605, 607, 609, 611, 613, 615,
- 619, 621, 623, 625, 627, 629, 631, 633,
- 635, 637, 639, 641, 643, 645, 646, 647,
- 648, 649, 650, 651, 652, 653, 654, 655,
- 672, 674, 676, 678, 680, 682, 684, 686,
- 688, 690, 692, 694, 696, 698, 700, 702,
- 704, 706, 708, 710, 712, 714, 716, 718,
- 720, 722, 724, 726, 728, 730, 732, 734,
- 736, 738, 740, 742, 744, 746, 748, 750,
- 752, 754, 756, 758, 760, 762, 764, 766,
- 768, 770, 772, 774, 776, 778, 780, 782,
- 784, 786, 788, 792, 794, 796, 798, 800,
- 802, 804, 806, 808, 810, 812, 814, 816,
- 818, 821, 822, 823, 824, 825, 826, 827,
- 828, 829, 830, 831, 832, 833, 834, 838,
- 844, 847, 849, 855, 875
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 66, 70, 72, 80, 83, 97, 100, 109,
- 117, 119, 124, 9, 13, -69, -65, 10,
- 32, 34, 35, 37, 42, 64, 66, 70,
- 72, 80, 83, 97, 100, 109, 117, 119,
- 124, 9, 13, 34, 34, 10, 13, 10,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 9,
- 13, 10, 32, 9, 13, 10, 13, 10,
- 95, 70, 69, 65, 84, 85, 82, 69,
- 95, 69, 78, 68, 95, 37, 32, 10,
- 13, 10, 13, 13, 32, 64, 9, 10,
- 9, 10, 13, 32, 64, 11, 12, 10,
- 32, 64, 9, 13, 101, 105, 115, 112,
- 105, 108, 108, 101, 114, 58, 10, 10,
- 10, 32, 35, 70, 124, 9, 13, 10,
- 117, 10, 110, 10, 107, 10, 116, 10,
- 105, 10, 111, 10, 110, 10, 97, 10,
- 108, 10, 105, 10, 116, -61, 10, -87,
- 10, 10, 105, 10, 116, 10, 58, 10,
- 32, 34, 35, 37, 42, 64, 66, 70,
- 72, 80, 83, 97, 100, 109, 117, 119,
- 124, 9, 13, 117, 110, 107, 116, 105,
- 111, 110, 97, 108, 105, 116, -61, -87,
- 105, 116, 58, 10, 10, 10, 32, 35,
- 37, 64, 66, 70, 72, 80, 83, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 101, 10,
- 105, 10, 115, 10, 112, 10, 105, 10,
- 108, 10, 108, 10, 101, 10, 114, 10,
- 58, 10, 117, 10, 110, 10, 107, 10,
- 116, 10, 105, 10, 111, 10, 110, 10,
- 97, 10, 108, 10, 105, 10, 116, -61,
- 10, -87, 10, 10, 105, 10, 116, 10,
- 97, 10, 110, 10, 110, 10, 101, 10,
- 114, 10, 103, 10, 114, 10, 111, 10,
- 110, 10, 100, 10, 108, 10, 97, 10,
- 110, 10, 103, 10, 32, 10, 118, 10,
- 117, 10, 109, 10, 32, 10, 83, 10,
- 122, 10, 101, 10, 110, 10, 97, 10,
- 114, 10, 105, 10, 111, 97, 110, 110,
- 101, 114, 103, 114, 111, 110, 100, 58,
- 10, 10, 10, 32, 35, 37, 42, 64,
- 70, 80, 83, 97, 100, 109, 117, 119,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 32,
- 10, 117, 10, 110, 10, 107, 10, 116,
- 10, 105, 10, 111, 10, 110, 10, 97,
- 10, 108, 10, 105, 10, 116, -61, 10,
- -87, 10, 10, 105, 10, 116, 10, 58,
- 10, 108, 10, 97, 10, 110, 10, 103,
- 10, 32, 10, 118, 10, 117, 10, 109,
- 10, 32, 10, 83, 10, 122, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 111, 10, 32, 110, 119, 10, 101,
- 10, 114, 10, 97, 10, 110, 10, 110,
- -61, 10, -92, 10, 10, 103, 10, 101,
- 10, 104, 10, 111, 10, 108, 10, 108,
- 108, 97, 110, 103, 32, 118, 117, 109,
- 32, 83, 122, 101, 110, 97, 114, 105,
- 111, 58, 10, 10, 10, 32, 35, 37,
- 42, 64, 70, 83, 97, 100, 109, 117,
- 119, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 117, 10, 110, 10, 107, 10,
- 116, 10, 105, 10, 111, 10, 110, 10,
- 97, 10, 108, 10, 105, 10, 116, -61,
- 10, -87, 10, 10, 105, 10, 116, 10,
- 58, 10, 122, 10, 101, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 111, 10,
- 32, 110, 119, 10, 101, 10, 114, 10,
- 97, 10, 110, 10, 110, -61, 10, -92,
- 10, 10, 103, 10, 101, 10, 104, 10,
- 111, 10, 108, 10, 108, 122, 101, 110,
- 97, 114, 105, 111, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 70, 72, 80,
- 83, 97, 100, 109, 117, 119, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 117,
- 10, 110, 10, 107, 10, 116, 10, 105,
- 10, 111, 10, 110, 10, 97, 10, 108,
- 10, 105, 10, 116, -61, 10, -87, 10,
- 10, 105, 10, 116, 10, 58, 10, 97,
- 10, 110, 10, 110, 10, 101, 10, 114,
- 10, 103, 10, 114, 10, 111, 10, 110,
- 10, 100, 10, 108, 10, 97, 10, 110,
- 10, 103, 10, 32, 10, 118, 10, 117,
- 10, 109, 10, 32, 10, 83, 10, 122,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 111, 10, 32, 110, 119,
- 10, 101, 10, 114, 10, 97, 10, 110,
- 10, 110, -61, 10, -92, 10, 10, 103,
- 10, 101, 10, 104, 10, 111, 10, 108,
- 10, 108, 32, 110, 119, 101, 114, 97,
- 110, 110, -61, -92, 103, 101, 104, 111,
- 108, 108, 32, 124, 9, 13, 10, 32,
- 92, 124, 9, 13, 10, 92, 124, 10,
- 92, 10, 32, 92, 124, 9, 13, 10,
- 32, 34, 35, 37, 42, 64, 66, 70,
- 72, 80, 83, 97, 100, 109, 117, 119,
- 124, 9, 13, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 19, 1, 1, 18, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 5, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 18, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 10, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 14, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 4, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 13, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 4,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 15,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 4, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 4,
- 3, 2, 4, 18, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 1,
- 0, 0, 1, 1, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 21, 23, 25, 45, 47, 49,
- 52, 55, 60, 65, 70, 75, 79, 83,
- 86, 88, 90, 92, 94, 96, 98, 100,
- 102, 104, 106, 108, 110, 112, 114, 116,
- 118, 121, 124, 129, 136, 141, 143, 145,
- 147, 149, 151, 153, 155, 157, 159, 161,
- 163, 165, 172, 175, 178, 181, 184, 187,
- 190, 193, 196, 199, 202, 205, 208, 211,
- 214, 217, 220, 240, 242, 244, 246, 248,
- 250, 252, 254, 256, 258, 260, 262, 264,
- 266, 268, 270, 272, 274, 276, 288, 291,
- 294, 297, 300, 303, 306, 309, 312, 315,
- 318, 321, 324, 327, 330, 333, 336, 339,
- 342, 345, 348, 351, 354, 357, 360, 363,
- 366, 369, 372, 375, 378, 381, 384, 387,
- 390, 393, 396, 399, 402, 405, 408, 411,
- 414, 417, 420, 423, 426, 429, 432, 435,
- 438, 441, 444, 447, 450, 453, 456, 459,
- 462, 465, 468, 471, 474, 477, 480, 483,
- 486, 488, 490, 492, 494, 496, 498, 500,
- 502, 504, 506, 508, 510, 512, 528, 531,
- 534, 537, 540, 543, 546, 549, 552, 555,
- 558, 561, 564, 567, 570, 573, 576, 579,
- 582, 585, 588, 591, 594, 597, 600, 603,
- 606, 609, 612, 615, 618, 621, 624, 627,
- 630, 633, 636, 639, 642, 645, 648, 651,
- 654, 657, 660, 663, 666, 669, 672, 677,
- 680, 683, 686, 689, 692, 695, 698, 701,
- 704, 707, 710, 713, 716, 718, 720, 722,
- 724, 726, 728, 730, 732, 734, 736, 738,
- 740, 742, 744, 746, 748, 750, 752, 754,
- 756, 771, 774, 777, 780, 783, 786, 789,
- 792, 795, 798, 801, 804, 807, 810, 813,
- 816, 819, 822, 825, 828, 831, 834, 837,
- 840, 843, 846, 849, 852, 855, 858, 861,
- 864, 867, 870, 873, 876, 879, 882, 885,
- 890, 893, 896, 899, 902, 905, 908, 911,
- 914, 917, 920, 923, 926, 929, 931, 933,
- 935, 937, 939, 941, 943, 945, 947, 949,
- 966, 969, 972, 975, 978, 981, 984, 987,
- 990, 993, 996, 999, 1002, 1005, 1008, 1011,
- 1014, 1017, 1020, 1023, 1026, 1029, 1032, 1035,
- 1038, 1041, 1044, 1047, 1050, 1053, 1056, 1059,
- 1062, 1065, 1068, 1071, 1074, 1077, 1080, 1083,
- 1086, 1089, 1092, 1095, 1098, 1101, 1104, 1107,
- 1110, 1113, 1116, 1119, 1122, 1125, 1128, 1131,
- 1134, 1137, 1140, 1145, 1148, 1151, 1154, 1157,
- 1160, 1163, 1166, 1169, 1172, 1175, 1178, 1181,
- 1184, 1188, 1190, 1192, 1194, 1196, 1198, 1200,
- 1202, 1204, 1206, 1208, 1210, 1212, 1214, 1218,
- 1224, 1228, 1231, 1237, 1257
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 67, 152, 228, 301, 384, 387, 390,
- 392, 387, 398, 4, 0, 3, 0, 4,
- 0, 4, 4, 5, 15, 17, 31, 34,
- 37, 67, 152, 228, 301, 384, 387, 390,
- 392, 387, 398, 4, 0, 6, 0, 7,
- 0, 9, 8, 8, 9, 8, 8, 10,
- 10, 11, 10, 10, 10, 10, 11, 10,
- 10, 10, 10, 12, 10, 10, 10, 10,
- 13, 10, 10, 4, 14, 14, 0, 4,
- 14, 14, 0, 4, 16, 15, 4, 0,
- 18, 0, 19, 0, 20, 0, 21, 0,
- 22, 0, 23, 0, 24, 0, 25, 0,
- 26, 0, 27, 0, 28, 0, 29, 0,
- 30, 0, 404, 0, 32, 0, 4, 16,
- 33, 4, 16, 33, 0, 0, 0, 0,
- 35, 36, 4, 36, 36, 34, 35, 35,
- 4, 36, 34, 36, 0, 38, 0, 39,
- 0, 40, 0, 41, 0, 42, 0, 43,
- 0, 44, 0, 45, 0, 46, 0, 47,
- 0, 49, 48, 49, 48, 49, 49, 4,
- 50, 4, 49, 48, 49, 51, 48, 49,
- 52, 48, 49, 53, 48, 49, 54, 48,
- 49, 55, 48, 49, 56, 48, 49, 57,
- 48, 49, 58, 48, 49, 59, 48, 49,
- 60, 48, 49, 61, 48, 62, 49, 48,
- 63, 49, 48, 49, 64, 48, 49, 65,
- 48, 49, 66, 48, 4, 4, 5, 15,
- 17, 31, 34, 37, 67, 152, 228, 301,
- 384, 387, 390, 392, 387, 398, 4, 0,
- 68, 0, 69, 0, 70, 0, 71, 0,
- 72, 0, 73, 0, 74, 0, 75, 0,
- 76, 0, 77, 0, 78, 0, 79, 0,
- 80, 0, 81, 0, 82, 0, 83, 0,
- 85, 84, 85, 84, 85, 85, 4, 86,
- 4, 100, 110, 125, 135, 145, 85, 84,
- 85, 87, 84, 85, 88, 84, 85, 89,
- 84, 85, 90, 84, 85, 91, 84, 85,
- 92, 84, 85, 93, 84, 85, 94, 84,
- 85, 95, 84, 85, 96, 84, 85, 97,
- 84, 85, 98, 84, 85, 99, 84, 85,
- 4, 84, 85, 101, 84, 85, 102, 84,
- 85, 103, 84, 85, 104, 84, 85, 105,
- 84, 85, 106, 84, 85, 107, 84, 85,
- 108, 84, 85, 109, 84, 85, 66, 84,
- 85, 111, 84, 85, 112, 84, 85, 113,
- 84, 85, 114, 84, 85, 115, 84, 85,
- 116, 84, 85, 117, 84, 85, 118, 84,
- 85, 119, 84, 85, 120, 84, 85, 121,
- 84, 122, 85, 84, 123, 85, 84, 85,
- 124, 84, 85, 109, 84, 85, 126, 84,
- 85, 127, 84, 85, 128, 84, 85, 129,
- 84, 85, 130, 84, 85, 131, 84, 85,
- 132, 84, 85, 133, 84, 85, 134, 84,
- 85, 109, 84, 85, 136, 84, 85, 137,
- 84, 85, 138, 84, 85, 139, 84, 85,
- 140, 84, 85, 141, 84, 85, 142, 84,
- 85, 143, 84, 85, 144, 84, 85, 145,
- 84, 85, 146, 84, 85, 147, 84, 85,
- 148, 84, 85, 149, 84, 85, 150, 84,
- 85, 151, 84, 85, 109, 84, 153, 0,
- 154, 0, 155, 0, 156, 0, 157, 0,
- 158, 0, 159, 0, 160, 0, 161, 0,
- 162, 0, 163, 0, 165, 164, 165, 164,
- 165, 165, 4, 166, 180, 4, 181, 197,
- 207, 214, 217, 220, 222, 217, 165, 164,
- 165, 167, 164, 165, 168, 164, 165, 169,
- 164, 165, 170, 164, 165, 171, 164, 165,
- 172, 164, 165, 173, 164, 165, 174, 164,
- 165, 175, 164, 165, 176, 164, 165, 177,
- 164, 165, 178, 164, 165, 179, 164, 165,
- 4, 164, 165, 66, 164, 165, 182, 164,
- 165, 183, 164, 165, 184, 164, 165, 185,
- 164, 165, 186, 164, 165, 187, 164, 165,
- 188, 164, 165, 189, 164, 165, 190, 164,
- 165, 191, 164, 165, 192, 164, 193, 165,
- 164, 194, 165, 164, 165, 195, 164, 165,
- 196, 164, 165, 66, 164, 165, 198, 164,
- 165, 199, 164, 165, 200, 164, 165, 201,
- 164, 165, 202, 164, 165, 203, 164, 165,
- 204, 164, 165, 205, 164, 165, 206, 164,
- 165, 207, 164, 165, 208, 164, 165, 209,
- 164, 165, 210, 164, 165, 211, 164, 165,
- 212, 164, 165, 213, 164, 165, 196, 164,
- 165, 66, 180, 215, 164, 165, 216, 164,
- 165, 180, 164, 165, 218, 164, 165, 219,
- 164, 165, 180, 164, 221, 165, 164, 180,
- 165, 164, 165, 223, 164, 165, 224, 164,
- 165, 225, 164, 165, 226, 164, 165, 227,
- 164, 165, 180, 164, 229, 0, 230, 0,
- 231, 0, 232, 0, 233, 0, 234, 0,
- 235, 0, 236, 0, 237, 0, 238, 0,
- 239, 0, 240, 0, 241, 0, 242, 0,
- 243, 0, 244, 0, 245, 0, 246, 0,
- 248, 247, 248, 247, 248, 248, 4, 249,
- 263, 4, 264, 280, 287, 290, 293, 295,
- 290, 248, 247, 248, 250, 247, 248, 251,
- 247, 248, 252, 247, 248, 253, 247, 248,
- 254, 247, 248, 255, 247, 248, 256, 247,
- 248, 257, 247, 248, 258, 247, 248, 259,
- 247, 248, 260, 247, 248, 261, 247, 248,
- 262, 247, 248, 4, 247, 248, 66, 247,
- 248, 265, 247, 248, 266, 247, 248, 267,
- 247, 248, 268, 247, 248, 269, 247, 248,
- 270, 247, 248, 271, 247, 248, 272, 247,
- 248, 273, 247, 248, 274, 247, 248, 275,
- 247, 276, 248, 247, 277, 248, 247, 248,
- 278, 247, 248, 279, 247, 248, 66, 247,
- 248, 281, 247, 248, 282, 247, 248, 283,
- 247, 248, 284, 247, 248, 285, 247, 248,
- 286, 247, 248, 279, 247, 248, 66, 263,
- 288, 247, 248, 289, 247, 248, 263, 247,
- 248, 291, 247, 248, 292, 247, 248, 263,
- 247, 294, 248, 247, 263, 248, 247, 248,
- 296, 247, 248, 297, 247, 248, 298, 247,
- 248, 299, 247, 248, 300, 247, 248, 263,
- 247, 302, 0, 303, 0, 304, 0, 305,
- 0, 306, 0, 307, 0, 308, 0, 309,
- 0, 311, 310, 311, 310, 311, 311, 4,
- 312, 326, 4, 327, 343, 353, 363, 370,
- 373, 376, 378, 373, 311, 310, 311, 313,
- 310, 311, 314, 310, 311, 315, 310, 311,
- 316, 310, 311, 317, 310, 311, 318, 310,
- 311, 319, 310, 311, 320, 310, 311, 321,
- 310, 311, 322, 310, 311, 323, 310, 311,
- 324, 310, 311, 325, 310, 311, 4, 310,
- 311, 66, 310, 311, 328, 310, 311, 329,
- 310, 311, 330, 310, 311, 331, 310, 311,
- 332, 310, 311, 333, 310, 311, 334, 310,
- 311, 335, 310, 311, 336, 310, 311, 337,
- 310, 311, 338, 310, 339, 311, 310, 340,
- 311, 310, 311, 341, 310, 311, 342, 310,
- 311, 66, 310, 311, 344, 310, 311, 345,
- 310, 311, 346, 310, 311, 347, 310, 311,
- 348, 310, 311, 349, 310, 311, 350, 310,
- 311, 351, 310, 311, 352, 310, 311, 342,
- 310, 311, 354, 310, 311, 355, 310, 311,
- 356, 310, 311, 357, 310, 311, 358, 310,
- 311, 359, 310, 311, 360, 310, 311, 361,
- 310, 311, 362, 310, 311, 363, 310, 311,
- 364, 310, 311, 365, 310, 311, 366, 310,
- 311, 367, 310, 311, 368, 310, 311, 369,
- 310, 311, 342, 310, 311, 66, 326, 371,
- 310, 311, 372, 310, 311, 326, 310, 311,
- 374, 310, 311, 375, 310, 311, 326, 310,
- 377, 311, 310, 326, 311, 310, 311, 379,
- 310, 311, 380, 310, 311, 381, 310, 311,
- 382, 310, 311, 383, 310, 311, 326, 310,
- 32, 31, 385, 0, 386, 0, 31, 0,
- 388, 0, 389, 0, 31, 0, 391, 0,
- 31, 0, 393, 0, 394, 0, 395, 0,
- 396, 0, 397, 0, 31, 0, 398, 399,
- 398, 0, 403, 402, 401, 399, 402, 400,
- 0, 401, 399, 400, 0, 401, 400, 403,
- 402, 401, 399, 402, 400, 403, 403, 5,
- 15, 17, 31, 34, 37, 67, 152, 228,
- 301, 384, 387, 390, 392, 387, 398, 403,
- 0, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 29, 29, 35, 0, 43, 0, 43, 0,
- 43, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 29, 29, 35, 0, 43, 0, 43, 0,
- 43, 139, 48, 9, 106, 11, 0, 134,
- 45, 45, 45, 3, 122, 33, 33, 33,
- 0, 122, 33, 33, 33, 0, 122, 33,
- 0, 33, 0, 102, 7, 7, 43, 54,
- 0, 0, 43, 114, 25, 0, 54, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 149, 126,
- 57, 110, 23, 0, 43, 43, 43, 43,
- 0, 27, 118, 27, 27, 51, 27, 0,
- 54, 0, 1, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 81,
- 84, 81, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 21, 0, 130, 31, 60, 57,
- 31, 63, 57, 63, 63, 63, 63, 63,
- 63, 63, 63, 63, 63, 66, 31, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 69, 33,
- 69, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 13, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 72, 33, 84, 72, 84, 84,
- 84, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 15, 0, 54, 15, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 15, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 78, 33,
- 84, 78, 84, 84, 84, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 19, 0, 54, 19, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 19, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 19, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 75,
- 33, 84, 75, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 17, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 0, 43, 54, 37, 37, 87, 37, 37,
- 43, 0, 39, 0, 43, 0, 0, 54,
- 0, 0, 39, 0, 0, 54, 0, 93,
- 90, 41, 96, 90, 96, 96, 96, 96,
- 96, 96, 96, 96, 96, 96, 99, 0,
- 43, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 404;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/lu.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 993 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/lu.c.rl"
-
-#line 1000 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/lu.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/lu.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/lu.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/lu.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/lu.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/lu.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/lu.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/lu.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/lu.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/lu.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/lu.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/lu.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/lu.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/lu.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/lu.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/lu.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/lu.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/lu.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/lu.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/lu.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/lu.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/lu.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/lu.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/lu.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1290 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/lu.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1353 "ext/gherkin_lexer_lu/gherkin_lexer_lu.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/lu.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_lu()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Lu", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_lv/extconf.rb
index c80ffe6,c80ffe6..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_lv/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_lv")
--have_library("c", "main")
--create_makefile("gherkin_lexer_lv")
diff --cc ext/gherkin_lexer_lv/gherkin_lexer_lv.c
index 79247be,937a388..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_lv/gherkin_lexer_lv.c
+++ /dev/null
@@@ -1,1425 -1,1425 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 113, 114,
- 116, 117, 118, 119, 120, 121, 122, 123,
- 134, 136, 138, 140, 142, 144, 146, 148,
- 150, 152, 154, 156, 158, 160, 162, 165,
- 167, 169, 171, 173, 175, 193, 194, 196,
- 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 222, 224, 226, 228, 230,
- 232, 234, 236, 238, 240, 242, 244, 246,
- 248, 250, 252, 254, 256, 259, 261, 263,
- 265, 267, 269, 271, 273, 275, 277, 279,
- 281, 283, 285, 287, 289, 291, 293, 295,
- 297, 299, 301, 303, 305, 307, 309, 311,
- 313, 315, 317, 319, 321, 324, 326, 328,
- 330, 332, 334, 336, 338, 340, 342, 344,
- 346, 348, 350, 351, 352, 353, 354, 355,
- 356, 357, 358, 365, 368, 370, 372, 374,
- 376, 378, 380, 382, 384, 386, 388, 390,
- 392, 394, 396, 398, 400, 402, 404, 406,
- 407, 408, 409, 410, 411, 412, 414, 415,
- 416, 417, 418, 419, 420, 421, 422, 424,
- 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 434, 435, 436, 437, 438, 439, 454,
- 456, 458, 460, 462, 464, 466, 468, 470,
- 472, 474, 476, 478, 480, 482, 484, 486,
- 488, 491, 493, 495, 497, 499, 501, 503,
- 505, 507, 509, 511, 513, 515, 517, 519,
- 521, 523, 525, 527, 529, 531, 533, 535,
- 537, 539, 541, 543, 545, 547, 549, 551,
- 553, 555, 556, 557, 572, 574, 576, 578,
- 580, 582, 584, 586, 588, 590, 592, 594,
- 596, 598, 600, 602, 604, 606, 609, 611,
- 613, 615, 617, 619, 621, 623, 625, 627,
- 629, 631, 633, 635, 637, 639, 641, 643,
- 645, 647, 649, 652, 654, 656, 658, 660,
- 662, 664, 666, 668, 671, 673, 675, 677,
- 679, 681, 683, 685, 687, 690, 692, 694,
- 696, 698, 700, 702, 704, 706, 708, 710,
- 712, 714, 716, 718, 720, 722, 724, 726,
- 728, 730, 731, 732, 733, 734, 735, 736,
- 737, 738, 739, 740, 744, 750, 753, 755,
- 761, 779, 781, 783, 785, 787, 789, 791,
- 793, 795, 797, 799, 801, 803, 805, 807,
- 809, 811, 813, 815, 817, 819, 821, 823,
- 826, 828, 830, 832, 834, 836, 838, 840,
- 842, 844, 846, 849, 851, 853, 855, 857,
- 859, 861, 863, 865, 868, 870, 872, 874,
- 876, 878, 880, 882, 884, 886, 888, 890,
- 892, 894, 896, 898, 900, 902, 904, 905,
- 906, 907, 908, 909, 910, 911, 912, 913,
- 914, 915, 916, 917, 918
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 66, 70, 74, 75, 80, 83, 84, 85,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 66, 70, 74, 75,
- 80, 83, 84, 85, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 101, 116, -60, 117, -85, -60, -115, 97,
- 58, 10, 10, 10, 32, 35, 37, 64,
- 70, 75, 80, 83, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, -60, 10, 117, -85, 10, -60,
- 10, -115, 10, 10, 97, 10, 58, 10,
- 32, 34, 35, 37, 42, 64, 66, 70,
- 74, 75, 80, 83, 84, 85, 124, 9,
- 13, 97, 97, 111, 100, 110, 116, 101,
- 107, 115, 116, 115, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 66, 70, 74,
- 75, 83, 84, 85, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 101, 10, 116,
- -60, 10, 117, -85, 10, -60, 10, -115,
- 10, 10, 97, 10, 58, 10, 110, 10,
- 107, 10, 99, 10, 105, 10, 111, 10,
- 110, 10, 97, 10, 108, 10, 105, 10,
- 116, -60, 10, -127, 10, 10, 116, 10,
- 101, 10, 97, 10, 97, 10, 100, 10,
- 99, 10, 101, 10, 110, -60, 10, -127,
- 10, 10, 114, 10, 105, 10, 106, 10,
- 115, 10, 32, 58, 10, 112, -60, 10,
- -109, 10, 10, 99, 10, 32, 10, 112,
- 10, 97, 10, 114, 10, 97, 10, 117,
- 10, 103, 10, 110, 97, 105, 114, 97,
- 117, 103, 115, 58, 10, 10, 10, 32,
- 35, 70, 124, 9, 13, -60, 10, 117,
- -85, 10, -60, 10, -115, 10, 10, 97,
- 10, 58, 10, 110, 10, 107, 10, 99,
- 10, 105, 10, 111, 10, 110, 10, 97,
- 10, 108, 10, 105, 10, 116, -60, 10,
- -127, 10, 10, 116, 10, 101, 101, 109,
- -60, -109, 114, 105, 99, 105, 101, 110,
- -60, -127, 114, 105, 106, 115, 32, 58,
- 112, -60, -109, 99, 32, 112, 97, 114,
- 97, 117, 103, 97, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 66, 70, 74,
- 75, 83, 84, 85, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 101, 10, 116,
- -60, 10, 117, -85, 10, -60, 10, -115,
- 10, 10, 97, 10, 58, 10, 110, 10,
- 107, 10, 99, 10, 105, 10, 111, 10,
- 110, 10, 97, 10, 108, 10, 105, 10,
- 116, -60, 10, -127, 10, 10, 116, 10,
- 101, 10, 97, 10, 97, 10, 100, 10,
- 99, 10, 101, 10, 110, -60, 10, -127,
- 10, 10, 114, 10, 105, 10, 106, 10,
- 115, 10, 110, 10, 10, 10, 32, 35,
- 37, 42, 64, 66, 70, 74, 75, 83,
- 84, 85, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, 10, 101, 10, 116, -60, 10,
- 117, -85, 10, -60, 10, -115, 10, 10,
- 97, 10, 58, 10, 110, 10, 107, 10,
- 99, 10, 105, 10, 111, 10, 110, 10,
- 97, 10, 108, 10, 105, 10, 116, -60,
- 10, -127, 10, 10, 116, 10, 101, 10,
- 97, 10, 97, 111, 10, 100, 10, 110,
- 10, 116, 10, 101, 10, 107, 10, 115,
- 10, 116, 10, 115, 10, 99, 105, 10,
- 101, 10, 110, -60, 10, -127, 10, 10,
- 114, 10, 105, 10, 106, 10, 115, 10,
- 32, 58, 10, 112, -60, 10, -109, 10,
- 10, 99, 10, 32, 10, 112, 10, 97,
- 10, 114, 10, 97, 10, 117, 10, 103,
- 10, 116, 10, 117, -60, 10, -127, 10,
- 10, 99, 10, 105, 10, 106, 10, 97,
- 10, 110, 116, 117, -60, -127, 99, 105,
- 106, 97, 97, 110, 32, 124, 9, 13,
- 10, 32, 92, 124, 9, 13, 10, 92,
- 124, 10, 92, 10, 32, 92, 124, 9,
- 13, 10, 32, 34, 35, 37, 42, 64,
- 66, 70, 74, 75, 80, 83, 84, 85,
- 124, 9, 13, 10, 110, 10, 107, 10,
- 99, 10, 105, 10, 111, 10, 110, 10,
- 97, 10, 108, 10, 105, 10, 116, -60,
- 10, -127, 10, 10, 116, 10, 101, 10,
- 111, 10, 110, 10, 116, 10, 101, 10,
- 107, 10, 115, 10, 116, 10, 115, 10,
- 97, 105, 10, 114, 10, 97, 10, 117,
- 10, 103, 10, 101, 10, 109, -60, 10,
- -109, 10, 10, 114, 10, 105, 10, 99,
- 105, 10, 101, 10, 110, -60, 10, -127,
- 10, 10, 114, 10, 105, 10, 106, 10,
- 115, 10, 32, 58, 10, 112, -60, 10,
- -109, 10, 10, 99, 10, 32, 10, 112,
- 10, 97, 10, 114, 10, 97, 10, 117,
- 10, 103, 10, 116, 10, 117, -60, 10,
- -127, 10, 10, 99, 10, 105, 10, 106,
- 110, 107, 99, 105, 111, 110, 97, 108,
- 105, 116, -60, -127, 116, 101, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 2,
- 1, 1, 1, 1, 1, 1, 1, 9,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 16, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 13, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 5, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 13, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 13, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 2, 4, 3, 2, 4,
- 16, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 1, 0, 0, 1,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 139, 141,
- 144, 146, 148, 150, 152, 154, 156, 158,
- 169, 172, 175, 178, 181, 184, 187, 190,
- 193, 196, 199, 202, 205, 208, 211, 215,
- 218, 221, 224, 227, 230, 248, 250, 253,
- 255, 257, 259, 261, 263, 265, 267, 269,
- 271, 273, 275, 290, 293, 296, 299, 302,
- 305, 308, 311, 314, 317, 320, 323, 326,
- 329, 332, 335, 338, 341, 345, 348, 351,
- 354, 357, 360, 363, 366, 369, 372, 375,
- 378, 381, 384, 387, 390, 393, 396, 399,
- 402, 405, 408, 411, 414, 417, 420, 423,
- 426, 429, 432, 435, 438, 442, 445, 448,
- 451, 454, 457, 460, 463, 466, 469, 472,
- 475, 478, 481, 483, 485, 487, 489, 491,
- 493, 495, 497, 504, 508, 511, 514, 517,
- 520, 523, 526, 529, 532, 535, 538, 541,
- 544, 547, 550, 553, 556, 559, 562, 565,
- 567, 569, 571, 573, 575, 577, 580, 582,
- 584, 586, 588, 590, 592, 594, 596, 599,
- 601, 603, 605, 607, 609, 611, 613, 615,
- 617, 619, 621, 623, 625, 627, 629, 644,
- 647, 650, 653, 656, 659, 662, 665, 668,
- 671, 674, 677, 680, 683, 686, 689, 692,
- 695, 699, 702, 705, 708, 711, 714, 717,
- 720, 723, 726, 729, 732, 735, 738, 741,
- 744, 747, 750, 753, 756, 759, 762, 765,
- 768, 771, 774, 777, 780, 783, 786, 789,
- 792, 795, 797, 799, 814, 817, 820, 823,
- 826, 829, 832, 835, 838, 841, 844, 847,
- 850, 853, 856, 859, 862, 865, 869, 872,
- 875, 878, 881, 884, 887, 890, 893, 896,
- 899, 902, 905, 908, 911, 914, 917, 920,
- 923, 926, 929, 933, 936, 939, 942, 945,
- 948, 951, 954, 957, 961, 964, 967, 970,
- 973, 976, 979, 982, 985, 989, 992, 995,
- 998, 1001, 1004, 1007, 1010, 1013, 1016, 1019,
- 1022, 1025, 1028, 1031, 1034, 1037, 1040, 1043,
- 1046, 1049, 1051, 1053, 1055, 1057, 1059, 1061,
- 1063, 1065, 1067, 1069, 1073, 1079, 1083, 1086,
- 1092, 1110, 1113, 1116, 1119, 1122, 1125, 1128,
- 1131, 1134, 1137, 1140, 1143, 1146, 1149, 1152,
- 1155, 1158, 1161, 1164, 1167, 1170, 1173, 1176,
- 1180, 1183, 1186, 1189, 1192, 1195, 1198, 1201,
- 1204, 1207, 1210, 1214, 1217, 1220, 1223, 1226,
- 1229, 1232, 1235, 1238, 1242, 1245, 1248, 1251,
- 1254, 1257, 1260, 1263, 1266, 1269, 1272, 1275,
- 1278, 1281, 1284, 1287, 1290, 1293, 1296, 1298,
- 1300, 1302, 1304, 1306, 1308, 1310, 1312, 1314,
- 1316, 1318, 1320, 1322, 1324
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 39, 69, 70, 145, 181, 345, 346,
- 347, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 39,
- 69, 70, 145, 181, 345, 346, 347, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 428, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 0, 31, 0, 40, 414, 0,
- 41, 0, 42, 0, 43, 0, 44, 0,
- 45, 0, 47, 46, 47, 46, 47, 47,
- 4, 48, 4, 62, 367, 375, 386, 47,
- 46, 47, 49, 46, 47, 50, 46, 47,
- 51, 46, 47, 52, 46, 47, 53, 46,
- 47, 54, 46, 47, 55, 46, 47, 56,
- 46, 47, 57, 46, 47, 58, 46, 47,
- 59, 46, 47, 60, 46, 47, 61, 46,
- 47, 4, 46, 63, 47, 353, 46, 64,
- 47, 46, 65, 47, 46, 66, 47, 46,
- 47, 67, 46, 47, 68, 46, 4, 4,
- 5, 15, 17, 31, 34, 37, 39, 69,
- 70, 145, 181, 345, 346, 347, 4, 0,
- 31, 0, 71, 72, 0, 31, 0, 73,
- 0, 74, 0, 75, 0, 76, 0, 77,
- 0, 78, 0, 79, 0, 80, 0, 82,
- 81, 82, 81, 82, 82, 4, 83, 97,
- 4, 98, 100, 120, 121, 123, 121, 144,
- 82, 81, 82, 84, 81, 82, 85, 81,
- 82, 86, 81, 82, 87, 81, 82, 88,
- 81, 82, 89, 81, 82, 90, 81, 82,
- 91, 81, 82, 92, 81, 82, 93, 81,
- 82, 94, 81, 82, 95, 81, 82, 96,
- 81, 82, 4, 81, 82, 68, 81, 82,
- 99, 81, 82, 97, 81, 101, 82, 106,
- 81, 102, 82, 81, 103, 82, 81, 104,
- 82, 81, 82, 105, 81, 82, 68, 81,
- 82, 107, 81, 82, 108, 81, 82, 109,
- 81, 82, 110, 81, 82, 111, 81, 82,
- 112, 81, 82, 113, 81, 82, 114, 81,
- 82, 115, 81, 82, 116, 81, 117, 82,
- 81, 118, 82, 81, 82, 119, 81, 82,
- 105, 81, 82, 97, 81, 82, 122, 81,
- 82, 97, 81, 82, 124, 81, 82, 125,
- 81, 82, 126, 81, 127, 82, 81, 128,
- 82, 81, 82, 129, 81, 82, 130, 81,
- 82, 131, 81, 82, 132, 81, 82, 133,
- 68, 81, 82, 134, 81, 135, 82, 81,
- 136, 82, 81, 82, 137, 81, 82, 138,
- 81, 82, 139, 81, 82, 140, 81, 82,
- 141, 81, 82, 142, 81, 82, 143, 81,
- 82, 104, 81, 82, 97, 81, 146, 175,
- 0, 147, 0, 148, 0, 149, 0, 150,
- 0, 151, 0, 152, 0, 154, 153, 154,
- 153, 154, 154, 4, 155, 4, 154, 153,
- 156, 154, 161, 153, 157, 154, 153, 158,
- 154, 153, 159, 154, 153, 154, 160, 153,
- 154, 68, 153, 154, 162, 153, 154, 163,
- 153, 154, 164, 153, 154, 165, 153, 154,
- 166, 153, 154, 167, 153, 154, 168, 153,
- 154, 169, 153, 154, 170, 153, 154, 171,
- 153, 172, 154, 153, 173, 154, 153, 154,
- 174, 153, 154, 160, 153, 176, 0, 177,
- 0, 178, 0, 179, 0, 180, 0, 151,
- 0, 182, 337, 0, 183, 0, 184, 0,
- 185, 0, 186, 0, 187, 0, 188, 0,
- 189, 0, 190, 0, 191, 257, 0, 192,
- 0, 193, 0, 194, 0, 195, 0, 196,
- 0, 197, 0, 198, 0, 199, 0, 200,
- 0, 201, 0, 202, 0, 203, 0, 204,
- 0, 206, 205, 206, 205, 206, 206, 4,
- 207, 221, 4, 222, 224, 244, 245, 247,
- 245, 256, 206, 205, 206, 208, 205, 206,
- 209, 205, 206, 210, 205, 206, 211, 205,
- 206, 212, 205, 206, 213, 205, 206, 214,
- 205, 206, 215, 205, 206, 216, 205, 206,
- 217, 205, 206, 218, 205, 206, 219, 205,
- 206, 220, 205, 206, 4, 205, 206, 68,
- 205, 206, 223, 205, 206, 221, 205, 225,
- 206, 230, 205, 226, 206, 205, 227, 206,
- 205, 228, 206, 205, 206, 229, 205, 206,
- 68, 205, 206, 231, 205, 206, 232, 205,
- 206, 233, 205, 206, 234, 205, 206, 235,
- 205, 206, 236, 205, 206, 237, 205, 206,
- 238, 205, 206, 239, 205, 206, 240, 205,
- 241, 206, 205, 242, 206, 205, 206, 243,
- 205, 206, 229, 205, 206, 221, 205, 206,
- 246, 205, 206, 221, 205, 206, 248, 205,
- 206, 249, 205, 206, 250, 205, 251, 206,
- 205, 252, 206, 205, 206, 253, 205, 206,
- 254, 205, 206, 255, 205, 206, 229, 205,
- 206, 221, 205, 259, 258, 259, 258, 259,
- 259, 4, 260, 274, 4, 275, 277, 297,
- 298, 307, 335, 336, 259, 258, 259, 261,
- 258, 259, 262, 258, 259, 263, 258, 259,
- 264, 258, 259, 265, 258, 259, 266, 258,
- 259, 267, 258, 259, 268, 258, 259, 269,
- 258, 259, 270, 258, 259, 271, 258, 259,
- 272, 258, 259, 273, 258, 259, 4, 258,
- 259, 68, 258, 259, 276, 258, 259, 274,
- 258, 278, 259, 283, 258, 279, 259, 258,
- 280, 259, 258, 281, 259, 258, 259, 282,
- 258, 259, 68, 258, 259, 284, 258, 259,
- 285, 258, 259, 286, 258, 259, 287, 258,
- 259, 288, 258, 259, 289, 258, 259, 290,
- 258, 259, 291, 258, 259, 292, 258, 259,
- 293, 258, 294, 259, 258, 295, 259, 258,
- 259, 296, 258, 259, 282, 258, 259, 274,
- 258, 259, 299, 300, 258, 259, 274, 258,
- 259, 301, 258, 259, 302, 258, 259, 303,
- 258, 259, 304, 258, 259, 305, 258, 259,
- 306, 258, 259, 282, 258, 259, 308, 328,
- 258, 259, 309, 258, 259, 310, 258, 311,
- 259, 258, 312, 259, 258, 259, 313, 258,
- 259, 314, 258, 259, 315, 258, 259, 316,
- 258, 259, 317, 68, 258, 259, 318, 258,
- 319, 259, 258, 320, 259, 258, 259, 321,
- 258, 259, 322, 258, 259, 323, 258, 259,
- 324, 258, 259, 325, 258, 259, 326, 258,
- 259, 327, 258, 259, 281, 258, 259, 329,
- 258, 259, 330, 258, 331, 259, 258, 332,
- 259, 258, 259, 333, 258, 259, 334, 258,
- 259, 281, 258, 259, 299, 258, 259, 274,
- 258, 338, 0, 339, 0, 340, 0, 341,
- 0, 342, 0, 343, 0, 344, 0, 79,
- 0, 71, 0, 31, 0, 347, 348, 347,
- 0, 352, 351, 350, 348, 351, 349, 0,
- 350, 348, 349, 0, 350, 349, 352, 351,
- 350, 348, 351, 349, 352, 352, 5, 15,
- 17, 31, 34, 37, 39, 69, 70, 145,
- 181, 345, 346, 347, 352, 0, 47, 354,
- 46, 47, 355, 46, 47, 356, 46, 47,
- 357, 46, 47, 358, 46, 47, 359, 46,
- 47, 360, 46, 47, 361, 46, 47, 362,
- 46, 47, 363, 46, 364, 47, 46, 365,
- 47, 46, 47, 366, 46, 47, 67, 46,
- 47, 368, 46, 47, 369, 46, 47, 370,
- 46, 47, 371, 46, 47, 372, 46, 47,
- 373, 46, 47, 374, 46, 47, 67, 46,
- 47, 376, 380, 46, 47, 377, 46, 47,
- 378, 46, 47, 379, 46, 47, 374, 46,
- 47, 381, 46, 47, 382, 46, 383, 47,
- 46, 384, 47, 46, 47, 385, 46, 47,
- 67, 46, 47, 387, 407, 46, 47, 388,
- 46, 47, 389, 46, 390, 47, 46, 391,
- 47, 46, 47, 392, 46, 47, 393, 46,
- 47, 394, 46, 47, 395, 46, 47, 396,
- 68, 46, 47, 397, 46, 398, 47, 46,
- 399, 47, 46, 47, 400, 46, 47, 401,
- 46, 47, 402, 46, 47, 403, 46, 47,
- 404, 46, 47, 405, 46, 47, 406, 46,
- 47, 66, 46, 47, 408, 46, 47, 409,
- 46, 410, 47, 46, 411, 47, 46, 47,
- 412, 46, 47, 413, 46, 47, 66, 46,
- 415, 0, 416, 0, 417, 0, 418, 0,
- 419, 0, 420, 0, 421, 0, 422, 0,
- 423, 0, 424, 0, 425, 0, 426, 0,
- 427, 0, 44, 0, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 69, 33, 69, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 13, 0, 130, 31,
- 60, 57, 31, 63, 57, 63, 63, 63,
- 63, 63, 63, 63, 63, 66, 31, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 72, 33, 84,
- 72, 84, 84, 84, 84, 84, 84, 84,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 15, 0, 54, 15, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 15, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 15, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 81, 84, 81, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 21, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 78,
- 33, 84, 78, 84, 84, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 19, 0, 54, 19,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 19, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 144, 57, 54, 0, 54,
- 0, 75, 33, 84, 75, 84, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 17, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 17, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 17, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 0,
- 43, 54, 37, 37, 87, 37, 37, 43,
- 0, 39, 0, 43, 0, 0, 54, 0,
- 0, 39, 0, 0, 54, 0, 93, 90,
- 41, 96, 90, 96, 96, 96, 96, 96,
- 96, 96, 96, 99, 0, 43, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 13, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 428;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 1029 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
-
- #line 1036 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1326 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1389 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/lv.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_lv()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Lv", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/lv.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/lv.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 113, 114,
- 116, 117, 118, 119, 120, 121, 122, 123,
- 134, 136, 138, 140, 142, 144, 146, 148,
- 150, 152, 154, 156, 158, 160, 162, 165,
- 167, 169, 171, 173, 175, 193, 194, 196,
- 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 222, 224, 226, 228, 230,
- 232, 234, 236, 238, 240, 242, 244, 246,
- 248, 250, 252, 254, 256, 259, 261, 263,
- 265, 267, 269, 271, 273, 275, 277, 279,
- 281, 283, 285, 287, 289, 291, 293, 295,
- 297, 299, 301, 303, 305, 307, 309, 311,
- 313, 315, 317, 319, 321, 324, 326, 328,
- 330, 332, 334, 336, 338, 340, 342, 344,
- 346, 348, 350, 351, 352, 353, 354, 355,
- 356, 357, 358, 365, 368, 370, 372, 374,
- 376, 378, 380, 382, 384, 386, 388, 390,
- 392, 394, 396, 398, 400, 402, 404, 406,
- 407, 408, 409, 410, 411, 412, 414, 415,
- 416, 417, 418, 419, 420, 421, 422, 424,
- 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 434, 435, 436, 437, 438, 439, 454,
- 456, 458, 460, 462, 464, 466, 468, 470,
- 472, 474, 476, 478, 480, 482, 484, 486,
- 488, 491, 493, 495, 497, 499, 501, 503,
- 505, 507, 509, 511, 513, 515, 517, 519,
- 521, 523, 525, 527, 529, 531, 533, 535,
- 537, 539, 541, 543, 545, 547, 549, 551,
- 553, 555, 556, 557, 572, 574, 576, 578,
- 580, 582, 584, 586, 588, 590, 592, 594,
- 596, 598, 600, 602, 604, 606, 609, 611,
- 613, 615, 617, 619, 621, 623, 625, 627,
- 629, 631, 633, 635, 637, 639, 641, 643,
- 645, 647, 649, 652, 654, 656, 658, 660,
- 662, 664, 666, 668, 671, 673, 675, 677,
- 679, 681, 683, 685, 687, 690, 692, 694,
- 696, 698, 700, 702, 704, 706, 708, 710,
- 712, 714, 716, 718, 720, 722, 724, 726,
- 728, 730, 731, 732, 733, 734, 735, 736,
- 737, 738, 739, 740, 744, 750, 753, 755,
- 761, 779, 781, 783, 785, 787, 789, 791,
- 793, 795, 797, 799, 801, 803, 805, 807,
- 809, 811, 813, 815, 817, 819, 821, 823,
- 826, 828, 830, 832, 834, 836, 838, 840,
- 842, 844, 846, 849, 851, 853, 855, 857,
- 859, 861, 863, 865, 868, 870, 872, 874,
- 876, 878, 880, 882, 884, 886, 888, 890,
- 892, 894, 896, 898, 900, 902, 904, 905,
- 906, 907, 908, 909, 910, 911, 912, 913,
- 914, 915, 916, 917, 918
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 66, 70, 74, 75, 80, 83, 84, 85,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 66, 70, 74, 75,
- 80, 83, 84, 85, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 101, 116, -60, 117, -85, -60, -115, 97,
- 58, 10, 10, 10, 32, 35, 37, 64,
- 70, 75, 80, 83, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, -60, 10, 117, -85, 10, -60,
- 10, -115, 10, 10, 97, 10, 58, 10,
- 32, 34, 35, 37, 42, 64, 66, 70,
- 74, 75, 80, 83, 84, 85, 124, 9,
- 13, 97, 97, 111, 100, 110, 116, 101,
- 107, 115, 116, 115, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 66, 70, 74,
- 75, 83, 84, 85, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 101, 10, 116,
- -60, 10, 117, -85, 10, -60, 10, -115,
- 10, 10, 97, 10, 58, 10, 110, 10,
- 107, 10, 99, 10, 105, 10, 111, 10,
- 110, 10, 97, 10, 108, 10, 105, 10,
- 116, -60, 10, -127, 10, 10, 116, 10,
- 101, 10, 97, 10, 97, 10, 100, 10,
- 99, 10, 101, 10, 110, -60, 10, -127,
- 10, 10, 114, 10, 105, 10, 106, 10,
- 115, 10, 32, 58, 10, 112, -60, 10,
- -109, 10, 10, 99, 10, 32, 10, 112,
- 10, 97, 10, 114, 10, 97, 10, 117,
- 10, 103, 10, 110, 97, 105, 114, 97,
- 117, 103, 115, 58, 10, 10, 10, 32,
- 35, 70, 124, 9, 13, -60, 10, 117,
- -85, 10, -60, 10, -115, 10, 10, 97,
- 10, 58, 10, 110, 10, 107, 10, 99,
- 10, 105, 10, 111, 10, 110, 10, 97,
- 10, 108, 10, 105, 10, 116, -60, 10,
- -127, 10, 10, 116, 10, 101, 101, 109,
- -60, -109, 114, 105, 99, 105, 101, 110,
- -60, -127, 114, 105, 106, 115, 32, 58,
- 112, -60, -109, 99, 32, 112, 97, 114,
- 97, 117, 103, 97, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 66, 70, 74,
- 75, 83, 84, 85, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 101, 10, 116,
- -60, 10, 117, -85, 10, -60, 10, -115,
- 10, 10, 97, 10, 58, 10, 110, 10,
- 107, 10, 99, 10, 105, 10, 111, 10,
- 110, 10, 97, 10, 108, 10, 105, 10,
- 116, -60, 10, -127, 10, 10, 116, 10,
- 101, 10, 97, 10, 97, 10, 100, 10,
- 99, 10, 101, 10, 110, -60, 10, -127,
- 10, 10, 114, 10, 105, 10, 106, 10,
- 115, 10, 110, 10, 10, 10, 32, 35,
- 37, 42, 64, 66, 70, 74, 75, 83,
- 84, 85, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, 10, 101, 10, 116, -60, 10,
- 117, -85, 10, -60, 10, -115, 10, 10,
- 97, 10, 58, 10, 110, 10, 107, 10,
- 99, 10, 105, 10, 111, 10, 110, 10,
- 97, 10, 108, 10, 105, 10, 116, -60,
- 10, -127, 10, 10, 116, 10, 101, 10,
- 97, 10, 97, 111, 10, 100, 10, 110,
- 10, 116, 10, 101, 10, 107, 10, 115,
- 10, 116, 10, 115, 10, 99, 105, 10,
- 101, 10, 110, -60, 10, -127, 10, 10,
- 114, 10, 105, 10, 106, 10, 115, 10,
- 32, 58, 10, 112, -60, 10, -109, 10,
- 10, 99, 10, 32, 10, 112, 10, 97,
- 10, 114, 10, 97, 10, 117, 10, 103,
- 10, 116, 10, 117, -60, 10, -127, 10,
- 10, 99, 10, 105, 10, 106, 10, 97,
- 10, 110, 116, 117, -60, -127, 99, 105,
- 106, 97, 97, 110, 32, 124, 9, 13,
- 10, 32, 92, 124, 9, 13, 10, 92,
- 124, 10, 92, 10, 32, 92, 124, 9,
- 13, 10, 32, 34, 35, 37, 42, 64,
- 66, 70, 74, 75, 80, 83, 84, 85,
- 124, 9, 13, 10, 110, 10, 107, 10,
- 99, 10, 105, 10, 111, 10, 110, 10,
- 97, 10, 108, 10, 105, 10, 116, -60,
- 10, -127, 10, 10, 116, 10, 101, 10,
- 111, 10, 110, 10, 116, 10, 101, 10,
- 107, 10, 115, 10, 116, 10, 115, 10,
- 97, 105, 10, 114, 10, 97, 10, 117,
- 10, 103, 10, 101, 10, 109, -60, 10,
- -109, 10, 10, 114, 10, 105, 10, 99,
- 105, 10, 101, 10, 110, -60, 10, -127,
- 10, 10, 114, 10, 105, 10, 106, 10,
- 115, 10, 32, 58, 10, 112, -60, 10,
- -109, 10, 10, 99, 10, 32, 10, 112,
- 10, 97, 10, 114, 10, 97, 10, 117,
- 10, 103, 10, 116, 10, 117, -60, 10,
- -127, 10, 10, 99, 10, 105, 10, 106,
- 110, 107, 99, 105, 111, 110, 97, 108,
- 105, 116, -60, -127, 116, 101, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 2,
- 1, 1, 1, 1, 1, 1, 1, 9,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 16, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 13, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 5, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 13, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 13, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 2, 4, 3, 2, 4,
- 16, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 1, 0, 0, 1,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 139, 141,
- 144, 146, 148, 150, 152, 154, 156, 158,
- 169, 172, 175, 178, 181, 184, 187, 190,
- 193, 196, 199, 202, 205, 208, 211, 215,
- 218, 221, 224, 227, 230, 248, 250, 253,
- 255, 257, 259, 261, 263, 265, 267, 269,
- 271, 273, 275, 290, 293, 296, 299, 302,
- 305, 308, 311, 314, 317, 320, 323, 326,
- 329, 332, 335, 338, 341, 345, 348, 351,
- 354, 357, 360, 363, 366, 369, 372, 375,
- 378, 381, 384, 387, 390, 393, 396, 399,
- 402, 405, 408, 411, 414, 417, 420, 423,
- 426, 429, 432, 435, 438, 442, 445, 448,
- 451, 454, 457, 460, 463, 466, 469, 472,
- 475, 478, 481, 483, 485, 487, 489, 491,
- 493, 495, 497, 504, 508, 511, 514, 517,
- 520, 523, 526, 529, 532, 535, 538, 541,
- 544, 547, 550, 553, 556, 559, 562, 565,
- 567, 569, 571, 573, 575, 577, 580, 582,
- 584, 586, 588, 590, 592, 594, 596, 599,
- 601, 603, 605, 607, 609, 611, 613, 615,
- 617, 619, 621, 623, 625, 627, 629, 644,
- 647, 650, 653, 656, 659, 662, 665, 668,
- 671, 674, 677, 680, 683, 686, 689, 692,
- 695, 699, 702, 705, 708, 711, 714, 717,
- 720, 723, 726, 729, 732, 735, 738, 741,
- 744, 747, 750, 753, 756, 759, 762, 765,
- 768, 771, 774, 777, 780, 783, 786, 789,
- 792, 795, 797, 799, 814, 817, 820, 823,
- 826, 829, 832, 835, 838, 841, 844, 847,
- 850, 853, 856, 859, 862, 865, 869, 872,
- 875, 878, 881, 884, 887, 890, 893, 896,
- 899, 902, 905, 908, 911, 914, 917, 920,
- 923, 926, 929, 933, 936, 939, 942, 945,
- 948, 951, 954, 957, 961, 964, 967, 970,
- 973, 976, 979, 982, 985, 989, 992, 995,
- 998, 1001, 1004, 1007, 1010, 1013, 1016, 1019,
- 1022, 1025, 1028, 1031, 1034, 1037, 1040, 1043,
- 1046, 1049, 1051, 1053, 1055, 1057, 1059, 1061,
- 1063, 1065, 1067, 1069, 1073, 1079, 1083, 1086,
- 1092, 1110, 1113, 1116, 1119, 1122, 1125, 1128,
- 1131, 1134, 1137, 1140, 1143, 1146, 1149, 1152,
- 1155, 1158, 1161, 1164, 1167, 1170, 1173, 1176,
- 1180, 1183, 1186, 1189, 1192, 1195, 1198, 1201,
- 1204, 1207, 1210, 1214, 1217, 1220, 1223, 1226,
- 1229, 1232, 1235, 1238, 1242, 1245, 1248, 1251,
- 1254, 1257, 1260, 1263, 1266, 1269, 1272, 1275,
- 1278, 1281, 1284, 1287, 1290, 1293, 1296, 1298,
- 1300, 1302, 1304, 1306, 1308, 1310, 1312, 1314,
- 1316, 1318, 1320, 1322, 1324
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 39, 69, 70, 145, 181, 345, 346,
- 347, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 39,
- 69, 70, 145, 181, 345, 346, 347, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 428, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 0, 31, 0, 40, 414, 0,
- 41, 0, 42, 0, 43, 0, 44, 0,
- 45, 0, 47, 46, 47, 46, 47, 47,
- 4, 48, 4, 62, 367, 375, 386, 47,
- 46, 47, 49, 46, 47, 50, 46, 47,
- 51, 46, 47, 52, 46, 47, 53, 46,
- 47, 54, 46, 47, 55, 46, 47, 56,
- 46, 47, 57, 46, 47, 58, 46, 47,
- 59, 46, 47, 60, 46, 47, 61, 46,
- 47, 4, 46, 63, 47, 353, 46, 64,
- 47, 46, 65, 47, 46, 66, 47, 46,
- 47, 67, 46, 47, 68, 46, 4, 4,
- 5, 15, 17, 31, 34, 37, 39, 69,
- 70, 145, 181, 345, 346, 347, 4, 0,
- 31, 0, 71, 72, 0, 31, 0, 73,
- 0, 74, 0, 75, 0, 76, 0, 77,
- 0, 78, 0, 79, 0, 80, 0, 82,
- 81, 82, 81, 82, 82, 4, 83, 97,
- 4, 98, 100, 120, 121, 123, 121, 144,
- 82, 81, 82, 84, 81, 82, 85, 81,
- 82, 86, 81, 82, 87, 81, 82, 88,
- 81, 82, 89, 81, 82, 90, 81, 82,
- 91, 81, 82, 92, 81, 82, 93, 81,
- 82, 94, 81, 82, 95, 81, 82, 96,
- 81, 82, 4, 81, 82, 68, 81, 82,
- 99, 81, 82, 97, 81, 101, 82, 106,
- 81, 102, 82, 81, 103, 82, 81, 104,
- 82, 81, 82, 105, 81, 82, 68, 81,
- 82, 107, 81, 82, 108, 81, 82, 109,
- 81, 82, 110, 81, 82, 111, 81, 82,
- 112, 81, 82, 113, 81, 82, 114, 81,
- 82, 115, 81, 82, 116, 81, 117, 82,
- 81, 118, 82, 81, 82, 119, 81, 82,
- 105, 81, 82, 97, 81, 82, 122, 81,
- 82, 97, 81, 82, 124, 81, 82, 125,
- 81, 82, 126, 81, 127, 82, 81, 128,
- 82, 81, 82, 129, 81, 82, 130, 81,
- 82, 131, 81, 82, 132, 81, 82, 133,
- 68, 81, 82, 134, 81, 135, 82, 81,
- 136, 82, 81, 82, 137, 81, 82, 138,
- 81, 82, 139, 81, 82, 140, 81, 82,
- 141, 81, 82, 142, 81, 82, 143, 81,
- 82, 104, 81, 82, 97, 81, 146, 175,
- 0, 147, 0, 148, 0, 149, 0, 150,
- 0, 151, 0, 152, 0, 154, 153, 154,
- 153, 154, 154, 4, 155, 4, 154, 153,
- 156, 154, 161, 153, 157, 154, 153, 158,
- 154, 153, 159, 154, 153, 154, 160, 153,
- 154, 68, 153, 154, 162, 153, 154, 163,
- 153, 154, 164, 153, 154, 165, 153, 154,
- 166, 153, 154, 167, 153, 154, 168, 153,
- 154, 169, 153, 154, 170, 153, 154, 171,
- 153, 172, 154, 153, 173, 154, 153, 154,
- 174, 153, 154, 160, 153, 176, 0, 177,
- 0, 178, 0, 179, 0, 180, 0, 151,
- 0, 182, 337, 0, 183, 0, 184, 0,
- 185, 0, 186, 0, 187, 0, 188, 0,
- 189, 0, 190, 0, 191, 257, 0, 192,
- 0, 193, 0, 194, 0, 195, 0, 196,
- 0, 197, 0, 198, 0, 199, 0, 200,
- 0, 201, 0, 202, 0, 203, 0, 204,
- 0, 206, 205, 206, 205, 206, 206, 4,
- 207, 221, 4, 222, 224, 244, 245, 247,
- 245, 256, 206, 205, 206, 208, 205, 206,
- 209, 205, 206, 210, 205, 206, 211, 205,
- 206, 212, 205, 206, 213, 205, 206, 214,
- 205, 206, 215, 205, 206, 216, 205, 206,
- 217, 205, 206, 218, 205, 206, 219, 205,
- 206, 220, 205, 206, 4, 205, 206, 68,
- 205, 206, 223, 205, 206, 221, 205, 225,
- 206, 230, 205, 226, 206, 205, 227, 206,
- 205, 228, 206, 205, 206, 229, 205, 206,
- 68, 205, 206, 231, 205, 206, 232, 205,
- 206, 233, 205, 206, 234, 205, 206, 235,
- 205, 206, 236, 205, 206, 237, 205, 206,
- 238, 205, 206, 239, 205, 206, 240, 205,
- 241, 206, 205, 242, 206, 205, 206, 243,
- 205, 206, 229, 205, 206, 221, 205, 206,
- 246, 205, 206, 221, 205, 206, 248, 205,
- 206, 249, 205, 206, 250, 205, 251, 206,
- 205, 252, 206, 205, 206, 253, 205, 206,
- 254, 205, 206, 255, 205, 206, 229, 205,
- 206, 221, 205, 259, 258, 259, 258, 259,
- 259, 4, 260, 274, 4, 275, 277, 297,
- 298, 307, 335, 336, 259, 258, 259, 261,
- 258, 259, 262, 258, 259, 263, 258, 259,
- 264, 258, 259, 265, 258, 259, 266, 258,
- 259, 267, 258, 259, 268, 258, 259, 269,
- 258, 259, 270, 258, 259, 271, 258, 259,
- 272, 258, 259, 273, 258, 259, 4, 258,
- 259, 68, 258, 259, 276, 258, 259, 274,
- 258, 278, 259, 283, 258, 279, 259, 258,
- 280, 259, 258, 281, 259, 258, 259, 282,
- 258, 259, 68, 258, 259, 284, 258, 259,
- 285, 258, 259, 286, 258, 259, 287, 258,
- 259, 288, 258, 259, 289, 258, 259, 290,
- 258, 259, 291, 258, 259, 292, 258, 259,
- 293, 258, 294, 259, 258, 295, 259, 258,
- 259, 296, 258, 259, 282, 258, 259, 274,
- 258, 259, 299, 300, 258, 259, 274, 258,
- 259, 301, 258, 259, 302, 258, 259, 303,
- 258, 259, 304, 258, 259, 305, 258, 259,
- 306, 258, 259, 282, 258, 259, 308, 328,
- 258, 259, 309, 258, 259, 310, 258, 311,
- 259, 258, 312, 259, 258, 259, 313, 258,
- 259, 314, 258, 259, 315, 258, 259, 316,
- 258, 259, 317, 68, 258, 259, 318, 258,
- 319, 259, 258, 320, 259, 258, 259, 321,
- 258, 259, 322, 258, 259, 323, 258, 259,
- 324, 258, 259, 325, 258, 259, 326, 258,
- 259, 327, 258, 259, 281, 258, 259, 329,
- 258, 259, 330, 258, 331, 259, 258, 332,
- 259, 258, 259, 333, 258, 259, 334, 258,
- 259, 281, 258, 259, 299, 258, 259, 274,
- 258, 338, 0, 339, 0, 340, 0, 341,
- 0, 342, 0, 343, 0, 344, 0, 79,
- 0, 71, 0, 31, 0, 347, 348, 347,
- 0, 352, 351, 350, 348, 351, 349, 0,
- 350, 348, 349, 0, 350, 349, 352, 351,
- 350, 348, 351, 349, 352, 352, 5, 15,
- 17, 31, 34, 37, 39, 69, 70, 145,
- 181, 345, 346, 347, 352, 0, 47, 354,
- 46, 47, 355, 46, 47, 356, 46, 47,
- 357, 46, 47, 358, 46, 47, 359, 46,
- 47, 360, 46, 47, 361, 46, 47, 362,
- 46, 47, 363, 46, 364, 47, 46, 365,
- 47, 46, 47, 366, 46, 47, 67, 46,
- 47, 368, 46, 47, 369, 46, 47, 370,
- 46, 47, 371, 46, 47, 372, 46, 47,
- 373, 46, 47, 374, 46, 47, 67, 46,
- 47, 376, 380, 46, 47, 377, 46, 47,
- 378, 46, 47, 379, 46, 47, 374, 46,
- 47, 381, 46, 47, 382, 46, 383, 47,
- 46, 384, 47, 46, 47, 385, 46, 47,
- 67, 46, 47, 387, 407, 46, 47, 388,
- 46, 47, 389, 46, 390, 47, 46, 391,
- 47, 46, 47, 392, 46, 47, 393, 46,
- 47, 394, 46, 47, 395, 46, 47, 396,
- 68, 46, 47, 397, 46, 398, 47, 46,
- 399, 47, 46, 47, 400, 46, 47, 401,
- 46, 47, 402, 46, 47, 403, 46, 47,
- 404, 46, 47, 405, 46, 47, 406, 46,
- 47, 66, 46, 47, 408, 46, 47, 409,
- 46, 410, 47, 46, 411, 47, 46, 47,
- 412, 46, 47, 413, 46, 47, 66, 46,
- 415, 0, 416, 0, 417, 0, 418, 0,
- 419, 0, 420, 0, 421, 0, 422, 0,
- 423, 0, 424, 0, 425, 0, 426, 0,
- 427, 0, 44, 0, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 69, 33, 69, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 13, 0, 130, 31,
- 60, 57, 31, 63, 57, 63, 63, 63,
- 63, 63, 63, 63, 63, 66, 31, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 72, 33, 84,
- 72, 84, 84, 84, 84, 84, 84, 84,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 15, 0, 54, 15, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 15, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 15, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 81, 84, 81, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 21, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 78,
- 33, 84, 78, 84, 84, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 19, 0, 54, 19,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 19, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 144, 57, 54, 0, 54,
- 0, 75, 33, 84, 75, 84, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 17, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 17, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 17, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 0,
- 43, 54, 37, 37, 87, 37, 37, 43,
- 0, 39, 0, 43, 0, 0, 54, 0,
- 0, 39, 0, 0, 54, 0, 93, 90,
- 41, 96, 90, 96, 96, 96, 96, 96,
- 96, 96, 96, 99, 0, 43, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 13, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 428;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/lv.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 1029 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/lv.c.rl"
-
-#line 1036 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/lv.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/lv.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/lv.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/lv.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/lv.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/lv.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/lv.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/lv.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/lv.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/lv.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/lv.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/lv.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/lv.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/lv.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/lv.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/lv.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/lv.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/lv.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/lv.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/lv.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/lv.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/lv.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/lv.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/lv.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1326 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/lv.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1389 "ext/gherkin_lexer_lv/gherkin_lexer_lv.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/lv.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_lv()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Lv", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_nl/extconf.rb
index e2a09bb,e2a09bb..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_nl/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_nl")
--have_library("c", "main")
--create_makefile("gherkin_lexer_nl")
diff --cc ext/gherkin_lexer_nl/gherkin_lexer_nl.c
index 3bb2a41,bde5df0..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_nl/gherkin_lexer_nl.c
+++ /dev/null
@@@ -1,1368 -1,1368 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 148, 150, 152, 154, 156, 158, 160,
- 162, 164, 166, 168, 170, 172, 174, 176,
- 178, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 207, 208, 209, 210,
- 211, 212, 213, 214, 215, 226, 228, 230,
- 232, 234, 236, 238, 240, 242, 244, 246,
- 248, 250, 252, 254, 257, 259, 261, 263,
- 265, 267, 269, 271, 273, 275, 277, 279,
- 281, 283, 285, 287, 289, 291, 293, 295,
- 297, 299, 301, 303, 305, 307, 309, 311,
- 313, 315, 317, 319, 321, 323, 325, 327,
- 329, 331, 333, 335, 337, 339, 341, 343,
- 345, 347, 349, 351, 353, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374,
- 389, 391, 393, 395, 397, 399, 401, 403,
- 405, 407, 409, 411, 413, 415, 417, 419,
- 423, 425, 427, 429, 431, 433, 435, 437,
- 439, 441, 443, 445, 447, 449, 451, 453,
- 455, 457, 459, 461, 463, 465, 467, 469,
- 471, 473, 475, 477, 479, 481, 483, 485,
- 487, 489, 491, 493, 495, 497, 499, 501,
- 503, 505, 507, 509, 511, 513, 515, 517,
- 519, 521, 523, 526, 528, 530, 531, 532,
- 533, 534, 535, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 552, 554, 556,
- 558, 560, 562, 564, 566, 568, 570, 572,
- 574, 576, 578, 580, 582, 586, 592, 595,
- 597, 603, 621, 623, 625, 627, 629, 631,
- 633, 635, 637, 639, 641, 643, 645, 647,
- 649, 651, 653, 655, 657, 659, 661, 663,
- 665, 667, 669, 671, 673, 675, 678, 680,
- 682, 684, 686, 688, 690, 692, 694, 695,
- 696, 697, 698, 699, 700, 701, 702, 703,
- 704, 705, 706, 721, 723, 725, 727, 729,
- 731, 733, 735, 737, 739, 741, 743, 745,
- 747, 749, 751, 754, 756, 758, 760, 762,
- 764, 766, 768, 770, 772, 774, 776, 778,
- 780, 782, 784, 786, 788, 790, 792, 794,
- 796, 798, 800, 802, 804, 806, 808, 810,
- 812, 814, 816, 818, 820, 822, 824, 826,
- 828, 830, 832, 834, 836, 839, 841, 843,
- 844
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 68, 69, 70, 71, 77, 83, 86,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 65, 68, 69, 70,
- 71, 77, 83, 86, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 98, 99, 108, 115, 116, 114, 97, 99,
- 116, 32, 83, 99, 101, 110, 97, 114,
- 105, 111, 58, 10, 10, 10, 32, 35,
- 37, 42, 64, 65, 68, 69, 70, 71,
- 77, 83, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, 10, 32, 34, 35, 37, 42,
- 64, 65, 68, 69, 70, 71, 77, 83,
- 86, 124, 9, 13, 97, 110, 117, 110,
- 99, 116, 105, 111, 110, 97, 108, 105,
- 116, 101, 105, 116, 58, 10, 10, 10,
- 32, 35, 37, 64, 65, 70, 83, 86,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 98,
- 99, 10, 115, 10, 116, 10, 114, 10,
- 97, 10, 99, 10, 116, 10, 32, 10,
- 83, 10, 99, 10, 101, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 111, 10,
- 58, 10, 104, 10, 116, 10, 101, 10,
- 114, 10, 103, 10, 114, 10, 111, 10,
- 110, 10, 100, 10, 117, 10, 110, 10,
- 99, 10, 116, 10, 105, 10, 111, 10,
- 110, 10, 97, 10, 108, 10, 105, 10,
- 116, 10, 101, 10, 105, 10, 116, 10,
- 111, 10, 111, 10, 114, 10, 98, 10,
- 101, 10, 101, 10, 108, 10, 100, 10,
- 101, 10, 110, 101, 103, 101, 118, 101,
- 97, 97, 114, 99, 116, 101, 110, 97,
- 114, 105, 111, 58, 10, 10, 10, 32,
- 35, 37, 42, 64, 65, 68, 69, 70,
- 71, 77, 83, 9, 13, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 32, 10, 98, 99, 108, 10,
- 115, 10, 116, 10, 114, 10, 97, 10,
- 99, 10, 116, 10, 32, 10, 83, 10,
- 99, 10, 101, 10, 110, 10, 97, 10,
- 114, 10, 105, 10, 111, 10, 58, 10,
- 104, 10, 116, 10, 101, 10, 114, 10,
- 103, 10, 114, 10, 111, 10, 110, 10,
- 100, 10, 115, 10, 97, 10, 110, 10,
- 117, 10, 110, 10, 99, 10, 116, 10,
- 105, 10, 111, 10, 110, 10, 97, 10,
- 108, 10, 105, 10, 116, 10, 101, 10,
- 105, 10, 116, 10, 101, 10, 103, 10,
- 101, 10, 118, 10, 101, 10, 97, 10,
- 97, 10, 114, 10, 99, 116, 10, 101,
- 10, 108, 101, 108, 111, 111, 114, 98,
- 101, 101, 108, 100, 101, 110, 58, 10,
- 10, 10, 32, 35, 70, 124, 9, 13,
- 10, 117, 10, 110, 10, 99, 10, 116,
- 10, 105, 10, 111, 10, 110, 10, 97,
- 10, 108, 10, 105, 10, 116, 10, 101,
- 10, 105, 10, 116, 10, 58, 32, 124,
- 9, 13, 10, 32, 92, 124, 9, 13,
- 10, 92, 124, 10, 92, 10, 32, 92,
- 124, 9, 13, 10, 32, 34, 35, 37,
- 42, 64, 65, 68, 69, 70, 71, 77,
- 83, 86, 124, 9, 13, 10, 108, 10,
- 115, 10, 97, 10, 110, 10, 117, 10,
- 110, 10, 99, 10, 116, 10, 105, 10,
- 111, 10, 110, 10, 97, 10, 108, 10,
- 105, 10, 116, 10, 101, 10, 105, 10,
- 116, 10, 58, 10, 101, 10, 103, 10,
- 101, 10, 118, 10, 101, 10, 97, 10,
- 97, 10, 114, 10, 99, 116, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 111, 10, 101, 10, 108, 104, 116,
- 101, 114, 103, 114, 111, 110, 100, 58,
- 10, 10, 10, 32, 35, 37, 42, 64,
- 65, 68, 69, 70, 71, 77, 83, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 98, 108, 10, 115, 10, 116, 10, 114,
- 10, 97, 10, 99, 10, 116, 10, 32,
- 10, 83, 10, 99, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 111,
- 10, 58, 10, 115, 10, 97, 10, 110,
- 10, 117, 10, 110, 10, 99, 10, 116,
- 10, 105, 10, 111, 10, 110, 10, 97,
- 10, 108, 10, 105, 10, 116, 10, 101,
- 10, 105, 10, 116, 10, 101, 10, 103,
- 10, 101, 10, 118, 10, 101, 10, 97,
- 10, 97, 10, 114, 10, 99, 116, 10,
- 101, 10, 108, 115, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 3, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 13, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 16, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 9, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 13,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 4,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 5, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 3, 2,
- 4, 16, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 13, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 1,
- 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 1, 0, 0,
- 1, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 141, 143,
- 145, 147, 149, 151, 153, 155, 157, 159,
- 161, 163, 165, 167, 169, 171, 173, 175,
- 177, 192, 195, 198, 201, 204, 207, 210,
- 213, 216, 219, 222, 225, 228, 231, 234,
- 237, 255, 257, 259, 261, 263, 265, 267,
- 269, 271, 273, 275, 277, 279, 281, 283,
- 285, 287, 289, 291, 293, 304, 307, 310,
- 313, 316, 319, 322, 325, 328, 331, 334,
- 337, 340, 343, 346, 350, 353, 356, 359,
- 362, 365, 368, 371, 374, 377, 380, 383,
- 386, 389, 392, 395, 398, 401, 404, 407,
- 410, 413, 416, 419, 422, 425, 428, 431,
- 434, 437, 440, 443, 446, 449, 452, 455,
- 458, 461, 464, 467, 470, 473, 476, 479,
- 482, 485, 488, 491, 494, 497, 499, 501,
- 503, 505, 507, 509, 511, 513, 516, 518,
- 520, 522, 524, 526, 528, 530, 532, 534,
- 549, 552, 555, 558, 561, 564, 567, 570,
- 573, 576, 579, 582, 585, 588, 591, 594,
- 599, 602, 605, 608, 611, 614, 617, 620,
- 623, 626, 629, 632, 635, 638, 641, 644,
- 647, 650, 653, 656, 659, 662, 665, 668,
- 671, 674, 677, 680, 683, 686, 689, 692,
- 695, 698, 701, 704, 707, 710, 713, 716,
- 719, 722, 725, 728, 731, 734, 737, 740,
- 743, 746, 749, 753, 756, 759, 761, 763,
- 765, 767, 769, 771, 773, 775, 777, 779,
- 781, 783, 785, 787, 789, 796, 799, 802,
- 805, 808, 811, 814, 817, 820, 823, 826,
- 829, 832, 835, 838, 841, 845, 851, 855,
- 858, 864, 882, 885, 888, 891, 894, 897,
- 900, 903, 906, 909, 912, 915, 918, 921,
- 924, 927, 930, 933, 936, 939, 942, 945,
- 948, 951, 954, 957, 960, 963, 967, 970,
- 973, 976, 979, 982, 985, 988, 991, 993,
- 995, 997, 999, 1001, 1003, 1005, 1007, 1009,
- 1011, 1013, 1015, 1030, 1033, 1036, 1039, 1042,
- 1045, 1048, 1051, 1054, 1057, 1060, 1063, 1066,
- 1069, 1072, 1075, 1079, 1082, 1085, 1088, 1091,
- 1094, 1097, 1100, 1103, 1106, 1109, 1112, 1115,
- 1118, 1121, 1124, 1127, 1130, 1133, 1136, 1139,
- 1142, 1145, 1148, 1151, 1154, 1157, 1160, 1163,
- 1166, 1169, 1172, 1175, 1178, 1181, 1184, 1187,
- 1190, 1193, 1196, 1199, 1202, 1206, 1209, 1212,
- 1214
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 73, 74, 75, 157, 162, 165, 247,
- 276, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 73,
- 74, 75, 157, 162, 165, 247, 276, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 392, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 318, 391, 0, 39, 0, 40,
- 0, 41, 0, 42, 0, 43, 0, 44,
- 0, 45, 0, 46, 0, 47, 0, 48,
- 0, 49, 0, 50, 0, 51, 0, 52,
- 0, 53, 0, 54, 0, 56, 55, 56,
- 55, 56, 56, 4, 57, 71, 4, 282,
- 284, 285, 286, 301, 306, 309, 56, 55,
- 56, 58, 55, 56, 59, 55, 56, 60,
- 55, 56, 61, 55, 56, 62, 55, 56,
- 63, 55, 56, 64, 55, 56, 65, 55,
- 56, 66, 55, 56, 67, 55, 56, 68,
- 55, 56, 69, 55, 56, 70, 55, 56,
- 4, 55, 56, 72, 55, 4, 4, 5,
- 15, 17, 31, 34, 37, 73, 74, 75,
- 157, 162, 165, 247, 276, 4, 0, 74,
- 0, 31, 0, 76, 0, 77, 0, 78,
- 0, 79, 0, 80, 0, 81, 0, 82,
- 0, 83, 0, 84, 0, 85, 0, 86,
- 0, 87, 0, 88, 0, 89, 0, 90,
- 0, 92, 91, 92, 91, 92, 92, 4,
- 93, 4, 107, 133, 116, 147, 92, 91,
- 92, 94, 91, 92, 95, 91, 92, 96,
- 91, 92, 97, 91, 92, 98, 91, 92,
- 99, 91, 92, 100, 91, 92, 101, 91,
- 92, 102, 91, 92, 103, 91, 92, 104,
- 91, 92, 105, 91, 92, 106, 91, 92,
- 4, 91, 92, 108, 124, 91, 92, 109,
- 91, 92, 110, 91, 92, 111, 91, 92,
- 112, 91, 92, 113, 91, 92, 114, 91,
- 92, 115, 91, 92, 116, 91, 92, 117,
- 91, 92, 118, 91, 92, 119, 91, 92,
- 120, 91, 92, 121, 91, 92, 122, 91,
- 92, 123, 91, 92, 72, 91, 92, 125,
- 91, 92, 126, 91, 92, 127, 91, 92,
- 128, 91, 92, 129, 91, 92, 130, 91,
- 92, 131, 91, 92, 132, 91, 92, 123,
- 91, 92, 134, 91, 92, 135, 91, 92,
- 136, 91, 92, 137, 91, 92, 138, 91,
- 92, 139, 91, 92, 140, 91, 92, 141,
- 91, 92, 142, 91, 92, 143, 91, 92,
- 144, 91, 92, 145, 91, 92, 146, 91,
- 92, 123, 91, 92, 148, 91, 92, 149,
- 91, 92, 150, 91, 92, 151, 91, 92,
- 152, 91, 92, 153, 91, 92, 154, 91,
- 92, 155, 91, 92, 156, 91, 92, 123,
- 91, 158, 0, 159, 0, 160, 0, 161,
- 0, 74, 0, 163, 0, 164, 0, 31,
- 0, 166, 245, 0, 167, 0, 168, 0,
- 169, 0, 170, 0, 171, 0, 172, 0,
- 173, 0, 175, 174, 175, 174, 175, 175,
- 4, 176, 190, 4, 191, 218, 219, 220,
- 234, 239, 242, 175, 174, 175, 177, 174,
- 175, 178, 174, 175, 179, 174, 175, 180,
- 174, 175, 181, 174, 175, 182, 174, 175,
- 183, 174, 175, 184, 174, 175, 185, 174,
- 175, 186, 174, 175, 187, 174, 175, 188,
- 174, 175, 189, 174, 175, 4, 174, 175,
- 72, 174, 175, 192, 208, 217, 174, 175,
- 193, 174, 175, 194, 174, 175, 195, 174,
- 175, 196, 174, 175, 197, 174, 175, 198,
- 174, 175, 199, 174, 175, 200, 174, 175,
- 201, 174, 175, 202, 174, 175, 203, 174,
- 175, 204, 174, 175, 205, 174, 175, 206,
- 174, 175, 207, 174, 175, 72, 174, 175,
- 209, 174, 175, 210, 174, 175, 211, 174,
- 175, 212, 174, 175, 213, 174, 175, 214,
- 174, 175, 215, 174, 175, 216, 174, 175,
- 207, 174, 175, 190, 174, 175, 219, 174,
- 175, 190, 174, 175, 221, 174, 175, 222,
- 174, 175, 223, 174, 175, 224, 174, 175,
- 225, 174, 175, 226, 174, 175, 227, 174,
- 175, 228, 174, 175, 229, 174, 175, 230,
- 174, 175, 231, 174, 175, 232, 174, 175,
- 233, 174, 175, 207, 174, 175, 235, 174,
- 175, 236, 174, 175, 237, 174, 175, 238,
- 174, 175, 219, 174, 175, 240, 174, 175,
- 241, 174, 175, 190, 174, 175, 201, 243,
- 174, 175, 244, 174, 175, 190, 174, 246,
- 0, 31, 0, 248, 0, 249, 0, 250,
- 0, 251, 0, 252, 0, 253, 0, 254,
- 0, 255, 0, 256, 0, 257, 0, 258,
- 0, 260, 259, 260, 259, 260, 260, 4,
- 261, 4, 260, 259, 260, 262, 259, 260,
- 263, 259, 260, 264, 259, 260, 265, 259,
- 260, 266, 259, 260, 267, 259, 260, 268,
- 259, 260, 269, 259, 260, 270, 259, 260,
- 271, 259, 260, 272, 259, 260, 273, 259,
- 260, 274, 259, 260, 275, 259, 260, 72,
- 259, 276, 277, 276, 0, 281, 280, 279,
- 277, 280, 278, 0, 279, 277, 278, 0,
- 279, 278, 281, 280, 279, 277, 280, 278,
- 281, 281, 5, 15, 17, 31, 34, 37,
- 73, 74, 75, 157, 162, 165, 247, 276,
- 281, 0, 56, 283, 55, 56, 71, 55,
- 56, 285, 55, 56, 71, 55, 56, 287,
- 55, 56, 288, 55, 56, 289, 55, 56,
- 290, 55, 56, 291, 55, 56, 292, 55,
- 56, 293, 55, 56, 294, 55, 56, 295,
- 55, 56, 296, 55, 56, 297, 55, 56,
- 298, 55, 56, 299, 55, 56, 300, 55,
- 56, 72, 55, 56, 302, 55, 56, 303,
- 55, 56, 304, 55, 56, 305, 55, 56,
- 285, 55, 56, 307, 55, 56, 308, 55,
- 56, 71, 55, 56, 310, 316, 55, 56,
- 311, 55, 56, 312, 55, 56, 313, 55,
- 56, 314, 55, 56, 315, 55, 56, 300,
- 55, 56, 317, 55, 56, 71, 55, 319,
- 0, 320, 0, 321, 0, 322, 0, 323,
- 0, 324, 0, 325, 0, 326, 0, 327,
- 0, 328, 0, 330, 329, 330, 329, 330,
- 330, 4, 331, 345, 4, 346, 364, 365,
- 366, 380, 385, 388, 330, 329, 330, 332,
- 329, 330, 333, 329, 330, 334, 329, 330,
- 335, 329, 330, 336, 329, 330, 337, 329,
- 330, 338, 329, 330, 339, 329, 330, 340,
- 329, 330, 341, 329, 330, 342, 329, 330,
- 343, 329, 330, 344, 329, 330, 4, 329,
- 330, 72, 329, 330, 347, 363, 329, 330,
- 348, 329, 330, 349, 329, 330, 350, 329,
- 330, 351, 329, 330, 352, 329, 330, 353,
- 329, 330, 354, 329, 330, 355, 329, 330,
- 356, 329, 330, 357, 329, 330, 358, 329,
- 330, 359, 329, 330, 360, 329, 330, 361,
- 329, 330, 362, 329, 330, 72, 329, 330,
- 345, 329, 330, 365, 329, 330, 345, 329,
- 330, 367, 329, 330, 368, 329, 330, 369,
- 329, 330, 370, 329, 330, 371, 329, 330,
- 372, 329, 330, 373, 329, 330, 374, 329,
- 330, 375, 329, 330, 376, 329, 330, 377,
- 329, 330, 378, 329, 330, 379, 329, 330,
- 362, 329, 330, 381, 329, 330, 382, 329,
- 330, 383, 329, 330, 384, 329, 330, 365,
- 329, 330, 386, 329, 330, 387, 329, 330,
- 345, 329, 330, 356, 389, 329, 330, 390,
- 329, 330, 345, 329, 31, 0, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 78, 33, 84, 78, 84,
- 84, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 19, 0, 54, 19, 0, 130, 31, 60,
- 57, 31, 63, 57, 63, 63, 63, 63,
- 63, 63, 63, 63, 66, 31, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 69,
- 33, 69, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 13, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 75, 33, 84, 75, 84, 84, 84, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 54,
- 17, 0, 54, 0, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 81,
- 84, 81, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 21,
- 0, 0, 0, 0, 43, 54, 37, 37,
- 87, 37, 37, 43, 0, 39, 0, 43,
- 0, 0, 54, 0, 0, 39, 0, 0,
- 54, 0, 93, 90, 41, 96, 90, 96,
- 96, 96, 96, 96, 96, 96, 96, 99,
- 0, 43, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 19, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 72, 33, 84, 72, 84, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 15, 0,
- 54, 15, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 43, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 392;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 972 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
-
- #line 979 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1269 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1332 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/nl.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_nl()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Nl", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/nl.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/nl.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 148, 150, 152, 154, 156, 158, 160,
- 162, 164, 166, 168, 170, 172, 174, 176,
- 178, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 207, 208, 209, 210,
- 211, 212, 213, 214, 215, 226, 228, 230,
- 232, 234, 236, 238, 240, 242, 244, 246,
- 248, 250, 252, 254, 257, 259, 261, 263,
- 265, 267, 269, 271, 273, 275, 277, 279,
- 281, 283, 285, 287, 289, 291, 293, 295,
- 297, 299, 301, 303, 305, 307, 309, 311,
- 313, 315, 317, 319, 321, 323, 325, 327,
- 329, 331, 333, 335, 337, 339, 341, 343,
- 345, 347, 349, 351, 353, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374,
- 389, 391, 393, 395, 397, 399, 401, 403,
- 405, 407, 409, 411, 413, 415, 417, 419,
- 423, 425, 427, 429, 431, 433, 435, 437,
- 439, 441, 443, 445, 447, 449, 451, 453,
- 455, 457, 459, 461, 463, 465, 467, 469,
- 471, 473, 475, 477, 479, 481, 483, 485,
- 487, 489, 491, 493, 495, 497, 499, 501,
- 503, 505, 507, 509, 511, 513, 515, 517,
- 519, 521, 523, 526, 528, 530, 531, 532,
- 533, 534, 535, 536, 537, 538, 539, 540,
- 541, 542, 543, 544, 545, 552, 554, 556,
- 558, 560, 562, 564, 566, 568, 570, 572,
- 574, 576, 578, 580, 582, 586, 592, 595,
- 597, 603, 621, 623, 625, 627, 629, 631,
- 633, 635, 637, 639, 641, 643, 645, 647,
- 649, 651, 653, 655, 657, 659, 661, 663,
- 665, 667, 669, 671, 673, 675, 678, 680,
- 682, 684, 686, 688, 690, 692, 694, 695,
- 696, 697, 698, 699, 700, 701, 702, 703,
- 704, 705, 706, 721, 723, 725, 727, 729,
- 731, 733, 735, 737, 739, 741, 743, 745,
- 747, 749, 751, 754, 756, 758, 760, 762,
- 764, 766, 768, 770, 772, 774, 776, 778,
- 780, 782, 784, 786, 788, 790, 792, 794,
- 796, 798, 800, 802, 804, 806, 808, 810,
- 812, 814, 816, 818, 820, 822, 824, 826,
- 828, 830, 832, 834, 836, 839, 841, 843,
- 844
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 68, 69, 70, 71, 77, 83, 86,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 65, 68, 69, 70,
- 71, 77, 83, 86, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 98, 99, 108, 115, 116, 114, 97, 99,
- 116, 32, 83, 99, 101, 110, 97, 114,
- 105, 111, 58, 10, 10, 10, 32, 35,
- 37, 42, 64, 65, 68, 69, 70, 71,
- 77, 83, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, 10, 32, 34, 35, 37, 42,
- 64, 65, 68, 69, 70, 71, 77, 83,
- 86, 124, 9, 13, 97, 110, 117, 110,
- 99, 116, 105, 111, 110, 97, 108, 105,
- 116, 101, 105, 116, 58, 10, 10, 10,
- 32, 35, 37, 64, 65, 70, 83, 86,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 98,
- 99, 10, 115, 10, 116, 10, 114, 10,
- 97, 10, 99, 10, 116, 10, 32, 10,
- 83, 10, 99, 10, 101, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 111, 10,
- 58, 10, 104, 10, 116, 10, 101, 10,
- 114, 10, 103, 10, 114, 10, 111, 10,
- 110, 10, 100, 10, 117, 10, 110, 10,
- 99, 10, 116, 10, 105, 10, 111, 10,
- 110, 10, 97, 10, 108, 10, 105, 10,
- 116, 10, 101, 10, 105, 10, 116, 10,
- 111, 10, 111, 10, 114, 10, 98, 10,
- 101, 10, 101, 10, 108, 10, 100, 10,
- 101, 10, 110, 101, 103, 101, 118, 101,
- 97, 97, 114, 99, 116, 101, 110, 97,
- 114, 105, 111, 58, 10, 10, 10, 32,
- 35, 37, 42, 64, 65, 68, 69, 70,
- 71, 77, 83, 9, 13, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 32, 10, 98, 99, 108, 10,
- 115, 10, 116, 10, 114, 10, 97, 10,
- 99, 10, 116, 10, 32, 10, 83, 10,
- 99, 10, 101, 10, 110, 10, 97, 10,
- 114, 10, 105, 10, 111, 10, 58, 10,
- 104, 10, 116, 10, 101, 10, 114, 10,
- 103, 10, 114, 10, 111, 10, 110, 10,
- 100, 10, 115, 10, 97, 10, 110, 10,
- 117, 10, 110, 10, 99, 10, 116, 10,
- 105, 10, 111, 10, 110, 10, 97, 10,
- 108, 10, 105, 10, 116, 10, 101, 10,
- 105, 10, 116, 10, 101, 10, 103, 10,
- 101, 10, 118, 10, 101, 10, 97, 10,
- 97, 10, 114, 10, 99, 116, 10, 101,
- 10, 108, 101, 108, 111, 111, 114, 98,
- 101, 101, 108, 100, 101, 110, 58, 10,
- 10, 10, 32, 35, 70, 124, 9, 13,
- 10, 117, 10, 110, 10, 99, 10, 116,
- 10, 105, 10, 111, 10, 110, 10, 97,
- 10, 108, 10, 105, 10, 116, 10, 101,
- 10, 105, 10, 116, 10, 58, 32, 124,
- 9, 13, 10, 32, 92, 124, 9, 13,
- 10, 92, 124, 10, 92, 10, 32, 92,
- 124, 9, 13, 10, 32, 34, 35, 37,
- 42, 64, 65, 68, 69, 70, 71, 77,
- 83, 86, 124, 9, 13, 10, 108, 10,
- 115, 10, 97, 10, 110, 10, 117, 10,
- 110, 10, 99, 10, 116, 10, 105, 10,
- 111, 10, 110, 10, 97, 10, 108, 10,
- 105, 10, 116, 10, 101, 10, 105, 10,
- 116, 10, 58, 10, 101, 10, 103, 10,
- 101, 10, 118, 10, 101, 10, 97, 10,
- 97, 10, 114, 10, 99, 116, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 111, 10, 101, 10, 108, 104, 116,
- 101, 114, 103, 114, 111, 110, 100, 58,
- 10, 10, 10, 32, 35, 37, 42, 64,
- 65, 68, 69, 70, 71, 77, 83, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 98, 108, 10, 115, 10, 116, 10, 114,
- 10, 97, 10, 99, 10, 116, 10, 32,
- 10, 83, 10, 99, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 111,
- 10, 58, 10, 115, 10, 97, 10, 110,
- 10, 117, 10, 110, 10, 99, 10, 116,
- 10, 105, 10, 111, 10, 110, 10, 97,
- 10, 108, 10, 105, 10, 116, 10, 101,
- 10, 105, 10, 116, 10, 101, 10, 103,
- 10, 101, 10, 118, 10, 101, 10, 97,
- 10, 97, 10, 114, 10, 99, 116, 10,
- 101, 10, 108, 115, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 3, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 13, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 16, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 9, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 13,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 4,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 5, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 3, 2,
- 4, 16, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 13, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 1,
- 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 1, 0, 0,
- 1, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 141, 143,
- 145, 147, 149, 151, 153, 155, 157, 159,
- 161, 163, 165, 167, 169, 171, 173, 175,
- 177, 192, 195, 198, 201, 204, 207, 210,
- 213, 216, 219, 222, 225, 228, 231, 234,
- 237, 255, 257, 259, 261, 263, 265, 267,
- 269, 271, 273, 275, 277, 279, 281, 283,
- 285, 287, 289, 291, 293, 304, 307, 310,
- 313, 316, 319, 322, 325, 328, 331, 334,
- 337, 340, 343, 346, 350, 353, 356, 359,
- 362, 365, 368, 371, 374, 377, 380, 383,
- 386, 389, 392, 395, 398, 401, 404, 407,
- 410, 413, 416, 419, 422, 425, 428, 431,
- 434, 437, 440, 443, 446, 449, 452, 455,
- 458, 461, 464, 467, 470, 473, 476, 479,
- 482, 485, 488, 491, 494, 497, 499, 501,
- 503, 505, 507, 509, 511, 513, 516, 518,
- 520, 522, 524, 526, 528, 530, 532, 534,
- 549, 552, 555, 558, 561, 564, 567, 570,
- 573, 576, 579, 582, 585, 588, 591, 594,
- 599, 602, 605, 608, 611, 614, 617, 620,
- 623, 626, 629, 632, 635, 638, 641, 644,
- 647, 650, 653, 656, 659, 662, 665, 668,
- 671, 674, 677, 680, 683, 686, 689, 692,
- 695, 698, 701, 704, 707, 710, 713, 716,
- 719, 722, 725, 728, 731, 734, 737, 740,
- 743, 746, 749, 753, 756, 759, 761, 763,
- 765, 767, 769, 771, 773, 775, 777, 779,
- 781, 783, 785, 787, 789, 796, 799, 802,
- 805, 808, 811, 814, 817, 820, 823, 826,
- 829, 832, 835, 838, 841, 845, 851, 855,
- 858, 864, 882, 885, 888, 891, 894, 897,
- 900, 903, 906, 909, 912, 915, 918, 921,
- 924, 927, 930, 933, 936, 939, 942, 945,
- 948, 951, 954, 957, 960, 963, 967, 970,
- 973, 976, 979, 982, 985, 988, 991, 993,
- 995, 997, 999, 1001, 1003, 1005, 1007, 1009,
- 1011, 1013, 1015, 1030, 1033, 1036, 1039, 1042,
- 1045, 1048, 1051, 1054, 1057, 1060, 1063, 1066,
- 1069, 1072, 1075, 1079, 1082, 1085, 1088, 1091,
- 1094, 1097, 1100, 1103, 1106, 1109, 1112, 1115,
- 1118, 1121, 1124, 1127, 1130, 1133, 1136, 1139,
- 1142, 1145, 1148, 1151, 1154, 1157, 1160, 1163,
- 1166, 1169, 1172, 1175, 1178, 1181, 1184, 1187,
- 1190, 1193, 1196, 1199, 1202, 1206, 1209, 1212,
- 1214
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 73, 74, 75, 157, 162, 165, 247,
- 276, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 73,
- 74, 75, 157, 162, 165, 247, 276, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 392, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 318, 391, 0, 39, 0, 40,
- 0, 41, 0, 42, 0, 43, 0, 44,
- 0, 45, 0, 46, 0, 47, 0, 48,
- 0, 49, 0, 50, 0, 51, 0, 52,
- 0, 53, 0, 54, 0, 56, 55, 56,
- 55, 56, 56, 4, 57, 71, 4, 282,
- 284, 285, 286, 301, 306, 309, 56, 55,
- 56, 58, 55, 56, 59, 55, 56, 60,
- 55, 56, 61, 55, 56, 62, 55, 56,
- 63, 55, 56, 64, 55, 56, 65, 55,
- 56, 66, 55, 56, 67, 55, 56, 68,
- 55, 56, 69, 55, 56, 70, 55, 56,
- 4, 55, 56, 72, 55, 4, 4, 5,
- 15, 17, 31, 34, 37, 73, 74, 75,
- 157, 162, 165, 247, 276, 4, 0, 74,
- 0, 31, 0, 76, 0, 77, 0, 78,
- 0, 79, 0, 80, 0, 81, 0, 82,
- 0, 83, 0, 84, 0, 85, 0, 86,
- 0, 87, 0, 88, 0, 89, 0, 90,
- 0, 92, 91, 92, 91, 92, 92, 4,
- 93, 4, 107, 133, 116, 147, 92, 91,
- 92, 94, 91, 92, 95, 91, 92, 96,
- 91, 92, 97, 91, 92, 98, 91, 92,
- 99, 91, 92, 100, 91, 92, 101, 91,
- 92, 102, 91, 92, 103, 91, 92, 104,
- 91, 92, 105, 91, 92, 106, 91, 92,
- 4, 91, 92, 108, 124, 91, 92, 109,
- 91, 92, 110, 91, 92, 111, 91, 92,
- 112, 91, 92, 113, 91, 92, 114, 91,
- 92, 115, 91, 92, 116, 91, 92, 117,
- 91, 92, 118, 91, 92, 119, 91, 92,
- 120, 91, 92, 121, 91, 92, 122, 91,
- 92, 123, 91, 92, 72, 91, 92, 125,
- 91, 92, 126, 91, 92, 127, 91, 92,
- 128, 91, 92, 129, 91, 92, 130, 91,
- 92, 131, 91, 92, 132, 91, 92, 123,
- 91, 92, 134, 91, 92, 135, 91, 92,
- 136, 91, 92, 137, 91, 92, 138, 91,
- 92, 139, 91, 92, 140, 91, 92, 141,
- 91, 92, 142, 91, 92, 143, 91, 92,
- 144, 91, 92, 145, 91, 92, 146, 91,
- 92, 123, 91, 92, 148, 91, 92, 149,
- 91, 92, 150, 91, 92, 151, 91, 92,
- 152, 91, 92, 153, 91, 92, 154, 91,
- 92, 155, 91, 92, 156, 91, 92, 123,
- 91, 158, 0, 159, 0, 160, 0, 161,
- 0, 74, 0, 163, 0, 164, 0, 31,
- 0, 166, 245, 0, 167, 0, 168, 0,
- 169, 0, 170, 0, 171, 0, 172, 0,
- 173, 0, 175, 174, 175, 174, 175, 175,
- 4, 176, 190, 4, 191, 218, 219, 220,
- 234, 239, 242, 175, 174, 175, 177, 174,
- 175, 178, 174, 175, 179, 174, 175, 180,
- 174, 175, 181, 174, 175, 182, 174, 175,
- 183, 174, 175, 184, 174, 175, 185, 174,
- 175, 186, 174, 175, 187, 174, 175, 188,
- 174, 175, 189, 174, 175, 4, 174, 175,
- 72, 174, 175, 192, 208, 217, 174, 175,
- 193, 174, 175, 194, 174, 175, 195, 174,
- 175, 196, 174, 175, 197, 174, 175, 198,
- 174, 175, 199, 174, 175, 200, 174, 175,
- 201, 174, 175, 202, 174, 175, 203, 174,
- 175, 204, 174, 175, 205, 174, 175, 206,
- 174, 175, 207, 174, 175, 72, 174, 175,
- 209, 174, 175, 210, 174, 175, 211, 174,
- 175, 212, 174, 175, 213, 174, 175, 214,
- 174, 175, 215, 174, 175, 216, 174, 175,
- 207, 174, 175, 190, 174, 175, 219, 174,
- 175, 190, 174, 175, 221, 174, 175, 222,
- 174, 175, 223, 174, 175, 224, 174, 175,
- 225, 174, 175, 226, 174, 175, 227, 174,
- 175, 228, 174, 175, 229, 174, 175, 230,
- 174, 175, 231, 174, 175, 232, 174, 175,
- 233, 174, 175, 207, 174, 175, 235, 174,
- 175, 236, 174, 175, 237, 174, 175, 238,
- 174, 175, 219, 174, 175, 240, 174, 175,
- 241, 174, 175, 190, 174, 175, 201, 243,
- 174, 175, 244, 174, 175, 190, 174, 246,
- 0, 31, 0, 248, 0, 249, 0, 250,
- 0, 251, 0, 252, 0, 253, 0, 254,
- 0, 255, 0, 256, 0, 257, 0, 258,
- 0, 260, 259, 260, 259, 260, 260, 4,
- 261, 4, 260, 259, 260, 262, 259, 260,
- 263, 259, 260, 264, 259, 260, 265, 259,
- 260, 266, 259, 260, 267, 259, 260, 268,
- 259, 260, 269, 259, 260, 270, 259, 260,
- 271, 259, 260, 272, 259, 260, 273, 259,
- 260, 274, 259, 260, 275, 259, 260, 72,
- 259, 276, 277, 276, 0, 281, 280, 279,
- 277, 280, 278, 0, 279, 277, 278, 0,
- 279, 278, 281, 280, 279, 277, 280, 278,
- 281, 281, 5, 15, 17, 31, 34, 37,
- 73, 74, 75, 157, 162, 165, 247, 276,
- 281, 0, 56, 283, 55, 56, 71, 55,
- 56, 285, 55, 56, 71, 55, 56, 287,
- 55, 56, 288, 55, 56, 289, 55, 56,
- 290, 55, 56, 291, 55, 56, 292, 55,
- 56, 293, 55, 56, 294, 55, 56, 295,
- 55, 56, 296, 55, 56, 297, 55, 56,
- 298, 55, 56, 299, 55, 56, 300, 55,
- 56, 72, 55, 56, 302, 55, 56, 303,
- 55, 56, 304, 55, 56, 305, 55, 56,
- 285, 55, 56, 307, 55, 56, 308, 55,
- 56, 71, 55, 56, 310, 316, 55, 56,
- 311, 55, 56, 312, 55, 56, 313, 55,
- 56, 314, 55, 56, 315, 55, 56, 300,
- 55, 56, 317, 55, 56, 71, 55, 319,
- 0, 320, 0, 321, 0, 322, 0, 323,
- 0, 324, 0, 325, 0, 326, 0, 327,
- 0, 328, 0, 330, 329, 330, 329, 330,
- 330, 4, 331, 345, 4, 346, 364, 365,
- 366, 380, 385, 388, 330, 329, 330, 332,
- 329, 330, 333, 329, 330, 334, 329, 330,
- 335, 329, 330, 336, 329, 330, 337, 329,
- 330, 338, 329, 330, 339, 329, 330, 340,
- 329, 330, 341, 329, 330, 342, 329, 330,
- 343, 329, 330, 344, 329, 330, 4, 329,
- 330, 72, 329, 330, 347, 363, 329, 330,
- 348, 329, 330, 349, 329, 330, 350, 329,
- 330, 351, 329, 330, 352, 329, 330, 353,
- 329, 330, 354, 329, 330, 355, 329, 330,
- 356, 329, 330, 357, 329, 330, 358, 329,
- 330, 359, 329, 330, 360, 329, 330, 361,
- 329, 330, 362, 329, 330, 72, 329, 330,
- 345, 329, 330, 365, 329, 330, 345, 329,
- 330, 367, 329, 330, 368, 329, 330, 369,
- 329, 330, 370, 329, 330, 371, 329, 330,
- 372, 329, 330, 373, 329, 330, 374, 329,
- 330, 375, 329, 330, 376, 329, 330, 377,
- 329, 330, 378, 329, 330, 379, 329, 330,
- 362, 329, 330, 381, 329, 330, 382, 329,
- 330, 383, 329, 330, 384, 329, 330, 365,
- 329, 330, 386, 329, 330, 387, 329, 330,
- 345, 329, 330, 356, 389, 329, 330, 390,
- 329, 330, 345, 329, 31, 0, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 78, 33, 84, 78, 84,
- 84, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 19, 0, 54, 19, 0, 130, 31, 60,
- 57, 31, 63, 57, 63, 63, 63, 63,
- 63, 63, 63, 63, 66, 31, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 69,
- 33, 69, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 13, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 75, 33, 84, 75, 84, 84, 84, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 54,
- 17, 0, 54, 0, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 81,
- 84, 81, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 21,
- 0, 0, 0, 0, 43, 54, 37, 37,
- 87, 37, 37, 43, 0, 39, 0, 43,
- 0, 0, 54, 0, 0, 39, 0, 0,
- 54, 0, 93, 90, 41, 96, 90, 96,
- 96, 96, 96, 96, 96, 96, 96, 99,
- 0, 43, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 19, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 72, 33, 84, 72, 84, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 15, 0,
- 54, 15, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 43, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 392;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/nl.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 972 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/nl.c.rl"
-
-#line 979 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/nl.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/nl.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/nl.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/nl.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/nl.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/nl.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/nl.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/nl.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/nl.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/nl.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/nl.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/nl.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/nl.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/nl.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/nl.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/nl.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/nl.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/nl.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/nl.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/nl.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/nl.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/nl.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/nl.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/nl.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1269 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/nl.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1332 "ext/gherkin_lexer_nl/gherkin_lexer_nl.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/nl.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_nl()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Nl", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_no/extconf.rb
index a4cdd03,a4cdd03..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_no/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_no")
--have_library("c", "main")
--create_makefile("gherkin_lexer_no")
diff --cc ext/gherkin_lexer_no/gherkin_lexer_no.c
index 4cb04fe,63a1b59..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_no/gherkin_lexer_no.c
+++ /dev/null
@@@ -1,1311 -1,1311 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 128, 129, 130,
- 131, 145, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 165, 167, 169, 171, 173,
- 175, 193, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 218, 220, 222, 224,
- 226, 228, 230, 232, 234, 236, 238, 240,
- 242, 244, 246, 248, 250, 252, 254, 256,
- 258, 260, 262, 264, 266, 268, 270, 272,
- 274, 276, 278, 280, 282, 284, 286, 288,
- 290, 292, 294, 296, 298, 300, 302, 304,
- 306, 308, 310, 312, 314, 317, 319, 321,
- 323, 325, 327, 329, 331, 334, 336, 338,
- 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 360, 362, 364, 366, 368, 370,
- 372, 374, 376, 378, 380, 382, 384, 386,
- 388, 390, 392, 394, 396, 398, 400, 402,
- 404, 406, 408, 410, 412, 414, 416, 418,
- 420, 422, 424, 426, 428, 430, 432, 434,
- 436, 439, 441, 443, 445, 447, 449, 451,
- 453, 455, 457, 459, 461, 463, 465, 467,
- 469, 471, 473, 475, 477, 479, 482, 484,
- 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 503, 505, 507, 509, 511,
- 513, 515, 517, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 530, 531, 532,
- 533, 534, 535, 536, 537, 539, 540, 541,
- 557, 559, 561, 563, 565, 567, 569, 571,
- 573, 575, 577, 579, 581, 583, 585, 587,
- 589, 591, 593, 595, 597, 599, 601, 603,
- 605, 607, 609, 611, 613, 615, 617, 619,
- 621, 623, 625, 627, 629, 631, 633, 635,
- 637, 639, 641, 643, 645, 647, 649, 651,
- 653, 655, 657, 659, 661, 663, 665, 667,
- 670, 672, 674, 676, 678, 680, 682, 684,
- 687, 689, 691, 692, 693, 697, 703, 706,
- 708, 714, 732, 734, 736, 738, 740, 742,
- 744, 746, 748, 750, 752, 754, 756, 758,
- 760, 762, 764, 766, 769, 771, 773, 775,
- 777, 779, 781, 783
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 69, 71, 77, 78, 79, 83,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 65, 66, 69, 71,
- 77, 78, 79, 83, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 98, 115, 116, 114, 97, 107, 116, 32,
- 83, 99, 101, 110, 97, 114, 105, 111,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 69, 71, 77, 78, 79, 83, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 32, 34, 35, 37, 42, 64, 65, 66,
- 69, 71, 77, 78, 79, 83, 124, 9,
- 13, 97, 107, 103, 114, 117, 110, 110,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 65, 69, 71, 77, 78, 79, 83,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 32,
- 10, 98, 10, 115, 10, 116, 10, 114,
- 10, 97, 10, 107, 10, 116, 10, 32,
- 10, 83, 10, 99, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 111,
- 10, 58, 10, 103, 10, 101, 10, 110,
- 10, 115, 10, 107, 10, 97, 10, 112,
- 10, 105, 10, 116, 10, 116, 10, 101,
- 10, 110, -61, 10, -91, 10, 10, 114,
- 10, 103, -61, 10, 99, -91, 10, 10,
- 101, 10, 110, 10, 97, 10, 114, 10,
- 105, 10, 111, 10, 58, 109, 10, 97,
- 10, 108, 103, 107, 101, 110, 115, 107,
- 97, 112, 58, 10, 10, 10, 32, 35,
- 37, 64, 65, 66, 69, 83, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 98, 10, 115,
- 10, 116, 10, 114, 10, 97, 10, 107,
- 10, 116, 10, 32, 10, 83, 10, 99,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 111, 10, 58, 10, 97,
- 10, 107, 10, 103, 10, 114, 10, 117,
- 10, 110, 10, 110, 10, 103, 107, 10,
- 101, 10, 110, 10, 115, 10, 107, 10,
- 97, 10, 112, 10, 115, 10, 101, 10,
- 109, 10, 112, 10, 108, 10, 101, 10,
- 114, 10, 99, 10, 101, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 111, 10,
- 58, 109, 10, 97, 10, 108, 115, 101,
- 109, 112, 108, 101, 114, 58, 10, 10,
- 10, 32, 35, 69, 124, 9, 13, 10,
- 103, 10, 101, 10, 110, 10, 115, 10,
- 107, 10, 97, 10, 112, 10, 58, 105,
- 116, 116, 101, 110, -61, -91, 114, 103,
- -61, 99, -91, 101, 110, 97, 114, 105,
- 111, 58, 109, 10, 10, 10, 32, 35,
- 37, 42, 64, 65, 66, 69, 71, 77,
- 78, 79, 83, 9, 13, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 32, 10, 98, 10, 115, 10,
- 116, 10, 114, 10, 97, 10, 107, 10,
- 116, 10, 32, 10, 83, 10, 99, 10,
- 101, 10, 110, 10, 97, 10, 114, 10,
- 105, 10, 111, 10, 58, 10, 97, 10,
- 107, 10, 103, 10, 114, 10, 117, 10,
- 110, 10, 110, 10, 103, 10, 101, 10,
- 110, 10, 115, 10, 107, 10, 97, 10,
- 112, 10, 105, 10, 116, 10, 116, 10,
- 101, 10, 110, -61, 10, -91, 10, 10,
- 114, 10, 103, -61, 10, 99, -91, 10,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 111, 10, 58, 109, 10,
- 97, 10, 108, 97, 108, 32, 124, 9,
- 13, 10, 32, 92, 124, 9, 13, 10,
- 92, 124, 10, 92, 10, 32, 92, 124,
- 9, 13, 10, 32, 34, 35, 37, 42,
- 64, 65, 66, 69, 71, 77, 78, 79,
- 83, 124, 9, 13, 10, 103, 10, 101,
- 10, 110, 10, 115, 10, 107, 10, 97,
- 10, 112, 10, 58, 10, 105, 10, 116,
- 10, 116, 10, 101, 10, 110, -61, 10,
- -91, 10, 10, 114, 10, 103, -61, 10,
- 99, -91, 10, 10, 101, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 111, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 12, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 16, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 13, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 9, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 5, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 14,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 1, 1, 2, 4, 3, 2,
- 4, 16, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 1, 0, 0,
- 1, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 139, 141,
- 143, 145, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 165, 167, 169, 171, 173,
- 175, 189, 192, 195, 198, 201, 204, 207,
- 210, 213, 216, 219, 222, 225, 228, 231,
- 234, 252, 254, 256, 258, 260, 262, 264,
- 266, 268, 270, 272, 287, 290, 293, 296,
- 299, 302, 305, 308, 311, 314, 317, 320,
- 323, 326, 329, 332, 335, 338, 341, 344,
- 347, 350, 353, 356, 359, 362, 365, 368,
- 371, 374, 377, 380, 383, 386, 389, 392,
- 395, 398, 401, 404, 407, 410, 413, 416,
- 419, 422, 425, 428, 431, 435, 438, 441,
- 444, 447, 450, 453, 456, 460, 463, 466,
- 469, 471, 473, 475, 477, 479, 481, 483,
- 485, 487, 498, 501, 504, 507, 510, 513,
- 516, 519, 522, 525, 528, 531, 534, 537,
- 540, 543, 546, 549, 552, 555, 558, 561,
- 564, 567, 570, 573, 576, 579, 582, 585,
- 588, 591, 594, 597, 600, 603, 606, 609,
- 612, 616, 619, 622, 625, 628, 631, 634,
- 637, 640, 643, 646, 649, 652, 655, 658,
- 661, 664, 667, 670, 673, 676, 680, 683,
- 686, 688, 690, 692, 694, 696, 698, 700,
- 702, 704, 706, 713, 716, 719, 722, 725,
- 728, 731, 734, 737, 739, 741, 743, 745,
- 747, 749, 751, 753, 755, 758, 760, 762,
- 764, 766, 768, 770, 772, 775, 777, 779,
- 795, 798, 801, 804, 807, 810, 813, 816,
- 819, 822, 825, 828, 831, 834, 837, 840,
- 843, 846, 849, 852, 855, 858, 861, 864,
- 867, 870, 873, 876, 879, 882, 885, 888,
- 891, 894, 897, 900, 903, 906, 909, 912,
- 915, 918, 921, 924, 927, 930, 933, 936,
- 939, 942, 945, 948, 951, 954, 957, 960,
- 964, 967, 970, 973, 976, 979, 982, 985,
- 989, 992, 995, 997, 999, 1003, 1009, 1013,
- 1016, 1022, 1040, 1043, 1046, 1049, 1052, 1055,
- 1058, 1061, 1064, 1067, 1070, 1073, 1076, 1079,
- 1082, 1085, 1088, 1091, 1095, 1098, 1101, 1104,
- 1107, 1110, 1113, 1116
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 73, 143, 235, 238, 240, 243, 244,
- 324, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 73,
- 143, 235, 238, 240, 243, 244, 324, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 355, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 0, 39, 0, 40, 0, 41,
- 0, 42, 0, 43, 0, 44, 0, 45,
- 0, 46, 0, 47, 0, 48, 0, 49,
- 0, 50, 0, 51, 0, 52, 0, 53,
- 0, 54, 0, 56, 55, 56, 55, 56,
- 56, 4, 57, 71, 4, 330, 338, 341,
- 343, 346, 347, 56, 55, 56, 58, 55,
- 56, 59, 55, 56, 60, 55, 56, 61,
- 55, 56, 62, 55, 56, 63, 55, 56,
- 64, 55, 56, 65, 55, 56, 66, 55,
- 56, 67, 55, 56, 68, 55, 56, 69,
- 55, 56, 70, 55, 56, 4, 55, 56,
- 72, 55, 4, 4, 5, 15, 17, 31,
- 34, 37, 73, 143, 235, 238, 240, 243,
- 244, 324, 4, 0, 74, 0, 75, 0,
- 76, 0, 77, 0, 78, 0, 79, 0,
- 80, 0, 81, 0, 83, 82, 83, 82,
- 83, 83, 4, 84, 98, 4, 99, 116,
- 123, 126, 128, 131, 132, 83, 82, 83,
- 85, 82, 83, 86, 82, 83, 87, 82,
- 83, 88, 82, 83, 89, 82, 83, 90,
- 82, 83, 91, 82, 83, 92, 82, 83,
- 93, 82, 83, 94, 82, 83, 95, 82,
- 83, 96, 82, 83, 97, 82, 83, 4,
- 82, 83, 72, 82, 83, 100, 82, 83,
- 101, 82, 83, 102, 82, 83, 103, 82,
- 83, 104, 82, 83, 105, 82, 83, 106,
- 82, 83, 107, 82, 83, 108, 82, 83,
- 109, 82, 83, 110, 82, 83, 111, 82,
- 83, 112, 82, 83, 113, 82, 83, 114,
- 82, 83, 115, 82, 83, 72, 82, 83,
- 117, 82, 83, 118, 82, 83, 119, 82,
- 83, 120, 82, 83, 121, 82, 83, 122,
- 82, 83, 115, 82, 83, 124, 82, 83,
- 125, 82, 83, 98, 82, 83, 127, 82,
- 83, 98, 82, 129, 83, 82, 130, 83,
- 82, 83, 98, 82, 83, 98, 82, 133,
- 83, 134, 82, 98, 83, 82, 83, 135,
- 82, 83, 136, 82, 83, 137, 82, 83,
- 138, 82, 83, 139, 82, 83, 140, 82,
- 83, 72, 141, 82, 83, 142, 82, 83,
- 115, 82, 144, 216, 0, 145, 0, 146,
- 0, 147, 0, 148, 0, 149, 0, 150,
- 0, 151, 0, 153, 152, 153, 152, 153,
- 153, 4, 154, 4, 168, 185, 192, 206,
- 153, 152, 153, 155, 152, 153, 156, 152,
- 153, 157, 152, 153, 158, 152, 153, 159,
- 152, 153, 160, 152, 153, 161, 152, 153,
- 162, 152, 153, 163, 152, 153, 164, 152,
- 153, 165, 152, 153, 166, 152, 153, 167,
- 152, 153, 4, 152, 153, 169, 152, 153,
- 170, 152, 153, 171, 152, 153, 172, 152,
- 153, 173, 152, 153, 174, 152, 153, 175,
- 152, 153, 176, 152, 153, 177, 152, 153,
- 178, 152, 153, 179, 152, 153, 180, 152,
- 153, 181, 152, 153, 182, 152, 153, 183,
- 152, 153, 184, 152, 153, 72, 152, 153,
- 186, 152, 153, 187, 152, 153, 188, 152,
- 153, 189, 152, 153, 190, 152, 153, 191,
- 152, 153, 184, 152, 153, 193, 199, 152,
- 153, 194, 152, 153, 195, 152, 153, 196,
- 152, 153, 197, 152, 153, 198, 152, 153,
- 184, 152, 153, 200, 152, 153, 201, 152,
- 153, 202, 152, 153, 203, 152, 153, 204,
- 152, 153, 205, 152, 153, 184, 152, 153,
- 207, 152, 153, 208, 152, 153, 209, 152,
- 153, 210, 152, 153, 211, 152, 153, 212,
- 152, 153, 213, 152, 153, 72, 214, 152,
- 153, 215, 152, 153, 184, 152, 217, 0,
- 218, 0, 219, 0, 220, 0, 221, 0,
- 222, 0, 223, 0, 224, 0, 226, 225,
- 226, 225, 226, 226, 4, 227, 4, 226,
- 225, 226, 228, 225, 226, 229, 225, 226,
- 230, 225, 226, 231, 225, 226, 232, 225,
- 226, 233, 225, 226, 234, 225, 226, 72,
- 225, 236, 0, 237, 0, 31, 0, 239,
- 0, 31, 0, 241, 0, 242, 0, 31,
- 0, 31, 0, 245, 246, 0, 31, 0,
- 247, 0, 248, 0, 249, 0, 250, 0,
- 251, 0, 252, 0, 253, 322, 0, 255,
- 254, 255, 254, 255, 255, 4, 256, 270,
- 4, 271, 288, 295, 302, 305, 307, 310,
- 311, 255, 254, 255, 257, 254, 255, 258,
- 254, 255, 259, 254, 255, 260, 254, 255,
- 261, 254, 255, 262, 254, 255, 263, 254,
- 255, 264, 254, 255, 265, 254, 255, 266,
- 254, 255, 267, 254, 255, 268, 254, 255,
- 269, 254, 255, 4, 254, 255, 72, 254,
- 255, 272, 254, 255, 273, 254, 255, 274,
- 254, 255, 275, 254, 255, 276, 254, 255,
- 277, 254, 255, 278, 254, 255, 279, 254,
- 255, 280, 254, 255, 281, 254, 255, 282,
- 254, 255, 283, 254, 255, 284, 254, 255,
- 285, 254, 255, 286, 254, 255, 287, 254,
- 255, 72, 254, 255, 289, 254, 255, 290,
- 254, 255, 291, 254, 255, 292, 254, 255,
- 293, 254, 255, 294, 254, 255, 287, 254,
- 255, 296, 254, 255, 297, 254, 255, 298,
- 254, 255, 299, 254, 255, 300, 254, 255,
- 301, 254, 255, 287, 254, 255, 303, 254,
- 255, 304, 254, 255, 270, 254, 255, 306,
- 254, 255, 270, 254, 308, 255, 254, 309,
- 255, 254, 255, 270, 254, 255, 270, 254,
- 312, 255, 313, 254, 270, 255, 254, 255,
- 314, 254, 255, 315, 254, 255, 316, 254,
- 255, 317, 254, 255, 318, 254, 255, 319,
- 254, 255, 72, 320, 254, 255, 321, 254,
- 255, 287, 254, 323, 0, 53, 0, 324,
- 325, 324, 0, 329, 328, 327, 325, 328,
- 326, 0, 327, 325, 326, 0, 327, 326,
- 329, 328, 327, 325, 328, 326, 329, 329,
- 5, 15, 17, 31, 34, 37, 73, 143,
- 235, 238, 240, 243, 244, 324, 329, 0,
- 56, 331, 55, 56, 332, 55, 56, 333,
- 55, 56, 334, 55, 56, 335, 55, 56,
- 336, 55, 56, 337, 55, 56, 72, 55,
- 56, 339, 55, 56, 340, 55, 56, 71,
- 55, 56, 342, 55, 56, 71, 55, 344,
- 56, 55, 345, 56, 55, 56, 71, 55,
- 56, 71, 55, 348, 56, 349, 55, 71,
- 56, 55, 56, 350, 55, 56, 351, 55,
- 56, 352, 55, 56, 353, 55, 56, 354,
- 55, 56, 337, 55, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 78, 33, 84, 78, 84, 84, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 54,
- 19, 0, 130, 31, 60, 57, 31, 63,
- 57, 63, 63, 63, 63, 63, 63, 63,
- 63, 66, 31, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 72, 33, 84, 72, 84, 84,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 54, 15, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 69, 33, 69, 84, 84, 84, 84,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 13, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 81, 84, 81, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 21,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0, 43, 144,
- 57, 54, 0, 54, 0, 75, 33, 84,
- 75, 84, 84, 84, 84, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 17, 0, 54, 17, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 17, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 43, 0, 43, 0,
- 0, 0, 43, 54, 37, 37, 87, 37,
- 37, 43, 0, 39, 0, 43, 0, 0,
- 54, 0, 0, 39, 0, 0, 54, 0,
- 93, 90, 41, 96, 90, 96, 96, 96,
- 96, 96, 96, 96, 96, 99, 0, 43,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 19, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 355;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 915 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
-
- #line 922 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1212 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1275 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/no.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_no()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "No", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/no.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/no.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 128, 129, 130,
- 131, 145, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 165, 167, 169, 171, 173,
- 175, 193, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 218, 220, 222, 224,
- 226, 228, 230, 232, 234, 236, 238, 240,
- 242, 244, 246, 248, 250, 252, 254, 256,
- 258, 260, 262, 264, 266, 268, 270, 272,
- 274, 276, 278, 280, 282, 284, 286, 288,
- 290, 292, 294, 296, 298, 300, 302, 304,
- 306, 308, 310, 312, 314, 317, 319, 321,
- 323, 325, 327, 329, 331, 334, 336, 338,
- 340, 341, 342, 343, 344, 345, 346, 347,
- 348, 349, 360, 362, 364, 366, 368, 370,
- 372, 374, 376, 378, 380, 382, 384, 386,
- 388, 390, 392, 394, 396, 398, 400, 402,
- 404, 406, 408, 410, 412, 414, 416, 418,
- 420, 422, 424, 426, 428, 430, 432, 434,
- 436, 439, 441, 443, 445, 447, 449, 451,
- 453, 455, 457, 459, 461, 463, 465, 467,
- 469, 471, 473, 475, 477, 479, 482, 484,
- 486, 487, 488, 489, 490, 491, 492, 493,
- 494, 495, 496, 503, 505, 507, 509, 511,
- 513, 515, 517, 519, 520, 521, 522, 523,
- 524, 525, 526, 527, 528, 530, 531, 532,
- 533, 534, 535, 536, 537, 539, 540, 541,
- 557, 559, 561, 563, 565, 567, 569, 571,
- 573, 575, 577, 579, 581, 583, 585, 587,
- 589, 591, 593, 595, 597, 599, 601, 603,
- 605, 607, 609, 611, 613, 615, 617, 619,
- 621, 623, 625, 627, 629, 631, 633, 635,
- 637, 639, 641, 643, 645, 647, 649, 651,
- 653, 655, 657, 659, 661, 663, 665, 667,
- 670, 672, 674, 676, 678, 680, 682, 684,
- 687, 689, 691, 692, 693, 697, 703, 706,
- 708, 714, 732, 734, 736, 738, 740, 742,
- 744, 746, 748, 750, 752, 754, 756, 758,
- 760, 762, 764, 766, 769, 771, 773, 775,
- 777, 779, 781, 783
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 69, 71, 77, 78, 79, 83,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 65, 66, 69, 71,
- 77, 78, 79, 83, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 98, 115, 116, 114, 97, 107, 116, 32,
- 83, 99, 101, 110, 97, 114, 105, 111,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 69, 71, 77, 78, 79, 83, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 32, 34, 35, 37, 42, 64, 65, 66,
- 69, 71, 77, 78, 79, 83, 124, 9,
- 13, 97, 107, 103, 114, 117, 110, 110,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 65, 69, 71, 77, 78, 79, 83,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 32,
- 10, 98, 10, 115, 10, 116, 10, 114,
- 10, 97, 10, 107, 10, 116, 10, 32,
- 10, 83, 10, 99, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 111,
- 10, 58, 10, 103, 10, 101, 10, 110,
- 10, 115, 10, 107, 10, 97, 10, 112,
- 10, 105, 10, 116, 10, 116, 10, 101,
- 10, 110, -61, 10, -91, 10, 10, 114,
- 10, 103, -61, 10, 99, -91, 10, 10,
- 101, 10, 110, 10, 97, 10, 114, 10,
- 105, 10, 111, 10, 58, 109, 10, 97,
- 10, 108, 103, 107, 101, 110, 115, 107,
- 97, 112, 58, 10, 10, 10, 32, 35,
- 37, 64, 65, 66, 69, 83, 9, 13,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 98, 10, 115,
- 10, 116, 10, 114, 10, 97, 10, 107,
- 10, 116, 10, 32, 10, 83, 10, 99,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 111, 10, 58, 10, 97,
- 10, 107, 10, 103, 10, 114, 10, 117,
- 10, 110, 10, 110, 10, 103, 107, 10,
- 101, 10, 110, 10, 115, 10, 107, 10,
- 97, 10, 112, 10, 115, 10, 101, 10,
- 109, 10, 112, 10, 108, 10, 101, 10,
- 114, 10, 99, 10, 101, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 111, 10,
- 58, 109, 10, 97, 10, 108, 115, 101,
- 109, 112, 108, 101, 114, 58, 10, 10,
- 10, 32, 35, 69, 124, 9, 13, 10,
- 103, 10, 101, 10, 110, 10, 115, 10,
- 107, 10, 97, 10, 112, 10, 58, 105,
- 116, 116, 101, 110, -61, -91, 114, 103,
- -61, 99, -91, 101, 110, 97, 114, 105,
- 111, 58, 109, 10, 10, 10, 32, 35,
- 37, 42, 64, 65, 66, 69, 71, 77,
- 78, 79, 83, 9, 13, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 32, 10, 98, 10, 115, 10,
- 116, 10, 114, 10, 97, 10, 107, 10,
- 116, 10, 32, 10, 83, 10, 99, 10,
- 101, 10, 110, 10, 97, 10, 114, 10,
- 105, 10, 111, 10, 58, 10, 97, 10,
- 107, 10, 103, 10, 114, 10, 117, 10,
- 110, 10, 110, 10, 103, 10, 101, 10,
- 110, 10, 115, 10, 107, 10, 97, 10,
- 112, 10, 105, 10, 116, 10, 116, 10,
- 101, 10, 110, -61, 10, -91, 10, 10,
- 114, 10, 103, -61, 10, 99, -91, 10,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 111, 10, 58, 109, 10,
- 97, 10, 108, 97, 108, 32, 124, 9,
- 13, 10, 32, 92, 124, 9, 13, 10,
- 92, 124, 10, 92, 10, 32, 92, 124,
- 9, 13, 10, 32, 34, 35, 37, 42,
- 64, 65, 66, 69, 71, 77, 78, 79,
- 83, 124, 9, 13, 10, 103, 10, 101,
- 10, 110, 10, 115, 10, 107, 10, 97,
- 10, 112, 10, 58, 10, 105, 10, 116,
- 10, 116, 10, 101, 10, 110, -61, 10,
- -91, 10, 10, 114, 10, 103, -61, 10,
- 99, -91, 10, 10, 101, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 111, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 12, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 16, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 13, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 9, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 5, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 14,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 1, 1, 2, 4, 3, 2,
- 4, 16, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 1, 0, 0,
- 1, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 139, 141,
- 143, 145, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 165, 167, 169, 171, 173,
- 175, 189, 192, 195, 198, 201, 204, 207,
- 210, 213, 216, 219, 222, 225, 228, 231,
- 234, 252, 254, 256, 258, 260, 262, 264,
- 266, 268, 270, 272, 287, 290, 293, 296,
- 299, 302, 305, 308, 311, 314, 317, 320,
- 323, 326, 329, 332, 335, 338, 341, 344,
- 347, 350, 353, 356, 359, 362, 365, 368,
- 371, 374, 377, 380, 383, 386, 389, 392,
- 395, 398, 401, 404, 407, 410, 413, 416,
- 419, 422, 425, 428, 431, 435, 438, 441,
- 444, 447, 450, 453, 456, 460, 463, 466,
- 469, 471, 473, 475, 477, 479, 481, 483,
- 485, 487, 498, 501, 504, 507, 510, 513,
- 516, 519, 522, 525, 528, 531, 534, 537,
- 540, 543, 546, 549, 552, 555, 558, 561,
- 564, 567, 570, 573, 576, 579, 582, 585,
- 588, 591, 594, 597, 600, 603, 606, 609,
- 612, 616, 619, 622, 625, 628, 631, 634,
- 637, 640, 643, 646, 649, 652, 655, 658,
- 661, 664, 667, 670, 673, 676, 680, 683,
- 686, 688, 690, 692, 694, 696, 698, 700,
- 702, 704, 706, 713, 716, 719, 722, 725,
- 728, 731, 734, 737, 739, 741, 743, 745,
- 747, 749, 751, 753, 755, 758, 760, 762,
- 764, 766, 768, 770, 772, 775, 777, 779,
- 795, 798, 801, 804, 807, 810, 813, 816,
- 819, 822, 825, 828, 831, 834, 837, 840,
- 843, 846, 849, 852, 855, 858, 861, 864,
- 867, 870, 873, 876, 879, 882, 885, 888,
- 891, 894, 897, 900, 903, 906, 909, 912,
- 915, 918, 921, 924, 927, 930, 933, 936,
- 939, 942, 945, 948, 951, 954, 957, 960,
- 964, 967, 970, 973, 976, 979, 982, 985,
- 989, 992, 995, 997, 999, 1003, 1009, 1013,
- 1016, 1022, 1040, 1043, 1046, 1049, 1052, 1055,
- 1058, 1061, 1064, 1067, 1070, 1073, 1076, 1079,
- 1082, 1085, 1088, 1091, 1095, 1098, 1101, 1104,
- 1107, 1110, 1113, 1116
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 73, 143, 235, 238, 240, 243, 244,
- 324, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 73,
- 143, 235, 238, 240, 243, 244, 324, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 355, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 0, 39, 0, 40, 0, 41,
- 0, 42, 0, 43, 0, 44, 0, 45,
- 0, 46, 0, 47, 0, 48, 0, 49,
- 0, 50, 0, 51, 0, 52, 0, 53,
- 0, 54, 0, 56, 55, 56, 55, 56,
- 56, 4, 57, 71, 4, 330, 338, 341,
- 343, 346, 347, 56, 55, 56, 58, 55,
- 56, 59, 55, 56, 60, 55, 56, 61,
- 55, 56, 62, 55, 56, 63, 55, 56,
- 64, 55, 56, 65, 55, 56, 66, 55,
- 56, 67, 55, 56, 68, 55, 56, 69,
- 55, 56, 70, 55, 56, 4, 55, 56,
- 72, 55, 4, 4, 5, 15, 17, 31,
- 34, 37, 73, 143, 235, 238, 240, 243,
- 244, 324, 4, 0, 74, 0, 75, 0,
- 76, 0, 77, 0, 78, 0, 79, 0,
- 80, 0, 81, 0, 83, 82, 83, 82,
- 83, 83, 4, 84, 98, 4, 99, 116,
- 123, 126, 128, 131, 132, 83, 82, 83,
- 85, 82, 83, 86, 82, 83, 87, 82,
- 83, 88, 82, 83, 89, 82, 83, 90,
- 82, 83, 91, 82, 83, 92, 82, 83,
- 93, 82, 83, 94, 82, 83, 95, 82,
- 83, 96, 82, 83, 97, 82, 83, 4,
- 82, 83, 72, 82, 83, 100, 82, 83,
- 101, 82, 83, 102, 82, 83, 103, 82,
- 83, 104, 82, 83, 105, 82, 83, 106,
- 82, 83, 107, 82, 83, 108, 82, 83,
- 109, 82, 83, 110, 82, 83, 111, 82,
- 83, 112, 82, 83, 113, 82, 83, 114,
- 82, 83, 115, 82, 83, 72, 82, 83,
- 117, 82, 83, 118, 82, 83, 119, 82,
- 83, 120, 82, 83, 121, 82, 83, 122,
- 82, 83, 115, 82, 83, 124, 82, 83,
- 125, 82, 83, 98, 82, 83, 127, 82,
- 83, 98, 82, 129, 83, 82, 130, 83,
- 82, 83, 98, 82, 83, 98, 82, 133,
- 83, 134, 82, 98, 83, 82, 83, 135,
- 82, 83, 136, 82, 83, 137, 82, 83,
- 138, 82, 83, 139, 82, 83, 140, 82,
- 83, 72, 141, 82, 83, 142, 82, 83,
- 115, 82, 144, 216, 0, 145, 0, 146,
- 0, 147, 0, 148, 0, 149, 0, 150,
- 0, 151, 0, 153, 152, 153, 152, 153,
- 153, 4, 154, 4, 168, 185, 192, 206,
- 153, 152, 153, 155, 152, 153, 156, 152,
- 153, 157, 152, 153, 158, 152, 153, 159,
- 152, 153, 160, 152, 153, 161, 152, 153,
- 162, 152, 153, 163, 152, 153, 164, 152,
- 153, 165, 152, 153, 166, 152, 153, 167,
- 152, 153, 4, 152, 153, 169, 152, 153,
- 170, 152, 153, 171, 152, 153, 172, 152,
- 153, 173, 152, 153, 174, 152, 153, 175,
- 152, 153, 176, 152, 153, 177, 152, 153,
- 178, 152, 153, 179, 152, 153, 180, 152,
- 153, 181, 152, 153, 182, 152, 153, 183,
- 152, 153, 184, 152, 153, 72, 152, 153,
- 186, 152, 153, 187, 152, 153, 188, 152,
- 153, 189, 152, 153, 190, 152, 153, 191,
- 152, 153, 184, 152, 153, 193, 199, 152,
- 153, 194, 152, 153, 195, 152, 153, 196,
- 152, 153, 197, 152, 153, 198, 152, 153,
- 184, 152, 153, 200, 152, 153, 201, 152,
- 153, 202, 152, 153, 203, 152, 153, 204,
- 152, 153, 205, 152, 153, 184, 152, 153,
- 207, 152, 153, 208, 152, 153, 209, 152,
- 153, 210, 152, 153, 211, 152, 153, 212,
- 152, 153, 213, 152, 153, 72, 214, 152,
- 153, 215, 152, 153, 184, 152, 217, 0,
- 218, 0, 219, 0, 220, 0, 221, 0,
- 222, 0, 223, 0, 224, 0, 226, 225,
- 226, 225, 226, 226, 4, 227, 4, 226,
- 225, 226, 228, 225, 226, 229, 225, 226,
- 230, 225, 226, 231, 225, 226, 232, 225,
- 226, 233, 225, 226, 234, 225, 226, 72,
- 225, 236, 0, 237, 0, 31, 0, 239,
- 0, 31, 0, 241, 0, 242, 0, 31,
- 0, 31, 0, 245, 246, 0, 31, 0,
- 247, 0, 248, 0, 249, 0, 250, 0,
- 251, 0, 252, 0, 253, 322, 0, 255,
- 254, 255, 254, 255, 255, 4, 256, 270,
- 4, 271, 288, 295, 302, 305, 307, 310,
- 311, 255, 254, 255, 257, 254, 255, 258,
- 254, 255, 259, 254, 255, 260, 254, 255,
- 261, 254, 255, 262, 254, 255, 263, 254,
- 255, 264, 254, 255, 265, 254, 255, 266,
- 254, 255, 267, 254, 255, 268, 254, 255,
- 269, 254, 255, 4, 254, 255, 72, 254,
- 255, 272, 254, 255, 273, 254, 255, 274,
- 254, 255, 275, 254, 255, 276, 254, 255,
- 277, 254, 255, 278, 254, 255, 279, 254,
- 255, 280, 254, 255, 281, 254, 255, 282,
- 254, 255, 283, 254, 255, 284, 254, 255,
- 285, 254, 255, 286, 254, 255, 287, 254,
- 255, 72, 254, 255, 289, 254, 255, 290,
- 254, 255, 291, 254, 255, 292, 254, 255,
- 293, 254, 255, 294, 254, 255, 287, 254,
- 255, 296, 254, 255, 297, 254, 255, 298,
- 254, 255, 299, 254, 255, 300, 254, 255,
- 301, 254, 255, 287, 254, 255, 303, 254,
- 255, 304, 254, 255, 270, 254, 255, 306,
- 254, 255, 270, 254, 308, 255, 254, 309,
- 255, 254, 255, 270, 254, 255, 270, 254,
- 312, 255, 313, 254, 270, 255, 254, 255,
- 314, 254, 255, 315, 254, 255, 316, 254,
- 255, 317, 254, 255, 318, 254, 255, 319,
- 254, 255, 72, 320, 254, 255, 321, 254,
- 255, 287, 254, 323, 0, 53, 0, 324,
- 325, 324, 0, 329, 328, 327, 325, 328,
- 326, 0, 327, 325, 326, 0, 327, 326,
- 329, 328, 327, 325, 328, 326, 329, 329,
- 5, 15, 17, 31, 34, 37, 73, 143,
- 235, 238, 240, 243, 244, 324, 329, 0,
- 56, 331, 55, 56, 332, 55, 56, 333,
- 55, 56, 334, 55, 56, 335, 55, 56,
- 336, 55, 56, 337, 55, 56, 72, 55,
- 56, 339, 55, 56, 340, 55, 56, 71,
- 55, 56, 342, 55, 56, 71, 55, 344,
- 56, 55, 345, 56, 55, 56, 71, 55,
- 56, 71, 55, 348, 56, 349, 55, 71,
- 56, 55, 56, 350, 55, 56, 351, 55,
- 56, 352, 55, 56, 353, 55, 56, 354,
- 55, 56, 337, 55, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 78, 33, 84, 78, 84, 84, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 54,
- 19, 0, 130, 31, 60, 57, 31, 63,
- 57, 63, 63, 63, 63, 63, 63, 63,
- 63, 66, 31, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 72, 33, 84, 72, 84, 84,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 54, 15, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 69, 33, 69, 84, 84, 84, 84,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 13, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 81, 84, 81, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 21,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0, 43, 144,
- 57, 54, 0, 54, 0, 75, 33, 84,
- 75, 84, 84, 84, 84, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 17, 0, 54, 17, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 17, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 43, 0, 43, 0,
- 0, 0, 43, 54, 37, 37, 87, 37,
- 37, 43, 0, 39, 0, 43, 0, 0,
- 54, 0, 0, 39, 0, 0, 54, 0,
- 93, 90, 41, 96, 90, 96, 96, 96,
- 96, 96, 96, 96, 96, 99, 0, 43,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 19, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 355;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/no.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 915 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/no.c.rl"
-
-#line 922 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/no.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/no.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/no.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/no.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/no.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/no.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/no.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/no.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/no.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/no.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/no.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/no.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/no.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/no.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/no.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/no.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/no.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/no.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/no.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/no.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/no.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/no.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/no.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/no.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1212 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/no.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1275 "ext/gherkin_lexer_no/gherkin_lexer_no.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/no.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_no()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "No", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_pl/extconf.rb
index eae9dd0,eae9dd0..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_pl/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_pl")
--have_library("c", "main")
--create_makefile("gherkin_lexer_pl")
diff --cc ext/gherkin_lexer_pl/gherkin_lexer_pl.c
index 04a71b1,e3d337c..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_pl/gherkin_lexer_pl.c
+++ /dev/null
@@@ -1,1738 -1,1738 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 23, 24, 25, 47, 48, 49,
- 51, 53, 58, 63, 68, 73, 77, 81,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 101, 103, 108, 115, 120, 122, 123,
- 124, 125, 126, 127, 128, 129, 130, 143,
- 145, 147, 149, 151, 153, 155, 157, 159,
- 161, 163, 165, 167, 169, 171, 173, 175,
- 177, 179, 181, 183, 205, 206, 207, 208,
- 209, 210, 211, 212, 213, 214, 215, 217,
- 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 247, 248, 249, 250,
- 251, 252, 253, 254, 255, 256, 257, 258,
- 268, 270, 272, 274, 276, 278, 280, 282,
- 284, 286, 288, 290, 292, 294, 296, 298,
- 300, 302, 304, 306, 308, 310, 312, 314,
- 316, 318, 320, 322, 324, 326, 328, 330,
- 332, 334, 336, 338, 340, 342, 344, 346,
- 348, 350, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 383, 385,
- 387, 389, 391, 393, 395, 397, 399, 401,
- 403, 405, 407, 409, 411, 413, 416, 418,
- 420, 422, 424, 426, 428, 430, 432, 434,
- 436, 438, 440, 442, 444, 446, 448, 451,
- 453, 455, 457, 459, 461, 463, 465, 467,
- 469, 471, 473, 475, 477, 479, 481, 483,
- 485, 487, 489, 491, 493, 495, 497, 499,
- 501, 503, 505, 507, 509, 512, 514, 516,
- 518, 520, 522, 524, 526, 528, 530, 532,
- 534, 536, 538, 540, 542, 544, 546, 548,
- 550, 552, 554, 556, 558, 560, 563, 565,
- 567, 569, 571, 573, 575, 577, 579, 581,
- 583, 585, 587, 589, 592, 594, 596, 598,
- 600, 602, 604, 606, 608, 610, 612, 614,
- 615, 616, 617, 618, 619, 620, 621, 622,
- 623, 624, 625, 626, 627, 628, 629, 630,
- 631, 632, 633, 634, 654, 656, 658, 660,
- 662, 664, 666, 668, 670, 672, 674, 676,
- 678, 680, 682, 684, 687, 689, 691, 693,
- 695, 697, 699, 701, 703, 705, 707, 709,
- 711, 713, 715, 717, 719, 722, 724, 726,
- 728, 730, 732, 734, 736, 738, 740, 742,
- 744, 746, 748, 750, 752, 754, 756, 758,
- 760, 762, 764, 766, 768, 770, 772, 774,
- 776, 778, 780, 782, 784, 786, 788, 790,
- 792, 794, 796, 798, 801, 803, 805, 807,
- 809, 811, 813, 815, 817, 819, 821, 823,
- 825, 827, 829, 831, 833, 835, 837, 839,
- 840, 841, 842, 843, 844, 845, 846, 847,
- 848, 849, 850, 851, 852, 854, 855, 856,
- 857, 858, 859, 860, 861, 862, 863, 864,
- 865, 885, 887, 889, 891, 893, 895, 897,
- 899, 901, 903, 905, 907, 909, 911, 913,
- 915, 918, 920, 922, 924, 926, 928, 930,
- 932, 934, 936, 938, 940, 942, 944, 946,
- 948, 950, 953, 955, 957, 959, 961, 963,
- 965, 967, 969, 971, 973, 975, 977, 979,
- 981, 983, 985, 987, 989, 991, 993, 995,
- 997, 999, 1001, 1003, 1005, 1007, 1009, 1011,
- 1014, 1016, 1018, 1020, 1022, 1024, 1026, 1028,
- 1030, 1032, 1034, 1036, 1038, 1040, 1042, 1044,
- 1046, 1048, 1050, 1052, 1054, 1056, 1058, 1060,
- 1062, 1065, 1067, 1069, 1071, 1073, 1075, 1077,
- 1079, 1081, 1083, 1085, 1087, 1089, 1091, 1093,
- 1095, 1097, 1099, 1101, 1102, 1103, 1104, 1105,
- 1109, 1115, 1118, 1120, 1126, 1148, 1150, 1152,
- 1154, 1156, 1158, 1160, 1163, 1165, 1167, 1169,
- 1171, 1173, 1175, 1177, 1179, 1181, 1183, 1185,
- 1187, 1189, 1191, 1193, 1195, 1197, 1199, 1201,
- 1203, 1205, 1207, 1209, 1212, 1214, 1216, 1218,
- 1220, 1222, 1224, 1226, 1228, 1230, 1232, 1234,
- 1236, 1238, 1240, 1242, 1244, 1246, 1248, 1250,
- 1252, 1254, 1256, 1258, 1260, 1262, 1264, 1266,
- 1268, 1270, 1272, 1274, 1276, 1278, 1280, 1282,
- 1284, 1286, 1288, 1290, 1292, 1294, 1296, 1298,
- 1300, 1302, 1304
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 70, 71, 73, 74, 75, 77, 79,
- 80, 83, 87, 90, 124, 9, 13, -69,
- -65, 10, 32, 34, 35, 37, 42, 64,
- 65, 70, 71, 73, 74, 75, 77, 79,
- 80, 83, 87, 90, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 108, 115, 101, 112, 101, 107, 116, 58,
- 10, 10, 10, 32, 35, 37, 64, 65,
- 70, 80, 83, 87, 90, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 115, 10, 112, 10,
- 101, 10, 107, 10, 116, 10, 58, 10,
- 32, 34, 35, 37, 42, 64, 65, 70,
- 71, 73, 74, 75, 77, 79, 80, 83,
- 87, 90, 124, 9, 13, 117, 110, 107,
- 99, 106, 97, 100, 121, 101, -59, -101,
- -68, 108, 105, 101, 105, 101, 97, 106,
- -60, -123, 99, 114, 97, 122, 111, 114,
- 116, 114, 122, 101, 98, 97, 32, 98,
- 105, 122, 110, 101, 115, 111, 119, 122,
- 121, 107, -59, -126, 97, 100, 121, 58,
- 10, 10, 10, 32, 35, 65, 70, 80,
- 87, 124, 9, 13, 10, 115, 10, 112,
- 10, 101, 10, 107, 10, 116, 10, 58,
- 10, 117, 10, 110, 10, 107, 10, 99,
- 10, 106, 10, 97, 10, 111, 10, 116,
- 10, 114, 10, 122, 10, 101, 10, 98,
- 10, 97, 10, 32, 10, 98, 10, 105,
- 10, 122, 10, 110, 10, 101, 10, 115,
- 10, 111, 10, 119, -59, 10, -126, 10,
- 10, 97, -59, 10, -101, 10, 10, 99,
- 10, 105, 10, 119, 10, 111, -59, 10,
- -101, 10, -60, 10, -121, 10, 99, 122,
- 101, 110, 97, 114, 105, 117, 115, 122,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 65, 70, 71, 73, 74, 75, 77,
- 79, 80, 83, 87, 90, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 32, 10, 108, 115,
- 10, 101, 10, 112, 10, 101, 10, 107,
- 10, 116, 10, 58, 10, 117, 10, 110,
- 10, 107, 10, 99, 10, 106, 10, 97,
- 10, 100, 10, 121, 10, 101, -59, 10,
- -101, -68, 10, 10, 108, 10, 105, 10,
- 101, 10, 105, 10, 101, 10, 97, 10,
- 106, -60, 10, -123, 10, 10, 99, 10,
- 114, 10, 97, 10, 122, 10, 111, 10,
- 116, 10, 114, 10, 122, 10, 101, 10,
- 98, 10, 97, 10, 32, 10, 98, 10,
- 105, 10, 122, 10, 110, 10, 101, 10,
- 115, 10, 111, 10, 119, 10, 99, 122,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 117, 10, 115, 10, 122,
- 10, 97, 10, 98, 10, 108, 10, 111,
- 10, 110, 10, 32, 10, 115, 10, 99,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 117, 10, 115, 10, 122,
- -59, 10, 116, -126, 10, 10, 97, -59,
- 10, -101, 10, 10, 99, 10, 105, 10,
- 119, 10, 111, -59, 10, -101, 10, -60,
- 10, -121, 10, 10, 97, -59, 10, 107,
- -126, 10, 10, 111, -59, 10, -68, 10,
- 10, 101, 10, 110, 10, 105, -59, 10,
- -126, 10, 10, 97, 10, 100, 97, 98,
- 108, 111, 110, 32, 115, 99, 101, 110,
- 97, 114, 105, 117, 115, 122, 97, 58,
- 10, 10, 10, 32, 35, 37, 42, 64,
- 65, 70, 71, 73, 74, 75, 77, 79,
- 80, 83, 87, 90, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 108, 115, 10,
- 101, 10, 112, 10, 101, 10, 107, 10,
- 116, 10, 58, 10, 117, 10, 110, 10,
- 107, 10, 99, 10, 106, 10, 97, 10,
- 100, 10, 121, 10, 101, -59, 10, -101,
- -68, 10, 10, 108, 10, 105, 10, 101,
- 10, 105, 10, 101, 10, 97, 10, 106,
- -60, 10, -123, 10, 10, 99, 10, 114,
- 10, 97, 10, 122, 10, 111, 10, 116,
- 10, 114, 10, 122, 10, 101, 10, 98,
- 10, 97, 10, 32, 10, 98, 10, 105,
- 10, 122, 10, 110, 10, 101, 10, 115,
- 10, 111, 10, 119, 10, 99, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 117, 10, 115, 10, 122, -59, 10,
- 116, -126, 10, 10, 97, -59, 10, -101,
- 10, 10, 99, 10, 105, 10, 119, 10,
- 111, -59, 10, -101, 10, -60, 10, -121,
- 10, 10, 97, 10, 107, -59, 10, -126,
- 10, 10, 97, 10, 100, -59, 116, -126,
- 97, -59, -101, 99, 105, 119, 111, -59,
- -101, -60, -121, 97, -59, 107, -126, 111,
- -59, -68, 101, 110, 105, 97, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 65,
- 70, 71, 73, 74, 75, 77, 79, 80,
- 83, 87, 90, 9, 13, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 32, 10, 108, 115, 10, 101,
- 10, 112, 10, 101, 10, 107, 10, 116,
- 10, 58, 10, 117, 10, 110, 10, 107,
- 10, 99, 10, 106, 10, 97, 10, 100,
- 10, 121, 10, 101, -59, 10, -101, -68,
- 10, 10, 108, 10, 105, 10, 101, 10,
- 105, 10, 101, 10, 97, 10, 106, -60,
- 10, -123, 10, 10, 99, 10, 114, 10,
- 97, 10, 122, 10, 111, 10, 116, 10,
- 114, 10, 122, 10, 101, 10, 98, 10,
- 97, 10, 32, 10, 98, 10, 105, 10,
- 122, 10, 110, 10, 101, 10, 115, 10,
- 111, 10, 119, 10, 99, 122, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 117, 10, 115, 10, 122, 10, 97,
- 10, 98, 10, 108, 10, 111, 10, 110,
- 10, 32, 10, 115, 10, 99, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 117, 10, 115, 10, 122, -59, 10,
- 116, -126, 10, 10, 97, -59, 10, -101,
- 10, 10, 99, 10, 105, 10, 119, 10,
- 111, -59, 10, -101, 10, -60, 10, -121,
- 10, 10, 97, 10, 107, -59, 10, -126,
- 10, 10, 97, 10, 100, -59, -126, 97,
- 100, 32, 124, 9, 13, 10, 32, 92,
- 124, 9, 13, 10, 92, 124, 10, 92,
- 10, 32, 92, 124, 9, 13, 10, 32,
- 34, 35, 37, 42, 64, 65, 70, 71,
- 73, 74, 75, 77, 79, 80, 83, 87,
- 90, 124, 9, 13, 10, 117, 10, 110,
- 10, 107, 10, 99, 10, 106, 10, 97,
- 10, 111, 114, 10, 116, 10, 114, 10,
- 122, 10, 101, 10, 98, 10, 97, 10,
- 32, 10, 98, 10, 105, 10, 122, 10,
- 110, 10, 101, 10, 115, 10, 111, 10,
- 119, 10, 122, 10, 121, 10, 107, -59,
- 10, -126, 10, 10, 97, 10, 100, 10,
- 121, 10, 99, 122, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 117,
- 10, 115, 10, 122, 10, 97, 10, 98,
- 10, 108, 10, 111, 10, 110, 10, 32,
- 10, 115, 10, 99, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 117,
- 10, 115, 10, 122, -59, 10, -126, 10,
- 10, 97, -59, 10, -101, 10, 10, 99,
- 10, 105, 10, 119, 10, 111, -59, 10,
- -101, 10, -60, 10, -121, 10, 10, 97,
- -59, 10, -126, 10, 10, 111, -59, 10,
- -68, 10, 10, 101, 10, 110, 10, 105,
- 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 21, 1, 1, 20, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 11, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 20, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 8,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 18, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 18, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 18, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 2,
- 4, 3, 2, 4, 20, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 1, 0, 0, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 23, 25, 27, 49, 51, 53,
- 56, 59, 64, 69, 74, 79, 83, 87,
- 90, 92, 94, 96, 98, 100, 102, 104,
- 106, 108, 110, 112, 114, 116, 118, 120,
- 122, 125, 128, 133, 140, 145, 148, 150,
- 152, 154, 156, 158, 160, 162, 164, 177,
- 180, 183, 186, 189, 192, 195, 198, 201,
- 204, 207, 210, 213, 216, 219, 222, 225,
- 228, 231, 234, 237, 259, 261, 263, 265,
- 267, 269, 271, 273, 275, 277, 279, 282,
- 284, 286, 288, 290, 292, 294, 296, 298,
- 300, 302, 304, 306, 308, 311, 313, 315,
- 317, 319, 321, 323, 325, 327, 329, 331,
- 333, 335, 337, 339, 341, 343, 345, 347,
- 349, 351, 353, 355, 357, 359, 361, 363,
- 373, 376, 379, 382, 385, 388, 391, 394,
- 397, 400, 403, 406, 409, 412, 415, 418,
- 421, 424, 427, 430, 433, 436, 439, 442,
- 445, 448, 451, 454, 457, 460, 463, 466,
- 469, 472, 475, 478, 481, 484, 487, 490,
- 493, 496, 499, 501, 503, 505, 507, 509,
- 511, 513, 515, 517, 519, 521, 541, 544,
- 547, 550, 553, 556, 559, 562, 565, 568,
- 571, 574, 577, 580, 583, 586, 590, 593,
- 596, 599, 602, 605, 608, 611, 614, 617,
- 620, 623, 626, 629, 632, 635, 638, 642,
- 645, 648, 651, 654, 657, 660, 663, 666,
- 669, 672, 675, 678, 681, 684, 687, 690,
- 693, 696, 699, 702, 705, 708, 711, 714,
- 717, 720, 723, 726, 729, 733, 736, 739,
- 742, 745, 748, 751, 754, 757, 760, 763,
- 766, 769, 772, 775, 778, 781, 784, 787,
- 790, 793, 796, 799, 802, 805, 809, 812,
- 815, 818, 821, 824, 827, 830, 833, 836,
- 839, 842, 845, 848, 852, 855, 858, 861,
- 864, 867, 870, 873, 876, 879, 882, 885,
- 887, 889, 891, 893, 895, 897, 899, 901,
- 903, 905, 907, 909, 911, 913, 915, 917,
- 919, 921, 923, 925, 945, 948, 951, 954,
- 957, 960, 963, 966, 969, 972, 975, 978,
- 981, 984, 987, 990, 994, 997, 1000, 1003,
- 1006, 1009, 1012, 1015, 1018, 1021, 1024, 1027,
- 1030, 1033, 1036, 1039, 1042, 1046, 1049, 1052,
- 1055, 1058, 1061, 1064, 1067, 1070, 1073, 1076,
- 1079, 1082, 1085, 1088, 1091, 1094, 1097, 1100,
- 1103, 1106, 1109, 1112, 1115, 1118, 1121, 1124,
- 1127, 1130, 1133, 1136, 1139, 1142, 1145, 1148,
- 1151, 1154, 1157, 1160, 1164, 1167, 1170, 1173,
- 1176, 1179, 1182, 1185, 1188, 1191, 1194, 1197,
- 1200, 1203, 1206, 1209, 1212, 1215, 1218, 1221,
- 1223, 1225, 1227, 1229, 1231, 1233, 1235, 1237,
- 1239, 1241, 1243, 1245, 1247, 1250, 1252, 1254,
- 1256, 1258, 1260, 1262, 1264, 1266, 1268, 1270,
- 1272, 1292, 1295, 1298, 1301, 1304, 1307, 1310,
- 1313, 1316, 1319, 1322, 1325, 1328, 1331, 1334,
- 1337, 1341, 1344, 1347, 1350, 1353, 1356, 1359,
- 1362, 1365, 1368, 1371, 1374, 1377, 1380, 1383,
- 1386, 1389, 1393, 1396, 1399, 1402, 1405, 1408,
- 1411, 1414, 1417, 1420, 1423, 1426, 1429, 1432,
- 1435, 1438, 1441, 1444, 1447, 1450, 1453, 1456,
- 1459, 1462, 1465, 1468, 1471, 1474, 1477, 1480,
- 1484, 1487, 1490, 1493, 1496, 1499, 1502, 1505,
- 1508, 1511, 1514, 1517, 1520, 1523, 1526, 1529,
- 1532, 1535, 1538, 1541, 1544, 1547, 1550, 1553,
- 1556, 1560, 1563, 1566, 1569, 1572, 1575, 1578,
- 1581, 1584, 1587, 1590, 1593, 1596, 1599, 1602,
- 1605, 1608, 1611, 1614, 1616, 1618, 1620, 1622,
- 1626, 1632, 1636, 1639, 1645, 1667, 1670, 1673,
- 1676, 1679, 1682, 1685, 1689, 1692, 1695, 1698,
- 1701, 1704, 1707, 1710, 1713, 1716, 1719, 1722,
- 1725, 1728, 1731, 1734, 1737, 1740, 1743, 1746,
- 1749, 1752, 1755, 1758, 1762, 1765, 1768, 1771,
- 1774, 1777, 1780, 1783, 1786, 1789, 1792, 1795,
- 1798, 1801, 1804, 1807, 1810, 1813, 1816, 1819,
- 1822, 1825, 1828, 1831, 1834, 1837, 1840, 1843,
- 1846, 1849, 1852, 1855, 1858, 1861, 1864, 1867,
- 1870, 1873, 1876, 1879, 1882, 1885, 1888, 1891,
- 1894, 1897, 1900
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 68, 74, 31, 76, 82, 84, 89,
- 92, 161, 398, 411, 535, 4, 0, 3,
- 0, 4, 0, 4, 4, 5, 15, 17,
- 31, 34, 37, 68, 74, 31, 76, 82,
- 84, 89, 92, 161, 398, 411, 535, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 618, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 39, 0, 31, 0, 40, 0,
- 41, 0, 42, 0, 43, 0, 44, 0,
- 46, 45, 46, 45, 46, 46, 4, 47,
- 4, 61, 541, 547, 571, 596, 609, 46,
- 45, 46, 48, 45, 46, 49, 45, 46,
- 50, 45, 46, 51, 45, 46, 52, 45,
- 46, 53, 45, 46, 54, 45, 46, 55,
- 45, 46, 56, 45, 46, 57, 45, 46,
- 58, 45, 46, 59, 45, 46, 60, 45,
- 46, 4, 45, 46, 62, 45, 46, 63,
- 45, 46, 64, 45, 46, 65, 45, 46,
- 66, 45, 46, 67, 45, 4, 4, 5,
- 15, 17, 31, 34, 37, 68, 74, 31,
- 76, 82, 84, 89, 92, 161, 398, 411,
- 535, 4, 0, 69, 0, 70, 0, 71,
- 0, 72, 0, 73, 0, 43, 0, 75,
- 0, 31, 0, 77, 0, 78, 0, 79,
- 81, 0, 80, 0, 31, 0, 79, 0,
- 83, 0, 74, 0, 85, 0, 86, 0,
- 87, 0, 88, 0, 31, 0, 90, 0,
- 91, 0, 31, 0, 93, 108, 0, 94,
- 0, 95, 0, 96, 0, 97, 0, 98,
- 0, 99, 0, 100, 0, 101, 0, 102,
- 0, 103, 0, 104, 0, 105, 0, 106,
- 0, 107, 0, 73, 0, 109, 0, 110,
- 0, 111, 0, 112, 0, 113, 0, 114,
- 0, 115, 0, 116, 0, 117, 0, 119,
- 118, 119, 118, 119, 119, 4, 120, 126,
- 132, 148, 4, 119, 118, 119, 121, 118,
- 119, 122, 118, 119, 123, 118, 119, 124,
- 118, 119, 125, 118, 119, 67, 118, 119,
- 127, 118, 119, 128, 118, 119, 129, 118,
- 119, 130, 118, 119, 131, 118, 119, 125,
- 118, 119, 133, 118, 119, 134, 118, 119,
- 135, 118, 119, 136, 118, 119, 137, 118,
- 119, 138, 118, 119, 139, 118, 119, 140,
- 118, 119, 141, 118, 119, 142, 118, 119,
- 143, 118, 119, 144, 118, 119, 145, 118,
- 119, 146, 118, 119, 147, 118, 119, 131,
- 118, 149, 119, 118, 150, 119, 118, 119,
- 151, 118, 152, 119, 118, 153, 119, 118,
- 119, 154, 118, 119, 155, 118, 119, 156,
- 118, 119, 157, 118, 158, 119, 118, 159,
- 119, 118, 160, 119, 118, 125, 119, 118,
- 162, 287, 0, 163, 0, 164, 0, 165,
- 0, 166, 0, 167, 0, 168, 0, 169,
- 0, 170, 0, 171, 0, 173, 172, 173,
- 172, 173, 173, 4, 174, 188, 4, 189,
- 196, 202, 188, 204, 210, 212, 217, 220,
- 236, 261, 274, 173, 172, 173, 175, 172,
- 173, 176, 172, 173, 177, 172, 173, 178,
- 172, 173, 179, 172, 173, 180, 172, 173,
- 181, 172, 173, 182, 172, 173, 183, 172,
- 173, 184, 172, 173, 185, 172, 173, 186,
- 172, 173, 187, 172, 173, 4, 172, 173,
- 67, 172, 173, 190, 191, 172, 173, 188,
- 172, 173, 192, 172, 173, 193, 172, 173,
- 194, 172, 173, 195, 172, 173, 67, 172,
- 173, 197, 172, 173, 198, 172, 173, 199,
- 172, 173, 200, 172, 173, 201, 172, 173,
- 195, 172, 173, 203, 172, 173, 188, 172,
- 173, 205, 172, 206, 173, 172, 207, 209,
- 173, 172, 173, 208, 172, 173, 188, 172,
- 173, 207, 172, 173, 211, 172, 173, 202,
- 172, 173, 213, 172, 173, 214, 172, 215,
- 173, 172, 216, 173, 172, 173, 188, 172,
- 173, 218, 172, 173, 219, 172, 173, 188,
- 172, 173, 221, 172, 173, 222, 172, 173,
- 223, 172, 173, 224, 172, 173, 225, 172,
- 173, 226, 172, 173, 227, 172, 173, 228,
- 172, 173, 229, 172, 173, 230, 172, 173,
- 231, 172, 173, 232, 172, 173, 233, 172,
- 173, 234, 172, 173, 235, 172, 173, 201,
- 172, 173, 237, 245, 172, 173, 238, 172,
- 173, 239, 172, 173, 240, 172, 173, 241,
- 172, 173, 242, 172, 173, 243, 172, 173,
- 244, 172, 173, 195, 172, 173, 246, 172,
- 173, 247, 172, 173, 248, 172, 173, 249,
- 172, 173, 250, 172, 173, 251, 172, 173,
- 252, 172, 173, 253, 172, 173, 254, 172,
- 173, 255, 172, 173, 256, 172, 173, 257,
- 172, 173, 258, 172, 173, 259, 172, 173,
- 260, 172, 173, 201, 172, 262, 173, 211,
- 172, 263, 173, 172, 173, 264, 172, 265,
- 173, 172, 266, 173, 172, 173, 267, 172,
- 173, 268, 172, 173, 269, 172, 173, 270,
- 172, 271, 173, 172, 272, 173, 172, 273,
- 173, 172, 195, 173, 172, 173, 275, 172,
- 276, 173, 283, 172, 277, 173, 172, 173,
- 278, 172, 279, 173, 172, 280, 173, 172,
- 173, 281, 172, 173, 282, 172, 173, 201,
- 172, 284, 173, 172, 285, 173, 172, 173,
- 286, 172, 173, 212, 172, 288, 0, 289,
- 0, 290, 0, 291, 0, 292, 0, 293,
- 0, 294, 0, 295, 0, 296, 0, 297,
- 0, 298, 0, 299, 0, 300, 0, 301,
- 0, 302, 0, 303, 0, 304, 0, 305,
- 0, 307, 306, 307, 306, 307, 307, 4,
- 308, 322, 4, 323, 330, 336, 322, 338,
- 344, 346, 351, 354, 370, 379, 392, 307,
- 306, 307, 309, 306, 307, 310, 306, 307,
- 311, 306, 307, 312, 306, 307, 313, 306,
- 307, 314, 306, 307, 315, 306, 307, 316,
- 306, 307, 317, 306, 307, 318, 306, 307,
- 319, 306, 307, 320, 306, 307, 321, 306,
- 307, 4, 306, 307, 67, 306, 307, 324,
- 325, 306, 307, 322, 306, 307, 326, 306,
- 307, 327, 306, 307, 328, 306, 307, 329,
- 306, 307, 67, 306, 307, 331, 306, 307,
- 332, 306, 307, 333, 306, 307, 334, 306,
- 307, 335, 306, 307, 329, 306, 307, 337,
- 306, 307, 322, 306, 307, 339, 306, 340,
- 307, 306, 341, 343, 307, 306, 307, 342,
- 306, 307, 322, 306, 307, 341, 306, 307,
- 345, 306, 307, 336, 306, 307, 347, 306,
- 307, 348, 306, 349, 307, 306, 350, 307,
- 306, 307, 322, 306, 307, 352, 306, 307,
- 353, 306, 307, 322, 306, 307, 355, 306,
- 307, 356, 306, 307, 357, 306, 307, 358,
- 306, 307, 359, 306, 307, 360, 306, 307,
- 361, 306, 307, 362, 306, 307, 363, 306,
- 307, 364, 306, 307, 365, 306, 307, 366,
- 306, 307, 367, 306, 307, 368, 306, 307,
- 369, 306, 307, 335, 306, 307, 371, 306,
- 307, 372, 306, 307, 373, 306, 307, 374,
- 306, 307, 375, 306, 307, 376, 306, 307,
- 377, 306, 307, 378, 306, 307, 329, 306,
- 380, 307, 345, 306, 381, 307, 306, 307,
- 382, 306, 383, 307, 306, 384, 307, 306,
- 307, 385, 306, 307, 386, 306, 307, 387,
- 306, 307, 388, 306, 389, 307, 306, 390,
- 307, 306, 391, 307, 306, 329, 307, 306,
- 307, 393, 306, 307, 394, 306, 395, 307,
- 306, 396, 307, 306, 307, 397, 306, 307,
- 346, 306, 399, 83, 0, 400, 0, 401,
- 0, 402, 0, 403, 0, 404, 0, 405,
- 0, 406, 0, 407, 0, 408, 0, 409,
- 0, 410, 0, 43, 0, 412, 0, 413,
- 531, 0, 414, 0, 415, 0, 416, 0,
- 417, 0, 418, 0, 419, 0, 420, 0,
- 421, 0, 422, 0, 424, 423, 424, 423,
- 424, 424, 4, 425, 439, 4, 440, 447,
- 453, 439, 455, 461, 463, 468, 471, 487,
- 512, 525, 424, 423, 424, 426, 423, 424,
- 427, 423, 424, 428, 423, 424, 429, 423,
- 424, 430, 423, 424, 431, 423, 424, 432,
- 423, 424, 433, 423, 424, 434, 423, 424,
- 435, 423, 424, 436, 423, 424, 437, 423,
- 424, 438, 423, 424, 4, 423, 424, 67,
- 423, 424, 441, 442, 423, 424, 439, 423,
- 424, 443, 423, 424, 444, 423, 424, 445,
- 423, 424, 446, 423, 424, 67, 423, 424,
- 448, 423, 424, 449, 423, 424, 450, 423,
- 424, 451, 423, 424, 452, 423, 424, 446,
- 423, 424, 454, 423, 424, 439, 423, 424,
- 456, 423, 457, 424, 423, 458, 460, 424,
- 423, 424, 459, 423, 424, 439, 423, 424,
- 458, 423, 424, 462, 423, 424, 453, 423,
- 424, 464, 423, 424, 465, 423, 466, 424,
- 423, 467, 424, 423, 424, 439, 423, 424,
- 469, 423, 424, 470, 423, 424, 439, 423,
- 424, 472, 423, 424, 473, 423, 424, 474,
- 423, 424, 475, 423, 424, 476, 423, 424,
- 477, 423, 424, 478, 423, 424, 479, 423,
- 424, 480, 423, 424, 481, 423, 424, 482,
- 423, 424, 483, 423, 424, 484, 423, 424,
- 485, 423, 424, 486, 423, 424, 452, 423,
- 424, 488, 496, 423, 424, 489, 423, 424,
- 490, 423, 424, 491, 423, 424, 492, 423,
- 424, 493, 423, 424, 494, 423, 424, 495,
- 423, 424, 446, 423, 424, 497, 423, 424,
- 498, 423, 424, 499, 423, 424, 500, 423,
- 424, 501, 423, 424, 502, 423, 424, 503,
- 423, 424, 504, 423, 424, 505, 423, 424,
- 506, 423, 424, 507, 423, 424, 508, 423,
- 424, 509, 423, 424, 510, 423, 424, 511,
- 423, 424, 452, 423, 513, 424, 462, 423,
- 514, 424, 423, 424, 515, 423, 516, 424,
- 423, 517, 424, 423, 424, 518, 423, 424,
- 519, 423, 424, 520, 423, 424, 521, 423,
- 522, 424, 423, 523, 424, 423, 524, 424,
- 423, 446, 424, 423, 424, 526, 423, 424,
- 527, 423, 528, 424, 423, 529, 424, 423,
- 424, 530, 423, 424, 463, 423, 532, 0,
- 533, 0, 534, 0, 84, 0, 535, 536,
- 535, 0, 540, 539, 538, 536, 539, 537,
- 0, 538, 536, 537, 0, 538, 537, 540,
- 539, 538, 536, 539, 537, 540, 540, 5,
- 15, 17, 31, 34, 37, 68, 74, 31,
- 76, 82, 84, 89, 92, 161, 398, 411,
- 535, 540, 0, 46, 542, 45, 46, 543,
- 45, 46, 544, 45, 46, 545, 45, 46,
- 546, 45, 46, 66, 45, 46, 548, 563,
- 45, 46, 549, 45, 46, 550, 45, 46,
- 551, 45, 46, 552, 45, 46, 553, 45,
- 46, 554, 45, 46, 555, 45, 46, 556,
- 45, 46, 557, 45, 46, 558, 45, 46,
- 559, 45, 46, 560, 45, 46, 561, 45,
- 46, 562, 45, 46, 546, 45, 46, 564,
- 45, 46, 565, 45, 46, 566, 45, 567,
- 46, 45, 568, 46, 45, 46, 569, 45,
- 46, 570, 45, 46, 66, 45, 46, 572,
- 580, 45, 46, 573, 45, 46, 574, 45,
- 46, 575, 45, 46, 576, 45, 46, 577,
- 45, 46, 578, 45, 46, 579, 45, 46,
- 66, 45, 46, 581, 45, 46, 582, 45,
- 46, 583, 45, 46, 584, 45, 46, 585,
- 45, 46, 586, 45, 46, 587, 45, 46,
- 588, 45, 46, 589, 45, 46, 590, 45,
- 46, 591, 45, 46, 592, 45, 46, 593,
- 45, 46, 594, 45, 46, 595, 45, 46,
- 546, 45, 597, 46, 45, 598, 46, 45,
- 46, 599, 45, 600, 46, 45, 601, 46,
- 45, 46, 602, 45, 46, 603, 45, 46,
- 604, 45, 46, 605, 45, 606, 46, 45,
- 607, 46, 45, 608, 46, 45, 66, 46,
- 45, 46, 610, 45, 611, 46, 45, 612,
- 46, 45, 46, 613, 45, 614, 46, 45,
- 615, 46, 45, 46, 616, 45, 46, 617,
- 45, 46, 546, 45, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 29, 29, 29, 29, 35, 0, 43, 0,
- 43, 0, 43, 54, 0, 5, 1, 0,
- 29, 1, 29, 29, 29, 29, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 69, 33,
- 69, 84, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 13, 0, 130, 31, 60,
- 57, 31, 63, 57, 63, 63, 63, 63,
- 63, 63, 63, 63, 63, 63, 63, 63,
- 66, 31, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 81, 84, 84,
- 84, 84, 81, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 21, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 75, 33, 84, 75, 84,
- 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 54,
- 17, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 0, 54, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 78,
- 33, 84, 78, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 19, 0, 54, 19, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 19, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 72, 33, 84, 72, 84, 84,
- 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 15, 0, 54, 15,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 0, 54, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 0, 43, 54, 37, 37, 87, 37, 37,
- 43, 0, 39, 0, 43, 0, 0, 54,
- 0, 0, 39, 0, 0, 54, 0, 93,
- 90, 41, 96, 90, 96, 96, 96, 96,
- 96, 96, 96, 96, 96, 96, 96, 96,
- 99, 0, 43, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 618;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 1342 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
-
- #line 1349 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1639 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1702 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pl.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_pl()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Pl", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/pl.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/pl.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 23, 24, 25, 47, 48, 49,
- 51, 53, 58, 63, 68, 73, 77, 81,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 101, 103, 108, 115, 120, 122, 123,
- 124, 125, 126, 127, 128, 129, 130, 143,
- 145, 147, 149, 151, 153, 155, 157, 159,
- 161, 163, 165, 167, 169, 171, 173, 175,
- 177, 179, 181, 183, 205, 206, 207, 208,
- 209, 210, 211, 212, 213, 214, 215, 217,
- 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 247, 248, 249, 250,
- 251, 252, 253, 254, 255, 256, 257, 258,
- 268, 270, 272, 274, 276, 278, 280, 282,
- 284, 286, 288, 290, 292, 294, 296, 298,
- 300, 302, 304, 306, 308, 310, 312, 314,
- 316, 318, 320, 322, 324, 326, 328, 330,
- 332, 334, 336, 338, 340, 342, 344, 346,
- 348, 350, 352, 353, 354, 355, 356, 357,
- 358, 359, 360, 361, 362, 363, 383, 385,
- 387, 389, 391, 393, 395, 397, 399, 401,
- 403, 405, 407, 409, 411, 413, 416, 418,
- 420, 422, 424, 426, 428, 430, 432, 434,
- 436, 438, 440, 442, 444, 446, 448, 451,
- 453, 455, 457, 459, 461, 463, 465, 467,
- 469, 471, 473, 475, 477, 479, 481, 483,
- 485, 487, 489, 491, 493, 495, 497, 499,
- 501, 503, 505, 507, 509, 512, 514, 516,
- 518, 520, 522, 524, 526, 528, 530, 532,
- 534, 536, 538, 540, 542, 544, 546, 548,
- 550, 552, 554, 556, 558, 560, 563, 565,
- 567, 569, 571, 573, 575, 577, 579, 581,
- 583, 585, 587, 589, 592, 594, 596, 598,
- 600, 602, 604, 606, 608, 610, 612, 614,
- 615, 616, 617, 618, 619, 620, 621, 622,
- 623, 624, 625, 626, 627, 628, 629, 630,
- 631, 632, 633, 634, 654, 656, 658, 660,
- 662, 664, 666, 668, 670, 672, 674, 676,
- 678, 680, 682, 684, 687, 689, 691, 693,
- 695, 697, 699, 701, 703, 705, 707, 709,
- 711, 713, 715, 717, 719, 722, 724, 726,
- 728, 730, 732, 734, 736, 738, 740, 742,
- 744, 746, 748, 750, 752, 754, 756, 758,
- 760, 762, 764, 766, 768, 770, 772, 774,
- 776, 778, 780, 782, 784, 786, 788, 790,
- 792, 794, 796, 798, 801, 803, 805, 807,
- 809, 811, 813, 815, 817, 819, 821, 823,
- 825, 827, 829, 831, 833, 835, 837, 839,
- 840, 841, 842, 843, 844, 845, 846, 847,
- 848, 849, 850, 851, 852, 854, 855, 856,
- 857, 858, 859, 860, 861, 862, 863, 864,
- 865, 885, 887, 889, 891, 893, 895, 897,
- 899, 901, 903, 905, 907, 909, 911, 913,
- 915, 918, 920, 922, 924, 926, 928, 930,
- 932, 934, 936, 938, 940, 942, 944, 946,
- 948, 950, 953, 955, 957, 959, 961, 963,
- 965, 967, 969, 971, 973, 975, 977, 979,
- 981, 983, 985, 987, 989, 991, 993, 995,
- 997, 999, 1001, 1003, 1005, 1007, 1009, 1011,
- 1014, 1016, 1018, 1020, 1022, 1024, 1026, 1028,
- 1030, 1032, 1034, 1036, 1038, 1040, 1042, 1044,
- 1046, 1048, 1050, 1052, 1054, 1056, 1058, 1060,
- 1062, 1065, 1067, 1069, 1071, 1073, 1075, 1077,
- 1079, 1081, 1083, 1085, 1087, 1089, 1091, 1093,
- 1095, 1097, 1099, 1101, 1102, 1103, 1104, 1105,
- 1109, 1115, 1118, 1120, 1126, 1148, 1150, 1152,
- 1154, 1156, 1158, 1160, 1163, 1165, 1167, 1169,
- 1171, 1173, 1175, 1177, 1179, 1181, 1183, 1185,
- 1187, 1189, 1191, 1193, 1195, 1197, 1199, 1201,
- 1203, 1205, 1207, 1209, 1212, 1214, 1216, 1218,
- 1220, 1222, 1224, 1226, 1228, 1230, 1232, 1234,
- 1236, 1238, 1240, 1242, 1244, 1246, 1248, 1250,
- 1252, 1254, 1256, 1258, 1260, 1262, 1264, 1266,
- 1268, 1270, 1272, 1274, 1276, 1278, 1280, 1282,
- 1284, 1286, 1288, 1290, 1292, 1294, 1296, 1298,
- 1300, 1302, 1304
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 70, 71, 73, 74, 75, 77, 79,
- 80, 83, 87, 90, 124, 9, 13, -69,
- -65, 10, 32, 34, 35, 37, 42, 64,
- 65, 70, 71, 73, 74, 75, 77, 79,
- 80, 83, 87, 90, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 108, 115, 101, 112, 101, 107, 116, 58,
- 10, 10, 10, 32, 35, 37, 64, 65,
- 70, 80, 83, 87, 90, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 115, 10, 112, 10,
- 101, 10, 107, 10, 116, 10, 58, 10,
- 32, 34, 35, 37, 42, 64, 65, 70,
- 71, 73, 74, 75, 77, 79, 80, 83,
- 87, 90, 124, 9, 13, 117, 110, 107,
- 99, 106, 97, 100, 121, 101, -59, -101,
- -68, 108, 105, 101, 105, 101, 97, 106,
- -60, -123, 99, 114, 97, 122, 111, 114,
- 116, 114, 122, 101, 98, 97, 32, 98,
- 105, 122, 110, 101, 115, 111, 119, 122,
- 121, 107, -59, -126, 97, 100, 121, 58,
- 10, 10, 10, 32, 35, 65, 70, 80,
- 87, 124, 9, 13, 10, 115, 10, 112,
- 10, 101, 10, 107, 10, 116, 10, 58,
- 10, 117, 10, 110, 10, 107, 10, 99,
- 10, 106, 10, 97, 10, 111, 10, 116,
- 10, 114, 10, 122, 10, 101, 10, 98,
- 10, 97, 10, 32, 10, 98, 10, 105,
- 10, 122, 10, 110, 10, 101, 10, 115,
- 10, 111, 10, 119, -59, 10, -126, 10,
- 10, 97, -59, 10, -101, 10, 10, 99,
- 10, 105, 10, 119, 10, 111, -59, 10,
- -101, 10, -60, 10, -121, 10, 99, 122,
- 101, 110, 97, 114, 105, 117, 115, 122,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 65, 70, 71, 73, 74, 75, 77,
- 79, 80, 83, 87, 90, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 32, 10, 108, 115,
- 10, 101, 10, 112, 10, 101, 10, 107,
- 10, 116, 10, 58, 10, 117, 10, 110,
- 10, 107, 10, 99, 10, 106, 10, 97,
- 10, 100, 10, 121, 10, 101, -59, 10,
- -101, -68, 10, 10, 108, 10, 105, 10,
- 101, 10, 105, 10, 101, 10, 97, 10,
- 106, -60, 10, -123, 10, 10, 99, 10,
- 114, 10, 97, 10, 122, 10, 111, 10,
- 116, 10, 114, 10, 122, 10, 101, 10,
- 98, 10, 97, 10, 32, 10, 98, 10,
- 105, 10, 122, 10, 110, 10, 101, 10,
- 115, 10, 111, 10, 119, 10, 99, 122,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 117, 10, 115, 10, 122,
- 10, 97, 10, 98, 10, 108, 10, 111,
- 10, 110, 10, 32, 10, 115, 10, 99,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 117, 10, 115, 10, 122,
- -59, 10, 116, -126, 10, 10, 97, -59,
- 10, -101, 10, 10, 99, 10, 105, 10,
- 119, 10, 111, -59, 10, -101, 10, -60,
- 10, -121, 10, 10, 97, -59, 10, 107,
- -126, 10, 10, 111, -59, 10, -68, 10,
- 10, 101, 10, 110, 10, 105, -59, 10,
- -126, 10, 10, 97, 10, 100, 97, 98,
- 108, 111, 110, 32, 115, 99, 101, 110,
- 97, 114, 105, 117, 115, 122, 97, 58,
- 10, 10, 10, 32, 35, 37, 42, 64,
- 65, 70, 71, 73, 74, 75, 77, 79,
- 80, 83, 87, 90, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 108, 115, 10,
- 101, 10, 112, 10, 101, 10, 107, 10,
- 116, 10, 58, 10, 117, 10, 110, 10,
- 107, 10, 99, 10, 106, 10, 97, 10,
- 100, 10, 121, 10, 101, -59, 10, -101,
- -68, 10, 10, 108, 10, 105, 10, 101,
- 10, 105, 10, 101, 10, 97, 10, 106,
- -60, 10, -123, 10, 10, 99, 10, 114,
- 10, 97, 10, 122, 10, 111, 10, 116,
- 10, 114, 10, 122, 10, 101, 10, 98,
- 10, 97, 10, 32, 10, 98, 10, 105,
- 10, 122, 10, 110, 10, 101, 10, 115,
- 10, 111, 10, 119, 10, 99, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 117, 10, 115, 10, 122, -59, 10,
- 116, -126, 10, 10, 97, -59, 10, -101,
- 10, 10, 99, 10, 105, 10, 119, 10,
- 111, -59, 10, -101, 10, -60, 10, -121,
- 10, 10, 97, 10, 107, -59, 10, -126,
- 10, 10, 97, 10, 100, -59, 116, -126,
- 97, -59, -101, 99, 105, 119, 111, -59,
- -101, -60, -121, 97, -59, 107, -126, 111,
- -59, -68, 101, 110, 105, 97, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 65,
- 70, 71, 73, 74, 75, 77, 79, 80,
- 83, 87, 90, 9, 13, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, 10, 32, 10, 108, 115, 10, 101,
- 10, 112, 10, 101, 10, 107, 10, 116,
- 10, 58, 10, 117, 10, 110, 10, 107,
- 10, 99, 10, 106, 10, 97, 10, 100,
- 10, 121, 10, 101, -59, 10, -101, -68,
- 10, 10, 108, 10, 105, 10, 101, 10,
- 105, 10, 101, 10, 97, 10, 106, -60,
- 10, -123, 10, 10, 99, 10, 114, 10,
- 97, 10, 122, 10, 111, 10, 116, 10,
- 114, 10, 122, 10, 101, 10, 98, 10,
- 97, 10, 32, 10, 98, 10, 105, 10,
- 122, 10, 110, 10, 101, 10, 115, 10,
- 111, 10, 119, 10, 99, 122, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 117, 10, 115, 10, 122, 10, 97,
- 10, 98, 10, 108, 10, 111, 10, 110,
- 10, 32, 10, 115, 10, 99, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 117, 10, 115, 10, 122, -59, 10,
- 116, -126, 10, 10, 97, -59, 10, -101,
- 10, 10, 99, 10, 105, 10, 119, 10,
- 111, -59, 10, -101, 10, -60, 10, -121,
- 10, 10, 97, 10, 107, -59, 10, -126,
- 10, 10, 97, 10, 100, -59, -126, 97,
- 100, 32, 124, 9, 13, 10, 32, 92,
- 124, 9, 13, 10, 92, 124, 10, 92,
- 10, 32, 92, 124, 9, 13, 10, 32,
- 34, 35, 37, 42, 64, 65, 70, 71,
- 73, 74, 75, 77, 79, 80, 83, 87,
- 90, 124, 9, 13, 10, 117, 10, 110,
- 10, 107, 10, 99, 10, 106, 10, 97,
- 10, 111, 114, 10, 116, 10, 114, 10,
- 122, 10, 101, 10, 98, 10, 97, 10,
- 32, 10, 98, 10, 105, 10, 122, 10,
- 110, 10, 101, 10, 115, 10, 111, 10,
- 119, 10, 122, 10, 121, 10, 107, -59,
- 10, -126, 10, 10, 97, 10, 100, 10,
- 121, 10, 99, 122, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 117,
- 10, 115, 10, 122, 10, 97, 10, 98,
- 10, 108, 10, 111, 10, 110, 10, 32,
- 10, 115, 10, 99, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 117,
- 10, 115, 10, 122, -59, 10, -126, 10,
- 10, 97, -59, 10, -101, 10, 10, 99,
- 10, 105, 10, 119, 10, 111, -59, 10,
- -101, 10, -60, 10, -121, 10, 10, 97,
- -59, 10, -126, 10, 10, 111, -59, 10,
- -68, 10, 10, 101, 10, 110, 10, 105,
- 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 21, 1, 1, 20, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 11, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 20, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 8,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 18, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 18, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 18, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 2,
- 4, 3, 2, 4, 20, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 1, 0, 0, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 23, 25, 27, 49, 51, 53,
- 56, 59, 64, 69, 74, 79, 83, 87,
- 90, 92, 94, 96, 98, 100, 102, 104,
- 106, 108, 110, 112, 114, 116, 118, 120,
- 122, 125, 128, 133, 140, 145, 148, 150,
- 152, 154, 156, 158, 160, 162, 164, 177,
- 180, 183, 186, 189, 192, 195, 198, 201,
- 204, 207, 210, 213, 216, 219, 222, 225,
- 228, 231, 234, 237, 259, 261, 263, 265,
- 267, 269, 271, 273, 275, 277, 279, 282,
- 284, 286, 288, 290, 292, 294, 296, 298,
- 300, 302, 304, 306, 308, 311, 313, 315,
- 317, 319, 321, 323, 325, 327, 329, 331,
- 333, 335, 337, 339, 341, 343, 345, 347,
- 349, 351, 353, 355, 357, 359, 361, 363,
- 373, 376, 379, 382, 385, 388, 391, 394,
- 397, 400, 403, 406, 409, 412, 415, 418,
- 421, 424, 427, 430, 433, 436, 439, 442,
- 445, 448, 451, 454, 457, 460, 463, 466,
- 469, 472, 475, 478, 481, 484, 487, 490,
- 493, 496, 499, 501, 503, 505, 507, 509,
- 511, 513, 515, 517, 519, 521, 541, 544,
- 547, 550, 553, 556, 559, 562, 565, 568,
- 571, 574, 577, 580, 583, 586, 590, 593,
- 596, 599, 602, 605, 608, 611, 614, 617,
- 620, 623, 626, 629, 632, 635, 638, 642,
- 645, 648, 651, 654, 657, 660, 663, 666,
- 669, 672, 675, 678, 681, 684, 687, 690,
- 693, 696, 699, 702, 705, 708, 711, 714,
- 717, 720, 723, 726, 729, 733, 736, 739,
- 742, 745, 748, 751, 754, 757, 760, 763,
- 766, 769, 772, 775, 778, 781, 784, 787,
- 790, 793, 796, 799, 802, 805, 809, 812,
- 815, 818, 821, 824, 827, 830, 833, 836,
- 839, 842, 845, 848, 852, 855, 858, 861,
- 864, 867, 870, 873, 876, 879, 882, 885,
- 887, 889, 891, 893, 895, 897, 899, 901,
- 903, 905, 907, 909, 911, 913, 915, 917,
- 919, 921, 923, 925, 945, 948, 951, 954,
- 957, 960, 963, 966, 969, 972, 975, 978,
- 981, 984, 987, 990, 994, 997, 1000, 1003,
- 1006, 1009, 1012, 1015, 1018, 1021, 1024, 1027,
- 1030, 1033, 1036, 1039, 1042, 1046, 1049, 1052,
- 1055, 1058, 1061, 1064, 1067, 1070, 1073, 1076,
- 1079, 1082, 1085, 1088, 1091, 1094, 1097, 1100,
- 1103, 1106, 1109, 1112, 1115, 1118, 1121, 1124,
- 1127, 1130, 1133, 1136, 1139, 1142, 1145, 1148,
- 1151, 1154, 1157, 1160, 1164, 1167, 1170, 1173,
- 1176, 1179, 1182, 1185, 1188, 1191, 1194, 1197,
- 1200, 1203, 1206, 1209, 1212, 1215, 1218, 1221,
- 1223, 1225, 1227, 1229, 1231, 1233, 1235, 1237,
- 1239, 1241, 1243, 1245, 1247, 1250, 1252, 1254,
- 1256, 1258, 1260, 1262, 1264, 1266, 1268, 1270,
- 1272, 1292, 1295, 1298, 1301, 1304, 1307, 1310,
- 1313, 1316, 1319, 1322, 1325, 1328, 1331, 1334,
- 1337, 1341, 1344, 1347, 1350, 1353, 1356, 1359,
- 1362, 1365, 1368, 1371, 1374, 1377, 1380, 1383,
- 1386, 1389, 1393, 1396, 1399, 1402, 1405, 1408,
- 1411, 1414, 1417, 1420, 1423, 1426, 1429, 1432,
- 1435, 1438, 1441, 1444, 1447, 1450, 1453, 1456,
- 1459, 1462, 1465, 1468, 1471, 1474, 1477, 1480,
- 1484, 1487, 1490, 1493, 1496, 1499, 1502, 1505,
- 1508, 1511, 1514, 1517, 1520, 1523, 1526, 1529,
- 1532, 1535, 1538, 1541, 1544, 1547, 1550, 1553,
- 1556, 1560, 1563, 1566, 1569, 1572, 1575, 1578,
- 1581, 1584, 1587, 1590, 1593, 1596, 1599, 1602,
- 1605, 1608, 1611, 1614, 1616, 1618, 1620, 1622,
- 1626, 1632, 1636, 1639, 1645, 1667, 1670, 1673,
- 1676, 1679, 1682, 1685, 1689, 1692, 1695, 1698,
- 1701, 1704, 1707, 1710, 1713, 1716, 1719, 1722,
- 1725, 1728, 1731, 1734, 1737, 1740, 1743, 1746,
- 1749, 1752, 1755, 1758, 1762, 1765, 1768, 1771,
- 1774, 1777, 1780, 1783, 1786, 1789, 1792, 1795,
- 1798, 1801, 1804, 1807, 1810, 1813, 1816, 1819,
- 1822, 1825, 1828, 1831, 1834, 1837, 1840, 1843,
- 1846, 1849, 1852, 1855, 1858, 1861, 1864, 1867,
- 1870, 1873, 1876, 1879, 1882, 1885, 1888, 1891,
- 1894, 1897, 1900
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 68, 74, 31, 76, 82, 84, 89,
- 92, 161, 398, 411, 535, 4, 0, 3,
- 0, 4, 0, 4, 4, 5, 15, 17,
- 31, 34, 37, 68, 74, 31, 76, 82,
- 84, 89, 92, 161, 398, 411, 535, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 618, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 39, 0, 31, 0, 40, 0,
- 41, 0, 42, 0, 43, 0, 44, 0,
- 46, 45, 46, 45, 46, 46, 4, 47,
- 4, 61, 541, 547, 571, 596, 609, 46,
- 45, 46, 48, 45, 46, 49, 45, 46,
- 50, 45, 46, 51, 45, 46, 52, 45,
- 46, 53, 45, 46, 54, 45, 46, 55,
- 45, 46, 56, 45, 46, 57, 45, 46,
- 58, 45, 46, 59, 45, 46, 60, 45,
- 46, 4, 45, 46, 62, 45, 46, 63,
- 45, 46, 64, 45, 46, 65, 45, 46,
- 66, 45, 46, 67, 45, 4, 4, 5,
- 15, 17, 31, 34, 37, 68, 74, 31,
- 76, 82, 84, 89, 92, 161, 398, 411,
- 535, 4, 0, 69, 0, 70, 0, 71,
- 0, 72, 0, 73, 0, 43, 0, 75,
- 0, 31, 0, 77, 0, 78, 0, 79,
- 81, 0, 80, 0, 31, 0, 79, 0,
- 83, 0, 74, 0, 85, 0, 86, 0,
- 87, 0, 88, 0, 31, 0, 90, 0,
- 91, 0, 31, 0, 93, 108, 0, 94,
- 0, 95, 0, 96, 0, 97, 0, 98,
- 0, 99, 0, 100, 0, 101, 0, 102,
- 0, 103, 0, 104, 0, 105, 0, 106,
- 0, 107, 0, 73, 0, 109, 0, 110,
- 0, 111, 0, 112, 0, 113, 0, 114,
- 0, 115, 0, 116, 0, 117, 0, 119,
- 118, 119, 118, 119, 119, 4, 120, 126,
- 132, 148, 4, 119, 118, 119, 121, 118,
- 119, 122, 118, 119, 123, 118, 119, 124,
- 118, 119, 125, 118, 119, 67, 118, 119,
- 127, 118, 119, 128, 118, 119, 129, 118,
- 119, 130, 118, 119, 131, 118, 119, 125,
- 118, 119, 133, 118, 119, 134, 118, 119,
- 135, 118, 119, 136, 118, 119, 137, 118,
- 119, 138, 118, 119, 139, 118, 119, 140,
- 118, 119, 141, 118, 119, 142, 118, 119,
- 143, 118, 119, 144, 118, 119, 145, 118,
- 119, 146, 118, 119, 147, 118, 119, 131,
- 118, 149, 119, 118, 150, 119, 118, 119,
- 151, 118, 152, 119, 118, 153, 119, 118,
- 119, 154, 118, 119, 155, 118, 119, 156,
- 118, 119, 157, 118, 158, 119, 118, 159,
- 119, 118, 160, 119, 118, 125, 119, 118,
- 162, 287, 0, 163, 0, 164, 0, 165,
- 0, 166, 0, 167, 0, 168, 0, 169,
- 0, 170, 0, 171, 0, 173, 172, 173,
- 172, 173, 173, 4, 174, 188, 4, 189,
- 196, 202, 188, 204, 210, 212, 217, 220,
- 236, 261, 274, 173, 172, 173, 175, 172,
- 173, 176, 172, 173, 177, 172, 173, 178,
- 172, 173, 179, 172, 173, 180, 172, 173,
- 181, 172, 173, 182, 172, 173, 183, 172,
- 173, 184, 172, 173, 185, 172, 173, 186,
- 172, 173, 187, 172, 173, 4, 172, 173,
- 67, 172, 173, 190, 191, 172, 173, 188,
- 172, 173, 192, 172, 173, 193, 172, 173,
- 194, 172, 173, 195, 172, 173, 67, 172,
- 173, 197, 172, 173, 198, 172, 173, 199,
- 172, 173, 200, 172, 173, 201, 172, 173,
- 195, 172, 173, 203, 172, 173, 188, 172,
- 173, 205, 172, 206, 173, 172, 207, 209,
- 173, 172, 173, 208, 172, 173, 188, 172,
- 173, 207, 172, 173, 211, 172, 173, 202,
- 172, 173, 213, 172, 173, 214, 172, 215,
- 173, 172, 216, 173, 172, 173, 188, 172,
- 173, 218, 172, 173, 219, 172, 173, 188,
- 172, 173, 221, 172, 173, 222, 172, 173,
- 223, 172, 173, 224, 172, 173, 225, 172,
- 173, 226, 172, 173, 227, 172, 173, 228,
- 172, 173, 229, 172, 173, 230, 172, 173,
- 231, 172, 173, 232, 172, 173, 233, 172,
- 173, 234, 172, 173, 235, 172, 173, 201,
- 172, 173, 237, 245, 172, 173, 238, 172,
- 173, 239, 172, 173, 240, 172, 173, 241,
- 172, 173, 242, 172, 173, 243, 172, 173,
- 244, 172, 173, 195, 172, 173, 246, 172,
- 173, 247, 172, 173, 248, 172, 173, 249,
- 172, 173, 250, 172, 173, 251, 172, 173,
- 252, 172, 173, 253, 172, 173, 254, 172,
- 173, 255, 172, 173, 256, 172, 173, 257,
- 172, 173, 258, 172, 173, 259, 172, 173,
- 260, 172, 173, 201, 172, 262, 173, 211,
- 172, 263, 173, 172, 173, 264, 172, 265,
- 173, 172, 266, 173, 172, 173, 267, 172,
- 173, 268, 172, 173, 269, 172, 173, 270,
- 172, 271, 173, 172, 272, 173, 172, 273,
- 173, 172, 195, 173, 172, 173, 275, 172,
- 276, 173, 283, 172, 277, 173, 172, 173,
- 278, 172, 279, 173, 172, 280, 173, 172,
- 173, 281, 172, 173, 282, 172, 173, 201,
- 172, 284, 173, 172, 285, 173, 172, 173,
- 286, 172, 173, 212, 172, 288, 0, 289,
- 0, 290, 0, 291, 0, 292, 0, 293,
- 0, 294, 0, 295, 0, 296, 0, 297,
- 0, 298, 0, 299, 0, 300, 0, 301,
- 0, 302, 0, 303, 0, 304, 0, 305,
- 0, 307, 306, 307, 306, 307, 307, 4,
- 308, 322, 4, 323, 330, 336, 322, 338,
- 344, 346, 351, 354, 370, 379, 392, 307,
- 306, 307, 309, 306, 307, 310, 306, 307,
- 311, 306, 307, 312, 306, 307, 313, 306,
- 307, 314, 306, 307, 315, 306, 307, 316,
- 306, 307, 317, 306, 307, 318, 306, 307,
- 319, 306, 307, 320, 306, 307, 321, 306,
- 307, 4, 306, 307, 67, 306, 307, 324,
- 325, 306, 307, 322, 306, 307, 326, 306,
- 307, 327, 306, 307, 328, 306, 307, 329,
- 306, 307, 67, 306, 307, 331, 306, 307,
- 332, 306, 307, 333, 306, 307, 334, 306,
- 307, 335, 306, 307, 329, 306, 307, 337,
- 306, 307, 322, 306, 307, 339, 306, 340,
- 307, 306, 341, 343, 307, 306, 307, 342,
- 306, 307, 322, 306, 307, 341, 306, 307,
- 345, 306, 307, 336, 306, 307, 347, 306,
- 307, 348, 306, 349, 307, 306, 350, 307,
- 306, 307, 322, 306, 307, 352, 306, 307,
- 353, 306, 307, 322, 306, 307, 355, 306,
- 307, 356, 306, 307, 357, 306, 307, 358,
- 306, 307, 359, 306, 307, 360, 306, 307,
- 361, 306, 307, 362, 306, 307, 363, 306,
- 307, 364, 306, 307, 365, 306, 307, 366,
- 306, 307, 367, 306, 307, 368, 306, 307,
- 369, 306, 307, 335, 306, 307, 371, 306,
- 307, 372, 306, 307, 373, 306, 307, 374,
- 306, 307, 375, 306, 307, 376, 306, 307,
- 377, 306, 307, 378, 306, 307, 329, 306,
- 380, 307, 345, 306, 381, 307, 306, 307,
- 382, 306, 383, 307, 306, 384, 307, 306,
- 307, 385, 306, 307, 386, 306, 307, 387,
- 306, 307, 388, 306, 389, 307, 306, 390,
- 307, 306, 391, 307, 306, 329, 307, 306,
- 307, 393, 306, 307, 394, 306, 395, 307,
- 306, 396, 307, 306, 307, 397, 306, 307,
- 346, 306, 399, 83, 0, 400, 0, 401,
- 0, 402, 0, 403, 0, 404, 0, 405,
- 0, 406, 0, 407, 0, 408, 0, 409,
- 0, 410, 0, 43, 0, 412, 0, 413,
- 531, 0, 414, 0, 415, 0, 416, 0,
- 417, 0, 418, 0, 419, 0, 420, 0,
- 421, 0, 422, 0, 424, 423, 424, 423,
- 424, 424, 4, 425, 439, 4, 440, 447,
- 453, 439, 455, 461, 463, 468, 471, 487,
- 512, 525, 424, 423, 424, 426, 423, 424,
- 427, 423, 424, 428, 423, 424, 429, 423,
- 424, 430, 423, 424, 431, 423, 424, 432,
- 423, 424, 433, 423, 424, 434, 423, 424,
- 435, 423, 424, 436, 423, 424, 437, 423,
- 424, 438, 423, 424, 4, 423, 424, 67,
- 423, 424, 441, 442, 423, 424, 439, 423,
- 424, 443, 423, 424, 444, 423, 424, 445,
- 423, 424, 446, 423, 424, 67, 423, 424,
- 448, 423, 424, 449, 423, 424, 450, 423,
- 424, 451, 423, 424, 452, 423, 424, 446,
- 423, 424, 454, 423, 424, 439, 423, 424,
- 456, 423, 457, 424, 423, 458, 460, 424,
- 423, 424, 459, 423, 424, 439, 423, 424,
- 458, 423, 424, 462, 423, 424, 453, 423,
- 424, 464, 423, 424, 465, 423, 466, 424,
- 423, 467, 424, 423, 424, 439, 423, 424,
- 469, 423, 424, 470, 423, 424, 439, 423,
- 424, 472, 423, 424, 473, 423, 424, 474,
- 423, 424, 475, 423, 424, 476, 423, 424,
- 477, 423, 424, 478, 423, 424, 479, 423,
- 424, 480, 423, 424, 481, 423, 424, 482,
- 423, 424, 483, 423, 424, 484, 423, 424,
- 485, 423, 424, 486, 423, 424, 452, 423,
- 424, 488, 496, 423, 424, 489, 423, 424,
- 490, 423, 424, 491, 423, 424, 492, 423,
- 424, 493, 423, 424, 494, 423, 424, 495,
- 423, 424, 446, 423, 424, 497, 423, 424,
- 498, 423, 424, 499, 423, 424, 500, 423,
- 424, 501, 423, 424, 502, 423, 424, 503,
- 423, 424, 504, 423, 424, 505, 423, 424,
- 506, 423, 424, 507, 423, 424, 508, 423,
- 424, 509, 423, 424, 510, 423, 424, 511,
- 423, 424, 452, 423, 513, 424, 462, 423,
- 514, 424, 423, 424, 515, 423, 516, 424,
- 423, 517, 424, 423, 424, 518, 423, 424,
- 519, 423, 424, 520, 423, 424, 521, 423,
- 522, 424, 423, 523, 424, 423, 524, 424,
- 423, 446, 424, 423, 424, 526, 423, 424,
- 527, 423, 528, 424, 423, 529, 424, 423,
- 424, 530, 423, 424, 463, 423, 532, 0,
- 533, 0, 534, 0, 84, 0, 535, 536,
- 535, 0, 540, 539, 538, 536, 539, 537,
- 0, 538, 536, 537, 0, 538, 537, 540,
- 539, 538, 536, 539, 537, 540, 540, 5,
- 15, 17, 31, 34, 37, 68, 74, 31,
- 76, 82, 84, 89, 92, 161, 398, 411,
- 535, 540, 0, 46, 542, 45, 46, 543,
- 45, 46, 544, 45, 46, 545, 45, 46,
- 546, 45, 46, 66, 45, 46, 548, 563,
- 45, 46, 549, 45, 46, 550, 45, 46,
- 551, 45, 46, 552, 45, 46, 553, 45,
- 46, 554, 45, 46, 555, 45, 46, 556,
- 45, 46, 557, 45, 46, 558, 45, 46,
- 559, 45, 46, 560, 45, 46, 561, 45,
- 46, 562, 45, 46, 546, 45, 46, 564,
- 45, 46, 565, 45, 46, 566, 45, 567,
- 46, 45, 568, 46, 45, 46, 569, 45,
- 46, 570, 45, 46, 66, 45, 46, 572,
- 580, 45, 46, 573, 45, 46, 574, 45,
- 46, 575, 45, 46, 576, 45, 46, 577,
- 45, 46, 578, 45, 46, 579, 45, 46,
- 66, 45, 46, 581, 45, 46, 582, 45,
- 46, 583, 45, 46, 584, 45, 46, 585,
- 45, 46, 586, 45, 46, 587, 45, 46,
- 588, 45, 46, 589, 45, 46, 590, 45,
- 46, 591, 45, 46, 592, 45, 46, 593,
- 45, 46, 594, 45, 46, 595, 45, 46,
- 546, 45, 597, 46, 45, 598, 46, 45,
- 46, 599, 45, 600, 46, 45, 601, 46,
- 45, 46, 602, 45, 46, 603, 45, 46,
- 604, 45, 46, 605, 45, 606, 46, 45,
- 607, 46, 45, 608, 46, 45, 66, 46,
- 45, 46, 610, 45, 611, 46, 45, 612,
- 46, 45, 46, 613, 45, 614, 46, 45,
- 615, 46, 45, 46, 616, 45, 46, 617,
- 45, 46, 546, 45, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 29, 29, 29, 29, 35, 0, 43, 0,
- 43, 0, 43, 54, 0, 5, 1, 0,
- 29, 1, 29, 29, 29, 29, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 69, 33,
- 69, 84, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 13, 0, 130, 31, 60,
- 57, 31, 63, 57, 63, 63, 63, 63,
- 63, 63, 63, 63, 63, 63, 63, 63,
- 66, 31, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 81, 84, 84,
- 84, 84, 81, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 21, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 75, 33, 84, 75, 84,
- 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 54,
- 17, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 0, 54, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 78,
- 33, 84, 78, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 19, 0, 54, 19, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 19, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 72, 33, 84, 72, 84, 84,
- 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 15, 0, 54, 15,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 0, 54, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 0, 43, 54, 37, 37, 87, 37, 37,
- 43, 0, 39, 0, 43, 0, 0, 54,
- 0, 0, 39, 0, 0, 54, 0, 93,
- 90, 41, 96, 90, 96, 96, 96, 96,
- 96, 96, 96, 96, 96, 96, 96, 96,
- 99, 0, 43, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 618;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/pl.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 1342 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/pl.c.rl"
-
-#line 1349 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/pl.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/pl.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/pl.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/pl.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/pl.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/pl.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/pl.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/pl.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/pl.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/pl.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/pl.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/pl.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/pl.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/pl.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/pl.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/pl.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/pl.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/pl.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/pl.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/pl.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/pl.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/pl.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/pl.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/pl.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1639 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/pl.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1702 "ext/gherkin_lexer_pl/gherkin_lexer_pl.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/pl.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_pl()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Pl", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_pt/extconf.rb
index 053b4e4,053b4e4..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_pt/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_pt")
--have_library("c", "main")
--create_makefile("gherkin_lexer_pt")
diff --cc ext/gherkin_lexer_pt/gherkin_lexer_pt.c
index adbaed5,b30111d..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_pt/gherkin_lexer_pt.c
+++ /dev/null
@@@ -1,1711 -1,1711 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 17, 18, 19, 35, 36, 37,
- 39, 41, 46, 51, 56, 61, 65, 69,
- 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 89, 91, 96, 103, 108, 111, 112,
- 113, 114, 115, 116, 117, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 139,
- 141, 143, 145, 147, 149, 151, 153, 155,
- 157, 159, 161, 163, 165, 167, 171, 173,
- 175, 177, 179, 181, 183, 186, 188, 190,
- 192, 194, 196, 198, 200, 216, 218, 219,
- 221, 223, 224, 225, 226, 227, 228, 230,
- 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 263, 265, 267, 269, 271,
- 273, 275, 277, 279, 281, 283, 285, 287,
- 289, 291, 293, 296, 298, 300, 302, 304,
- 306, 308, 311, 313, 315, 317, 319, 321,
- 323, 325, 327, 330, 332, 334, 336, 338,
- 340, 342, 345, 348, 351, 353, 356, 358,
- 360, 362, 364, 366, 368, 370, 372, 374,
- 376, 378, 380, 382, 384, 386, 388, 390,
- 392, 394, 396, 398, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 412, 413,
- 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 431,
- 432, 433, 434, 435, 436, 437, 438, 439,
- 440, 448, 450, 452, 454, 456, 458, 460,
- 462, 465, 467, 469, 471, 473, 475, 477,
- 479, 481, 483, 485, 487, 489, 491, 493,
- 495, 497, 499, 501, 503, 505, 506, 507,
- 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 537,
- 539, 541, 543, 545, 547, 549, 551, 553,
- 555, 557, 559, 561, 563, 565, 567, 570,
- 572, 574, 576, 578, 580, 582, 585, 587,
- 589, 591, 593, 595, 597, 599, 601, 604,
- 606, 608, 610, 612, 615, 617, 620, 623,
- 625, 627, 629, 631, 633, 636, 638, 640,
- 642, 644, 646, 648, 650, 652, 654, 656,
- 658, 660, 662, 664, 666, 668, 670, 672,
- 674, 676, 678, 680, 684, 686, 689, 691,
- 693, 695, 697, 699, 701, 703, 705, 707,
- 709, 711, 713, 715, 717, 719, 721, 723,
- 725, 727, 729, 731, 733, 735, 737, 739,
- 741, 743, 745, 747, 749, 751, 753, 754,
- 755, 756, 757, 758, 759, 763, 769, 772,
- 774, 780, 796, 798, 801, 803, 805, 807,
- 809, 813, 815, 817, 819, 821, 823, 825,
- 827, 829, 831, 833, 835, 837, 839, 841,
- 843, 845, 847, 849, 851, 854, 856, 858,
- 860, 862, 864, 866, 868, 870, 872, 874,
- 876, 878, 880, 882, 884, 886, 888, 890,
- 892, 894, 896, 898, 900, 902, 904, 907,
- 909, 911, 913, 915, 917, 919, 921, 923,
- 925, 927, 929, 931, 934, 936, 938, 940,
- 942, 944, 946, 948, 950, 953, 955, 957,
- 959, 961, 963, 965, 967, 969, 971, 973,
- 974, 976, 977, 978, 979, 980, 983, 984,
- 985, 986, 987, 988, 989, 990, 991, 992,
- 1006, 1008, 1010, 1012, 1014, 1016, 1018, 1020,
- 1022, 1024, 1026, 1028, 1030, 1032, 1034, 1036,
- 1040, 1042, 1044, 1046, 1048, 1050, 1052, 1055,
- 1057, 1059, 1061, 1063, 1065, 1067, 1069, 1071,
- 1074, 1076, 1078, 1080, 1082, 1085, 1087, 1089,
- 1091, 1093, 1095, 1097, 1099, 1101, 1103, 1105,
- 1107, 1109, 1111, 1114, 1116, 1119, 1122, 1124,
- 1126, 1128, 1130, 1132, 1135, 1137, 1139, 1141,
- 1143, 1145, 1147, 1149, 1151, 1153, 1155, 1157,
- 1159, 1161, 1163, 1165, 1167, 1169, 1171, 1173,
- 1175, 1177, 1179, 1181, 1183, 1185, 1189, 1191,
- 1194, 1196, 1198, 1200, 1202, 1204, 1206, 1208,
- 1210, 1212, 1214, 1216, 1218, 1220, 1222, 1225,
- 1227, 1229, 1232, 1234, 1236, 1238, 1240, 1242,
- 1244, 1246, 1248, 1250, 1252, 1254, 1256, 1258,
- 1260, 1262, 1264, 1265, 1266, 1267, 1268, 1269
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 67, 68, 69, 70, 77, 81, 124, 9,
- 13, -69, -65, 10, 32, 34, 35, 37,
- 42, 64, 67, 68, 69, 70, 77, 81,
- 124, 9, 13, 34, 34, 10, 13, 10,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 9,
- 13, 10, 32, 9, 13, 10, 13, 10,
- 95, 70, 69, 65, 84, 85, 82, 69,
- 95, 69, 78, 68, 95, 37, 32, 10,
- 13, 10, 13, 13, 32, 64, 9, 10,
- 9, 10, 13, 32, 64, 11, 12, 10,
- 32, 64, 9, 13, 97, 101, 111, 114,
- 97, 99, 116, 101, 114, -61, 105, -83,
- 115, 116, 105, 99, 97, 58, 10, 10,
- 10, 32, 35, 37, 64, 67, 68, 69,
- 70, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 97, 101, 111, 10, 114, 10, 97, 10,
- 99, 10, 116, 10, 101, 10, 114, -61,
- 10, 105, -83, 10, 10, 115, 10, 116,
- 10, 105, 10, 99, 10, 97, 10, 58,
- 10, 32, 34, 35, 37, 42, 64, 67,
- 68, 69, 70, 77, 81, 124, 9, 13,
- 97, 101, 100, 97, 111, 32, 115, 108,
- 105, 110, 101, 97, -61, 99, -89, -61,
- -93, 111, 32, 100, 111, 32, 67, 101,
- 110, -61, -95, 114, 105, 111, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 67,
- 68, 69, 70, 77, 81, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 32, 10, 97, 101,
- 10, 114, 10, 97, 10, 99, 10, 116,
- 10, 101, 10, 114, -61, 10, 105, -83,
- 10, 10, 115, 10, 116, 10, 105, 10,
- 99, 10, 97, 10, 58, 10, 110, -61,
- 10, 97, -95, 10, 10, 114, 10, 105,
- 10, 111, 10, 97, 10, 100, 10, 97,
- 111, 10, 32, 115, 10, 32, 110, 10,
- 116, -61, 10, 97, -93, 10, 10, 111,
- 10, 117, 10, 110, 10, 99, 10, 105,
- 10, 111, 10, 110, 10, 97, 10, 108,
- 10, 105, 10, 100, 10, 97, 10, 100,
- 10, 101, 10, 97, 10, 115, 10, 117,
- 10, 97, 10, 110, 10, 100, 97, 111,
- 32, 100, 111, 32, 67, 101, 110, 97,
- 32, 110, 115, 120, 116, -61, 97, -93,
- 111, 113, 117, 101, 109, 97, 32, 100,
- 111, 32, 67, 101, 110, -61, 97, 101,
- 109, 112, 108, 111, 115, 58, 10, 10,
- 10, 32, 35, 67, 70, 124, 9, 13,
- 10, 97, 10, 114, 10, 97, 10, 99,
- 10, 116, 10, 101, 10, 114, -61, 10,
- 105, -83, 10, 10, 115, 10, 116, 10,
- 105, 10, 99, 10, 97, 10, 58, 10,
- 117, 10, 110, 10, 99, 10, 105, 10,
- 111, 10, 110, 10, 97, 10, 108, 10,
- 105, 10, 100, 10, 97, 10, 100, 10,
- 101, 117, 110, 99, 100, 105, 111, 110,
- 97, 108, 105, 100, 97, 100, 101, 111,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 67, 68, 69, 70, 77, 81, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 97, 101, 10, 114, 10, 97, 10, 99,
- 10, 116, 10, 101, 10, 114, -61, 10,
- 105, -83, 10, 10, 115, 10, 116, 10,
- 105, 10, 99, 10, 97, 10, 58, 10,
- 110, -61, 10, 97, -95, 10, 10, 114,
- 10, 105, 10, 111, 10, 97, 101, 10,
- 100, 10, 97, 111, 10, 32, 115, 10,
- 108, 10, 105, 10, 110, 10, 101, 10,
- 97, -61, 10, 99, -89, 10, -61, 10,
- -93, 10, 10, 111, 10, 32, 10, 100,
- 10, 111, 10, 32, 10, 67, 10, 101,
- 10, 110, -61, 10, 10, 97, 10, 111,
- 10, 32, 10, 100, 10, 111, 10, 32,
- 10, 67, 10, 101, 10, 110, 10, 97,
- 10, 32, 110, 115, 10, 116, -61, 10,
- 97, -93, 10, 10, 111, 10, 113, 10,
- 117, 10, 101, 10, 109, 10, 97, 10,
- 32, 10, 100, 10, 111, 10, 32, 10,
- 67, 10, 101, 10, 117, 10, 110, 10,
- 99, 10, 105, 10, 111, 10, 110, 10,
- 97, 10, 108, 10, 105, 10, 100, 10,
- 97, 10, 100, 10, 101, 10, 97, 10,
- 115, 10, 117, 10, 97, 10, 110, 10,
- 100, 97, 115, 117, 97, 110, 100, 32,
- 124, 9, 13, 10, 32, 92, 124, 9,
- 13, 10, 92, 124, 10, 92, 10, 32,
- 92, 124, 9, 13, 10, 32, 34, 35,
- 37, 42, 64, 67, 68, 69, 70, 77,
- 81, 124, 9, 13, 10, 110, -61, 10,
- 97, -95, 10, 10, 114, 10, 105, 10,
- 111, 10, 32, 58, 115, 10, 100, 10,
- 101, 10, 32, 10, 70, 10, 117, 10,
- 110, 10, 100, 10, 111, 10, 110, 10,
- 116, 10, 101, 10, 120, 10, 116, 10,
- 101, 10, 108, 10, 105, 10, 110, 10,
- 101, 10, 97, -61, 10, 99, -89, 10,
- -61, 10, -93, 10, 10, 111, 10, 32,
- 10, 100, 10, 111, 10, 32, 10, 67,
- 10, 101, 10, 110, -61, 10, -95, 10,
- 10, 114, 10, 105, 10, 97, 10, 111,
- 10, 32, 10, 100, 10, 111, 10, 32,
- 10, 67, 10, 101, 10, 110, 10, 97,
- 10, 115, 120, 10, 113, 10, 117, 10,
- 101, 10, 109, 10, 97, 10, 32, 10,
- 100, 10, 111, 10, 32, 10, 67, 10,
- 101, 10, 110, -61, 10, 97, 10, 101,
- 10, 109, 10, 112, 10, 108, 10, 111,
- 10, 115, 10, 117, 10, 110, 10, 99,
- 100, 10, 105, 10, 111, 10, 110, 10,
- 97, 10, 108, 10, 105, 10, 100, 10,
- 97, 10, 100, 10, 101, 110, -61, 97,
- -95, 114, 105, 111, 32, 58, 115, 100,
- 101, 32, 70, 117, 110, 100, 10, 10,
- 10, 32, 35, 37, 42, 64, 67, 68,
- 69, 70, 77, 81, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 97, 101, 111,
- 10, 114, 10, 97, 10, 99, 10, 116,
- 10, 101, 10, 114, -61, 10, 105, -83,
- 10, 10, 115, 10, 116, 10, 105, 10,
- 99, 10, 97, 10, 58, 10, 110, -61,
- 10, 97, -95, 10, 10, 114, 10, 105,
- 10, 111, 10, 32, 58, 10, 100, 10,
- 101, 10, 32, 10, 70, 10, 117, 10,
- 110, 10, 100, 10, 111, 10, 110, 10,
- 116, 10, 101, 10, 120, 10, 116, 10,
- 97, 101, 10, 100, 10, 97, 111, 10,
- 32, 115, 10, 108, 10, 105, 10, 110,
- 10, 101, 10, 97, -61, 10, 99, -89,
- 10, -61, 10, -93, 10, 10, 111, 10,
- 32, 10, 100, 10, 111, 10, 32, 10,
- 67, 10, 101, 10, 110, -61, 10, -95,
- 10, 10, 114, 10, 105, 10, 97, 10,
- 111, 10, 32, 10, 100, 10, 111, 10,
- 32, 10, 67, 10, 101, 10, 110, 10,
- 97, 10, 32, 110, 115, 10, 116, -61,
- 10, 97, -93, 10, 10, 111, 10, 113,
- 10, 117, 10, 101, 10, 109, 10, 97,
- 10, 32, 10, 100, 10, 111, 10, 32,
- 10, 67, 10, 101, 10, 110, -61, 10,
- 97, 10, 117, 10, 110, 10, 99, 100,
- 10, 105, 10, 111, 10, 110, 10, 97,
- 10, 108, 10, 105, 10, 100, 10, 97,
- 10, 100, 10, 101, 10, 97, 10, 115,
- 10, 117, 10, 97, 10, 110, 10, 100,
- 110, 116, 101, 120, 116, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 15, 1, 1, 14, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 3, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 9, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 14, 2, 1, 2,
- 2, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 12, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 3, 3, 3, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 4, 1, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 6, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 12, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 3, 2, 3, 3, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 4, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 2, 4, 3, 2,
- 4, 14, 2, 3, 2, 2, 2, 2,
- 4, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 2, 1, 1, 1, 1, 3, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 12,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 4,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 3, 3, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 1, 0, 0,
- 1, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 17, 19, 21, 37, 39, 41,
- 44, 47, 52, 57, 62, 67, 71, 75,
- 78, 80, 82, 84, 86, 88, 90, 92,
- 94, 96, 98, 100, 102, 104, 106, 108,
- 110, 113, 116, 121, 128, 133, 137, 139,
- 141, 143, 145, 147, 149, 152, 154, 156,
- 158, 160, 162, 164, 166, 168, 170, 181,
- 184, 187, 190, 193, 196, 199, 202, 205,
- 208, 211, 214, 217, 220, 223, 228, 231,
- 234, 237, 240, 243, 246, 250, 253, 256,
- 259, 262, 265, 268, 271, 287, 290, 292,
- 295, 298, 300, 302, 304, 306, 308, 311,
- 313, 315, 317, 319, 321, 323, 325, 327,
- 329, 331, 333, 335, 337, 339, 341, 343,
- 345, 347, 349, 363, 366, 369, 372, 375,
- 378, 381, 384, 387, 390, 393, 396, 399,
- 402, 405, 408, 412, 415, 418, 421, 424,
- 427, 430, 434, 437, 440, 443, 446, 449,
- 452, 455, 458, 462, 465, 468, 471, 474,
- 477, 480, 484, 488, 492, 495, 499, 502,
- 505, 508, 511, 514, 517, 520, 523, 526,
- 529, 532, 535, 538, 541, 544, 547, 550,
- 553, 556, 559, 562, 564, 566, 568, 570,
- 572, 574, 576, 578, 580, 582, 587, 589,
- 592, 594, 596, 598, 600, 602, 604, 606,
- 608, 610, 612, 614, 616, 618, 620, 623,
- 625, 627, 629, 631, 633, 635, 637, 639,
- 641, 649, 652, 655, 658, 661, 664, 667,
- 670, 674, 677, 680, 683, 686, 689, 692,
- 695, 698, 701, 704, 707, 710, 713, 716,
- 719, 722, 725, 728, 731, 734, 736, 738,
- 741, 743, 745, 747, 749, 751, 753, 755,
- 757, 759, 761, 763, 765, 767, 769, 783,
- 786, 789, 792, 795, 798, 801, 804, 807,
- 810, 813, 816, 819, 822, 825, 828, 832,
- 835, 838, 841, 844, 847, 850, 854, 857,
- 860, 863, 866, 869, 872, 875, 878, 882,
- 885, 888, 891, 894, 898, 901, 905, 909,
- 912, 915, 918, 921, 924, 928, 931, 934,
- 937, 940, 943, 946, 949, 952, 955, 958,
- 961, 964, 967, 970, 973, 976, 979, 982,
- 985, 988, 991, 994, 999, 1002, 1006, 1009,
- 1012, 1015, 1018, 1021, 1024, 1027, 1030, 1033,
- 1036, 1039, 1042, 1045, 1048, 1051, 1054, 1057,
- 1060, 1063, 1066, 1069, 1072, 1075, 1078, 1081,
- 1084, 1087, 1090, 1093, 1096, 1099, 1102, 1104,
- 1106, 1108, 1110, 1112, 1114, 1118, 1124, 1128,
- 1131, 1137, 1153, 1156, 1160, 1163, 1166, 1169,
- 1172, 1177, 1180, 1183, 1186, 1189, 1192, 1195,
- 1198, 1201, 1204, 1207, 1210, 1213, 1216, 1219,
- 1222, 1225, 1228, 1231, 1234, 1238, 1241, 1244,
- 1247, 1250, 1253, 1256, 1259, 1262, 1265, 1268,
- 1271, 1274, 1277, 1280, 1283, 1286, 1289, 1292,
- 1295, 1298, 1301, 1304, 1307, 1310, 1313, 1317,
- 1320, 1323, 1326, 1329, 1332, 1335, 1338, 1341,
- 1344, 1347, 1350, 1353, 1357, 1360, 1363, 1366,
- 1369, 1372, 1375, 1378, 1381, 1385, 1388, 1391,
- 1394, 1397, 1400, 1403, 1406, 1409, 1412, 1415,
- 1417, 1420, 1422, 1424, 1426, 1428, 1432, 1434,
- 1436, 1438, 1440, 1442, 1444, 1446, 1448, 1450,
- 1464, 1467, 1470, 1473, 1476, 1479, 1482, 1485,
- 1488, 1491, 1494, 1497, 1500, 1503, 1506, 1509,
- 1514, 1517, 1520, 1523, 1526, 1529, 1532, 1536,
- 1539, 1542, 1545, 1548, 1551, 1554, 1557, 1560,
- 1564, 1567, 1570, 1573, 1576, 1580, 1583, 1586,
- 1589, 1592, 1595, 1598, 1601, 1604, 1607, 1610,
- 1613, 1616, 1619, 1623, 1626, 1630, 1634, 1637,
- 1640, 1643, 1646, 1649, 1653, 1656, 1659, 1662,
- 1665, 1668, 1671, 1674, 1677, 1680, 1683, 1686,
- 1689, 1692, 1695, 1698, 1701, 1704, 1707, 1710,
- 1713, 1716, 1719, 1722, 1725, 1728, 1733, 1736,
- 1740, 1743, 1746, 1749, 1752, 1755, 1758, 1761,
- 1764, 1767, 1770, 1773, 1776, 1779, 1782, 1786,
- 1789, 1792, 1796, 1799, 1802, 1805, 1808, 1811,
- 1814, 1817, 1820, 1823, 1826, 1829, 1832, 1835,
- 1838, 1841, 1844, 1846, 1848, 1850, 1852, 1854
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 85, 189, 245, 366, 368, 372, 4,
- 0, 3, 0, 4, 0, 4, 4, 5,
- 15, 17, 31, 34, 37, 85, 189, 245,
- 366, 368, 372, 4, 0, 6, 0, 7,
- 0, 9, 8, 8, 9, 8, 8, 10,
- 10, 11, 10, 10, 10, 10, 11, 10,
- 10, 10, 10, 12, 10, 10, 10, 10,
- 13, 10, 10, 4, 14, 14, 0, 4,
- 14, 14, 0, 4, 16, 15, 4, 0,
- 18, 0, 19, 0, 20, 0, 21, 0,
- 22, 0, 23, 0, 24, 0, 25, 0,
- 26, 0, 27, 0, 28, 0, 29, 0,
- 30, 0, 607, 0, 32, 0, 4, 16,
- 33, 4, 16, 33, 0, 0, 0, 0,
- 35, 36, 4, 36, 36, 34, 35, 35,
- 4, 36, 34, 36, 0, 38, 463, 602,
- 0, 39, 0, 40, 0, 41, 0, 42,
- 0, 43, 0, 44, 0, 45, 46, 0,
- 46, 0, 47, 0, 48, 0, 49, 0,
- 50, 0, 51, 0, 52, 0, 54, 53,
- 54, 53, 54, 54, 4, 55, 4, 69,
- 398, 430, 450, 54, 53, 54, 56, 53,
- 54, 57, 53, 54, 58, 53, 54, 59,
- 53, 54, 60, 53, 54, 61, 53, 54,
- 62, 53, 54, 63, 53, 54, 64, 53,
- 54, 65, 53, 54, 66, 53, 54, 67,
- 53, 54, 68, 53, 54, 4, 53, 54,
- 70, 378, 393, 53, 54, 71, 53, 54,
- 72, 53, 54, 73, 53, 54, 74, 53,
- 54, 75, 53, 54, 76, 53, 77, 54,
- 78, 53, 78, 54, 53, 54, 79, 53,
- 54, 80, 53, 54, 81, 53, 54, 82,
- 53, 54, 83, 53, 54, 84, 53, 4,
- 4, 5, 15, 17, 31, 34, 37, 85,
- 189, 245, 366, 368, 372, 4, 0, 86,
- 89, 0, 87, 0, 88, 88, 0, 32,
- 31, 0, 90, 0, 91, 0, 92, 0,
- 93, 0, 94, 0, 95, 179, 0, 96,
- 0, 97, 0, 98, 0, 99, 0, 100,
- 0, 101, 0, 102, 0, 103, 0, 104,
- 0, 105, 0, 106, 0, 107, 0, 108,
- 0, 109, 0, 110, 0, 111, 0, 112,
- 0, 114, 113, 114, 113, 114, 114, 4,
- 115, 129, 4, 130, 151, 155, 160, 173,
- 175, 114, 113, 114, 116, 113, 114, 117,
- 113, 114, 118, 113, 114, 119, 113, 114,
- 120, 113, 114, 121, 113, 114, 122, 113,
- 114, 123, 113, 114, 124, 113, 114, 125,
- 113, 114, 126, 113, 114, 127, 113, 114,
- 128, 113, 114, 4, 113, 114, 84, 113,
- 114, 131, 145, 113, 114, 132, 113, 114,
- 133, 113, 114, 134, 113, 114, 135, 113,
- 114, 136, 113, 114, 137, 113, 138, 114,
- 139, 113, 139, 114, 113, 114, 140, 113,
- 114, 141, 113, 114, 142, 113, 114, 143,
- 113, 114, 144, 113, 114, 84, 113, 114,
- 146, 113, 147, 114, 148, 113, 148, 114,
- 113, 114, 149, 113, 114, 150, 113, 114,
- 144, 113, 114, 152, 113, 114, 153, 113,
- 114, 154, 154, 113, 114, 84, 129, 113,
- 114, 84, 156, 113, 114, 157, 113, 158,
- 114, 159, 113, 159, 114, 113, 114, 129,
- 113, 114, 161, 113, 114, 162, 113, 114,
- 163, 113, 114, 164, 113, 114, 165, 113,
- 114, 166, 113, 114, 167, 113, 114, 168,
- 113, 114, 169, 113, 114, 170, 113, 114,
- 171, 113, 114, 172, 113, 114, 144, 113,
- 114, 174, 113, 114, 129, 113, 114, 176,
- 113, 114, 177, 113, 114, 178, 113, 114,
- 159, 113, 180, 0, 181, 0, 182, 0,
- 183, 0, 184, 0, 185, 0, 186, 0,
- 187, 0, 188, 0, 108, 0, 32, 190,
- 194, 207, 0, 191, 0, 192, 193, 0,
- 193, 0, 31, 0, 195, 0, 196, 0,
- 197, 0, 198, 0, 199, 0, 200, 0,
- 201, 0, 202, 0, 203, 0, 204, 0,
- 205, 0, 206, 0, 107, 108, 0, 208,
- 0, 209, 0, 210, 0, 211, 0, 212,
- 0, 213, 0, 214, 0, 216, 215, 216,
- 215, 216, 216, 4, 217, 232, 4, 216,
- 215, 216, 218, 215, 216, 219, 215, 216,
- 220, 215, 216, 221, 215, 216, 222, 215,
- 216, 223, 215, 216, 224, 215, 225, 216,
- 226, 215, 226, 216, 215, 216, 227, 215,
- 216, 228, 215, 216, 229, 215, 216, 230,
- 215, 216, 231, 215, 216, 84, 215, 216,
- 233, 215, 216, 234, 215, 216, 235, 215,
- 216, 236, 215, 216, 237, 215, 216, 238,
- 215, 216, 239, 215, 216, 240, 215, 216,
- 241, 215, 216, 242, 215, 216, 243, 215,
- 216, 244, 215, 216, 231, 215, 246, 0,
- 247, 0, 248, 258, 0, 249, 0, 250,
- 0, 251, 0, 252, 0, 253, 0, 254,
- 0, 255, 0, 256, 0, 257, 0, 51,
- 0, 259, 0, 260, 0, 262, 261, 262,
- 261, 262, 262, 4, 263, 277, 4, 278,
- 299, 331, 347, 360, 362, 262, 261, 262,
- 264, 261, 262, 265, 261, 262, 266, 261,
- 262, 267, 261, 262, 268, 261, 262, 269,
- 261, 262, 270, 261, 262, 271, 261, 262,
- 272, 261, 262, 273, 261, 262, 274, 261,
- 262, 275, 261, 262, 276, 261, 262, 4,
- 261, 262, 84, 261, 262, 279, 293, 261,
- 262, 280, 261, 262, 281, 261, 262, 282,
- 261, 262, 283, 261, 262, 284, 261, 262,
- 285, 261, 286, 262, 287, 261, 287, 262,
- 261, 262, 288, 261, 262, 289, 261, 262,
- 290, 261, 262, 291, 261, 262, 292, 261,
- 262, 84, 261, 262, 294, 261, 295, 262,
- 296, 261, 296, 262, 261, 262, 297, 261,
- 262, 298, 261, 262, 292, 261, 262, 300,
- 303, 261, 262, 301, 261, 262, 302, 302,
- 261, 262, 84, 277, 261, 262, 304, 261,
- 262, 305, 261, 262, 306, 261, 262, 307,
- 261, 262, 308, 261, 309, 262, 321, 261,
- 310, 262, 261, 311, 262, 261, 312, 262,
- 261, 262, 313, 261, 262, 314, 261, 262,
- 315, 261, 262, 316, 261, 262, 317, 261,
- 262, 318, 261, 262, 319, 261, 262, 320,
- 261, 295, 262, 261, 262, 322, 261, 262,
- 323, 261, 262, 324, 261, 262, 325, 261,
- 262, 326, 261, 262, 327, 261, 262, 328,
- 261, 262, 329, 261, 262, 330, 261, 262,
- 296, 261, 262, 84, 332, 336, 261, 262,
- 333, 261, 334, 262, 335, 261, 335, 262,
- 261, 262, 277, 261, 262, 337, 261, 262,
- 338, 261, 262, 339, 261, 262, 340, 261,
- 262, 341, 261, 262, 342, 261, 262, 343,
- 261, 262, 344, 261, 262, 345, 261, 262,
- 346, 261, 262, 293, 261, 262, 348, 261,
- 262, 349, 261, 262, 350, 261, 262, 351,
- 261, 262, 352, 261, 262, 353, 261, 262,
- 354, 261, 262, 355, 261, 262, 356, 261,
- 262, 357, 261, 262, 358, 261, 262, 359,
- 261, 262, 292, 261, 262, 361, 261, 262,
- 277, 261, 262, 363, 261, 262, 364, 261,
- 262, 365, 261, 262, 335, 261, 367, 0,
- 31, 0, 369, 0, 370, 0, 371, 0,
- 193, 0, 372, 373, 372, 0, 377, 376,
- 375, 373, 376, 374, 0, 375, 373, 374,
- 0, 375, 374, 377, 376, 375, 373, 376,
- 374, 377, 377, 5, 15, 17, 31, 34,
- 37, 85, 189, 245, 366, 368, 372, 377,
- 0, 54, 379, 53, 380, 54, 381, 53,
- 381, 54, 53, 54, 382, 53, 54, 383,
- 53, 54, 384, 53, 54, 385, 84, 83,
- 53, 54, 386, 53, 54, 387, 53, 54,
- 388, 53, 54, 389, 53, 54, 390, 53,
- 54, 391, 53, 54, 392, 53, 54, 83,
- 53, 54, 394, 53, 54, 395, 53, 54,
- 396, 53, 54, 397, 53, 54, 392, 53,
- 54, 399, 53, 54, 400, 53, 54, 401,
- 53, 54, 402, 53, 54, 403, 53, 54,
- 404, 53, 405, 54, 420, 53, 406, 54,
- 53, 407, 54, 53, 408, 54, 53, 54,
- 409, 53, 54, 410, 53, 54, 411, 53,
- 54, 412, 53, 54, 413, 53, 54, 414,
- 53, 54, 415, 53, 54, 416, 53, 417,
- 54, 53, 418, 54, 53, 54, 419, 53,
- 54, 392, 53, 54, 421, 53, 54, 422,
- 53, 54, 423, 53, 54, 424, 53, 54,
- 425, 53, 54, 426, 53, 54, 427, 53,
- 54, 428, 53, 54, 429, 53, 54, 418,
- 53, 54, 431, 444, 53, 54, 432, 53,
- 54, 433, 53, 54, 434, 53, 54, 435,
- 53, 54, 436, 53, 54, 437, 53, 54,
- 438, 53, 54, 439, 53, 54, 440, 53,
- 54, 441, 53, 54, 442, 53, 54, 443,
- 53, 417, 54, 418, 53, 54, 445, 53,
- 54, 446, 53, 54, 447, 53, 54, 448,
- 53, 54, 449, 53, 54, 83, 53, 54,
- 451, 53, 54, 452, 53, 54, 453, 392,
- 53, 54, 454, 53, 54, 455, 53, 54,
- 456, 53, 54, 457, 53, 54, 458, 53,
- 54, 459, 53, 54, 460, 53, 54, 461,
- 53, 54, 462, 53, 54, 83, 53, 464,
- 0, 465, 466, 0, 466, 0, 467, 0,
- 468, 0, 469, 0, 470, 477, 213, 0,
- 471, 0, 472, 0, 473, 0, 474, 0,
- 475, 0, 476, 0, 258, 0, 479, 478,
- 479, 478, 479, 479, 4, 480, 494, 4,
- 495, 530, 565, 583, 596, 598, 479, 478,
- 479, 481, 478, 479, 482, 478, 479, 483,
- 478, 479, 484, 478, 479, 485, 478, 479,
- 486, 478, 479, 487, 478, 479, 488, 478,
- 479, 489, 478, 479, 490, 478, 479, 491,
- 478, 479, 492, 478, 479, 493, 478, 479,
- 4, 478, 479, 84, 478, 479, 496, 510,
- 525, 478, 479, 497, 478, 479, 498, 478,
- 479, 499, 478, 479, 500, 478, 479, 501,
- 478, 479, 502, 478, 503, 479, 504, 478,
- 504, 479, 478, 479, 505, 478, 479, 506,
- 478, 479, 507, 478, 479, 508, 478, 479,
- 509, 478, 479, 84, 478, 479, 511, 478,
- 512, 479, 513, 478, 513, 479, 478, 479,
- 514, 478, 479, 515, 478, 479, 516, 478,
- 479, 517, 84, 478, 479, 518, 478, 479,
- 519, 478, 479, 520, 478, 479, 521, 478,
- 479, 522, 478, 479, 523, 478, 479, 524,
- 478, 479, 509, 478, 479, 526, 478, 479,
- 527, 478, 479, 528, 478, 479, 529, 478,
- 479, 524, 478, 479, 531, 534, 478, 479,
- 532, 478, 479, 533, 533, 478, 479, 84,
- 494, 478, 479, 535, 478, 479, 536, 478,
- 479, 537, 478, 479, 538, 478, 479, 539,
- 478, 540, 479, 555, 478, 541, 479, 478,
- 542, 479, 478, 543, 479, 478, 479, 544,
- 478, 479, 545, 478, 479, 546, 478, 479,
- 547, 478, 479, 548, 478, 479, 549, 478,
- 479, 550, 478, 479, 551, 478, 552, 479,
- 478, 553, 479, 478, 479, 554, 478, 479,
- 524, 478, 479, 556, 478, 479, 557, 478,
- 479, 558, 478, 479, 559, 478, 479, 560,
- 478, 479, 561, 478, 479, 562, 478, 479,
- 563, 478, 479, 564, 478, 479, 553, 478,
- 479, 84, 566, 570, 478, 479, 567, 478,
- 568, 479, 569, 478, 569, 479, 478, 479,
- 494, 478, 479, 571, 478, 479, 572, 478,
- 479, 573, 478, 479, 574, 478, 479, 575,
- 478, 479, 576, 478, 479, 577, 478, 479,
- 578, 478, 479, 579, 478, 479, 580, 478,
- 479, 581, 478, 479, 582, 478, 552, 479,
- 553, 478, 479, 584, 478, 479, 585, 478,
- 479, 586, 524, 478, 479, 587, 478, 479,
- 588, 478, 479, 589, 478, 479, 590, 478,
- 479, 591, 478, 479, 592, 478, 479, 593,
- 478, 479, 594, 478, 479, 595, 478, 479,
- 509, 478, 479, 597, 478, 479, 494, 478,
- 479, 599, 478, 479, 600, 478, 479, 601,
- 478, 479, 569, 478, 603, 0, 604, 0,
- 605, 0, 606, 0, 258, 0, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 54, 0, 5,
- 1, 0, 29, 1, 29, 29, 29, 29,
- 29, 29, 35, 0, 43, 0, 43, 0,
- 43, 139, 48, 9, 106, 11, 0, 134,
- 45, 45, 45, 3, 122, 33, 33, 33,
- 0, 122, 33, 33, 33, 0, 122, 33,
- 0, 33, 0, 102, 7, 7, 43, 54,
- 0, 0, 43, 114, 25, 0, 54, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 149, 126,
- 57, 110, 23, 0, 43, 43, 43, 43,
- 0, 27, 118, 27, 27, 51, 27, 0,
- 54, 0, 1, 0, 43, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 69, 33, 69, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 54,
- 0, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 130,
- 31, 60, 57, 31, 63, 57, 63, 63,
- 63, 63, 63, 63, 66, 31, 43, 0,
- 0, 43, 0, 43, 0, 0, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 78,
- 33, 84, 78, 84, 84, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 19, 0, 54, 19, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 54,
- 0, 0, 0, 54, 0, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 19, 0, 0,
- 54, 19, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 0, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 81, 84, 84, 81, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 21, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 72, 33, 84, 72, 84,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 54, 15, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 54, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 15, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 15, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0, 0, 43, 54, 37,
- 37, 87, 37, 37, 43, 0, 39, 0,
- 43, 0, 0, 54, 0, 0, 39, 0,
- 0, 54, 0, 93, 90, 41, 96, 90,
- 96, 96, 96, 96, 96, 96, 99, 0,
- 43, 54, 0, 0, 0, 54, 0, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 13, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 75, 33, 84, 75,
- 84, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 17, 0, 54, 17, 0, 54, 0, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 17, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 17, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 17,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 607;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 1315 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
-
- #line 1322 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1612 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1675 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/pt.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_pt()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Pt", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/pt.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/pt.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 17, 18, 19, 35, 36, 37,
- 39, 41, 46, 51, 56, 61, 65, 69,
- 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 89, 91, 96, 103, 108, 111, 112,
- 113, 114, 115, 116, 117, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 139,
- 141, 143, 145, 147, 149, 151, 153, 155,
- 157, 159, 161, 163, 165, 167, 171, 173,
- 175, 177, 179, 181, 183, 186, 188, 190,
- 192, 194, 196, 198, 200, 216, 218, 219,
- 221, 223, 224, 225, 226, 227, 228, 230,
- 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 263, 265, 267, 269, 271,
- 273, 275, 277, 279, 281, 283, 285, 287,
- 289, 291, 293, 296, 298, 300, 302, 304,
- 306, 308, 311, 313, 315, 317, 319, 321,
- 323, 325, 327, 330, 332, 334, 336, 338,
- 340, 342, 345, 348, 351, 353, 356, 358,
- 360, 362, 364, 366, 368, 370, 372, 374,
- 376, 378, 380, 382, 384, 386, 388, 390,
- 392, 394, 396, 398, 399, 400, 401, 402,
- 403, 404, 405, 406, 407, 408, 412, 413,
- 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 431,
- 432, 433, 434, 435, 436, 437, 438, 439,
- 440, 448, 450, 452, 454, 456, 458, 460,
- 462, 465, 467, 469, 471, 473, 475, 477,
- 479, 481, 483, 485, 487, 489, 491, 493,
- 495, 497, 499, 501, 503, 505, 506, 507,
- 509, 510, 511, 512, 513, 514, 515, 516,
- 517, 518, 519, 520, 521, 522, 523, 537,
- 539, 541, 543, 545, 547, 549, 551, 553,
- 555, 557, 559, 561, 563, 565, 567, 570,
- 572, 574, 576, 578, 580, 582, 585, 587,
- 589, 591, 593, 595, 597, 599, 601, 604,
- 606, 608, 610, 612, 615, 617, 620, 623,
- 625, 627, 629, 631, 633, 636, 638, 640,
- 642, 644, 646, 648, 650, 652, 654, 656,
- 658, 660, 662, 664, 666, 668, 670, 672,
- 674, 676, 678, 680, 684, 686, 689, 691,
- 693, 695, 697, 699, 701, 703, 705, 707,
- 709, 711, 713, 715, 717, 719, 721, 723,
- 725, 727, 729, 731, 733, 735, 737, 739,
- 741, 743, 745, 747, 749, 751, 753, 754,
- 755, 756, 757, 758, 759, 763, 769, 772,
- 774, 780, 796, 798, 801, 803, 805, 807,
- 809, 813, 815, 817, 819, 821, 823, 825,
- 827, 829, 831, 833, 835, 837, 839, 841,
- 843, 845, 847, 849, 851, 854, 856, 858,
- 860, 862, 864, 866, 868, 870, 872, 874,
- 876, 878, 880, 882, 884, 886, 888, 890,
- 892, 894, 896, 898, 900, 902, 904, 907,
- 909, 911, 913, 915, 917, 919, 921, 923,
- 925, 927, 929, 931, 934, 936, 938, 940,
- 942, 944, 946, 948, 950, 953, 955, 957,
- 959, 961, 963, 965, 967, 969, 971, 973,
- 974, 976, 977, 978, 979, 980, 983, 984,
- 985, 986, 987, 988, 989, 990, 991, 992,
- 1006, 1008, 1010, 1012, 1014, 1016, 1018, 1020,
- 1022, 1024, 1026, 1028, 1030, 1032, 1034, 1036,
- 1040, 1042, 1044, 1046, 1048, 1050, 1052, 1055,
- 1057, 1059, 1061, 1063, 1065, 1067, 1069, 1071,
- 1074, 1076, 1078, 1080, 1082, 1085, 1087, 1089,
- 1091, 1093, 1095, 1097, 1099, 1101, 1103, 1105,
- 1107, 1109, 1111, 1114, 1116, 1119, 1122, 1124,
- 1126, 1128, 1130, 1132, 1135, 1137, 1139, 1141,
- 1143, 1145, 1147, 1149, 1151, 1153, 1155, 1157,
- 1159, 1161, 1163, 1165, 1167, 1169, 1171, 1173,
- 1175, 1177, 1179, 1181, 1183, 1185, 1189, 1191,
- 1194, 1196, 1198, 1200, 1202, 1204, 1206, 1208,
- 1210, 1212, 1214, 1216, 1218, 1220, 1222, 1225,
- 1227, 1229, 1232, 1234, 1236, 1238, 1240, 1242,
- 1244, 1246, 1248, 1250, 1252, 1254, 1256, 1258,
- 1260, 1262, 1264, 1265, 1266, 1267, 1268, 1269
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 67, 68, 69, 70, 77, 81, 124, 9,
- 13, -69, -65, 10, 32, 34, 35, 37,
- 42, 64, 67, 68, 69, 70, 77, 81,
- 124, 9, 13, 34, 34, 10, 13, 10,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 9,
- 13, 10, 32, 9, 13, 10, 13, 10,
- 95, 70, 69, 65, 84, 85, 82, 69,
- 95, 69, 78, 68, 95, 37, 32, 10,
- 13, 10, 13, 13, 32, 64, 9, 10,
- 9, 10, 13, 32, 64, 11, 12, 10,
- 32, 64, 9, 13, 97, 101, 111, 114,
- 97, 99, 116, 101, 114, -61, 105, -83,
- 115, 116, 105, 99, 97, 58, 10, 10,
- 10, 32, 35, 37, 64, 67, 68, 69,
- 70, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 97, 101, 111, 10, 114, 10, 97, 10,
- 99, 10, 116, 10, 101, 10, 114, -61,
- 10, 105, -83, 10, 10, 115, 10, 116,
- 10, 105, 10, 99, 10, 97, 10, 58,
- 10, 32, 34, 35, 37, 42, 64, 67,
- 68, 69, 70, 77, 81, 124, 9, 13,
- 97, 101, 100, 97, 111, 32, 115, 108,
- 105, 110, 101, 97, -61, 99, -89, -61,
- -93, 111, 32, 100, 111, 32, 67, 101,
- 110, -61, -95, 114, 105, 111, 58, 10,
- 10, 10, 32, 35, 37, 42, 64, 67,
- 68, 69, 70, 77, 81, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 32, 10, 97, 101,
- 10, 114, 10, 97, 10, 99, 10, 116,
- 10, 101, 10, 114, -61, 10, 105, -83,
- 10, 10, 115, 10, 116, 10, 105, 10,
- 99, 10, 97, 10, 58, 10, 110, -61,
- 10, 97, -95, 10, 10, 114, 10, 105,
- 10, 111, 10, 97, 10, 100, 10, 97,
- 111, 10, 32, 115, 10, 32, 110, 10,
- 116, -61, 10, 97, -93, 10, 10, 111,
- 10, 117, 10, 110, 10, 99, 10, 105,
- 10, 111, 10, 110, 10, 97, 10, 108,
- 10, 105, 10, 100, 10, 97, 10, 100,
- 10, 101, 10, 97, 10, 115, 10, 117,
- 10, 97, 10, 110, 10, 100, 97, 111,
- 32, 100, 111, 32, 67, 101, 110, 97,
- 32, 110, 115, 120, 116, -61, 97, -93,
- 111, 113, 117, 101, 109, 97, 32, 100,
- 111, 32, 67, 101, 110, -61, 97, 101,
- 109, 112, 108, 111, 115, 58, 10, 10,
- 10, 32, 35, 67, 70, 124, 9, 13,
- 10, 97, 10, 114, 10, 97, 10, 99,
- 10, 116, 10, 101, 10, 114, -61, 10,
- 105, -83, 10, 10, 115, 10, 116, 10,
- 105, 10, 99, 10, 97, 10, 58, 10,
- 117, 10, 110, 10, 99, 10, 105, 10,
- 111, 10, 110, 10, 97, 10, 108, 10,
- 105, 10, 100, 10, 97, 10, 100, 10,
- 101, 117, 110, 99, 100, 105, 111, 110,
- 97, 108, 105, 100, 97, 100, 101, 111,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 67, 68, 69, 70, 77, 81, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 97, 101, 10, 114, 10, 97, 10, 99,
- 10, 116, 10, 101, 10, 114, -61, 10,
- 105, -83, 10, 10, 115, 10, 116, 10,
- 105, 10, 99, 10, 97, 10, 58, 10,
- 110, -61, 10, 97, -95, 10, 10, 114,
- 10, 105, 10, 111, 10, 97, 101, 10,
- 100, 10, 97, 111, 10, 32, 115, 10,
- 108, 10, 105, 10, 110, 10, 101, 10,
- 97, -61, 10, 99, -89, 10, -61, 10,
- -93, 10, 10, 111, 10, 32, 10, 100,
- 10, 111, 10, 32, 10, 67, 10, 101,
- 10, 110, -61, 10, 10, 97, 10, 111,
- 10, 32, 10, 100, 10, 111, 10, 32,
- 10, 67, 10, 101, 10, 110, 10, 97,
- 10, 32, 110, 115, 10, 116, -61, 10,
- 97, -93, 10, 10, 111, 10, 113, 10,
- 117, 10, 101, 10, 109, 10, 97, 10,
- 32, 10, 100, 10, 111, 10, 32, 10,
- 67, 10, 101, 10, 117, 10, 110, 10,
- 99, 10, 105, 10, 111, 10, 110, 10,
- 97, 10, 108, 10, 105, 10, 100, 10,
- 97, 10, 100, 10, 101, 10, 97, 10,
- 115, 10, 117, 10, 97, 10, 110, 10,
- 100, 97, 115, 117, 97, 110, 100, 32,
- 124, 9, 13, 10, 32, 92, 124, 9,
- 13, 10, 92, 124, 10, 92, 10, 32,
- 92, 124, 9, 13, 10, 32, 34, 35,
- 37, 42, 64, 67, 68, 69, 70, 77,
- 81, 124, 9, 13, 10, 110, -61, 10,
- 97, -95, 10, 10, 114, 10, 105, 10,
- 111, 10, 32, 58, 115, 10, 100, 10,
- 101, 10, 32, 10, 70, 10, 117, 10,
- 110, 10, 100, 10, 111, 10, 110, 10,
- 116, 10, 101, 10, 120, 10, 116, 10,
- 101, 10, 108, 10, 105, 10, 110, 10,
- 101, 10, 97, -61, 10, 99, -89, 10,
- -61, 10, -93, 10, 10, 111, 10, 32,
- 10, 100, 10, 111, 10, 32, 10, 67,
- 10, 101, 10, 110, -61, 10, -95, 10,
- 10, 114, 10, 105, 10, 97, 10, 111,
- 10, 32, 10, 100, 10, 111, 10, 32,
- 10, 67, 10, 101, 10, 110, 10, 97,
- 10, 115, 120, 10, 113, 10, 117, 10,
- 101, 10, 109, 10, 97, 10, 32, 10,
- 100, 10, 111, 10, 32, 10, 67, 10,
- 101, 10, 110, -61, 10, 97, 10, 101,
- 10, 109, 10, 112, 10, 108, 10, 111,
- 10, 115, 10, 117, 10, 110, 10, 99,
- 100, 10, 105, 10, 111, 10, 110, 10,
- 97, 10, 108, 10, 105, 10, 100, 10,
- 97, 10, 100, 10, 101, 110, -61, 97,
- -95, 114, 105, 111, 32, 58, 115, 100,
- 101, 32, 70, 117, 110, 100, 10, 10,
- 10, 32, 35, 37, 42, 64, 67, 68,
- 69, 70, 77, 81, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 97, 101, 111,
- 10, 114, 10, 97, 10, 99, 10, 116,
- 10, 101, 10, 114, -61, 10, 105, -83,
- 10, 10, 115, 10, 116, 10, 105, 10,
- 99, 10, 97, 10, 58, 10, 110, -61,
- 10, 97, -95, 10, 10, 114, 10, 105,
- 10, 111, 10, 32, 58, 10, 100, 10,
- 101, 10, 32, 10, 70, 10, 117, 10,
- 110, 10, 100, 10, 111, 10, 110, 10,
- 116, 10, 101, 10, 120, 10, 116, 10,
- 97, 101, 10, 100, 10, 97, 111, 10,
- 32, 115, 10, 108, 10, 105, 10, 110,
- 10, 101, 10, 97, -61, 10, 99, -89,
- 10, -61, 10, -93, 10, 10, 111, 10,
- 32, 10, 100, 10, 111, 10, 32, 10,
- 67, 10, 101, 10, 110, -61, 10, -95,
- 10, 10, 114, 10, 105, 10, 97, 10,
- 111, 10, 32, 10, 100, 10, 111, 10,
- 32, 10, 67, 10, 101, 10, 110, 10,
- 97, 10, 32, 110, 115, 10, 116, -61,
- 10, 97, -93, 10, 10, 111, 10, 113,
- 10, 117, 10, 101, 10, 109, 10, 97,
- 10, 32, 10, 100, 10, 111, 10, 32,
- 10, 67, 10, 101, 10, 110, -61, 10,
- 97, 10, 117, 10, 110, 10, 99, 100,
- 10, 105, 10, 111, 10, 110, 10, 97,
- 10, 108, 10, 105, 10, 100, 10, 97,
- 10, 100, 10, 101, 10, 97, 10, 115,
- 10, 117, 10, 97, 10, 110, 10, 100,
- 110, 116, 101, 120, 116, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 15, 1, 1, 14, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 3, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 9, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 14, 2, 1, 2,
- 2, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 12, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 3, 3, 3, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 4, 1, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 6, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 12, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 3, 2, 3, 3, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 4, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 2, 4, 3, 2,
- 4, 14, 2, 3, 2, 2, 2, 2,
- 4, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 2, 1, 1, 1, 1, 3, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 12,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 4,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 3, 3, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 1, 0, 0,
- 1, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 17, 19, 21, 37, 39, 41,
- 44, 47, 52, 57, 62, 67, 71, 75,
- 78, 80, 82, 84, 86, 88, 90, 92,
- 94, 96, 98, 100, 102, 104, 106, 108,
- 110, 113, 116, 121, 128, 133, 137, 139,
- 141, 143, 145, 147, 149, 152, 154, 156,
- 158, 160, 162, 164, 166, 168, 170, 181,
- 184, 187, 190, 193, 196, 199, 202, 205,
- 208, 211, 214, 217, 220, 223, 228, 231,
- 234, 237, 240, 243, 246, 250, 253, 256,
- 259, 262, 265, 268, 271, 287, 290, 292,
- 295, 298, 300, 302, 304, 306, 308, 311,
- 313, 315, 317, 319, 321, 323, 325, 327,
- 329, 331, 333, 335, 337, 339, 341, 343,
- 345, 347, 349, 363, 366, 369, 372, 375,
- 378, 381, 384, 387, 390, 393, 396, 399,
- 402, 405, 408, 412, 415, 418, 421, 424,
- 427, 430, 434, 437, 440, 443, 446, 449,
- 452, 455, 458, 462, 465, 468, 471, 474,
- 477, 480, 484, 488, 492, 495, 499, 502,
- 505, 508, 511, 514, 517, 520, 523, 526,
- 529, 532, 535, 538, 541, 544, 547, 550,
- 553, 556, 559, 562, 564, 566, 568, 570,
- 572, 574, 576, 578, 580, 582, 587, 589,
- 592, 594, 596, 598, 600, 602, 604, 606,
- 608, 610, 612, 614, 616, 618, 620, 623,
- 625, 627, 629, 631, 633, 635, 637, 639,
- 641, 649, 652, 655, 658, 661, 664, 667,
- 670, 674, 677, 680, 683, 686, 689, 692,
- 695, 698, 701, 704, 707, 710, 713, 716,
- 719, 722, 725, 728, 731, 734, 736, 738,
- 741, 743, 745, 747, 749, 751, 753, 755,
- 757, 759, 761, 763, 765, 767, 769, 783,
- 786, 789, 792, 795, 798, 801, 804, 807,
- 810, 813, 816, 819, 822, 825, 828, 832,
- 835, 838, 841, 844, 847, 850, 854, 857,
- 860, 863, 866, 869, 872, 875, 878, 882,
- 885, 888, 891, 894, 898, 901, 905, 909,
- 912, 915, 918, 921, 924, 928, 931, 934,
- 937, 940, 943, 946, 949, 952, 955, 958,
- 961, 964, 967, 970, 973, 976, 979, 982,
- 985, 988, 991, 994, 999, 1002, 1006, 1009,
- 1012, 1015, 1018, 1021, 1024, 1027, 1030, 1033,
- 1036, 1039, 1042, 1045, 1048, 1051, 1054, 1057,
- 1060, 1063, 1066, 1069, 1072, 1075, 1078, 1081,
- 1084, 1087, 1090, 1093, 1096, 1099, 1102, 1104,
- 1106, 1108, 1110, 1112, 1114, 1118, 1124, 1128,
- 1131, 1137, 1153, 1156, 1160, 1163, 1166, 1169,
- 1172, 1177, 1180, 1183, 1186, 1189, 1192, 1195,
- 1198, 1201, 1204, 1207, 1210, 1213, 1216, 1219,
- 1222, 1225, 1228, 1231, 1234, 1238, 1241, 1244,
- 1247, 1250, 1253, 1256, 1259, 1262, 1265, 1268,
- 1271, 1274, 1277, 1280, 1283, 1286, 1289, 1292,
- 1295, 1298, 1301, 1304, 1307, 1310, 1313, 1317,
- 1320, 1323, 1326, 1329, 1332, 1335, 1338, 1341,
- 1344, 1347, 1350, 1353, 1357, 1360, 1363, 1366,
- 1369, 1372, 1375, 1378, 1381, 1385, 1388, 1391,
- 1394, 1397, 1400, 1403, 1406, 1409, 1412, 1415,
- 1417, 1420, 1422, 1424, 1426, 1428, 1432, 1434,
- 1436, 1438, 1440, 1442, 1444, 1446, 1448, 1450,
- 1464, 1467, 1470, 1473, 1476, 1479, 1482, 1485,
- 1488, 1491, 1494, 1497, 1500, 1503, 1506, 1509,
- 1514, 1517, 1520, 1523, 1526, 1529, 1532, 1536,
- 1539, 1542, 1545, 1548, 1551, 1554, 1557, 1560,
- 1564, 1567, 1570, 1573, 1576, 1580, 1583, 1586,
- 1589, 1592, 1595, 1598, 1601, 1604, 1607, 1610,
- 1613, 1616, 1619, 1623, 1626, 1630, 1634, 1637,
- 1640, 1643, 1646, 1649, 1653, 1656, 1659, 1662,
- 1665, 1668, 1671, 1674, 1677, 1680, 1683, 1686,
- 1689, 1692, 1695, 1698, 1701, 1704, 1707, 1710,
- 1713, 1716, 1719, 1722, 1725, 1728, 1733, 1736,
- 1740, 1743, 1746, 1749, 1752, 1755, 1758, 1761,
- 1764, 1767, 1770, 1773, 1776, 1779, 1782, 1786,
- 1789, 1792, 1796, 1799, 1802, 1805, 1808, 1811,
- 1814, 1817, 1820, 1823, 1826, 1829, 1832, 1835,
- 1838, 1841, 1844, 1846, 1848, 1850, 1852, 1854
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 85, 189, 245, 366, 368, 372, 4,
- 0, 3, 0, 4, 0, 4, 4, 5,
- 15, 17, 31, 34, 37, 85, 189, 245,
- 366, 368, 372, 4, 0, 6, 0, 7,
- 0, 9, 8, 8, 9, 8, 8, 10,
- 10, 11, 10, 10, 10, 10, 11, 10,
- 10, 10, 10, 12, 10, 10, 10, 10,
- 13, 10, 10, 4, 14, 14, 0, 4,
- 14, 14, 0, 4, 16, 15, 4, 0,
- 18, 0, 19, 0, 20, 0, 21, 0,
- 22, 0, 23, 0, 24, 0, 25, 0,
- 26, 0, 27, 0, 28, 0, 29, 0,
- 30, 0, 607, 0, 32, 0, 4, 16,
- 33, 4, 16, 33, 0, 0, 0, 0,
- 35, 36, 4, 36, 36, 34, 35, 35,
- 4, 36, 34, 36, 0, 38, 463, 602,
- 0, 39, 0, 40, 0, 41, 0, 42,
- 0, 43, 0, 44, 0, 45, 46, 0,
- 46, 0, 47, 0, 48, 0, 49, 0,
- 50, 0, 51, 0, 52, 0, 54, 53,
- 54, 53, 54, 54, 4, 55, 4, 69,
- 398, 430, 450, 54, 53, 54, 56, 53,
- 54, 57, 53, 54, 58, 53, 54, 59,
- 53, 54, 60, 53, 54, 61, 53, 54,
- 62, 53, 54, 63, 53, 54, 64, 53,
- 54, 65, 53, 54, 66, 53, 54, 67,
- 53, 54, 68, 53, 54, 4, 53, 54,
- 70, 378, 393, 53, 54, 71, 53, 54,
- 72, 53, 54, 73, 53, 54, 74, 53,
- 54, 75, 53, 54, 76, 53, 77, 54,
- 78, 53, 78, 54, 53, 54, 79, 53,
- 54, 80, 53, 54, 81, 53, 54, 82,
- 53, 54, 83, 53, 54, 84, 53, 4,
- 4, 5, 15, 17, 31, 34, 37, 85,
- 189, 245, 366, 368, 372, 4, 0, 86,
- 89, 0, 87, 0, 88, 88, 0, 32,
- 31, 0, 90, 0, 91, 0, 92, 0,
- 93, 0, 94, 0, 95, 179, 0, 96,
- 0, 97, 0, 98, 0, 99, 0, 100,
- 0, 101, 0, 102, 0, 103, 0, 104,
- 0, 105, 0, 106, 0, 107, 0, 108,
- 0, 109, 0, 110, 0, 111, 0, 112,
- 0, 114, 113, 114, 113, 114, 114, 4,
- 115, 129, 4, 130, 151, 155, 160, 173,
- 175, 114, 113, 114, 116, 113, 114, 117,
- 113, 114, 118, 113, 114, 119, 113, 114,
- 120, 113, 114, 121, 113, 114, 122, 113,
- 114, 123, 113, 114, 124, 113, 114, 125,
- 113, 114, 126, 113, 114, 127, 113, 114,
- 128, 113, 114, 4, 113, 114, 84, 113,
- 114, 131, 145, 113, 114, 132, 113, 114,
- 133, 113, 114, 134, 113, 114, 135, 113,
- 114, 136, 113, 114, 137, 113, 138, 114,
- 139, 113, 139, 114, 113, 114, 140, 113,
- 114, 141, 113, 114, 142, 113, 114, 143,
- 113, 114, 144, 113, 114, 84, 113, 114,
- 146, 113, 147, 114, 148, 113, 148, 114,
- 113, 114, 149, 113, 114, 150, 113, 114,
- 144, 113, 114, 152, 113, 114, 153, 113,
- 114, 154, 154, 113, 114, 84, 129, 113,
- 114, 84, 156, 113, 114, 157, 113, 158,
- 114, 159, 113, 159, 114, 113, 114, 129,
- 113, 114, 161, 113, 114, 162, 113, 114,
- 163, 113, 114, 164, 113, 114, 165, 113,
- 114, 166, 113, 114, 167, 113, 114, 168,
- 113, 114, 169, 113, 114, 170, 113, 114,
- 171, 113, 114, 172, 113, 114, 144, 113,
- 114, 174, 113, 114, 129, 113, 114, 176,
- 113, 114, 177, 113, 114, 178, 113, 114,
- 159, 113, 180, 0, 181, 0, 182, 0,
- 183, 0, 184, 0, 185, 0, 186, 0,
- 187, 0, 188, 0, 108, 0, 32, 190,
- 194, 207, 0, 191, 0, 192, 193, 0,
- 193, 0, 31, 0, 195, 0, 196, 0,
- 197, 0, 198, 0, 199, 0, 200, 0,
- 201, 0, 202, 0, 203, 0, 204, 0,
- 205, 0, 206, 0, 107, 108, 0, 208,
- 0, 209, 0, 210, 0, 211, 0, 212,
- 0, 213, 0, 214, 0, 216, 215, 216,
- 215, 216, 216, 4, 217, 232, 4, 216,
- 215, 216, 218, 215, 216, 219, 215, 216,
- 220, 215, 216, 221, 215, 216, 222, 215,
- 216, 223, 215, 216, 224, 215, 225, 216,
- 226, 215, 226, 216, 215, 216, 227, 215,
- 216, 228, 215, 216, 229, 215, 216, 230,
- 215, 216, 231, 215, 216, 84, 215, 216,
- 233, 215, 216, 234, 215, 216, 235, 215,
- 216, 236, 215, 216, 237, 215, 216, 238,
- 215, 216, 239, 215, 216, 240, 215, 216,
- 241, 215, 216, 242, 215, 216, 243, 215,
- 216, 244, 215, 216, 231, 215, 246, 0,
- 247, 0, 248, 258, 0, 249, 0, 250,
- 0, 251, 0, 252, 0, 253, 0, 254,
- 0, 255, 0, 256, 0, 257, 0, 51,
- 0, 259, 0, 260, 0, 262, 261, 262,
- 261, 262, 262, 4, 263, 277, 4, 278,
- 299, 331, 347, 360, 362, 262, 261, 262,
- 264, 261, 262, 265, 261, 262, 266, 261,
- 262, 267, 261, 262, 268, 261, 262, 269,
- 261, 262, 270, 261, 262, 271, 261, 262,
- 272, 261, 262, 273, 261, 262, 274, 261,
- 262, 275, 261, 262, 276, 261, 262, 4,
- 261, 262, 84, 261, 262, 279, 293, 261,
- 262, 280, 261, 262, 281, 261, 262, 282,
- 261, 262, 283, 261, 262, 284, 261, 262,
- 285, 261, 286, 262, 287, 261, 287, 262,
- 261, 262, 288, 261, 262, 289, 261, 262,
- 290, 261, 262, 291, 261, 262, 292, 261,
- 262, 84, 261, 262, 294, 261, 295, 262,
- 296, 261, 296, 262, 261, 262, 297, 261,
- 262, 298, 261, 262, 292, 261, 262, 300,
- 303, 261, 262, 301, 261, 262, 302, 302,
- 261, 262, 84, 277, 261, 262, 304, 261,
- 262, 305, 261, 262, 306, 261, 262, 307,
- 261, 262, 308, 261, 309, 262, 321, 261,
- 310, 262, 261, 311, 262, 261, 312, 262,
- 261, 262, 313, 261, 262, 314, 261, 262,
- 315, 261, 262, 316, 261, 262, 317, 261,
- 262, 318, 261, 262, 319, 261, 262, 320,
- 261, 295, 262, 261, 262, 322, 261, 262,
- 323, 261, 262, 324, 261, 262, 325, 261,
- 262, 326, 261, 262, 327, 261, 262, 328,
- 261, 262, 329, 261, 262, 330, 261, 262,
- 296, 261, 262, 84, 332, 336, 261, 262,
- 333, 261, 334, 262, 335, 261, 335, 262,
- 261, 262, 277, 261, 262, 337, 261, 262,
- 338, 261, 262, 339, 261, 262, 340, 261,
- 262, 341, 261, 262, 342, 261, 262, 343,
- 261, 262, 344, 261, 262, 345, 261, 262,
- 346, 261, 262, 293, 261, 262, 348, 261,
- 262, 349, 261, 262, 350, 261, 262, 351,
- 261, 262, 352, 261, 262, 353, 261, 262,
- 354, 261, 262, 355, 261, 262, 356, 261,
- 262, 357, 261, 262, 358, 261, 262, 359,
- 261, 262, 292, 261, 262, 361, 261, 262,
- 277, 261, 262, 363, 261, 262, 364, 261,
- 262, 365, 261, 262, 335, 261, 367, 0,
- 31, 0, 369, 0, 370, 0, 371, 0,
- 193, 0, 372, 373, 372, 0, 377, 376,
- 375, 373, 376, 374, 0, 375, 373, 374,
- 0, 375, 374, 377, 376, 375, 373, 376,
- 374, 377, 377, 5, 15, 17, 31, 34,
- 37, 85, 189, 245, 366, 368, 372, 377,
- 0, 54, 379, 53, 380, 54, 381, 53,
- 381, 54, 53, 54, 382, 53, 54, 383,
- 53, 54, 384, 53, 54, 385, 84, 83,
- 53, 54, 386, 53, 54, 387, 53, 54,
- 388, 53, 54, 389, 53, 54, 390, 53,
- 54, 391, 53, 54, 392, 53, 54, 83,
- 53, 54, 394, 53, 54, 395, 53, 54,
- 396, 53, 54, 397, 53, 54, 392, 53,
- 54, 399, 53, 54, 400, 53, 54, 401,
- 53, 54, 402, 53, 54, 403, 53, 54,
- 404, 53, 405, 54, 420, 53, 406, 54,
- 53, 407, 54, 53, 408, 54, 53, 54,
- 409, 53, 54, 410, 53, 54, 411, 53,
- 54, 412, 53, 54, 413, 53, 54, 414,
- 53, 54, 415, 53, 54, 416, 53, 417,
- 54, 53, 418, 54, 53, 54, 419, 53,
- 54, 392, 53, 54, 421, 53, 54, 422,
- 53, 54, 423, 53, 54, 424, 53, 54,
- 425, 53, 54, 426, 53, 54, 427, 53,
- 54, 428, 53, 54, 429, 53, 54, 418,
- 53, 54, 431, 444, 53, 54, 432, 53,
- 54, 433, 53, 54, 434, 53, 54, 435,
- 53, 54, 436, 53, 54, 437, 53, 54,
- 438, 53, 54, 439, 53, 54, 440, 53,
- 54, 441, 53, 54, 442, 53, 54, 443,
- 53, 417, 54, 418, 53, 54, 445, 53,
- 54, 446, 53, 54, 447, 53, 54, 448,
- 53, 54, 449, 53, 54, 83, 53, 54,
- 451, 53, 54, 452, 53, 54, 453, 392,
- 53, 54, 454, 53, 54, 455, 53, 54,
- 456, 53, 54, 457, 53, 54, 458, 53,
- 54, 459, 53, 54, 460, 53, 54, 461,
- 53, 54, 462, 53, 54, 83, 53, 464,
- 0, 465, 466, 0, 466, 0, 467, 0,
- 468, 0, 469, 0, 470, 477, 213, 0,
- 471, 0, 472, 0, 473, 0, 474, 0,
- 475, 0, 476, 0, 258, 0, 479, 478,
- 479, 478, 479, 479, 4, 480, 494, 4,
- 495, 530, 565, 583, 596, 598, 479, 478,
- 479, 481, 478, 479, 482, 478, 479, 483,
- 478, 479, 484, 478, 479, 485, 478, 479,
- 486, 478, 479, 487, 478, 479, 488, 478,
- 479, 489, 478, 479, 490, 478, 479, 491,
- 478, 479, 492, 478, 479, 493, 478, 479,
- 4, 478, 479, 84, 478, 479, 496, 510,
- 525, 478, 479, 497, 478, 479, 498, 478,
- 479, 499, 478, 479, 500, 478, 479, 501,
- 478, 479, 502, 478, 503, 479, 504, 478,
- 504, 479, 478, 479, 505, 478, 479, 506,
- 478, 479, 507, 478, 479, 508, 478, 479,
- 509, 478, 479, 84, 478, 479, 511, 478,
- 512, 479, 513, 478, 513, 479, 478, 479,
- 514, 478, 479, 515, 478, 479, 516, 478,
- 479, 517, 84, 478, 479, 518, 478, 479,
- 519, 478, 479, 520, 478, 479, 521, 478,
- 479, 522, 478, 479, 523, 478, 479, 524,
- 478, 479, 509, 478, 479, 526, 478, 479,
- 527, 478, 479, 528, 478, 479, 529, 478,
- 479, 524, 478, 479, 531, 534, 478, 479,
- 532, 478, 479, 533, 533, 478, 479, 84,
- 494, 478, 479, 535, 478, 479, 536, 478,
- 479, 537, 478, 479, 538, 478, 479, 539,
- 478, 540, 479, 555, 478, 541, 479, 478,
- 542, 479, 478, 543, 479, 478, 479, 544,
- 478, 479, 545, 478, 479, 546, 478, 479,
- 547, 478, 479, 548, 478, 479, 549, 478,
- 479, 550, 478, 479, 551, 478, 552, 479,
- 478, 553, 479, 478, 479, 554, 478, 479,
- 524, 478, 479, 556, 478, 479, 557, 478,
- 479, 558, 478, 479, 559, 478, 479, 560,
- 478, 479, 561, 478, 479, 562, 478, 479,
- 563, 478, 479, 564, 478, 479, 553, 478,
- 479, 84, 566, 570, 478, 479, 567, 478,
- 568, 479, 569, 478, 569, 479, 478, 479,
- 494, 478, 479, 571, 478, 479, 572, 478,
- 479, 573, 478, 479, 574, 478, 479, 575,
- 478, 479, 576, 478, 479, 577, 478, 479,
- 578, 478, 479, 579, 478, 479, 580, 478,
- 479, 581, 478, 479, 582, 478, 552, 479,
- 553, 478, 479, 584, 478, 479, 585, 478,
- 479, 586, 524, 478, 479, 587, 478, 479,
- 588, 478, 479, 589, 478, 479, 590, 478,
- 479, 591, 478, 479, 592, 478, 479, 593,
- 478, 479, 594, 478, 479, 595, 478, 479,
- 509, 478, 479, 597, 478, 479, 494, 478,
- 479, 599, 478, 479, 600, 478, 479, 601,
- 478, 479, 569, 478, 603, 0, 604, 0,
- 605, 0, 606, 0, 258, 0, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 54, 0, 5,
- 1, 0, 29, 1, 29, 29, 29, 29,
- 29, 29, 35, 0, 43, 0, 43, 0,
- 43, 139, 48, 9, 106, 11, 0, 134,
- 45, 45, 45, 3, 122, 33, 33, 33,
- 0, 122, 33, 33, 33, 0, 122, 33,
- 0, 33, 0, 102, 7, 7, 43, 54,
- 0, 0, 43, 114, 25, 0, 54, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 149, 126,
- 57, 110, 23, 0, 43, 43, 43, 43,
- 0, 27, 118, 27, 27, 51, 27, 0,
- 54, 0, 1, 0, 43, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 69, 33, 69, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 54,
- 0, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 130,
- 31, 60, 57, 31, 63, 57, 63, 63,
- 63, 63, 63, 63, 66, 31, 43, 0,
- 0, 43, 0, 43, 0, 0, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 54, 0, 78,
- 33, 84, 78, 84, 84, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 19, 0, 54, 19, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 54,
- 0, 0, 0, 54, 0, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 19, 0, 0,
- 54, 19, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 0, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 81, 84, 84, 81, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 21, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 72, 33, 84, 72, 84,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 54, 15, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 54, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 15, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 15, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0, 0, 43, 54, 37,
- 37, 87, 37, 37, 43, 0, 39, 0,
- 43, 0, 0, 54, 0, 0, 39, 0,
- 0, 54, 0, 93, 90, 41, 96, 90,
- 96, 96, 96, 96, 96, 96, 99, 0,
- 43, 54, 0, 0, 0, 54, 0, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 13, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 75, 33, 84, 75,
- 84, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 17, 0, 54, 17, 0, 54, 0, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 17, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 17, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 17,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 607;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/pt.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 1315 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/pt.c.rl"
-
-#line 1322 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/pt.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/pt.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/pt.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/pt.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/pt.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/pt.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/pt.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/pt.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/pt.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/pt.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/pt.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/pt.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/pt.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/pt.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/pt.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/pt.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/pt.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/pt.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/pt.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/pt.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/pt.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/pt.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/pt.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/pt.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1612 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/pt.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1675 "ext/gherkin_lexer_pt/gherkin_lexer_pt.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/pt.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_pt()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Pt", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_ro/extconf.rb
index ccda920,ccda920..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_ro/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_ro")
--have_library("c", "main")
--create_makefile("gherkin_lexer_ro")
diff --cc ext/gherkin_lexer_ro/gherkin_lexer_ro.c
index aedbba3,5342796..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_ro/gherkin_lexer_ro.c
+++ /dev/null
@@@ -1,1427 -1,1427 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 22, 24, 26,
- 44, 45, 46, 47, 49, 51, 56, 61,
- 66, 71, 75, 79, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 101, 108, 113, 114,
- 115, 116, 117, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129, 130, 131, 146,
- 148, 150, 152, 170, 171, 175, 176, 177,
- 178, 179, 180, 181, 182, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 201,
- 203, 205, 207, 211, 213, 215, 217, 219,
- 221, 223, 225, 227, 229, 231, 233, 235,
- 237, 238, 239, 240, 243, 244, 245, 246,
- 247, 248, 249, 250, 251, 252, 253, 254,
- 255, 256, 257, 268, 270, 272, 274, 276,
- 278, 280, 282, 284, 286, 288, 290, 292,
- 294, 296, 298, 300, 302, 304, 306, 308,
- 310, 312, 314, 316, 318, 320, 322, 324,
- 326, 328, 332, 334, 336, 338, 340, 342,
- 344, 346, 348, 350, 352, 354, 357, 359,
- 361, 363, 365, 367, 369, 371, 373, 375,
- 377, 379, 381, 384, 386, 388, 390, 392,
- 393, 396, 397, 398, 399, 400, 401, 402,
- 403, 404, 405, 420, 422, 424, 426, 428,
- 430, 432, 434, 436, 438, 440, 442, 444,
- 446, 448, 450, 452, 454, 456, 458, 460,
- 462, 464, 468, 470, 472, 474, 476, 478,
- 480, 482, 484, 486, 488, 493, 495, 497,
- 499, 501, 503, 505, 507, 511, 513, 515,
- 517, 521, 523, 525, 527, 529, 531, 533,
- 535, 537, 539, 541, 543, 545, 549, 551,
- 553, 555, 557, 559, 561, 563, 565, 567,
- 569, 571, 573, 576, 578, 580, 582, 584,
- 585, 586, 587, 588, 589, 590, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 620, 622, 624, 626,
- 628, 630, 632, 634, 636, 638, 640, 642,
- 644, 646, 648, 650, 652, 654, 656, 658,
- 660, 662, 664, 667, 669, 671, 673, 675,
- 680, 682, 684, 686, 688, 690, 692, 694,
- 698, 700, 702, 704, 708, 710, 712, 714,
- 716, 718, 720, 722, 724, 726, 728, 730,
- 732, 734, 737, 739, 741, 743, 745, 747,
- 749, 753, 759, 762, 764, 770, 788, 790,
- 792, 794, 796, 798, 800, 802, 804, 806,
- 808, 810, 812, 814, 816, 818, 820, 822,
- 824, 826, 829, 831, 833, 835, 837, 842,
- 844, 846, 848, 850, 852, 854, 856, 860,
- 862, 864, 866, 870, 872, 874, 876, 878,
- 880, 882, 884, 886, 888, 890, 892, 894,
- 896, 900, 902, 904, 906, 908, 910, 912,
- 914, 916, 918, 920, 922, 924, 927, 929,
- 931, 933, 935, 936, 937
- };
-
- static const char _lexer_trans_keys[] = {
- -59, -56, -17, 10, 32, 34, 35, 37,
- 42, 64, 65, 67, 68, 69, 70, 83,
- 124, 9, 13, -98, 105, 32, 10, 13,
- 10, 13, -59, -56, 10, 32, 34, 35,
- 37, 42, 64, 65, 67, 68, 69, 70,
- 83, 124, 9, 13, -104, 34, 34, 10,
- 13, 10, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 9, 13, 10, 32, 9, 13, 10,
- 13, 10, 95, 70, 69, 65, 84, 85,
- 82, 69, 95, 69, 78, 68, 95, 37,
- 13, 32, 64, 9, 10, 9, 10, 13,
- 32, 64, 11, 12, 10, 32, 64, 9,
- 13, 116, 117, 110, 99, -61, 97, 111,
- -94, 110, 100, 110, 116, 101, 120, 116,
- 58, 10, 10, -59, -56, 10, 32, 35,
- 37, 42, 64, 65, 67, 68, 70, 83,
- 9, 13, -98, 10, 10, 105, 10, 32,
- -59, -56, 10, 32, 34, 35, 37, 42,
- 64, 65, 67, 68, 69, 70, 83, 124,
- 9, 13, 97, -59, -56, 114, 116, -93,
- 105, 32, 102, 105, 105, -101, 32, 101,
- 105, 120, 101, 109, 112, 108, 101, 58,
- 10, 10, 10, 32, 35, 70, 124, 9,
- 13, 10, 117, 10, 110, 10, 99, -59,
- -56, 10, 116, -93, 10, 10, 105, 10,
- 111, 10, 110, 10, 97, 10, 108, 10,
- 105, 10, 116, 10, 97, 10, 116, 10,
- 101, 10, 58, -101, 10, 117, 110, 99,
- -59, -56, 116, -93, 105, 111, 110, 97,
- 108, 105, 116, 97, 116, 101, 58, 10,
- 10, 10, 32, 35, 37, 64, 67, 69,
- 70, 83, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 111, 10, 110, 10, 116, 10, 101,
- 10, 120, 10, 116, 10, 58, 10, 120,
- 10, 101, 10, 109, 10, 112, 10, 108,
- 10, 101, 10, 117, 10, 110, 10, 99,
- -59, -56, 10, 116, -93, 10, 10, 105,
- 10, 111, 10, 110, 10, 97, 10, 108,
- 10, 105, 10, 116, 10, 97, 10, 116,
- -101, 10, 10, 99, 116, 10, 101, 10,
- 110, 10, 97, 10, 114, 10, 105, 10,
- 117, 10, 114, 10, 117, 10, 99, 10,
- 116, 10, 117, 10, 114, -60, 10, 97,
- -125, 10, 10, 32, 10, 115, 10, 99,
- -101, 99, 105, 116, 101, 110, 97, 114,
- 105, 117, 58, 10, 10, -59, -56, 10,
- 32, 35, 37, 42, 64, 65, 67, 68,
- 70, 83, 9, 13, -98, 10, 10, 105,
- 10, 32, -104, 10, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 116, 10, 117, 10, 110, 10, 99,
- -61, 10, 97, 111, -94, 10, 10, 110,
- 10, 100, 10, 110, 10, 116, 10, 101,
- 10, 120, 10, 116, 10, 58, 10, 97,
- -59, -56, 10, 114, 116, -93, 10, 10,
- 105, 10, 32, 10, 102, 10, 105, 10,
- 105, -101, 10, 10, 32, 101, 105, 10,
- 117, 10, 110, 10, 99, -59, -56, 10,
- 116, -93, 10, 10, 105, 10, 111, 10,
- 110, 10, 97, 10, 108, 10, 105, 10,
- 116, 10, 97, 10, 116, 10, 101, -101,
- 10, 10, 99, 105, 116, 10, 101, 10,
- 110, 10, 97, 10, 114, 10, 105, 10,
- 117, 10, 114, 10, 117, 10, 99, 10,
- 116, 10, 117, 10, 114, -60, 10, 97,
- -125, 10, 10, 32, 10, 115, 10, 99,
- 114, 117, 99, 116, 117, 114, -60, 97,
- -125, 32, 115, 99, 101, 110, 97, 114,
- 105, 117, 58, 10, 10, -59, -56, 10,
- 32, 35, 37, 42, 64, 65, 67, 68,
- 70, 83, 9, 13, -98, 10, 10, 105,
- 10, 32, -104, 10, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 116, 10, 117, 10, 110, 10, 99,
- -61, 10, 97, -94, 10, 10, 110, 10,
- 100, 10, 97, -59, -56, 10, 114, 116,
- -93, 10, 10, 105, 10, 32, 10, 102,
- 10, 105, 10, 105, -101, 10, 10, 32,
- 101, 105, 10, 117, 10, 110, 10, 99,
- -59, -56, 10, 116, -93, 10, 10, 105,
- 10, 111, 10, 110, 10, 97, 10, 108,
- 10, 105, 10, 116, 10, 97, 10, 116,
- 10, 101, 10, 58, -101, 10, 10, 99,
- 105, 10, 101, 10, 110, 10, 97, 10,
- 114, 10, 105, 10, 117, 32, 124, 9,
- 13, 10, 32, 92, 124, 9, 13, 10,
- 92, 124, 10, 92, 10, 32, 92, 124,
- 9, 13, -59, -56, 10, 32, 34, 35,
- 37, 42, 64, 65, 67, 68, 69, 70,
- 83, 124, 9, 13, -104, 10, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 116, 10, 117, 10, 110,
- 10, 99, -61, 10, 97, -94, 10, 10,
- 110, 10, 100, 10, 97, -59, -56, 10,
- 114, 116, -93, 10, 10, 105, 10, 32,
- 10, 102, 10, 105, 10, 105, -101, 10,
- 10, 32, 101, 105, 10, 117, 10, 110,
- 10, 99, -59, -56, 10, 116, -93, 10,
- 10, 105, 10, 111, 10, 110, 10, 97,
- 10, 108, 10, 105, 10, 116, 10, 97,
- 10, 116, 10, 101, 10, 58, -101, 10,
- 10, 99, 105, 116, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 117,
- 10, 114, 10, 117, 10, 99, 10, 116,
- 10, 117, 10, 114, -60, 10, 97, -125,
- 10, 10, 32, 10, 115, 10, 99, -69,
- -65, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 1, 2, 2, 16,
- 1, 1, 1, 2, 2, 3, 3, 3,
- 3, 2, 2, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 3, 5, 3, 1, 1,
- 1, 1, 3, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 13, 2,
- 2, 2, 16, 1, 4, 1, 1, 1,
- 1, 1, 1, 1, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 5, 2,
- 2, 2, 4, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 3, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 9, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 4, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 1,
- 3, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 13, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 4, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 5, 2, 2, 2,
- 2, 2, 2, 2, 4, 2, 2, 2,
- 4, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 13, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 5,
- 2, 2, 2, 2, 2, 2, 2, 4,
- 2, 2, 2, 4, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 4, 3, 2, 4, 16, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 5, 2,
- 2, 2, 2, 2, 2, 2, 4, 2,
- 2, 2, 4, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 4, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 1, 1, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 1, 1, 1,
- 1, 1, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 1, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 1, 0, 0, 1, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 25, 28, 31,
- 49, 51, 53, 55, 58, 61, 66, 71,
- 76, 81, 85, 89, 92, 94, 96, 98,
- 100, 102, 104, 106, 108, 110, 112, 114,
- 116, 118, 120, 122, 127, 134, 139, 141,
- 143, 145, 147, 151, 153, 155, 157, 159,
- 161, 163, 165, 167, 169, 171, 173, 188,
- 191, 194, 197, 215, 217, 222, 224, 226,
- 228, 230, 232, 234, 236, 240, 242, 244,
- 246, 248, 250, 252, 254, 256, 258, 265,
- 268, 271, 274, 279, 282, 285, 288, 291,
- 294, 297, 300, 303, 306, 309, 312, 315,
- 318, 320, 322, 324, 328, 330, 332, 334,
- 336, 338, 340, 342, 344, 346, 348, 350,
- 352, 354, 356, 367, 370, 373, 376, 379,
- 382, 385, 388, 391, 394, 397, 400, 403,
- 406, 409, 412, 415, 418, 421, 424, 427,
- 430, 433, 436, 439, 442, 445, 448, 451,
- 454, 457, 462, 465, 468, 471, 474, 477,
- 480, 483, 486, 489, 492, 495, 499, 502,
- 505, 508, 511, 514, 517, 520, 523, 526,
- 529, 532, 535, 539, 542, 545, 548, 551,
- 553, 557, 559, 561, 563, 565, 567, 569,
- 571, 573, 575, 590, 593, 596, 599, 602,
- 605, 608, 611, 614, 617, 620, 623, 626,
- 629, 632, 635, 638, 641, 644, 647, 650,
- 653, 656, 661, 664, 667, 670, 673, 676,
- 679, 682, 685, 688, 691, 697, 700, 703,
- 706, 709, 712, 715, 718, 723, 726, 729,
- 732, 737, 740, 743, 746, 749, 752, 755,
- 758, 761, 764, 767, 770, 773, 778, 781,
- 784, 787, 790, 793, 796, 799, 802, 805,
- 808, 811, 814, 818, 821, 824, 827, 830,
- 832, 834, 836, 838, 840, 842, 845, 847,
- 849, 851, 853, 855, 857, 859, 861, 863,
- 865, 867, 869, 871, 886, 889, 892, 895,
- 898, 901, 904, 907, 910, 913, 916, 919,
- 922, 925, 928, 931, 934, 937, 940, 943,
- 946, 949, 952, 956, 959, 962, 965, 968,
- 974, 977, 980, 983, 986, 989, 992, 995,
- 1000, 1003, 1006, 1009, 1014, 1017, 1020, 1023,
- 1026, 1029, 1032, 1035, 1038, 1041, 1044, 1047,
- 1050, 1053, 1057, 1060, 1063, 1066, 1069, 1072,
- 1075, 1079, 1085, 1089, 1092, 1098, 1116, 1119,
- 1122, 1125, 1128, 1131, 1134, 1137, 1140, 1143,
- 1146, 1149, 1152, 1155, 1158, 1161, 1164, 1167,
- 1170, 1173, 1177, 1180, 1183, 1186, 1189, 1195,
- 1198, 1201, 1204, 1207, 1210, 1213, 1216, 1221,
- 1224, 1227, 1230, 1235, 1238, 1241, 1244, 1247,
- 1250, 1253, 1256, 1259, 1262, 1265, 1268, 1271,
- 1274, 1279, 1282, 1285, 1288, 1291, 1294, 1297,
- 1300, 1303, 1306, 1309, 1312, 1315, 1319, 1322,
- 1325, 1328, 1331, 1333, 1335
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 8, 418, 7, 7, 9, 19, 21,
- 4, 35, 38, 42, 59, 69, 96, 176,
- 344, 7, 0, 3, 0, 4, 0, 5,
- 0, 7, 20, 6, 7, 20, 6, 2,
- 8, 7, 7, 9, 19, 21, 4, 35,
- 38, 42, 59, 69, 96, 176, 344, 7,
- 0, 3, 0, 10, 0, 11, 0, 13,
- 12, 12, 13, 12, 12, 14, 14, 15,
- 14, 14, 14, 14, 15, 14, 14, 14,
- 14, 16, 14, 14, 14, 14, 17, 14,
- 14, 7, 18, 18, 0, 7, 18, 18,
- 0, 7, 20, 19, 7, 0, 22, 0,
- 23, 0, 24, 0, 25, 0, 26, 0,
- 27, 0, 28, 0, 29, 0, 30, 0,
- 31, 0, 32, 0, 33, 0, 34, 0,
- 420, 0, 0, 0, 0, 0, 36, 37,
- 7, 37, 37, 35, 36, 36, 7, 37,
- 35, 37, 0, 39, 0, 40, 0, 41,
- 0, 3, 0, 43, 44, 46, 0, 44,
- 0, 45, 0, 4, 0, 47, 0, 48,
- 0, 49, 0, 50, 0, 51, 0, 52,
- 0, 54, 53, 54, 53, 55, 350, 54,
- 54, 7, 351, 57, 7, 365, 369, 373,
- 383, 400, 54, 53, 56, 54, 53, 54,
- 57, 53, 54, 58, 53, 2, 8, 7,
- 7, 9, 19, 21, 4, 35, 38, 42,
- 59, 69, 96, 176, 344, 7, 0, 60,
- 0, 61, 67, 4, 68, 0, 62, 0,
- 63, 0, 64, 0, 65, 0, 66, 0,
- 44, 0, 62, 0, 64, 63, 63, 0,
- 70, 0, 71, 0, 72, 0, 73, 0,
- 74, 0, 75, 0, 76, 0, 78, 77,
- 78, 77, 78, 78, 7, 79, 7, 78,
- 77, 78, 80, 77, 78, 81, 77, 78,
- 82, 77, 83, 95, 78, 84, 77, 84,
- 78, 77, 78, 85, 77, 78, 86, 77,
- 78, 87, 77, 78, 88, 77, 78, 89,
- 77, 78, 90, 77, 78, 91, 77, 78,
- 92, 77, 78, 93, 77, 78, 94, 77,
- 78, 58, 77, 84, 78, 77, 97, 0,
- 98, 0, 99, 0, 100, 175, 101, 0,
- 101, 0, 102, 0, 103, 0, 104, 0,
- 105, 0, 106, 0, 107, 0, 108, 0,
- 109, 0, 110, 0, 111, 0, 112, 0,
- 114, 113, 114, 113, 114, 114, 7, 115,
- 7, 129, 136, 142, 157, 114, 113, 114,
- 116, 113, 114, 117, 113, 114, 118, 113,
- 114, 119, 113, 114, 120, 113, 114, 121,
- 113, 114, 122, 113, 114, 123, 113, 114,
- 124, 113, 114, 125, 113, 114, 126, 113,
- 114, 127, 113, 114, 128, 113, 114, 7,
- 113, 114, 130, 113, 114, 131, 113, 114,
- 132, 113, 114, 133, 113, 114, 134, 113,
- 114, 135, 113, 114, 58, 113, 114, 137,
- 113, 114, 138, 113, 114, 139, 113, 114,
- 140, 113, 114, 141, 113, 114, 135, 113,
- 114, 143, 113, 114, 144, 113, 114, 145,
- 113, 146, 156, 114, 147, 113, 147, 114,
- 113, 114, 148, 113, 114, 149, 113, 114,
- 150, 113, 114, 151, 113, 114, 152, 113,
- 114, 153, 113, 114, 154, 113, 114, 155,
- 113, 114, 141, 113, 147, 114, 113, 114,
- 158, 164, 113, 114, 159, 113, 114, 160,
- 113, 114, 161, 113, 114, 162, 113, 114,
- 163, 113, 114, 135, 113, 114, 165, 113,
- 114, 166, 113, 114, 167, 113, 114, 168,
- 113, 114, 169, 113, 114, 170, 113, 171,
- 114, 172, 113, 172, 114, 113, 114, 173,
- 113, 114, 174, 113, 114, 158, 113, 101,
- 0, 177, 4, 263, 0, 178, 0, 179,
- 0, 180, 0, 181, 0, 182, 0, 183,
- 0, 184, 0, 186, 185, 186, 185, 187,
- 190, 186, 186, 7, 191, 189, 7, 205,
- 209, 219, 229, 245, 186, 185, 188, 186,
- 185, 186, 189, 185, 186, 58, 185, 188,
- 186, 185, 186, 192, 185, 186, 193, 185,
- 186, 194, 185, 186, 195, 185, 186, 196,
- 185, 186, 197, 185, 186, 198, 185, 186,
- 199, 185, 186, 200, 185, 186, 201, 185,
- 186, 202, 185, 186, 203, 185, 186, 204,
- 185, 186, 7, 185, 186, 206, 185, 186,
- 207, 185, 186, 208, 185, 186, 188, 185,
- 210, 186, 211, 213, 185, 211, 186, 185,
- 186, 212, 185, 186, 189, 185, 186, 214,
- 185, 186, 215, 185, 186, 216, 185, 186,
- 217, 185, 186, 218, 185, 186, 58, 185,
- 186, 220, 185, 221, 227, 186, 189, 228,
- 185, 222, 186, 185, 186, 223, 185, 186,
- 224, 185, 186, 225, 185, 186, 226, 185,
- 186, 211, 185, 222, 186, 185, 186, 224,
- 223, 223, 185, 186, 230, 185, 186, 231,
- 185, 186, 232, 185, 233, 244, 186, 234,
- 185, 234, 186, 185, 186, 235, 185, 186,
- 236, 185, 186, 237, 185, 186, 238, 185,
- 186, 239, 185, 186, 240, 185, 186, 241,
- 185, 186, 242, 185, 186, 243, 185, 186,
- 218, 185, 234, 186, 185, 186, 246, 189,
- 252, 185, 186, 247, 185, 186, 248, 185,
- 186, 249, 185, 186, 250, 185, 186, 251,
- 185, 186, 218, 185, 186, 253, 185, 186,
- 254, 185, 186, 255, 185, 186, 256, 185,
- 186, 257, 185, 186, 258, 185, 259, 186,
- 260, 185, 260, 186, 185, 186, 261, 185,
- 186, 262, 185, 186, 246, 185, 264, 0,
- 265, 0, 266, 0, 267, 0, 268, 0,
- 269, 0, 270, 271, 0, 271, 0, 272,
- 0, 273, 0, 274, 0, 275, 0, 276,
- 0, 277, 0, 278, 0, 279, 0, 280,
- 0, 281, 0, 283, 282, 283, 282, 284,
- 287, 283, 283, 7, 288, 286, 7, 302,
- 306, 310, 320, 337, 283, 282, 285, 283,
- 282, 283, 286, 282, 283, 58, 282, 285,
- 283, 282, 283, 289, 282, 283, 290, 282,
- 283, 291, 282, 283, 292, 282, 283, 293,
- 282, 283, 294, 282, 283, 295, 282, 283,
- 296, 282, 283, 297, 282, 283, 298, 282,
- 283, 299, 282, 283, 300, 282, 283, 301,
- 282, 283, 7, 282, 283, 303, 282, 283,
- 304, 282, 283, 305, 282, 283, 285, 282,
- 307, 283, 308, 282, 308, 283, 282, 283,
- 309, 282, 283, 286, 282, 283, 311, 282,
- 312, 318, 283, 286, 319, 282, 313, 283,
- 282, 283, 314, 282, 283, 315, 282, 283,
- 316, 282, 283, 317, 282, 283, 308, 282,
- 313, 283, 282, 283, 315, 314, 314, 282,
- 283, 321, 282, 283, 322, 282, 283, 323,
- 282, 324, 336, 283, 325, 282, 325, 283,
- 282, 283, 326, 282, 283, 327, 282, 283,
- 328, 282, 283, 329, 282, 283, 330, 282,
- 283, 331, 282, 283, 332, 282, 283, 333,
- 282, 283, 334, 282, 283, 335, 282, 283,
- 58, 282, 325, 283, 282, 283, 338, 286,
- 282, 283, 339, 282, 283, 340, 282, 283,
- 341, 282, 283, 342, 282, 283, 343, 282,
- 283, 335, 282, 344, 345, 344, 0, 349,
- 348, 347, 345, 348, 346, 0, 347, 345,
- 346, 0, 347, 346, 349, 348, 347, 345,
- 348, 346, 2, 8, 349, 349, 9, 19,
- 21, 4, 35, 38, 42, 59, 69, 96,
- 176, 344, 349, 0, 56, 54, 53, 54,
- 352, 53, 54, 353, 53, 54, 354, 53,
- 54, 355, 53, 54, 356, 53, 54, 357,
- 53, 54, 358, 53, 54, 359, 53, 54,
- 360, 53, 54, 361, 53, 54, 362, 53,
- 54, 363, 53, 54, 364, 53, 54, 7,
- 53, 54, 366, 53, 54, 367, 53, 54,
- 368, 53, 54, 56, 53, 370, 54, 371,
- 53, 371, 54, 53, 54, 372, 53, 54,
- 57, 53, 54, 374, 53, 375, 381, 54,
- 57, 382, 53, 376, 54, 53, 54, 377,
- 53, 54, 378, 53, 54, 379, 53, 54,
- 380, 53, 54, 371, 53, 376, 54, 53,
- 54, 378, 377, 377, 53, 54, 384, 53,
- 54, 385, 53, 54, 386, 53, 387, 399,
- 54, 388, 53, 388, 54, 53, 54, 389,
- 53, 54, 390, 53, 54, 391, 53, 54,
- 392, 53, 54, 393, 53, 54, 394, 53,
- 54, 395, 53, 54, 396, 53, 54, 397,
- 53, 54, 398, 53, 54, 58, 53, 388,
- 54, 53, 54, 401, 57, 407, 53, 54,
- 402, 53, 54, 403, 53, 54, 404, 53,
- 54, 405, 53, 54, 406, 53, 54, 398,
- 53, 54, 408, 53, 54, 409, 53, 54,
- 410, 53, 54, 411, 53, 54, 412, 53,
- 54, 413, 53, 414, 54, 415, 53, 415,
- 54, 53, 54, 416, 53, 54, 417, 53,
- 54, 401, 53, 419, 0, 7, 0, 0,
- 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 29, 29, 0, 54, 0, 5, 1, 0,
- 29, 1, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 0,
- 43, 149, 126, 57, 110, 23, 0, 29,
- 29, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 0, 43, 139,
- 48, 9, 106, 11, 0, 134, 45, 45,
- 45, 3, 122, 33, 33, 33, 0, 122,
- 33, 33, 33, 0, 122, 33, 0, 33,
- 0, 102, 7, 7, 43, 54, 0, 0,
- 43, 114, 25, 0, 54, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 43, 43, 43, 43, 0, 27,
- 118, 27, 27, 51, 27, 0, 54, 0,
- 1, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 84, 84, 54,
- 0, 72, 33, 84, 72, 84, 84, 84,
- 84, 84, 0, 0, 0, 54, 0, 54,
- 0, 0, 54, 15, 0, 63, 63, 130,
- 31, 60, 57, 31, 63, 57, 63, 63,
- 63, 63, 63, 63, 66, 31, 43, 0,
- 43, 0, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 81, 84, 81, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 0, 54, 0, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 21, 0, 0, 54, 0, 0, 43,
- 0, 43, 0, 43, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 69, 33,
- 69, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 13,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 13, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 0, 54, 0, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 84,
- 84, 54, 0, 75, 33, 84, 75, 84,
- 84, 84, 84, 84, 0, 0, 0, 54,
- 0, 54, 0, 0, 54, 17, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 17, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 0, 0, 0, 0, 54, 0, 0,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 54, 0,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0, 54, 0,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 84,
- 84, 54, 0, 78, 33, 84, 78, 84,
- 84, 84, 84, 84, 0, 0, 0, 54,
- 0, 54, 0, 0, 54, 19, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 19, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 0, 54, 0, 0, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 54, 0, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 0, 54, 0, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 19, 0, 0, 54, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 0, 0, 43, 54,
- 37, 37, 87, 37, 37, 43, 0, 39,
- 0, 43, 0, 0, 54, 0, 0, 39,
- 0, 0, 96, 96, 54, 0, 93, 90,
- 41, 96, 90, 96, 96, 96, 96, 96,
- 96, 99, 0, 43, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 0, 54,
- 0, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 54, 0, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 0,
- 54, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 0,
- 54, 0, 54, 0, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 43, 0, 43, 0,
- 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 420;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 1031 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
-
- #line 1038 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1328 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1391 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ro.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_ro()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Ro", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/ro.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/ro.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 22, 24, 26,
- 44, 45, 46, 47, 49, 51, 56, 61,
- 66, 71, 75, 79, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 101, 108, 113, 114,
- 115, 116, 117, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129, 130, 131, 146,
- 148, 150, 152, 170, 171, 175, 176, 177,
- 178, 179, 180, 181, 182, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 201,
- 203, 205, 207, 211, 213, 215, 217, 219,
- 221, 223, 225, 227, 229, 231, 233, 235,
- 237, 238, 239, 240, 243, 244, 245, 246,
- 247, 248, 249, 250, 251, 252, 253, 254,
- 255, 256, 257, 268, 270, 272, 274, 276,
- 278, 280, 282, 284, 286, 288, 290, 292,
- 294, 296, 298, 300, 302, 304, 306, 308,
- 310, 312, 314, 316, 318, 320, 322, 324,
- 326, 328, 332, 334, 336, 338, 340, 342,
- 344, 346, 348, 350, 352, 354, 357, 359,
- 361, 363, 365, 367, 369, 371, 373, 375,
- 377, 379, 381, 384, 386, 388, 390, 392,
- 393, 396, 397, 398, 399, 400, 401, 402,
- 403, 404, 405, 420, 422, 424, 426, 428,
- 430, 432, 434, 436, 438, 440, 442, 444,
- 446, 448, 450, 452, 454, 456, 458, 460,
- 462, 464, 468, 470, 472, 474, 476, 478,
- 480, 482, 484, 486, 488, 493, 495, 497,
- 499, 501, 503, 505, 507, 511, 513, 515,
- 517, 521, 523, 525, 527, 529, 531, 533,
- 535, 537, 539, 541, 543, 545, 549, 551,
- 553, 555, 557, 559, 561, 563, 565, 567,
- 569, 571, 573, 576, 578, 580, 582, 584,
- 585, 586, 587, 588, 589, 590, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 603, 604, 605, 620, 622, 624, 626,
- 628, 630, 632, 634, 636, 638, 640, 642,
- 644, 646, 648, 650, 652, 654, 656, 658,
- 660, 662, 664, 667, 669, 671, 673, 675,
- 680, 682, 684, 686, 688, 690, 692, 694,
- 698, 700, 702, 704, 708, 710, 712, 714,
- 716, 718, 720, 722, 724, 726, 728, 730,
- 732, 734, 737, 739, 741, 743, 745, 747,
- 749, 753, 759, 762, 764, 770, 788, 790,
- 792, 794, 796, 798, 800, 802, 804, 806,
- 808, 810, 812, 814, 816, 818, 820, 822,
- 824, 826, 829, 831, 833, 835, 837, 842,
- 844, 846, 848, 850, 852, 854, 856, 860,
- 862, 864, 866, 870, 872, 874, 876, 878,
- 880, 882, 884, 886, 888, 890, 892, 894,
- 896, 900, 902, 904, 906, 908, 910, 912,
- 914, 916, 918, 920, 922, 924, 927, 929,
- 931, 933, 935, 936, 937
-};
-
-static const char _lexer_trans_keys[] = {
- -59, -56, -17, 10, 32, 34, 35, 37,
- 42, 64, 65, 67, 68, 69, 70, 83,
- 124, 9, 13, -98, 105, 32, 10, 13,
- 10, 13, -59, -56, 10, 32, 34, 35,
- 37, 42, 64, 65, 67, 68, 69, 70,
- 83, 124, 9, 13, -104, 34, 34, 10,
- 13, 10, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 9, 13, 10, 32, 9, 13, 10,
- 13, 10, 95, 70, 69, 65, 84, 85,
- 82, 69, 95, 69, 78, 68, 95, 37,
- 13, 32, 64, 9, 10, 9, 10, 13,
- 32, 64, 11, 12, 10, 32, 64, 9,
- 13, 116, 117, 110, 99, -61, 97, 111,
- -94, 110, 100, 110, 116, 101, 120, 116,
- 58, 10, 10, -59, -56, 10, 32, 35,
- 37, 42, 64, 65, 67, 68, 70, 83,
- 9, 13, -98, 10, 10, 105, 10, 32,
- -59, -56, 10, 32, 34, 35, 37, 42,
- 64, 65, 67, 68, 69, 70, 83, 124,
- 9, 13, 97, -59, -56, 114, 116, -93,
- 105, 32, 102, 105, 105, -101, 32, 101,
- 105, 120, 101, 109, 112, 108, 101, 58,
- 10, 10, 10, 32, 35, 70, 124, 9,
- 13, 10, 117, 10, 110, 10, 99, -59,
- -56, 10, 116, -93, 10, 10, 105, 10,
- 111, 10, 110, 10, 97, 10, 108, 10,
- 105, 10, 116, 10, 97, 10, 116, 10,
- 101, 10, 58, -101, 10, 117, 110, 99,
- -59, -56, 116, -93, 105, 111, 110, 97,
- 108, 105, 116, 97, 116, 101, 58, 10,
- 10, 10, 32, 35, 37, 64, 67, 69,
- 70, 83, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 111, 10, 110, 10, 116, 10, 101,
- 10, 120, 10, 116, 10, 58, 10, 120,
- 10, 101, 10, 109, 10, 112, 10, 108,
- 10, 101, 10, 117, 10, 110, 10, 99,
- -59, -56, 10, 116, -93, 10, 10, 105,
- 10, 111, 10, 110, 10, 97, 10, 108,
- 10, 105, 10, 116, 10, 97, 10, 116,
- -101, 10, 10, 99, 116, 10, 101, 10,
- 110, 10, 97, 10, 114, 10, 105, 10,
- 117, 10, 114, 10, 117, 10, 99, 10,
- 116, 10, 117, 10, 114, -60, 10, 97,
- -125, 10, 10, 32, 10, 115, 10, 99,
- -101, 99, 105, 116, 101, 110, 97, 114,
- 105, 117, 58, 10, 10, -59, -56, 10,
- 32, 35, 37, 42, 64, 65, 67, 68,
- 70, 83, 9, 13, -98, 10, 10, 105,
- 10, 32, -104, 10, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 116, 10, 117, 10, 110, 10, 99,
- -61, 10, 97, 111, -94, 10, 10, 110,
- 10, 100, 10, 110, 10, 116, 10, 101,
- 10, 120, 10, 116, 10, 58, 10, 97,
- -59, -56, 10, 114, 116, -93, 10, 10,
- 105, 10, 32, 10, 102, 10, 105, 10,
- 105, -101, 10, 10, 32, 101, 105, 10,
- 117, 10, 110, 10, 99, -59, -56, 10,
- 116, -93, 10, 10, 105, 10, 111, 10,
- 110, 10, 97, 10, 108, 10, 105, 10,
- 116, 10, 97, 10, 116, 10, 101, -101,
- 10, 10, 99, 105, 116, 10, 101, 10,
- 110, 10, 97, 10, 114, 10, 105, 10,
- 117, 10, 114, 10, 117, 10, 99, 10,
- 116, 10, 117, 10, 114, -60, 10, 97,
- -125, 10, 10, 32, 10, 115, 10, 99,
- 114, 117, 99, 116, 117, 114, -60, 97,
- -125, 32, 115, 99, 101, 110, 97, 114,
- 105, 117, 58, 10, 10, -59, -56, 10,
- 32, 35, 37, 42, 64, 65, 67, 68,
- 70, 83, 9, 13, -98, 10, 10, 105,
- 10, 32, -104, 10, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 116, 10, 117, 10, 110, 10, 99,
- -61, 10, 97, -94, 10, 10, 110, 10,
- 100, 10, 97, -59, -56, 10, 114, 116,
- -93, 10, 10, 105, 10, 32, 10, 102,
- 10, 105, 10, 105, -101, 10, 10, 32,
- 101, 105, 10, 117, 10, 110, 10, 99,
- -59, -56, 10, 116, -93, 10, 10, 105,
- 10, 111, 10, 110, 10, 97, 10, 108,
- 10, 105, 10, 116, 10, 97, 10, 116,
- 10, 101, 10, 58, -101, 10, 10, 99,
- 105, 10, 101, 10, 110, 10, 97, 10,
- 114, 10, 105, 10, 117, 32, 124, 9,
- 13, 10, 32, 92, 124, 9, 13, 10,
- 92, 124, 10, 92, 10, 32, 92, 124,
- 9, 13, -59, -56, 10, 32, 34, 35,
- 37, 42, 64, 65, 67, 68, 69, 70,
- 83, 124, 9, 13, -104, 10, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 116, 10, 117, 10, 110,
- 10, 99, -61, 10, 97, -94, 10, 10,
- 110, 10, 100, 10, 97, -59, -56, 10,
- 114, 116, -93, 10, 10, 105, 10, 32,
- 10, 102, 10, 105, 10, 105, -101, 10,
- 10, 32, 101, 105, 10, 117, 10, 110,
- 10, 99, -59, -56, 10, 116, -93, 10,
- 10, 105, 10, 111, 10, 110, 10, 97,
- 10, 108, 10, 105, 10, 116, 10, 97,
- 10, 116, 10, 101, 10, 58, -101, 10,
- 10, 99, 105, 116, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 117,
- 10, 114, 10, 117, 10, 99, 10, 116,
- 10, 117, 10, 114, -60, 10, 97, -125,
- 10, 10, 32, 10, 115, 10, 99, -69,
- -65, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 1, 2, 2, 16,
- 1, 1, 1, 2, 2, 3, 3, 3,
- 3, 2, 2, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 3, 5, 3, 1, 1,
- 1, 1, 3, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 13, 2,
- 2, 2, 16, 1, 4, 1, 1, 1,
- 1, 1, 1, 1, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 5, 2,
- 2, 2, 4, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 3, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 9, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 4, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 1,
- 3, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 13, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 4, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 5, 2, 2, 2,
- 2, 2, 2, 2, 4, 2, 2, 2,
- 4, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 13, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 5,
- 2, 2, 2, 2, 2, 2, 2, 4,
- 2, 2, 2, 4, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 4, 3, 2, 4, 16, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 5, 2,
- 2, 2, 2, 2, 2, 2, 4, 2,
- 2, 2, 4, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 4, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 1, 1, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 1, 1, 1,
- 1, 1, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 1, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 1, 0, 0, 1, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 25, 28, 31,
- 49, 51, 53, 55, 58, 61, 66, 71,
- 76, 81, 85, 89, 92, 94, 96, 98,
- 100, 102, 104, 106, 108, 110, 112, 114,
- 116, 118, 120, 122, 127, 134, 139, 141,
- 143, 145, 147, 151, 153, 155, 157, 159,
- 161, 163, 165, 167, 169, 171, 173, 188,
- 191, 194, 197, 215, 217, 222, 224, 226,
- 228, 230, 232, 234, 236, 240, 242, 244,
- 246, 248, 250, 252, 254, 256, 258, 265,
- 268, 271, 274, 279, 282, 285, 288, 291,
- 294, 297, 300, 303, 306, 309, 312, 315,
- 318, 320, 322, 324, 328, 330, 332, 334,
- 336, 338, 340, 342, 344, 346, 348, 350,
- 352, 354, 356, 367, 370, 373, 376, 379,
- 382, 385, 388, 391, 394, 397, 400, 403,
- 406, 409, 412, 415, 418, 421, 424, 427,
- 430, 433, 436, 439, 442, 445, 448, 451,
- 454, 457, 462, 465, 468, 471, 474, 477,
- 480, 483, 486, 489, 492, 495, 499, 502,
- 505, 508, 511, 514, 517, 520, 523, 526,
- 529, 532, 535, 539, 542, 545, 548, 551,
- 553, 557, 559, 561, 563, 565, 567, 569,
- 571, 573, 575, 590, 593, 596, 599, 602,
- 605, 608, 611, 614, 617, 620, 623, 626,
- 629, 632, 635, 638, 641, 644, 647, 650,
- 653, 656, 661, 664, 667, 670, 673, 676,
- 679, 682, 685, 688, 691, 697, 700, 703,
- 706, 709, 712, 715, 718, 723, 726, 729,
- 732, 737, 740, 743, 746, 749, 752, 755,
- 758, 761, 764, 767, 770, 773, 778, 781,
- 784, 787, 790, 793, 796, 799, 802, 805,
- 808, 811, 814, 818, 821, 824, 827, 830,
- 832, 834, 836, 838, 840, 842, 845, 847,
- 849, 851, 853, 855, 857, 859, 861, 863,
- 865, 867, 869, 871, 886, 889, 892, 895,
- 898, 901, 904, 907, 910, 913, 916, 919,
- 922, 925, 928, 931, 934, 937, 940, 943,
- 946, 949, 952, 956, 959, 962, 965, 968,
- 974, 977, 980, 983, 986, 989, 992, 995,
- 1000, 1003, 1006, 1009, 1014, 1017, 1020, 1023,
- 1026, 1029, 1032, 1035, 1038, 1041, 1044, 1047,
- 1050, 1053, 1057, 1060, 1063, 1066, 1069, 1072,
- 1075, 1079, 1085, 1089, 1092, 1098, 1116, 1119,
- 1122, 1125, 1128, 1131, 1134, 1137, 1140, 1143,
- 1146, 1149, 1152, 1155, 1158, 1161, 1164, 1167,
- 1170, 1173, 1177, 1180, 1183, 1186, 1189, 1195,
- 1198, 1201, 1204, 1207, 1210, 1213, 1216, 1221,
- 1224, 1227, 1230, 1235, 1238, 1241, 1244, 1247,
- 1250, 1253, 1256, 1259, 1262, 1265, 1268, 1271,
- 1274, 1279, 1282, 1285, 1288, 1291, 1294, 1297,
- 1300, 1303, 1306, 1309, 1312, 1315, 1319, 1322,
- 1325, 1328, 1331, 1333, 1335
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 8, 418, 7, 7, 9, 19, 21,
- 4, 35, 38, 42, 59, 69, 96, 176,
- 344, 7, 0, 3, 0, 4, 0, 5,
- 0, 7, 20, 6, 7, 20, 6, 2,
- 8, 7, 7, 9, 19, 21, 4, 35,
- 38, 42, 59, 69, 96, 176, 344, 7,
- 0, 3, 0, 10, 0, 11, 0, 13,
- 12, 12, 13, 12, 12, 14, 14, 15,
- 14, 14, 14, 14, 15, 14, 14, 14,
- 14, 16, 14, 14, 14, 14, 17, 14,
- 14, 7, 18, 18, 0, 7, 18, 18,
- 0, 7, 20, 19, 7, 0, 22, 0,
- 23, 0, 24, 0, 25, 0, 26, 0,
- 27, 0, 28, 0, 29, 0, 30, 0,
- 31, 0, 32, 0, 33, 0, 34, 0,
- 420, 0, 0, 0, 0, 0, 36, 37,
- 7, 37, 37, 35, 36, 36, 7, 37,
- 35, 37, 0, 39, 0, 40, 0, 41,
- 0, 3, 0, 43, 44, 46, 0, 44,
- 0, 45, 0, 4, 0, 47, 0, 48,
- 0, 49, 0, 50, 0, 51, 0, 52,
- 0, 54, 53, 54, 53, 55, 350, 54,
- 54, 7, 351, 57, 7, 365, 369, 373,
- 383, 400, 54, 53, 56, 54, 53, 54,
- 57, 53, 54, 58, 53, 2, 8, 7,
- 7, 9, 19, 21, 4, 35, 38, 42,
- 59, 69, 96, 176, 344, 7, 0, 60,
- 0, 61, 67, 4, 68, 0, 62, 0,
- 63, 0, 64, 0, 65, 0, 66, 0,
- 44, 0, 62, 0, 64, 63, 63, 0,
- 70, 0, 71, 0, 72, 0, 73, 0,
- 74, 0, 75, 0, 76, 0, 78, 77,
- 78, 77, 78, 78, 7, 79, 7, 78,
- 77, 78, 80, 77, 78, 81, 77, 78,
- 82, 77, 83, 95, 78, 84, 77, 84,
- 78, 77, 78, 85, 77, 78, 86, 77,
- 78, 87, 77, 78, 88, 77, 78, 89,
- 77, 78, 90, 77, 78, 91, 77, 78,
- 92, 77, 78, 93, 77, 78, 94, 77,
- 78, 58, 77, 84, 78, 77, 97, 0,
- 98, 0, 99, 0, 100, 175, 101, 0,
- 101, 0, 102, 0, 103, 0, 104, 0,
- 105, 0, 106, 0, 107, 0, 108, 0,
- 109, 0, 110, 0, 111, 0, 112, 0,
- 114, 113, 114, 113, 114, 114, 7, 115,
- 7, 129, 136, 142, 157, 114, 113, 114,
- 116, 113, 114, 117, 113, 114, 118, 113,
- 114, 119, 113, 114, 120, 113, 114, 121,
- 113, 114, 122, 113, 114, 123, 113, 114,
- 124, 113, 114, 125, 113, 114, 126, 113,
- 114, 127, 113, 114, 128, 113, 114, 7,
- 113, 114, 130, 113, 114, 131, 113, 114,
- 132, 113, 114, 133, 113, 114, 134, 113,
- 114, 135, 113, 114, 58, 113, 114, 137,
- 113, 114, 138, 113, 114, 139, 113, 114,
- 140, 113, 114, 141, 113, 114, 135, 113,
- 114, 143, 113, 114, 144, 113, 114, 145,
- 113, 146, 156, 114, 147, 113, 147, 114,
- 113, 114, 148, 113, 114, 149, 113, 114,
- 150, 113, 114, 151, 113, 114, 152, 113,
- 114, 153, 113, 114, 154, 113, 114, 155,
- 113, 114, 141, 113, 147, 114, 113, 114,
- 158, 164, 113, 114, 159, 113, 114, 160,
- 113, 114, 161, 113, 114, 162, 113, 114,
- 163, 113, 114, 135, 113, 114, 165, 113,
- 114, 166, 113, 114, 167, 113, 114, 168,
- 113, 114, 169, 113, 114, 170, 113, 171,
- 114, 172, 113, 172, 114, 113, 114, 173,
- 113, 114, 174, 113, 114, 158, 113, 101,
- 0, 177, 4, 263, 0, 178, 0, 179,
- 0, 180, 0, 181, 0, 182, 0, 183,
- 0, 184, 0, 186, 185, 186, 185, 187,
- 190, 186, 186, 7, 191, 189, 7, 205,
- 209, 219, 229, 245, 186, 185, 188, 186,
- 185, 186, 189, 185, 186, 58, 185, 188,
- 186, 185, 186, 192, 185, 186, 193, 185,
- 186, 194, 185, 186, 195, 185, 186, 196,
- 185, 186, 197, 185, 186, 198, 185, 186,
- 199, 185, 186, 200, 185, 186, 201, 185,
- 186, 202, 185, 186, 203, 185, 186, 204,
- 185, 186, 7, 185, 186, 206, 185, 186,
- 207, 185, 186, 208, 185, 186, 188, 185,
- 210, 186, 211, 213, 185, 211, 186, 185,
- 186, 212, 185, 186, 189, 185, 186, 214,
- 185, 186, 215, 185, 186, 216, 185, 186,
- 217, 185, 186, 218, 185, 186, 58, 185,
- 186, 220, 185, 221, 227, 186, 189, 228,
- 185, 222, 186, 185, 186, 223, 185, 186,
- 224, 185, 186, 225, 185, 186, 226, 185,
- 186, 211, 185, 222, 186, 185, 186, 224,
- 223, 223, 185, 186, 230, 185, 186, 231,
- 185, 186, 232, 185, 233, 244, 186, 234,
- 185, 234, 186, 185, 186, 235, 185, 186,
- 236, 185, 186, 237, 185, 186, 238, 185,
- 186, 239, 185, 186, 240, 185, 186, 241,
- 185, 186, 242, 185, 186, 243, 185, 186,
- 218, 185, 234, 186, 185, 186, 246, 189,
- 252, 185, 186, 247, 185, 186, 248, 185,
- 186, 249, 185, 186, 250, 185, 186, 251,
- 185, 186, 218, 185, 186, 253, 185, 186,
- 254, 185, 186, 255, 185, 186, 256, 185,
- 186, 257, 185, 186, 258, 185, 259, 186,
- 260, 185, 260, 186, 185, 186, 261, 185,
- 186, 262, 185, 186, 246, 185, 264, 0,
- 265, 0, 266, 0, 267, 0, 268, 0,
- 269, 0, 270, 271, 0, 271, 0, 272,
- 0, 273, 0, 274, 0, 275, 0, 276,
- 0, 277, 0, 278, 0, 279, 0, 280,
- 0, 281, 0, 283, 282, 283, 282, 284,
- 287, 283, 283, 7, 288, 286, 7, 302,
- 306, 310, 320, 337, 283, 282, 285, 283,
- 282, 283, 286, 282, 283, 58, 282, 285,
- 283, 282, 283, 289, 282, 283, 290, 282,
- 283, 291, 282, 283, 292, 282, 283, 293,
- 282, 283, 294, 282, 283, 295, 282, 283,
- 296, 282, 283, 297, 282, 283, 298, 282,
- 283, 299, 282, 283, 300, 282, 283, 301,
- 282, 283, 7, 282, 283, 303, 282, 283,
- 304, 282, 283, 305, 282, 283, 285, 282,
- 307, 283, 308, 282, 308, 283, 282, 283,
- 309, 282, 283, 286, 282, 283, 311, 282,
- 312, 318, 283, 286, 319, 282, 313, 283,
- 282, 283, 314, 282, 283, 315, 282, 283,
- 316, 282, 283, 317, 282, 283, 308, 282,
- 313, 283, 282, 283, 315, 314, 314, 282,
- 283, 321, 282, 283, 322, 282, 283, 323,
- 282, 324, 336, 283, 325, 282, 325, 283,
- 282, 283, 326, 282, 283, 327, 282, 283,
- 328, 282, 283, 329, 282, 283, 330, 282,
- 283, 331, 282, 283, 332, 282, 283, 333,
- 282, 283, 334, 282, 283, 335, 282, 283,
- 58, 282, 325, 283, 282, 283, 338, 286,
- 282, 283, 339, 282, 283, 340, 282, 283,
- 341, 282, 283, 342, 282, 283, 343, 282,
- 283, 335, 282, 344, 345, 344, 0, 349,
- 348, 347, 345, 348, 346, 0, 347, 345,
- 346, 0, 347, 346, 349, 348, 347, 345,
- 348, 346, 2, 8, 349, 349, 9, 19,
- 21, 4, 35, 38, 42, 59, 69, 96,
- 176, 344, 349, 0, 56, 54, 53, 54,
- 352, 53, 54, 353, 53, 54, 354, 53,
- 54, 355, 53, 54, 356, 53, 54, 357,
- 53, 54, 358, 53, 54, 359, 53, 54,
- 360, 53, 54, 361, 53, 54, 362, 53,
- 54, 363, 53, 54, 364, 53, 54, 7,
- 53, 54, 366, 53, 54, 367, 53, 54,
- 368, 53, 54, 56, 53, 370, 54, 371,
- 53, 371, 54, 53, 54, 372, 53, 54,
- 57, 53, 54, 374, 53, 375, 381, 54,
- 57, 382, 53, 376, 54, 53, 54, 377,
- 53, 54, 378, 53, 54, 379, 53, 54,
- 380, 53, 54, 371, 53, 376, 54, 53,
- 54, 378, 377, 377, 53, 54, 384, 53,
- 54, 385, 53, 54, 386, 53, 387, 399,
- 54, 388, 53, 388, 54, 53, 54, 389,
- 53, 54, 390, 53, 54, 391, 53, 54,
- 392, 53, 54, 393, 53, 54, 394, 53,
- 54, 395, 53, 54, 396, 53, 54, 397,
- 53, 54, 398, 53, 54, 58, 53, 388,
- 54, 53, 54, 401, 57, 407, 53, 54,
- 402, 53, 54, 403, 53, 54, 404, 53,
- 54, 405, 53, 54, 406, 53, 54, 398,
- 53, 54, 408, 53, 54, 409, 53, 54,
- 410, 53, 54, 411, 53, 54, 412, 53,
- 54, 413, 53, 414, 54, 415, 53, 415,
- 54, 53, 54, 416, 53, 54, 417, 53,
- 54, 401, 53, 419, 0, 7, 0, 0,
- 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 29, 29, 0, 54, 0, 5, 1, 0,
- 29, 1, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 0,
- 43, 149, 126, 57, 110, 23, 0, 29,
- 29, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 0, 43, 139,
- 48, 9, 106, 11, 0, 134, 45, 45,
- 45, 3, 122, 33, 33, 33, 0, 122,
- 33, 33, 33, 0, 122, 33, 0, 33,
- 0, 102, 7, 7, 43, 54, 0, 0,
- 43, 114, 25, 0, 54, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 43, 43, 43, 43, 0, 27,
- 118, 27, 27, 51, 27, 0, 54, 0,
- 1, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 84, 84, 54,
- 0, 72, 33, 84, 72, 84, 84, 84,
- 84, 84, 0, 0, 0, 54, 0, 54,
- 0, 0, 54, 15, 0, 63, 63, 130,
- 31, 60, 57, 31, 63, 57, 63, 63,
- 63, 63, 63, 63, 66, 31, 43, 0,
- 43, 0, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 81, 84, 81, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 0, 54, 0, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 21, 0, 0, 54, 0, 0, 43,
- 0, 43, 0, 43, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 69, 33,
- 69, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 13,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 13, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 0, 54, 0, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 84,
- 84, 54, 0, 75, 33, 84, 75, 84,
- 84, 84, 84, 84, 0, 0, 0, 54,
- 0, 54, 0, 0, 54, 17, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 17, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 0, 0, 0, 0, 54, 0, 0,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 54, 0,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0, 54, 0,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 84,
- 84, 54, 0, 78, 33, 84, 78, 84,
- 84, 84, 84, 84, 0, 0, 0, 54,
- 0, 54, 0, 0, 54, 19, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 19, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 0, 54, 0, 0, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 54, 0, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 0, 54, 0, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 19, 0, 0, 54, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 0, 0, 43, 54,
- 37, 37, 87, 37, 37, 43, 0, 39,
- 0, 43, 0, 0, 54, 0, 0, 39,
- 0, 0, 96, 96, 54, 0, 93, 90,
- 41, 96, 90, 96, 96, 96, 96, 96,
- 96, 99, 0, 43, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 0, 54,
- 0, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 54, 0, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 0,
- 54, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 0,
- 54, 0, 54, 0, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 43, 0, 43, 0,
- 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 420;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/ro.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 1031 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/ro.c.rl"
-
-#line 1038 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/ro.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/ro.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/ro.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/ro.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/ro.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/ro.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/ro.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/ro.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/ro.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/ro.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/ro.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/ro.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/ro.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/ro.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/ro.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/ro.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/ro.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/ro.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/ro.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/ro.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/ro.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/ro.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/ro.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/ro.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1328 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/ro.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1391 "ext/gherkin_lexer_ro/gherkin_lexer_ro.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/ro.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_ro()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Ro", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_ru/extconf.rb
index 7ec714e,7ec714e..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_ru/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_ru")
--have_library("c", "main")
--create_makefile("gherkin_lexer_ru")
diff --cc ext/gherkin_lexer_ru/gherkin_lexer_ru.c
index 15bde16,6f95a21..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_ru/gherkin_lexer_ru.c
+++ /dev/null
@@@ -1,2058 -1,2071 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 12, 22, 23, 25, 27, 38,
- 39, 40, 42, 44, 49, 54, 59, 64,
- 68, 72, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 89, 94, 101, 106, 110, 116, 119,
- 121, 127, 138, 139, 141, 142, 143, 144,
- 145, 146, 147, 148, 149, 150, 151, 152,
- 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 165, 166, 167, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186,
- 195, 206, 208, 219, 221, 224, 226, 228,
- 230, 232, 234, 236, 238, 240, 242, 244,
- 246, 248, 250, 252, 254, 256, 258, 260,
- 262, 264, 266, 268, 271, 273, 275, 277,
- 279, 281, 283, 285, 287, 289, 291, 293,
- 295, 297, 299, 301, 303, 305, 307, 309,
- 311, 313, 315, 317, 319, 321, 323, 325,
- 327, 330, 332, 334, 336, 338, 340, 342,
- 344, 346, 348, 350, 352, 354, 356, 358,
- 361, 363, 365, 367, 369, 371, 373, 375,
- 377, 379, 381, 383, 385, 387, 389, 391,
- 393, 395, 397, 399, 401, 403, 405, 407,
- 409, 411, 413, 415, 417, 419, 421, 423,
- 425, 427, 429, 431, 433, 435, 437, 439,
- 441, 443, 445, 447, 449, 451, 454, 456,
- 458, 460, 462, 464, 466, 468, 470, 472,
- 474, 477, 479, 481, 483, 485, 487, 489,
- 491, 493, 495, 497, 499, 501, 503, 505,
- 507, 509, 511, 513, 515, 517, 519, 520,
- 521, 522, 523, 524, 525, 526, 527, 528,
- 529, 530, 531, 532, 533, 535, 536, 538,
- 539, 540, 541, 542, 543, 544, 545, 546,
- 547, 548, 549, 550, 551, 552, 553, 554,
- 555, 556, 557, 558, 559, 560, 561, 562,
- 563, 564, 565, 572, 575, 577, 579, 581,
- 583, 585, 587, 589, 591, 593, 595, 597,
- 599, 601, 603, 605, 607, 609, 611, 613,
- 615, 617, 619, 621, 623, 625, 628, 630,
- 632, 634, 636, 638, 640, 642, 644, 645,
- 646, 647, 648, 649, 650, 652, 653, 654,
- 655, 656, 657, 658, 659, 660, 661, 662,
- 663, 664, 665, 666, 667, 668, 676, 681,
- 683, 685, 687, 689, 691, 693, 695, 697,
- 699, 701, 703, 705, 707, 709, 711, 713,
- 715, 717, 720, 722, 724, 726, 728, 730,
- 732, 734, 736, 738, 740, 742, 744, 746,
- 748, 750, 752, 754, 756, 758, 760, 762,
- 764, 766, 768, 771, 773, 775, 777, 779,
- 781, 783, 785, 787, 789, 791, 793, 795,
- 797, 800, 802, 804, 806, 808, 810, 812,
- 814, 816, 818, 820, 822, 824, 826, 828,
- 830, 832, 834, 836, 838, 840, 842, 844,
- 846, 848, 850, 852, 854, 856, 858, 860,
- 862, 864, 866, 868, 870, 872, 874, 876,
- 878, 880, 882, 884, 886, 888, 890, 892,
- 894, 897, 899, 901, 903, 905, 907, 909,
- 911, 913, 915, 917, 919, 921, 923, 925,
- 927, 929, 931, 933, 935, 937, 939, 941,
- 942, 943, 944, 945, 946, 947, 948, 949,
- 950, 951, 952, 953, 954, 955, 956, 957,
- 958, 959, 960, 961, 962, 963, 964, 965,
- 966, 967, 968, 969, 970, 971, 972, 973,
- 974, 975, 984, 995, 997, 999, 1002, 1004,
- 1006, 1008, 1010, 1012, 1014, 1016, 1018, 1020,
- 1022, 1024, 1026, 1028, 1030, 1032, 1034, 1036,
- 1038, 1040, 1042, 1044, 1046, 1049, 1051, 1053,
- 1055, 1057, 1059, 1061, 1063, 1065, 1067, 1069,
- 1071, 1073, 1075, 1077, 1079, 1081, 1083, 1085,
- 1087, 1089, 1091, 1093, 1095, 1097, 1099, 1101,
- 1103, 1105, 1108, 1110, 1112, 1114, 1116, 1118,
- 1120, 1122, 1124, 1126, 1128, 1130, 1132, 1134,
- 1136, 1138, 1140, 1142, 1144, 1146, 1148, 1150,
- 1152, 1154, 1156, 1158, 1160, 1162, 1164, 1166,
- 1169, 1171, 1173, 1175, 1177, 1179, 1181, 1183,
- 1185, 1187, 1189, 1192, 1194, 1196, 1198, 1200,
- 1202, 1204, 1206, 1208, 1210, 1212, 1214, 1216,
- 1218, 1220, 1222, 1224, 1226, 1228, 1230, 1232,
- 1234, 1236, 1237, 1238, 1239, 1240, 1241, 1242,
- 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250,
- 1251, 1260, 1271, 1273, 1275, 1278, 1280, 1282,
- 1284, 1286, 1288, 1290, 1292, 1294, 1296, 1298,
- 1300, 1302, 1304, 1306, 1308, 1310, 1312, 1314,
- 1316, 1318, 1320, 1322, 1325, 1327, 1329, 1332,
- 1334, 1336, 1338, 1340, 1342, 1344, 1346, 1348,
- 1350, 1352, 1354, 1356, 1358, 1360, 1362, 1364,
- 1366, 1368, 1370, 1372, 1374, 1376, 1378, 1380,
- 1382, 1384, 1386, 1388, 1390, 1393, 1395, 1397,
- 1399, 1401, 1403, 1405, 1407, 1409, 1411, 1413,
- 1415, 1417, 1419, 1421, 1423, 1425, 1427, 1429,
- 1431, 1433, 1435, 1437, 1439, 1441, 1444, 1446,
- 1448, 1450, 1452, 1454, 1456, 1458, 1460, 1462,
- 1464, 1466, 1468, 1470, 1473, 1475, 1477, 1479,
- 1481, 1483, 1485, 1487, 1489, 1491, 1493, 1495,
- 1497, 1499, 1501, 1503, 1505, 1507, 1509, 1511,
- 1513, 1515, 1517, 1519, 1521, 1523, 1525, 1527,
- 1529, 1531, 1533, 1535, 1537, 1539, 1541, 1543,
- 1545, 1547, 1549, 1551, 1554, 1556, 1558, 1560,
- 1562, 1564, 1566, 1568, 1570, 1572, 1574, 1576,
- 1579, 1581, 1583, 1585, 1587, 1589, 1591, 1593,
- 1595, 1597, 1599, 1601, 1603, 1605, 1607, 1609,
- 1611, 1613, 1615, 1617, 1619, 1621, 1622, 1623,
- 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632,
- 1633, 1634, 1635, 1636, 1638, 1639, 1640, 1641,
- 1642, 1643, 1644, 1645, 1646, 1647, 1648
- };
-
- static const char _lexer_trans_keys[] = {
- -48, -17, 10, 32, 34, 35, 37, 42,
- 64, 124, 9, 13, -112, -108, -107, -104,
- -102, -99, -97, -95, -94, -92, 32, 10,
- 13, 10, 13, -48, 10, 32, 34, 35,
- 37, 42, 64, 124, 9, 13, 34, 34,
- 10, 13, 10, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 9, 13, 10, 32, 9, 13,
- 10, 13, 10, 95, 70, 69, 65, 84,
- 85, 82, 69, 95, 69, 78, 68, 95,
- 37, 13, 32, 64, 9, 10, 9, 10,
- 13, 32, 64, 11, 12, 10, 32, 64,
- 9, 13, 32, 124, 9, 13, 10, 32,
- 92, 124, 9, 13, 10, 92, 124, 10,
- 92, 10, 32, 92, 124, 9, 13, -48,
- 10, 32, 34, 35, 37, 42, 64, 124,
- 9, 13, -48, -80, -66, -48, -67, -48,
- -66, -48, -65, -47, -125, -47, -127, -47,
- -126, -48, -72, -48, -68, -47, -127, -48,
- -69, -48, -72, -48, 32, -66, -48, -77,
- -67, -48, -76, -48, -80, -47, -126, -48,
- -75, -48, -70, -47, -127, -47, -126, 58,
- 10, 10, -48, 10, 32, 35, 37, 42,
- 64, 9, 13, -112, -108, -107, -104, -102,
- -99, -97, -95, -94, -92, 10, 10, 32,
- -48, 10, 32, 34, 35, 37, 42, 64,
- 124, 9, 13, -48, 10, -80, -66, 10,
- -48, 10, -67, 10, -48, 10, -66, 10,
- -48, 10, -65, 10, -47, 10, -125, 10,
- -47, 10, -127, 10, -47, 10, -126, 10,
- -48, 10, -72, 10, -48, 10, -68, 10,
- -47, 10, -127, 10, -48, 10, -69, 10,
- -48, 10, -72, 10, -48, 10, 32, -66,
- 10, -48, 10, -77, 10, -48, 10, -76,
- 10, -48, 10, -80, 10, -47, 10, -126,
- 10, -48, 10, -66, 10, -48, 10, -68,
- 10, -47, 10, -125, 10, 10, 32, -48,
- 10, -74, 10, -48, 10, -75, 10, -47,
- 10, -125, 10, -47, 10, -127, 10, -47,
- 10, -126, 10, -47, 10, -116, 10, -48,
- -47, 10, -78, 10, -48, 10, -66, 10,
- -48, 10, -71, 10, -47, 10, -127, 10,
- -47, 10, -126, 10, -48, 10, -78, 10,
- -48, 10, -66, 10, 10, 58, -126, -122,
- 10, -47, 10, -128, 10, -47, 10, -125,
- 10, -48, 10, -70, 10, -47, 10, -126,
- 10, -47, 10, -125, 10, -47, 10, -128,
- 10, -48, 10, -80, 10, 10, 32, -47,
- 10, -127, 10, -47, 10, -122, 10, -48,
- 10, -75, 10, -48, 10, -67, 10, -48,
- 10, -80, 10, -47, 10, -128, 10, -48,
- 10, -72, 10, -47, 10, -113, 10, -48,
- 10, -75, 10, -48, 10, -67, 10, -48,
- 10, -80, 10, -47, 10, -128, 10, -48,
- 10, -72, 10, -48, 10, -71, 10, -48,
- 10, -66, 10, -48, 10, 32, -47, 10,
- -125, 10, -48, 10, -67, 10, -48, 10,
- -70, 10, -47, 10, -122, 10, -48, 10,
- -72, 10, -48, -47, 10, -66, 10, -48,
- 10, -67, 10, -48, 10, -80, 10, -48,
- 10, -69, 10, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, -47,
- -126, -48, -66, -48, -68, -47, -125, 32,
- -48, -74, -48, -75, -47, -128, -125, -48,
- -75, -72, -48, -76, -47, -117, -47, -127,
- -47, -126, -48, -66, -47, -128, -48, -72,
- -47, -113, -48, -68, -48, -75, -47, -128,
- -47, -117, 58, 10, 10, -48, 10, 32,
- 35, 124, 9, 13, -95, -92, 10, -48,
- 10, -78, 10, -48, 10, -66, 10, -48,
- 10, -71, 10, -47, 10, -127, 10, -47,
- 10, -126, 10, -48, 10, -78, 10, -48,
- 10, -66, 10, 10, 58, -47, 10, -125,
- 10, -48, 10, -67, 10, -48, 10, -70,
- 10, -47, 10, -122, 10, -48, 10, -72,
- 10, -48, -47, 10, -66, 10, -48, 10,
- -67, 10, -48, 10, -80, 10, -48, 10,
- -69, 10, -113, 10, -47, -127, -47, -126,
- -47, -116, -48, -47, -78, -48, -66, -48,
- -71, -47, -127, -47, -126, -48, -78, -48,
- -66, 58, 10, 10, -48, 10, 32, 35,
- 37, 64, 9, 13, -102, -97, -95, -92,
- 10, -48, 10, -66, 10, -48, 10, -67,
- 10, -47, 10, -126, 10, -48, 10, -75,
- 10, -48, 10, -70, 10, -47, 10, -127,
- 10, -47, 10, -126, 10, 10, 58, -47,
- 10, -128, 10, -48, 10, -75, -72, 10,
- -48, 10, -76, 10, -47, 10, -117, 10,
- -47, 10, -127, 10, -47, 10, -126, 10,
- -48, 10, -66, 10, -47, 10, -128, 10,
- -48, 10, -72, 10, -47, 10, -113, 10,
- -48, 10, -68, 10, -48, 10, -75, 10,
- -47, 10, -128, 10, -47, 10, -117, 10,
- -48, -47, 10, -78, 10, -48, 10, -66,
- 10, -48, 10, -71, 10, -47, 10, -127,
- 10, -47, 10, -126, 10, -48, 10, -78,
- 10, -48, 10, -66, 10, -126, -122, 10,
- -47, 10, -128, 10, -47, 10, -125, 10,
- -48, 10, -70, 10, -47, 10, -126, 10,
- -47, 10, -125, 10, -47, 10, -128, 10,
- -48, 10, -80, 10, 10, 32, -47, 10,
- -127, 10, -47, 10, -122, 10, -48, 10,
- -75, 10, -48, 10, -67, 10, -48, 10,
- -80, 10, -48, 10, -75, 10, -48, 10,
- -67, 10, -48, 10, -80, 10, -47, 10,
- -128, 10, -48, 10, -72, 10, -48, 10,
- -71, 10, -47, 10, -125, 10, -48, 10,
- -67, 10, -48, 10, -70, 10, -47, 10,
- -122, 10, -48, 10, -72, 10, -48, -47,
- 10, -66, 10, -48, 10, -67, 10, -48,
- 10, -80, 10, -48, 10, -69, 10, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, -126, -122, -47, -128, -47,
- -125, -48, -70, -47, -126, -47, -125, -47,
- -128, -48, -80, 32, -47, -127, -47, -122,
- -48, -75, -48, -67, -48, -80, -47, -128,
- -48, -72, -47, -113, 58, 10, 10, -48,
- 10, 32, 35, 37, 42, 64, 9, 13,
- -112, -108, -107, -104, -102, -99, -97, -95,
- -94, -92, 10, 10, 32, -48, 10, -80,
- -66, 10, -48, 10, -67, 10, -48, 10,
- -66, 10, -48, 10, -65, 10, -47, 10,
- -125, 10, -47, 10, -127, 10, -47, 10,
- -126, 10, -48, 10, -72, 10, -48, 10,
- -68, 10, -47, 10, -127, 10, -48, 10,
- -69, 10, -48, 10, -72, 10, -48, 10,
- 32, -66, 10, -48, 10, -77, 10, -48,
- 10, -76, 10, -48, 10, -80, 10, -47,
- 10, -126, 10, -48, 10, -66, 10, -48,
- 10, -68, 10, -47, 10, -125, 10, 10,
- 32, -48, 10, -74, 10, -48, 10, -75,
- 10, -47, 10, -125, 10, -47, 10, -127,
- 10, -47, 10, -126, 10, -47, 10, -116,
- 10, -48, -47, 10, -78, 10, -48, 10,
- -66, 10, -48, 10, -71, 10, -47, 10,
- -127, 10, -47, 10, -126, 10, -48, 10,
- -78, 10, -48, 10, -66, 10, 10, 58,
- -122, 10, -48, 10, -75, 10, -48, 10,
- -67, 10, -48, 10, -80, 10, -47, 10,
- -128, 10, -48, 10, -72, 10, -48, 10,
- -71, 10, -48, 10, -66, 10, -48, 10,
- 32, -47, 10, -125, 10, -48, 10, -67,
- 10, -48, 10, -70, 10, -47, 10, -122,
- 10, -48, 10, -72, 10, -48, -47, 10,
- -66, 10, -48, 10, -67, 10, -48, 10,
- -80, 10, -48, 10, -69, 10, -113, 10,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, -48, -75, -48, -67,
- -48, -80, -47, -128, -48, -72, -48, -71,
- 58, 10, 10, -48, 10, 32, 35, 37,
- 42, 64, 9, 13, -112, -108, -107, -104,
- -102, -99, -97, -95, -94, -92, 10, 10,
- 32, -48, 10, -80, -66, 10, -48, 10,
- -67, 10, -48, 10, -66, 10, -48, 10,
- -65, 10, -47, 10, -125, 10, -47, 10,
- -127, 10, -47, 10, -126, 10, -48, 10,
- -72, 10, -48, 10, -68, 10, -47, 10,
- -127, 10, -48, 10, -69, 10, -48, 10,
- -72, 10, -48, 10, 32, -66, 10, -48,
- 10, -77, -67, 10, -48, 10, -76, 10,
- -48, 10, -80, 10, -47, 10, -126, 10,
- -48, 10, -75, 10, -48, 10, -70, 10,
- -47, 10, -127, 10, -47, 10, -126, 10,
- 10, 58, -47, 10, -126, 10, -48, 10,
- -66, 10, -48, 10, -68, 10, -47, 10,
- -125, 10, 10, 32, -48, 10, -74, 10,
- -48, 10, -75, 10, -47, 10, -128, -125,
- 10, -48, 10, -75, 10, -48, 10, -76,
- 10, -47, 10, -117, 10, -47, 10, -127,
- 10, -47, 10, -126, 10, -48, 10, -66,
- 10, -47, 10, -128, 10, -48, 10, -72,
- 10, -47, 10, -113, 10, -47, 10, -127,
- 10, -47, 10, -126, 10, -47, 10, -116,
- 10, -48, -47, 10, -78, 10, -48, 10,
- -66, 10, -48, 10, -71, 10, -47, 10,
- -127, 10, -47, 10, -126, 10, -48, 10,
- -78, 10, -48, 10, -66, 10, -126, -122,
- 10, -47, 10, -128, 10, -47, 10, -125,
- 10, -48, 10, -70, 10, -47, 10, -126,
- 10, -47, 10, -125, 10, -47, 10, -128,
- 10, -48, 10, -80, 10, 10, 32, -47,
- 10, -127, 10, -47, 10, -122, 10, -48,
- 10, -75, 10, -48, 10, -67, 10, -48,
- 10, -80, 10, -48, 10, -75, 10, -48,
- 10, -67, 10, -48, 10, -80, 10, -47,
- 10, -128, 10, -48, 10, -72, 10, -48,
- 10, -71, 10, -48, 10, -66, 10, -48,
- 10, 32, -77, 10, -47, 10, -125, 10,
- -48, 10, -67, 10, -48, 10, -70, 10,
- -47, 10, -122, 10, -48, 10, -72, 10,
- -48, -47, 10, -66, 10, -48, 10, -67,
- 10, -48, 10, -80, 10, -48, 10, -69,
- 10, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, -48, -66, -48,
- 32, -77, -47, -125, -48, -67, -48, -70,
- -47, -122, -48, -72, -48, -47, -66, -48,
- -67, -48, -80, -48, -69, -113, -69, -65,
- 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 10, 10, 1, 2, 2, 9, 1,
- 1, 2, 2, 3, 3, 3, 3, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 5, 3, 2, 4, 3, 2,
- 4, 9, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 2, 1, 1, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 7,
- 11, 2, 9, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 5, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 6, 5, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 7, 11, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 7, 11, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 1, 1, 1, 1, 1,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 0, 0,
- 1, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 12, 23, 25, 28, 31, 42,
- 44, 46, 49, 52, 57, 62, 67, 72,
- 76, 80, 83, 85, 87, 89, 91, 93,
- 95, 97, 99, 101, 103, 105, 107, 109,
- 111, 113, 118, 125, 130, 134, 140, 144,
- 147, 153, 164, 166, 169, 171, 173, 175,
- 177, 179, 181, 183, 185, 187, 189, 191,
- 193, 195, 197, 199, 201, 203, 205, 207,
- 209, 211, 213, 216, 218, 220, 223, 225,
- 227, 229, 231, 233, 235, 237, 239, 241,
- 243, 245, 247, 249, 251, 253, 255, 257,
- 266, 278, 281, 292, 295, 299, 302, 305,
- 308, 311, 314, 317, 320, 323, 326, 329,
- 332, 335, 338, 341, 344, 347, 350, 353,
- 356, 359, 362, 365, 369, 372, 375, 378,
- 381, 384, 387, 390, 393, 396, 399, 402,
- 405, 408, 411, 414, 417, 420, 423, 426,
- 429, 432, 435, 438, 441, 444, 447, 450,
- 453, 457, 460, 463, 466, 469, 472, 475,
- 478, 481, 484, 487, 490, 493, 496, 499,
- 503, 506, 509, 512, 515, 518, 521, 524,
- 527, 530, 533, 536, 539, 542, 545, 548,
- 551, 554, 557, 560, 563, 566, 569, 572,
- 575, 578, 581, 584, 587, 590, 593, 596,
- 599, 602, 605, 608, 611, 614, 617, 620,
- 623, 626, 629, 632, 635, 638, 642, 645,
- 648, 651, 654, 657, 660, 663, 666, 669,
- 672, 676, 679, 682, 685, 688, 691, 694,
- 697, 700, 703, 706, 709, 712, 715, 718,
- 721, 724, 727, 730, 733, 736, 739, 741,
- 743, 745, 747, 749, 751, 753, 755, 757,
- 759, 761, 763, 765, 767, 770, 772, 775,
- 777, 779, 781, 783, 785, 787, 789, 791,
- 793, 795, 797, 799, 801, 803, 805, 807,
- 809, 811, 813, 815, 817, 819, 821, 823,
- 825, 827, 829, 836, 840, 843, 846, 849,
- 852, 855, 858, 861, 864, 867, 870, 873,
- 876, 879, 882, 885, 888, 891, 894, 897,
- 900, 903, 906, 909, 912, 915, 919, 922,
- 925, 928, 931, 934, 937, 940, 943, 945,
- 947, 949, 951, 953, 955, 958, 960, 962,
- 964, 966, 968, 970, 972, 974, 976, 978,
- 980, 982, 984, 986, 988, 990, 998, 1004,
- 1007, 1010, 1013, 1016, 1019, 1022, 1025, 1028,
- 1031, 1034, 1037, 1040, 1043, 1046, 1049, 1052,
- 1055, 1058, 1062, 1065, 1068, 1071, 1074, 1077,
- 1080, 1083, 1086, 1089, 1092, 1095, 1098, 1101,
- 1104, 1107, 1110, 1113, 1116, 1119, 1122, 1125,
- 1128, 1131, 1134, 1138, 1141, 1144, 1147, 1150,
- 1153, 1156, 1159, 1162, 1165, 1168, 1171, 1174,
- 1177, 1181, 1184, 1187, 1190, 1193, 1196, 1199,
- 1202, 1205, 1208, 1211, 1214, 1217, 1220, 1223,
- 1226, 1229, 1232, 1235, 1238, 1241, 1244, 1247,
- 1250, 1253, 1256, 1259, 1262, 1265, 1268, 1271,
- 1274, 1277, 1280, 1283, 1286, 1289, 1292, 1295,
- 1298, 1301, 1304, 1307, 1310, 1313, 1316, 1319,
- 1322, 1326, 1329, 1332, 1335, 1338, 1341, 1344,
- 1347, 1350, 1353, 1356, 1359, 1362, 1365, 1368,
- 1371, 1374, 1377, 1380, 1383, 1386, 1389, 1392,
- 1394, 1396, 1398, 1400, 1402, 1404, 1406, 1408,
- 1410, 1412, 1414, 1416, 1418, 1420, 1422, 1424,
- 1426, 1428, 1430, 1432, 1434, 1436, 1438, 1440,
- 1442, 1444, 1446, 1448, 1450, 1452, 1454, 1456,
- 1458, 1460, 1469, 1481, 1484, 1487, 1491, 1494,
- 1497, 1500, 1503, 1506, 1509, 1512, 1515, 1518,
- 1521, 1524, 1527, 1530, 1533, 1536, 1539, 1542,
- 1545, 1548, 1551, 1554, 1557, 1561, 1564, 1567,
- 1570, 1573, 1576, 1579, 1582, 1585, 1588, 1591,
- 1594, 1597, 1600, 1603, 1606, 1609, 1612, 1615,
- 1618, 1621, 1624, 1627, 1630, 1633, 1636, 1639,
- 1642, 1645, 1649, 1652, 1655, 1658, 1661, 1664,
- 1667, 1670, 1673, 1676, 1679, 1682, 1685, 1688,
- 1691, 1694, 1697, 1700, 1703, 1706, 1709, 1712,
- 1715, 1718, 1721, 1724, 1727, 1730, 1733, 1736,
- 1740, 1743, 1746, 1749, 1752, 1755, 1758, 1761,
- 1764, 1767, 1770, 1774, 1777, 1780, 1783, 1786,
- 1789, 1792, 1795, 1798, 1801, 1804, 1807, 1810,
- 1813, 1816, 1819, 1822, 1825, 1828, 1831, 1834,
- 1837, 1840, 1842, 1844, 1846, 1848, 1850, 1852,
- 1854, 1856, 1858, 1860, 1862, 1864, 1866, 1868,
- 1870, 1879, 1891, 1894, 1897, 1901, 1904, 1907,
- 1910, 1913, 1916, 1919, 1922, 1925, 1928, 1931,
- 1934, 1937, 1940, 1943, 1946, 1949, 1952, 1955,
- 1958, 1961, 1964, 1967, 1971, 1974, 1977, 1981,
- 1984, 1987, 1990, 1993, 1996, 1999, 2002, 2005,
- 2008, 2011, 2014, 2017, 2020, 2023, 2026, 2029,
- 2032, 2035, 2038, 2041, 2044, 2047, 2050, 2053,
- 2056, 2059, 2062, 2065, 2068, 2072, 2075, 2078,
- 2081, 2084, 2087, 2090, 2093, 2096, 2099, 2102,
- 2105, 2108, 2111, 2114, 2117, 2120, 2123, 2126,
- 2129, 2132, 2135, 2138, 2141, 2144, 2148, 2151,
- 2154, 2157, 2160, 2163, 2166, 2169, 2172, 2175,
- 2178, 2181, 2184, 2187, 2191, 2194, 2197, 2200,
- 2203, 2206, 2209, 2212, 2215, 2218, 2221, 2224,
- 2227, 2230, 2233, 2236, 2239, 2242, 2245, 2248,
- 2251, 2254, 2257, 2260, 2263, 2266, 2269, 2272,
- 2275, 2278, 2281, 2284, 2287, 2290, 2293, 2296,
- 2299, 2302, 2305, 2308, 2312, 2315, 2318, 2321,
- 2324, 2327, 2330, 2333, 2336, 2339, 2342, 2345,
- 2349, 2352, 2355, 2358, 2361, 2364, 2367, 2370,
- 2373, 2376, 2379, 2382, 2385, 2388, 2391, 2394,
- 2397, 2400, 2403, 2406, 2409, 2412, 2414, 2416,
- 2419, 2421, 2423, 2425, 2427, 2429, 2431, 2433,
- 2435, 2437, 2439, 2441, 2444, 2446, 2448, 2450,
- 2452, 2454, 2456, 2458, 2460, 2462, 2464
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 836, 6, 6, 7, 17, 19, 3,
- 33, 36, 6, 0, 3, 42, 60, 3,
- 66, 46, 251, 324, 813, 817, 0, 4,
- 0, 6, 18, 5, 6, 18, 5, 2,
- 6, 6, 7, 17, 19, 3, 33, 36,
- 6, 0, 8, 0, 9, 0, 11, 10,
- 10, 11, 10, 10, 12, 12, 13, 12,
- 12, 12, 12, 13, 12, 12, 12, 12,
- 14, 12, 12, 12, 12, 15, 12, 12,
- 6, 16, 16, 0, 6, 16, 16, 0,
- 6, 18, 17, 6, 0, 20, 0, 21,
- 0, 22, 0, 23, 0, 24, 0, 25,
- 0, 26, 0, 27, 0, 28, 0, 29,
- 0, 30, 0, 31, 0, 32, 0, 838,
- 0, 0, 0, 0, 0, 34, 35, 6,
- 35, 35, 33, 34, 34, 6, 35, 33,
- 35, 0, 36, 37, 36, 0, 41, 40,
- 39, 37, 40, 38, 0, 39, 37, 38,
- 0, 39, 38, 41, 40, 39, 37, 40,
- 38, 2, 41, 41, 7, 17, 19, 3,
- 33, 36, 41, 0, 43, 0, 44, 48,
- 0, 45, 0, 46, 0, 47, 0, 3,
- 0, 49, 0, 50, 0, 51, 0, 52,
- 0, 53, 0, 54, 0, 55, 0, 56,
- 0, 57, 0, 58, 0, 59, 0, 3,
- 0, 61, 0, 62, 0, 63, 0, 64,
- 0, 65, 0, 3, 0, 67, 238, 0,
- 68, 0, 69, 0, 70, 74, 0, 71,
- 0, 72, 0, 73, 0, 3, 0, 75,
- 0, 76, 0, 77, 0, 78, 0, 79,
- 0, 80, 0, 81, 0, 82, 0, 83,
- 0, 84, 0, 85, 0, 87, 86, 87,
- 86, 88, 87, 87, 6, 224, 89, 6,
- 87, 86, 89, 91, 109, 89, 115, 95,
- 136, 144, 203, 206, 87, 86, 87, 90,
- 86, 2, 6, 6, 7, 17, 19, 3,
- 33, 36, 6, 0, 92, 87, 86, 93,
- 97, 87, 86, 94, 87, 86, 95, 87,
- 86, 96, 87, 86, 89, 87, 86, 98,
- 87, 86, 99, 87, 86, 100, 87, 86,
- 101, 87, 86, 102, 87, 86, 103, 87,
- 86, 104, 87, 86, 105, 87, 86, 106,
- 87, 86, 107, 87, 86, 108, 87, 86,
- 89, 87, 86, 110, 87, 86, 111, 87,
- 86, 112, 87, 86, 113, 87, 86, 114,
- 87, 86, 89, 87, 86, 116, 87, 123,
- 86, 117, 87, 86, 118, 87, 86, 119,
- 87, 86, 120, 87, 86, 121, 87, 86,
- 122, 87, 86, 89, 87, 86, 124, 87,
- 86, 125, 87, 86, 126, 87, 86, 127,
- 87, 86, 128, 87, 86, 129, 87, 86,
- 130, 87, 86, 131, 87, 86, 87, 132,
- 86, 133, 87, 86, 134, 87, 86, 135,
- 87, 86, 89, 87, 86, 137, 87, 86,
- 138, 87, 86, 139, 87, 86, 140, 87,
- 86, 141, 87, 86, 142, 87, 86, 143,
- 87, 86, 89, 87, 86, 145, 159, 87,
- 86, 146, 87, 86, 147, 87, 86, 148,
- 87, 86, 149, 87, 86, 150, 87, 86,
- 151, 87, 86, 152, 87, 86, 153, 87,
- 86, 154, 87, 86, 155, 87, 86, 156,
- 87, 86, 157, 87, 86, 158, 87, 86,
- 87, 90, 86, 160, 191, 87, 86, 161,
- 87, 86, 162, 87, 86, 163, 87, 86,
- 164, 87, 86, 165, 87, 86, 166, 87,
- 86, 167, 87, 86, 168, 87, 86, 169,
- 87, 86, 170, 87, 86, 171, 87, 86,
- 172, 87, 86, 173, 87, 86, 174, 87,
- 86, 87, 175, 86, 176, 87, 86, 177,
- 87, 86, 178, 87, 86, 179, 87, 86,
- 180, 87, 86, 181, 87, 86, 182, 87,
- 86, 183, 87, 86, 184, 87, 86, 185,
- 87, 86, 186, 87, 86, 187, 87, 86,
- 188, 87, 86, 189, 87, 86, 190, 87,
- 86, 158, 87, 86, 192, 87, 86, 193,
- 87, 86, 194, 87, 86, 195, 87, 86,
- 196, 87, 86, 197, 87, 86, 198, 87,
- 86, 199, 87, 86, 200, 87, 86, 201,
- 87, 86, 202, 87, 86, 158, 87, 86,
- 204, 87, 86, 205, 87, 86, 118, 87,
- 90, 86, 207, 87, 86, 208, 87, 86,
- 209, 87, 86, 210, 87, 86, 211, 87,
- 86, 212, 87, 86, 213, 87, 86, 214,
- 87, 86, 215, 87, 86, 216, 87, 86,
- 217, 190, 87, 86, 218, 87, 86, 219,
- 87, 86, 220, 87, 86, 221, 87, 86,
- 222, 87, 86, 223, 87, 86, 158, 87,
- 86, 87, 225, 86, 87, 226, 86, 87,
- 227, 86, 87, 228, 86, 87, 229, 86,
- 87, 230, 86, 87, 231, 86, 87, 232,
- 86, 87, 233, 86, 87, 234, 86, 87,
- 235, 86, 87, 236, 86, 87, 237, 86,
- 87, 6, 86, 239, 0, 240, 0, 241,
- 0, 242, 0, 243, 0, 244, 0, 245,
- 0, 246, 0, 247, 0, 248, 0, 249,
- 0, 250, 0, 3, 0, 252, 0, 253,
- 318, 0, 254, 0, 255, 271, 0, 256,
- 0, 257, 0, 258, 0, 259, 0, 260,
- 0, 261, 0, 262, 0, 263, 0, 264,
- 0, 265, 0, 266, 0, 267, 0, 268,
- 0, 269, 0, 270, 0, 84, 0, 272,
- 0, 273, 0, 274, 0, 275, 0, 276,
- 0, 277, 0, 278, 0, 279, 0, 280,
- 0, 282, 281, 282, 281, 283, 282, 282,
- 6, 6, 282, 281, 284, 299, 282, 281,
- 285, 282, 281, 286, 282, 281, 287, 282,
- 281, 288, 282, 281, 289, 282, 281, 290,
- 282, 281, 291, 282, 281, 292, 282, 281,
- 293, 282, 281, 294, 282, 281, 295, 282,
- 281, 296, 282, 281, 297, 282, 281, 298,
- 282, 281, 282, 90, 281, 300, 282, 281,
- 301, 282, 281, 302, 282, 281, 303, 282,
- 281, 304, 282, 281, 305, 282, 281, 306,
- 282, 281, 307, 282, 281, 308, 282, 281,
- 309, 282, 281, 310, 317, 282, 281, 311,
- 282, 281, 312, 282, 281, 313, 282, 281,
- 314, 282, 281, 315, 282, 281, 316, 282,
- 281, 298, 282, 281, 298, 282, 281, 319,
- 0, 320, 0, 321, 0, 322, 0, 323,
- 0, 3, 0, 325, 470, 0, 326, 0,
- 327, 0, 328, 0, 329, 0, 330, 0,
- 331, 0, 332, 0, 333, 0, 334, 0,
- 335, 0, 336, 0, 337, 0, 338, 0,
- 339, 0, 341, 340, 341, 340, 342, 341,
- 341, 6, 456, 6, 341, 340, 343, 358,
- 386, 438, 341, 340, 344, 341, 340, 345,
- 341, 340, 346, 341, 340, 347, 341, 340,
- 348, 341, 340, 349, 341, 340, 350, 341,
- 340, 351, 341, 340, 352, 341, 340, 353,
- 341, 340, 354, 341, 340, 355, 341, 340,
- 356, 341, 340, 357, 341, 340, 341, 90,
- 340, 359, 341, 340, 360, 341, 340, 361,
- 341, 340, 362, 378, 341, 340, 363, 341,
- 340, 364, 341, 340, 365, 341, 340, 366,
- 341, 340, 367, 341, 340, 368, 341, 340,
- 369, 341, 340, 370, 341, 340, 371, 341,
- 340, 372, 341, 340, 373, 341, 340, 374,
- 341, 340, 375, 341, 340, 376, 341, 340,
- 377, 341, 340, 357, 341, 340, 379, 341,
- 340, 380, 341, 340, 381, 341, 340, 382,
- 341, 340, 383, 341, 340, 384, 341, 340,
- 385, 341, 340, 357, 341, 340, 387, 400,
- 341, 340, 388, 341, 340, 389, 341, 340,
- 390, 341, 340, 391, 341, 340, 392, 341,
- 340, 393, 341, 340, 394, 341, 340, 395,
- 341, 340, 396, 341, 340, 397, 341, 340,
- 398, 341, 340, 399, 341, 340, 357, 341,
- 340, 401, 426, 341, 340, 402, 341, 340,
- 403, 341, 340, 404, 341, 340, 405, 341,
- 340, 406, 341, 340, 407, 341, 340, 408,
- 341, 340, 409, 341, 340, 410, 341, 340,
- 411, 341, 340, 412, 341, 340, 413, 341,
- 340, 414, 341, 340, 415, 341, 340, 341,
- 416, 340, 417, 341, 340, 418, 341, 340,
- 419, 341, 340, 420, 341, 340, 421, 341,
- 340, 422, 341, 340, 423, 341, 340, 424,
- 341, 340, 425, 341, 340, 372, 341, 340,
- 427, 341, 340, 428, 341, 340, 429, 341,
- 340, 430, 341, 340, 431, 341, 340, 432,
- 341, 340, 433, 341, 340, 434, 341, 340,
- 435, 341, 340, 436, 341, 340, 437, 341,
- 340, 357, 341, 340, 439, 341, 340, 440,
- 341, 340, 441, 341, 340, 442, 341, 340,
- 443, 341, 340, 444, 341, 340, 445, 341,
- 340, 446, 341, 340, 447, 341, 340, 448,
- 341, 340, 449, 377, 341, 340, 450, 341,
- 340, 451, 341, 340, 452, 341, 340, 453,
- 341, 340, 454, 341, 340, 455, 341, 340,
- 357, 341, 340, 341, 457, 340, 341, 458,
- 340, 341, 459, 340, 341, 460, 340, 341,
- 461, 340, 341, 462, 340, 341, 463, 340,
- 341, 464, 340, 341, 465, 340, 341, 466,
- 340, 341, 467, 340, 341, 468, 340, 341,
- 469, 340, 341, 6, 340, 471, 625, 0,
- 472, 0, 473, 0, 474, 0, 475, 0,
- 476, 0, 477, 0, 478, 0, 479, 0,
- 480, 0, 481, 0, 482, 0, 483, 0,
- 484, 0, 485, 0, 486, 0, 487, 0,
- 488, 0, 489, 0, 490, 0, 491, 0,
- 492, 0, 493, 0, 494, 0, 495, 0,
- 496, 0, 497, 0, 498, 0, 499, 0,
- 500, 0, 501, 0, 502, 0, 503, 0,
- 505, 504, 505, 504, 506, 505, 505, 6,
- 611, 507, 6, 505, 504, 507, 508, 526,
- 507, 532, 512, 553, 561, 589, 592, 505,
- 504, 505, 90, 504, 509, 505, 504, 510,
- 514, 505, 504, 511, 505, 504, 512, 505,
- 504, 513, 505, 504, 507, 505, 504, 515,
- 505, 504, 516, 505, 504, 517, 505, 504,
- 518, 505, 504, 519, 505, 504, 520, 505,
- 504, 521, 505, 504, 522, 505, 504, 523,
- 505, 504, 524, 505, 504, 525, 505, 504,
- 507, 505, 504, 527, 505, 504, 528, 505,
- 504, 529, 505, 504, 530, 505, 504, 531,
- 505, 504, 507, 505, 504, 533, 505, 540,
- 504, 534, 505, 504, 535, 505, 504, 536,
- 505, 504, 537, 505, 504, 538, 505, 504,
- 539, 505, 504, 507, 505, 504, 541, 505,
- 504, 542, 505, 504, 543, 505, 504, 544,
- 505, 504, 545, 505, 504, 546, 505, 504,
- 547, 505, 504, 548, 505, 504, 505, 549,
- 504, 550, 505, 504, 551, 505, 504, 552,
- 505, 504, 507, 505, 504, 554, 505, 504,
- 555, 505, 504, 556, 505, 504, 557, 505,
- 504, 558, 505, 504, 559, 505, 504, 560,
- 505, 504, 507, 505, 504, 562, 576, 505,
- 504, 563, 505, 504, 564, 505, 504, 565,
- 505, 504, 566, 505, 504, 567, 505, 504,
- 568, 505, 504, 569, 505, 504, 570, 505,
- 504, 571, 505, 504, 572, 505, 504, 573,
- 505, 504, 574, 505, 504, 575, 505, 504,
- 505, 90, 504, 577, 505, 504, 578, 505,
- 504, 579, 505, 504, 580, 505, 504, 581,
- 505, 504, 582, 505, 504, 583, 505, 504,
- 584, 505, 504, 585, 505, 504, 586, 505,
- 504, 587, 505, 504, 588, 505, 504, 575,
- 505, 504, 590, 505, 504, 591, 505, 504,
- 535, 505, 90, 504, 593, 505, 504, 594,
- 505, 504, 595, 505, 504, 596, 505, 504,
- 597, 505, 504, 598, 505, 504, 599, 505,
- 504, 600, 505, 504, 601, 505, 504, 602,
- 505, 504, 603, 610, 505, 504, 604, 505,
- 504, 605, 505, 504, 606, 505, 504, 607,
- 505, 504, 608, 505, 504, 609, 505, 504,
- 575, 505, 504, 575, 505, 504, 505, 612,
- 504, 505, 613, 504, 505, 614, 504, 505,
- 615, 504, 505, 616, 504, 505, 617, 504,
- 505, 618, 504, 505, 619, 504, 505, 620,
- 504, 505, 621, 504, 505, 622, 504, 505,
- 623, 504, 505, 624, 504, 505, 6, 504,
- 626, 0, 627, 0, 628, 0, 629, 0,
- 630, 0, 631, 0, 632, 0, 633, 0,
- 634, 0, 635, 0, 636, 0, 637, 0,
- 638, 0, 640, 639, 640, 639, 641, 640,
- 640, 6, 799, 642, 6, 640, 639, 642,
- 643, 661, 642, 667, 647, 699, 725, 777,
- 781, 640, 639, 640, 90, 639, 644, 640,
- 639, 645, 649, 640, 639, 646, 640, 639,
- 647, 640, 639, 648, 640, 639, 642, 640,
- 639, 650, 640, 639, 651, 640, 639, 652,
- 640, 639, 653, 640, 639, 654, 640, 639,
- 655, 640, 639, 656, 640, 639, 657, 640,
- 639, 658, 640, 639, 659, 640, 639, 660,
- 640, 639, 642, 640, 639, 662, 640, 639,
- 663, 640, 639, 664, 640, 639, 665, 640,
- 639, 666, 640, 639, 642, 640, 639, 668,
- 640, 686, 639, 669, 640, 639, 670, 640,
- 639, 671, 675, 640, 639, 672, 640, 639,
- 673, 640, 639, 674, 640, 639, 642, 640,
- 639, 676, 640, 639, 677, 640, 639, 678,
- 640, 639, 679, 640, 639, 680, 640, 639,
- 681, 640, 639, 682, 640, 639, 683, 640,
- 639, 684, 640, 639, 685, 640, 639, 640,
- 90, 639, 687, 640, 639, 688, 640, 639,
- 689, 640, 639, 690, 640, 639, 691, 640,
- 639, 692, 640, 639, 693, 640, 639, 694,
- 640, 639, 640, 695, 639, 696, 640, 639,
- 697, 640, 639, 698, 640, 639, 642, 640,
- 639, 700, 640, 639, 701, 719, 640, 639,
- 702, 640, 639, 703, 640, 639, 704, 640,
- 639, 705, 640, 639, 706, 640, 639, 707,
- 640, 639, 708, 640, 639, 709, 640, 639,
- 710, 640, 639, 711, 640, 639, 712, 640,
- 639, 713, 640, 639, 714, 640, 639, 715,
- 640, 639, 716, 640, 639, 717, 640, 639,
- 718, 640, 639, 685, 640, 639, 720, 640,
- 639, 721, 640, 639, 722, 640, 639, 723,
- 640, 639, 724, 640, 639, 642, 640, 639,
- 726, 739, 640, 639, 727, 640, 639, 728,
- 640, 639, 729, 640, 639, 730, 640, 639,
- 731, 640, 639, 732, 640, 639, 733, 640,
- 639, 734, 640, 639, 735, 640, 639, 736,
- 640, 639, 737, 640, 639, 738, 640, 639,
- 685, 640, 639, 740, 765, 640, 639, 741,
- 640, 639, 742, 640, 639, 743, 640, 639,
- 744, 640, 639, 745, 640, 639, 746, 640,
- 639, 747, 640, 639, 748, 640, 639, 749,
- 640, 639, 750, 640, 639, 751, 640, 639,
- 752, 640, 639, 753, 640, 639, 754, 640,
- 639, 640, 755, 639, 756, 640, 639, 757,
- 640, 639, 758, 640, 639, 759, 640, 639,
- 760, 640, 639, 761, 640, 639, 762, 640,
- 639, 763, 640, 639, 764, 640, 639, 713,
- 640, 639, 766, 640, 639, 767, 640, 639,
- 768, 640, 639, 769, 640, 639, 770, 640,
- 639, 771, 640, 639, 772, 640, 639, 773,
- 640, 639, 774, 640, 639, 775, 640, 639,
- 776, 640, 639, 685, 640, 639, 778, 640,
- 639, 779, 640, 639, 780, 640, 90, 639,
- 671, 640, 639, 782, 640, 639, 783, 640,
- 639, 784, 640, 639, 785, 640, 639, 786,
- 640, 639, 787, 640, 639, 788, 640, 639,
- 789, 640, 639, 790, 640, 639, 791, 640,
- 639, 792, 718, 640, 639, 793, 640, 639,
- 794, 640, 639, 795, 640, 639, 796, 640,
- 639, 797, 640, 639, 798, 640, 639, 685,
- 640, 639, 640, 800, 639, 640, 801, 639,
- 640, 802, 639, 640, 803, 639, 640, 804,
- 639, 640, 805, 639, 640, 806, 639, 640,
- 807, 639, 640, 808, 639, 640, 809, 639,
- 640, 810, 639, 640, 811, 639, 640, 812,
- 639, 640, 6, 639, 814, 0, 815, 0,
- 816, 4, 0, 70, 0, 818, 0, 819,
- 0, 820, 0, 821, 0, 822, 0, 823,
- 0, 824, 0, 825, 0, 826, 0, 827,
- 0, 828, 835, 0, 829, 0, 830, 0,
- 831, 0, 832, 0, 833, 0, 834, 0,
- 338, 0, 338, 0, 837, 0, 6, 0,
- 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 29, 0, 54, 0, 5, 1, 0, 29,
- 1, 35, 0, 43, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 43, 0,
- 43, 149, 126, 57, 110, 23, 0, 29,
- 54, 0, 5, 1, 0, 29, 1, 35,
- 0, 43, 0, 43, 0, 43, 139, 48,
- 9, 106, 11, 0, 134, 45, 45, 45,
- 3, 122, 33, 33, 33, 0, 122, 33,
- 33, 33, 0, 122, 33, 0, 33, 0,
- 102, 7, 7, 43, 54, 0, 0, 43,
- 114, 25, 0, 54, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 43, 43, 43, 43, 0, 27, 118,
- 27, 27, 51, 27, 0, 54, 0, 1,
- 0, 43, 0, 0, 0, 43, 54, 37,
- 37, 87, 37, 37, 43, 0, 39, 0,
- 43, 0, 0, 54, 0, 0, 39, 0,
- 0, 96, 54, 0, 93, 90, 41, 96,
- 90, 99, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 84, 54, 0, 72, 33, 84, 72,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 54, 0, 54, 15,
- 0, 63, 130, 31, 60, 57, 31, 63,
- 57, 66, 31, 43, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 15, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 15, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0, 43, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 84, 54, 0,
- 81, 81, 0, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 21, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 84, 54,
- 0, 69, 33, 69, 0, 0, 0, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 13,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 13, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 84, 54, 0, 78,
- 33, 84, 78, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 54,
- 0, 54, 19, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 19, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 19, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 19, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 84, 54,
- 0, 75, 33, 84, 75, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 54, 0, 54, 17, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 17, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 17, 0, 0, 43, 0, 43,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 838;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 1662 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
-
- #line 1669 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1959 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 2022 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/ru.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_ru()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Ru", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/ru.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/ru.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 12, 22, 23, 25, 27, 38,
- 39, 40, 42, 44, 49, 54, 59, 64,
- 68, 72, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 89, 94, 101, 106, 110, 116, 119,
- 121, 127, 138, 139, 141, 142, 143, 144,
- 145, 146, 147, 148, 149, 150, 151, 152,
- 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 165, 166, 167, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186,
- 195, 206, 208, 219, 221, 224, 226, 228,
- 230, 232, 234, 236, 238, 240, 242, 244,
- 246, 248, 250, 252, 254, 256, 258, 260,
- 262, 264, 266, 268, 271, 273, 275, 277,
- 279, 281, 283, 285, 287, 289, 291, 293,
- 295, 297, 299, 301, 303, 305, 307, 309,
- 311, 313, 315, 317, 319, 321, 323, 325,
- 327, 330, 332, 334, 336, 338, 340, 342,
- 344, 346, 348, 350, 352, 354, 356, 358,
- 361, 363, 365, 367, 369, 371, 373, 375,
- 377, 379, 381, 383, 385, 387, 389, 391,
- 393, 395, 397, 399, 401, 403, 405, 407,
- 409, 411, 413, 415, 417, 419, 421, 423,
- 425, 427, 429, 431, 433, 435, 437, 439,
- 441, 443, 445, 447, 449, 452, 454, 456,
- 459, 461, 463, 465, 467, 469, 471, 473,
- 475, 477, 479, 482, 484, 486, 488, 490,
- 492, 494, 496, 498, 500, 502, 504, 506,
- 508, 510, 512, 514, 516, 518, 520, 522,
- 524, 525, 526, 527, 528, 529, 530, 531,
- 532, 533, 534, 535, 536, 537, 538, 540,
- 541, 543, 544, 545, 546, 547, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, 564, 565,
- 566, 567, 568, 569, 570, 577, 580, 582,
- 584, 586, 588, 590, 592, 594, 596, 598,
- 600, 602, 604, 606, 608, 610, 612, 614,
- 616, 618, 620, 622, 624, 626, 628, 630,
- 633, 635, 637, 639, 641, 643, 645, 647,
- 649, 650, 651, 652, 653, 654, 655, 657,
- 658, 659, 660, 661, 662, 663, 664, 665,
- 666, 667, 668, 669, 670, 671, 672, 673,
- 681, 686, 688, 690, 692, 694, 696, 698,
- 700, 702, 704, 706, 708, 710, 712, 714,
- 716, 718, 720, 722, 725, 727, 729, 731,
- 733, 735, 737, 739, 741, 743, 745, 747,
- 749, 751, 753, 755, 757, 759, 761, 763,
- 765, 767, 769, 771, 773, 776, 778, 780,
- 782, 784, 786, 788, 790, 792, 794, 796,
- 798, 800, 802, 805, 807, 809, 811, 813,
- 815, 817, 819, 821, 823, 825, 827, 829,
- 831, 833, 835, 837, 839, 841, 843, 845,
- 847, 849, 851, 853, 855, 857, 859, 861,
- 863, 865, 867, 869, 871, 873, 875, 877,
- 879, 881, 883, 885, 887, 889, 891, 893,
- 895, 897, 899, 902, 904, 906, 908, 910,
- 912, 914, 916, 918, 920, 922, 924, 926,
- 928, 930, 932, 934, 936, 938, 940, 942,
- 944, 946, 947, 948, 949, 950, 951, 952,
- 953, 954, 955, 956, 957, 958, 959, 960,
- 961, 962, 963, 964, 965, 966, 967, 968,
- 969, 970, 971, 972, 973, 974, 975, 976,
- 977, 978, 979, 980, 989, 1000, 1002, 1004,
- 1007, 1009, 1011, 1013, 1015, 1017, 1019, 1021,
- 1023, 1025, 1027, 1029, 1031, 1033, 1035, 1037,
- 1039, 1041, 1043, 1045, 1047, 1049, 1051, 1054,
- 1056, 1058, 1060, 1062, 1064, 1066, 1068, 1070,
- 1072, 1074, 1076, 1078, 1080, 1082, 1084, 1086,
- 1088, 1090, 1092, 1094, 1096, 1098, 1100, 1102,
- 1104, 1106, 1108, 1110, 1113, 1115, 1117, 1119,
- 1121, 1123, 1125, 1127, 1129, 1131, 1133, 1135,
- 1137, 1139, 1141, 1143, 1145, 1147, 1149, 1151,
- 1153, 1155, 1157, 1159, 1161, 1163, 1165, 1167,
- 1169, 1172, 1174, 1176, 1179, 1181, 1183, 1185,
- 1187, 1189, 1191, 1193, 1195, 1197, 1199, 1202,
- 1204, 1206, 1208, 1210, 1212, 1214, 1216, 1218,
- 1220, 1222, 1224, 1226, 1228, 1230, 1232, 1234,
- 1236, 1238, 1240, 1242, 1244, 1246, 1247, 1248,
- 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256,
- 1257, 1258, 1259, 1260, 1261, 1270, 1281, 1283,
- 1285, 1288, 1290, 1292, 1294, 1296, 1298, 1300,
- 1302, 1304, 1306, 1308, 1310, 1312, 1314, 1316,
- 1318, 1320, 1322, 1324, 1326, 1328, 1330, 1332,
- 1335, 1337, 1339, 1342, 1344, 1346, 1348, 1350,
- 1352, 1354, 1356, 1358, 1360, 1362, 1364, 1366,
- 1368, 1370, 1372, 1374, 1376, 1378, 1380, 1382,
- 1384, 1386, 1388, 1390, 1392, 1394, 1396, 1398,
- 1400, 1403, 1405, 1407, 1409, 1411, 1413, 1415,
- 1417, 1419, 1421, 1423, 1425, 1427, 1429, 1431,
- 1433, 1435, 1437, 1439, 1441, 1443, 1445, 1447,
- 1449, 1451, 1454, 1456, 1458, 1460, 1462, 1464,
- 1466, 1468, 1470, 1472, 1474, 1476, 1478, 1480,
- 1483, 1485, 1487, 1489, 1491, 1493, 1495, 1497,
- 1499, 1501, 1503, 1505, 1507, 1509, 1511, 1513,
- 1515, 1517, 1519, 1521, 1523, 1525, 1527, 1529,
- 1531, 1533, 1535, 1537, 1539, 1541, 1543, 1545,
- 1547, 1549, 1551, 1553, 1555, 1557, 1559, 1562,
- 1564, 1566, 1569, 1571, 1573, 1575, 1577, 1579,
- 1581, 1583, 1585, 1587, 1589, 1591, 1594, 1596,
- 1598, 1600, 1602, 1604, 1606, 1608, 1610, 1612,
- 1614, 1616, 1618, 1620, 1622, 1624, 1626, 1628,
- 1630, 1632, 1634, 1636, 1637, 1639, 1640, 1641,
- 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650,
- 1651, 1652, 1653, 1654, 1656, 1657, 1658, 1659,
- 1660, 1661, 1662, 1663, 1664, 1665, 1666
-};
-
-static const char _lexer_trans_keys[] = {
- -48, -17, 10, 32, 34, 35, 37, 42,
- 64, 124, 9, 13, -112, -108, -107, -104,
- -102, -99, -97, -95, -94, -92, 32, 10,
- 13, 10, 13, -48, 10, 32, 34, 35,
- 37, 42, 64, 124, 9, 13, 34, 34,
- 10, 13, 10, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 9, 13, 10, 32, 9, 13,
- 10, 13, 10, 95, 70, 69, 65, 84,
- 85, 82, 69, 95, 69, 78, 68, 95,
- 37, 13, 32, 64, 9, 10, 9, 10,
- 13, 32, 64, 11, 12, 10, 32, 64,
- 9, 13, 32, 124, 9, 13, 10, 32,
- 92, 124, 9, 13, 10, 92, 124, 10,
- 92, 10, 32, 92, 124, 9, 13, -48,
- 10, 32, 34, 35, 37, 42, 64, 124,
- 9, 13, -48, -80, -66, -48, -67, -48,
- -66, -48, -65, -47, -125, -47, -127, -47,
- -126, -48, -72, -48, -68, -47, -127, -48,
- -69, -48, -72, -48, 32, -66, -48, -77,
- -67, -48, -76, -48, -80, -47, -126, -48,
- -75, -48, -70, -47, -127, -47, -126, 58,
- 10, 10, -48, 10, 32, 35, 37, 42,
- 64, 9, 13, -112, -108, -107, -104, -102,
- -99, -97, -95, -94, -92, 10, 10, 32,
- -48, 10, 32, 34, 35, 37, 42, 64,
- 124, 9, 13, -48, 10, -80, -66, 10,
- -48, 10, -67, 10, -48, 10, -66, 10,
- -48, 10, -65, 10, -47, 10, -125, 10,
- -47, 10, -127, 10, -47, 10, -126, 10,
- -48, 10, -72, 10, -48, 10, -68, 10,
- -47, 10, -127, 10, -48, 10, -69, 10,
- -48, 10, -72, 10, -48, 10, 32, -66,
- 10, -48, 10, -77, 10, -48, 10, -76,
- 10, -48, 10, -80, 10, -47, 10, -126,
- 10, -48, 10, -66, 10, -48, 10, -68,
- 10, -47, 10, -125, 10, 10, 32, -48,
- 10, -74, 10, -48, 10, -75, 10, -47,
- 10, -125, 10, -47, 10, -127, 10, -47,
- 10, -126, 10, -47, 10, -116, 10, -48,
- -47, 10, -78, 10, -48, 10, -66, 10,
- -48, 10, -71, 10, -47, 10, -127, 10,
- -47, 10, -126, 10, -48, 10, -78, 10,
- -48, 10, -66, 10, 10, 58, -126, -122,
- 10, -47, 10, -128, 10, -47, 10, -125,
- 10, -48, 10, -70, 10, -47, 10, -126,
- 10, -47, 10, -125, 10, -47, 10, -128,
- 10, -48, 10, -80, 10, 10, 32, -47,
- 10, -127, 10, -47, 10, -122, 10, -48,
- 10, -75, 10, -48, 10, -67, 10, -48,
- 10, -80, 10, -47, 10, -128, 10, -48,
- 10, -72, 10, -47, 10, -113, 10, -48,
- 10, -75, 10, -48, 10, -67, 10, -48,
- 10, -80, 10, -47, 10, -128, 10, -48,
- 10, -72, 10, -48, 10, -71, 10, -48,
- 10, -80, -66, 10, -48, 10, -70, 10,
- -48, 10, 32, -47, 10, -125, 10, -48,
- 10, -67, 10, -48, 10, -70, 10, -47,
- 10, -122, 10, -48, 10, -72, 10, -48,
- -47, 10, -66, 10, -48, 10, -67, 10,
- -48, 10, -80, 10, -48, 10, -69, 10,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, -47, -126, -48, -66,
- -48, -68, -47, -125, 32, -48, -74, -48,
- -75, -47, -128, -125, -48, -75, -72, -48,
- -76, -47, -117, -47, -127, -47, -126, -48,
- -66, -47, -128, -48, -72, -47, -113, -48,
- -68, -48, -75, -47, -128, -47, -117, 58,
- 10, 10, -48, 10, 32, 35, 124, 9,
- 13, -95, -92, 10, -48, 10, -78, 10,
- -48, 10, -66, 10, -48, 10, -71, 10,
- -47, 10, -127, 10, -47, 10, -126, 10,
- -48, 10, -78, 10, -48, 10, -66, 10,
- 10, 58, -47, 10, -125, 10, -48, 10,
- -67, 10, -48, 10, -70, 10, -47, 10,
- -122, 10, -48, 10, -72, 10, -48, -47,
- 10, -66, 10, -48, 10, -67, 10, -48,
- 10, -80, 10, -48, 10, -69, 10, -113,
- 10, -47, -127, -47, -126, -47, -116, -48,
- -47, -78, -48, -66, -48, -71, -47, -127,
- -47, -126, -48, -78, -48, -66, 58, 10,
- 10, -48, 10, 32, 35, 37, 64, 9,
- 13, -102, -97, -95, -92, 10, -48, 10,
- -66, 10, -48, 10, -67, 10, -47, 10,
- -126, 10, -48, 10, -75, 10, -48, 10,
- -70, 10, -47, 10, -127, 10, -47, 10,
- -126, 10, 10, 58, -47, 10, -128, 10,
- -48, 10, -75, -72, 10, -48, 10, -76,
- 10, -47, 10, -117, 10, -47, 10, -127,
- 10, -47, 10, -126, 10, -48, 10, -66,
- 10, -47, 10, -128, 10, -48, 10, -72,
- 10, -47, 10, -113, 10, -48, 10, -68,
- 10, -48, 10, -75, 10, -47, 10, -128,
- 10, -47, 10, -117, 10, -48, -47, 10,
- -78, 10, -48, 10, -66, 10, -48, 10,
- -71, 10, -47, 10, -127, 10, -47, 10,
- -126, 10, -48, 10, -78, 10, -48, 10,
- -66, 10, -126, -122, 10, -47, 10, -128,
- 10, -47, 10, -125, 10, -48, 10, -70,
- 10, -47, 10, -126, 10, -47, 10, -125,
- 10, -47, 10, -128, 10, -48, 10, -80,
- 10, 10, 32, -47, 10, -127, 10, -47,
- 10, -122, 10, -48, 10, -75, 10, -48,
- 10, -67, 10, -48, 10, -80, 10, -48,
- 10, -75, 10, -48, 10, -67, 10, -48,
- 10, -80, 10, -47, 10, -128, 10, -48,
- 10, -72, 10, -48, 10, -71, 10, -47,
- 10, -125, 10, -48, 10, -67, 10, -48,
- 10, -70, 10, -47, 10, -122, 10, -48,
- 10, -72, 10, -48, -47, 10, -66, 10,
- -48, 10, -67, 10, -48, 10, -80, 10,
- -48, 10, -69, 10, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- -126, -122, -47, -128, -47, -125, -48, -70,
- -47, -126, -47, -125, -47, -128, -48, -80,
- 32, -47, -127, -47, -122, -48, -75, -48,
- -67, -48, -80, -47, -128, -48, -72, -47,
- -113, 58, 10, 10, -48, 10, 32, 35,
- 37, 42, 64, 9, 13, -112, -108, -107,
- -104, -102, -99, -97, -95, -94, -92, 10,
- 10, 32, -48, 10, -80, -66, 10, -48,
- 10, -67, 10, -48, 10, -66, 10, -48,
- 10, -65, 10, -47, 10, -125, 10, -47,
- 10, -127, 10, -47, 10, -126, 10, -48,
- 10, -72, 10, -48, 10, -68, 10, -47,
- 10, -127, 10, -48, 10, -69, 10, -48,
- 10, -72, 10, -48, 10, 32, -66, 10,
- -48, 10, -77, 10, -48, 10, -76, 10,
- -48, 10, -80, 10, -47, 10, -126, 10,
- -48, 10, -66, 10, -48, 10, -68, 10,
- -47, 10, -125, 10, 10, 32, -48, 10,
- -74, 10, -48, 10, -75, 10, -47, 10,
- -125, 10, -47, 10, -127, 10, -47, 10,
- -126, 10, -47, 10, -116, 10, -48, -47,
- 10, -78, 10, -48, 10, -66, 10, -48,
- 10, -71, 10, -47, 10, -127, 10, -47,
- 10, -126, 10, -48, 10, -78, 10, -48,
- 10, -66, 10, 10, 58, -122, 10, -48,
- 10, -75, 10, -48, 10, -67, 10, -48,
- 10, -80, 10, -47, 10, -128, 10, -48,
- 10, -72, 10, -48, 10, -71, 10, -48,
- 10, -80, -66, 10, -48, 10, -70, 10,
- -48, 10, 32, -47, 10, -125, 10, -48,
- 10, -67, 10, -48, 10, -70, 10, -47,
- 10, -122, 10, -48, 10, -72, 10, -48,
- -47, 10, -66, 10, -48, 10, -67, 10,
- -48, 10, -80, 10, -48, 10, -69, 10,
- -113, 10, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, -48, -75,
- -48, -67, -48, -80, -47, -128, -48, -72,
- -48, -71, 58, 10, 10, -48, 10, 32,
- 35, 37, 42, 64, 9, 13, -112, -108,
- -107, -104, -102, -99, -97, -95, -94, -92,
- 10, 10, 32, -48, 10, -80, -66, 10,
- -48, 10, -67, 10, -48, 10, -66, 10,
- -48, 10, -65, 10, -47, 10, -125, 10,
- -47, 10, -127, 10, -47, 10, -126, 10,
- -48, 10, -72, 10, -48, 10, -68, 10,
- -47, 10, -127, 10, -48, 10, -69, 10,
- -48, 10, -72, 10, -48, 10, 32, -66,
- 10, -48, 10, -77, -67, 10, -48, 10,
- -76, 10, -48, 10, -80, 10, -47, 10,
- -126, 10, -48, 10, -75, 10, -48, 10,
- -70, 10, -47, 10, -127, 10, -47, 10,
- -126, 10, 10, 58, -47, 10, -126, 10,
- -48, 10, -66, 10, -48, 10, -68, 10,
- -47, 10, -125, 10, 10, 32, -48, 10,
- -74, 10, -48, 10, -75, 10, -47, 10,
- -128, -125, 10, -48, 10, -75, 10, -48,
- 10, -76, 10, -47, 10, -117, 10, -47,
- 10, -127, 10, -47, 10, -126, 10, -48,
- 10, -66, 10, -47, 10, -128, 10, -48,
- 10, -72, 10, -47, 10, -113, 10, -47,
- 10, -127, 10, -47, 10, -126, 10, -47,
- 10, -116, 10, -48, -47, 10, -78, 10,
- -48, 10, -66, 10, -48, 10, -71, 10,
- -47, 10, -127, 10, -47, 10, -126, 10,
- -48, 10, -78, 10, -48, 10, -66, 10,
- -126, -122, 10, -47, 10, -128, 10, -47,
- 10, -125, 10, -48, 10, -70, 10, -47,
- 10, -126, 10, -47, 10, -125, 10, -47,
- 10, -128, 10, -48, 10, -80, 10, 10,
- 32, -47, 10, -127, 10, -47, 10, -122,
- 10, -48, 10, -75, 10, -48, 10, -67,
- 10, -48, 10, -80, 10, -48, 10, -75,
- 10, -48, 10, -67, 10, -48, 10, -80,
- 10, -47, 10, -128, 10, -48, 10, -72,
- 10, -48, 10, -71, 10, -48, 10, -80,
- -66, 10, -48, 10, -70, 10, -48, 10,
- 32, -77, 10, -47, 10, -125, 10, -48,
- 10, -67, 10, -48, 10, -70, 10, -47,
- 10, -122, 10, -48, 10, -72, 10, -48,
- -47, 10, -66, 10, -48, 10, -67, 10,
- -48, 10, -80, 10, -48, 10, -69, 10,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, -48, -80, -66, -48,
- -70, -48, 32, -77, -47, -125, -48, -67,
- -48, -70, -47, -122, -48, -72, -48, -47,
- -66, -48, -67, -48, -80, -48, -69, -113,
- -69, -65, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 10, 10, 1, 2, 2, 9, 1,
- 1, 2, 2, 3, 3, 3, 3, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 5, 3, 2, 4, 3, 2,
- 4, 9, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 2, 1, 1, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 7,
- 11, 2, 9, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 1,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 5, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 6,
- 5, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 7, 11, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 7, 11, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 2, 1, 1, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 1, 1, 1, 1, 1,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 0, 0,
- 1, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 12, 23, 25, 28, 31, 42,
- 44, 46, 49, 52, 57, 62, 67, 72,
- 76, 80, 83, 85, 87, 89, 91, 93,
- 95, 97, 99, 101, 103, 105, 107, 109,
- 111, 113, 118, 125, 130, 134, 140, 144,
- 147, 153, 164, 166, 169, 171, 173, 175,
- 177, 179, 181, 183, 185, 187, 189, 191,
- 193, 195, 197, 199, 201, 203, 205, 207,
- 209, 211, 213, 216, 218, 220, 223, 225,
- 227, 229, 231, 233, 235, 237, 239, 241,
- 243, 245, 247, 249, 251, 253, 255, 257,
- 266, 278, 281, 292, 295, 299, 302, 305,
- 308, 311, 314, 317, 320, 323, 326, 329,
- 332, 335, 338, 341, 344, 347, 350, 353,
- 356, 359, 362, 365, 369, 372, 375, 378,
- 381, 384, 387, 390, 393, 396, 399, 402,
- 405, 408, 411, 414, 417, 420, 423, 426,
- 429, 432, 435, 438, 441, 444, 447, 450,
- 453, 457, 460, 463, 466, 469, 472, 475,
- 478, 481, 484, 487, 490, 493, 496, 499,
- 503, 506, 509, 512, 515, 518, 521, 524,
- 527, 530, 533, 536, 539, 542, 545, 548,
- 551, 554, 557, 560, 563, 566, 569, 572,
- 575, 578, 581, 584, 587, 590, 593, 596,
- 599, 602, 605, 608, 611, 614, 617, 620,
- 623, 626, 629, 632, 635, 639, 642, 645,
- 649, 652, 655, 658, 661, 664, 667, 670,
- 673, 676, 679, 683, 686, 689, 692, 695,
- 698, 701, 704, 707, 710, 713, 716, 719,
- 722, 725, 728, 731, 734, 737, 740, 743,
- 746, 748, 750, 752, 754, 756, 758, 760,
- 762, 764, 766, 768, 770, 772, 774, 777,
- 779, 782, 784, 786, 788, 790, 792, 794,
- 796, 798, 800, 802, 804, 806, 808, 810,
- 812, 814, 816, 818, 820, 822, 824, 826,
- 828, 830, 832, 834, 836, 843, 847, 850,
- 853, 856, 859, 862, 865, 868, 871, 874,
- 877, 880, 883, 886, 889, 892, 895, 898,
- 901, 904, 907, 910, 913, 916, 919, 922,
- 926, 929, 932, 935, 938, 941, 944, 947,
- 950, 952, 954, 956, 958, 960, 962, 965,
- 967, 969, 971, 973, 975, 977, 979, 981,
- 983, 985, 987, 989, 991, 993, 995, 997,
- 1005, 1011, 1014, 1017, 1020, 1023, 1026, 1029,
- 1032, 1035, 1038, 1041, 1044, 1047, 1050, 1053,
- 1056, 1059, 1062, 1065, 1069, 1072, 1075, 1078,
- 1081, 1084, 1087, 1090, 1093, 1096, 1099, 1102,
- 1105, 1108, 1111, 1114, 1117, 1120, 1123, 1126,
- 1129, 1132, 1135, 1138, 1141, 1145, 1148, 1151,
- 1154, 1157, 1160, 1163, 1166, 1169, 1172, 1175,
- 1178, 1181, 1184, 1188, 1191, 1194, 1197, 1200,
- 1203, 1206, 1209, 1212, 1215, 1218, 1221, 1224,
- 1227, 1230, 1233, 1236, 1239, 1242, 1245, 1248,
- 1251, 1254, 1257, 1260, 1263, 1266, 1269, 1272,
- 1275, 1278, 1281, 1284, 1287, 1290, 1293, 1296,
- 1299, 1302, 1305, 1308, 1311, 1314, 1317, 1320,
- 1323, 1326, 1329, 1333, 1336, 1339, 1342, 1345,
- 1348, 1351, 1354, 1357, 1360, 1363, 1366, 1369,
- 1372, 1375, 1378, 1381, 1384, 1387, 1390, 1393,
- 1396, 1399, 1401, 1403, 1405, 1407, 1409, 1411,
- 1413, 1415, 1417, 1419, 1421, 1423, 1425, 1427,
- 1429, 1431, 1433, 1435, 1437, 1439, 1441, 1443,
- 1445, 1447, 1449, 1451, 1453, 1455, 1457, 1459,
- 1461, 1463, 1465, 1467, 1476, 1488, 1491, 1494,
- 1498, 1501, 1504, 1507, 1510, 1513, 1516, 1519,
- 1522, 1525, 1528, 1531, 1534, 1537, 1540, 1543,
- 1546, 1549, 1552, 1555, 1558, 1561, 1564, 1568,
- 1571, 1574, 1577, 1580, 1583, 1586, 1589, 1592,
- 1595, 1598, 1601, 1604, 1607, 1610, 1613, 1616,
- 1619, 1622, 1625, 1628, 1631, 1634, 1637, 1640,
- 1643, 1646, 1649, 1652, 1656, 1659, 1662, 1665,
- 1668, 1671, 1674, 1677, 1680, 1683, 1686, 1689,
- 1692, 1695, 1698, 1701, 1704, 1707, 1710, 1713,
- 1716, 1719, 1722, 1725, 1728, 1731, 1734, 1737,
- 1740, 1744, 1747, 1750, 1754, 1757, 1760, 1763,
- 1766, 1769, 1772, 1775, 1778, 1781, 1784, 1788,
- 1791, 1794, 1797, 1800, 1803, 1806, 1809, 1812,
- 1815, 1818, 1821, 1824, 1827, 1830, 1833, 1836,
- 1839, 1842, 1845, 1848, 1851, 1854, 1856, 1858,
- 1860, 1862, 1864, 1866, 1868, 1870, 1872, 1874,
- 1876, 1878, 1880, 1882, 1884, 1893, 1905, 1908,
- 1911, 1915, 1918, 1921, 1924, 1927, 1930, 1933,
- 1936, 1939, 1942, 1945, 1948, 1951, 1954, 1957,
- 1960, 1963, 1966, 1969, 1972, 1975, 1978, 1981,
- 1985, 1988, 1991, 1995, 1998, 2001, 2004, 2007,
- 2010, 2013, 2016, 2019, 2022, 2025, 2028, 2031,
- 2034, 2037, 2040, 2043, 2046, 2049, 2052, 2055,
- 2058, 2061, 2064, 2067, 2070, 2073, 2076, 2079,
- 2082, 2086, 2089, 2092, 2095, 2098, 2101, 2104,
- 2107, 2110, 2113, 2116, 2119, 2122, 2125, 2128,
- 2131, 2134, 2137, 2140, 2143, 2146, 2149, 2152,
- 2155, 2158, 2162, 2165, 2168, 2171, 2174, 2177,
- 2180, 2183, 2186, 2189, 2192, 2195, 2198, 2201,
- 2205, 2208, 2211, 2214, 2217, 2220, 2223, 2226,
- 2229, 2232, 2235, 2238, 2241, 2244, 2247, 2250,
- 2253, 2256, 2259, 2262, 2265, 2268, 2271, 2274,
- 2277, 2280, 2283, 2286, 2289, 2292, 2295, 2298,
- 2301, 2304, 2307, 2310, 2313, 2316, 2319, 2323,
- 2326, 2329, 2333, 2336, 2339, 2342, 2345, 2348,
- 2351, 2354, 2357, 2360, 2363, 2366, 2370, 2373,
- 2376, 2379, 2382, 2385, 2388, 2391, 2394, 2397,
- 2400, 2403, 2406, 2409, 2412, 2415, 2418, 2421,
- 2424, 2427, 2430, 2433, 2435, 2438, 2440, 2442,
- 2445, 2447, 2449, 2451, 2453, 2455, 2457, 2459,
- 2461, 2463, 2465, 2467, 2470, 2472, 2474, 2476,
- 2478, 2480, 2482, 2484, 2486, 2488, 2490
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 844, 6, 6, 7, 17, 19, 3,
- 33, 36, 6, 0, 3, 42, 60, 3,
- 66, 46, 253, 326, 819, 825, 0, 4,
- 0, 6, 18, 5, 6, 18, 5, 2,
- 6, 6, 7, 17, 19, 3, 33, 36,
- 6, 0, 8, 0, 9, 0, 11, 10,
- 10, 11, 10, 10, 12, 12, 13, 12,
- 12, 12, 12, 13, 12, 12, 12, 12,
- 14, 12, 12, 12, 12, 15, 12, 12,
- 6, 16, 16, 0, 6, 16, 16, 0,
- 6, 18, 17, 6, 0, 20, 0, 21,
- 0, 22, 0, 23, 0, 24, 0, 25,
- 0, 26, 0, 27, 0, 28, 0, 29,
- 0, 30, 0, 31, 0, 32, 0, 846,
- 0, 0, 0, 0, 0, 34, 35, 6,
- 35, 35, 33, 34, 34, 6, 35, 33,
- 35, 0, 36, 37, 36, 0, 41, 40,
- 39, 37, 40, 38, 0, 39, 37, 38,
- 0, 39, 38, 41, 40, 39, 37, 40,
- 38, 2, 41, 41, 7, 17, 19, 3,
- 33, 36, 41, 0, 43, 0, 44, 48,
- 0, 45, 0, 46, 0, 47, 0, 3,
- 0, 49, 0, 50, 0, 51, 0, 52,
- 0, 53, 0, 54, 0, 55, 0, 56,
- 0, 57, 0, 58, 0, 59, 0, 3,
- 0, 61, 0, 62, 0, 63, 0, 64,
- 0, 65, 0, 3, 0, 67, 240, 0,
- 68, 0, 69, 0, 70, 74, 0, 71,
- 0, 72, 0, 73, 0, 3, 0, 75,
- 0, 76, 0, 77, 0, 78, 0, 79,
- 0, 80, 0, 81, 0, 82, 0, 83,
- 0, 84, 0, 85, 0, 87, 86, 87,
- 86, 88, 87, 87, 6, 226, 89, 6,
- 87, 86, 89, 91, 109, 89, 115, 95,
- 136, 144, 203, 208, 87, 86, 87, 90,
- 86, 2, 6, 6, 7, 17, 19, 3,
- 33, 36, 6, 0, 92, 87, 86, 93,
- 97, 87, 86, 94, 87, 86, 95, 87,
- 86, 96, 87, 86, 89, 87, 86, 98,
- 87, 86, 99, 87, 86, 100, 87, 86,
- 101, 87, 86, 102, 87, 86, 103, 87,
- 86, 104, 87, 86, 105, 87, 86, 106,
- 87, 86, 107, 87, 86, 108, 87, 86,
- 89, 87, 86, 110, 87, 86, 111, 87,
- 86, 112, 87, 86, 113, 87, 86, 114,
- 87, 86, 89, 87, 86, 116, 87, 123,
- 86, 117, 87, 86, 118, 87, 86, 119,
- 87, 86, 120, 87, 86, 121, 87, 86,
- 122, 87, 86, 89, 87, 86, 124, 87,
- 86, 125, 87, 86, 126, 87, 86, 127,
- 87, 86, 128, 87, 86, 129, 87, 86,
- 130, 87, 86, 131, 87, 86, 87, 132,
- 86, 133, 87, 86, 134, 87, 86, 135,
- 87, 86, 89, 87, 86, 137, 87, 86,
- 138, 87, 86, 139, 87, 86, 140, 87,
- 86, 141, 87, 86, 142, 87, 86, 143,
- 87, 86, 89, 87, 86, 145, 159, 87,
- 86, 146, 87, 86, 147, 87, 86, 148,
- 87, 86, 149, 87, 86, 150, 87, 86,
- 151, 87, 86, 152, 87, 86, 153, 87,
- 86, 154, 87, 86, 155, 87, 86, 156,
- 87, 86, 157, 87, 86, 158, 87, 86,
- 87, 90, 86, 160, 191, 87, 86, 161,
- 87, 86, 162, 87, 86, 163, 87, 86,
- 164, 87, 86, 165, 87, 86, 166, 87,
- 86, 167, 87, 86, 168, 87, 86, 169,
- 87, 86, 170, 87, 86, 171, 87, 86,
- 172, 87, 86, 173, 87, 86, 174, 87,
- 86, 87, 175, 86, 176, 87, 86, 177,
- 87, 86, 178, 87, 86, 179, 87, 86,
- 180, 87, 86, 181, 87, 86, 182, 87,
- 86, 183, 87, 86, 184, 87, 86, 185,
- 87, 86, 186, 87, 86, 187, 87, 86,
- 188, 87, 86, 189, 87, 86, 190, 87,
- 86, 158, 87, 86, 192, 87, 86, 193,
- 87, 86, 194, 87, 86, 195, 87, 86,
- 196, 87, 86, 197, 87, 86, 198, 87,
- 86, 199, 87, 86, 200, 87, 86, 201,
- 87, 86, 202, 87, 86, 158, 87, 86,
- 204, 87, 86, 205, 207, 87, 86, 206,
- 87, 86, 132, 87, 86, 118, 87, 90,
- 86, 209, 87, 86, 210, 87, 86, 211,
- 87, 86, 212, 87, 86, 213, 87, 86,
- 214, 87, 86, 215, 87, 86, 216, 87,
- 86, 217, 87, 86, 218, 87, 86, 219,
- 190, 87, 86, 220, 87, 86, 221, 87,
- 86, 222, 87, 86, 223, 87, 86, 224,
- 87, 86, 225, 87, 86, 158, 87, 86,
- 87, 227, 86, 87, 228, 86, 87, 229,
- 86, 87, 230, 86, 87, 231, 86, 87,
- 232, 86, 87, 233, 86, 87, 234, 86,
- 87, 235, 86, 87, 236, 86, 87, 237,
- 86, 87, 238, 86, 87, 239, 86, 87,
- 6, 86, 241, 0, 242, 0, 243, 0,
- 244, 0, 245, 0, 246, 0, 247, 0,
- 248, 0, 249, 0, 250, 0, 251, 0,
- 252, 0, 3, 0, 254, 0, 255, 320,
- 0, 256, 0, 257, 273, 0, 258, 0,
- 259, 0, 260, 0, 261, 0, 262, 0,
- 263, 0, 264, 0, 265, 0, 266, 0,
- 267, 0, 268, 0, 269, 0, 270, 0,
- 271, 0, 272, 0, 84, 0, 274, 0,
- 275, 0, 276, 0, 277, 0, 278, 0,
- 279, 0, 280, 0, 281, 0, 282, 0,
- 284, 283, 284, 283, 285, 284, 284, 6,
- 6, 284, 283, 286, 301, 284, 283, 287,
- 284, 283, 288, 284, 283, 289, 284, 283,
- 290, 284, 283, 291, 284, 283, 292, 284,
- 283, 293, 284, 283, 294, 284, 283, 295,
- 284, 283, 296, 284, 283, 297, 284, 283,
- 298, 284, 283, 299, 284, 283, 300, 284,
- 283, 284, 90, 283, 302, 284, 283, 303,
- 284, 283, 304, 284, 283, 305, 284, 283,
- 306, 284, 283, 307, 284, 283, 308, 284,
- 283, 309, 284, 283, 310, 284, 283, 311,
- 284, 283, 312, 319, 284, 283, 313, 284,
- 283, 314, 284, 283, 315, 284, 283, 316,
- 284, 283, 317, 284, 283, 318, 284, 283,
- 300, 284, 283, 300, 284, 283, 321, 0,
- 322, 0, 323, 0, 324, 0, 325, 0,
- 3, 0, 327, 472, 0, 328, 0, 329,
- 0, 330, 0, 331, 0, 332, 0, 333,
- 0, 334, 0, 335, 0, 336, 0, 337,
- 0, 338, 0, 339, 0, 340, 0, 341,
- 0, 343, 342, 343, 342, 344, 343, 343,
- 6, 458, 6, 343, 342, 345, 360, 388,
- 440, 343, 342, 346, 343, 342, 347, 343,
- 342, 348, 343, 342, 349, 343, 342, 350,
- 343, 342, 351, 343, 342, 352, 343, 342,
- 353, 343, 342, 354, 343, 342, 355, 343,
- 342, 356, 343, 342, 357, 343, 342, 358,
- 343, 342, 359, 343, 342, 343, 90, 342,
- 361, 343, 342, 362, 343, 342, 363, 343,
- 342, 364, 380, 343, 342, 365, 343, 342,
- 366, 343, 342, 367, 343, 342, 368, 343,
- 342, 369, 343, 342, 370, 343, 342, 371,
- 343, 342, 372, 343, 342, 373, 343, 342,
- 374, 343, 342, 375, 343, 342, 376, 343,
- 342, 377, 343, 342, 378, 343, 342, 379,
- 343, 342, 359, 343, 342, 381, 343, 342,
- 382, 343, 342, 383, 343, 342, 384, 343,
- 342, 385, 343, 342, 386, 343, 342, 387,
- 343, 342, 359, 343, 342, 389, 402, 343,
- 342, 390, 343, 342, 391, 343, 342, 392,
- 343, 342, 393, 343, 342, 394, 343, 342,
- 395, 343, 342, 396, 343, 342, 397, 343,
- 342, 398, 343, 342, 399, 343, 342, 400,
- 343, 342, 401, 343, 342, 359, 343, 342,
- 403, 428, 343, 342, 404, 343, 342, 405,
- 343, 342, 406, 343, 342, 407, 343, 342,
- 408, 343, 342, 409, 343, 342, 410, 343,
- 342, 411, 343, 342, 412, 343, 342, 413,
- 343, 342, 414, 343, 342, 415, 343, 342,
- 416, 343, 342, 417, 343, 342, 343, 418,
- 342, 419, 343, 342, 420, 343, 342, 421,
- 343, 342, 422, 343, 342, 423, 343, 342,
- 424, 343, 342, 425, 343, 342, 426, 343,
- 342, 427, 343, 342, 374, 343, 342, 429,
- 343, 342, 430, 343, 342, 431, 343, 342,
- 432, 343, 342, 433, 343, 342, 434, 343,
- 342, 435, 343, 342, 436, 343, 342, 437,
- 343, 342, 438, 343, 342, 439, 343, 342,
- 359, 343, 342, 441, 343, 342, 442, 343,
- 342, 443, 343, 342, 444, 343, 342, 445,
- 343, 342, 446, 343, 342, 447, 343, 342,
- 448, 343, 342, 449, 343, 342, 450, 343,
- 342, 451, 379, 343, 342, 452, 343, 342,
- 453, 343, 342, 454, 343, 342, 455, 343,
- 342, 456, 343, 342, 457, 343, 342, 359,
- 343, 342, 343, 459, 342, 343, 460, 342,
- 343, 461, 342, 343, 462, 342, 343, 463,
- 342, 343, 464, 342, 343, 465, 342, 343,
- 466, 342, 343, 467, 342, 343, 468, 342,
- 343, 469, 342, 343, 470, 342, 343, 471,
- 342, 343, 6, 342, 473, 629, 0, 474,
- 0, 475, 0, 476, 0, 477, 0, 478,
- 0, 479, 0, 480, 0, 481, 0, 482,
- 0, 483, 0, 484, 0, 485, 0, 486,
- 0, 487, 0, 488, 0, 489, 0, 490,
- 0, 491, 0, 492, 0, 493, 0, 494,
- 0, 495, 0, 496, 0, 497, 0, 498,
- 0, 499, 0, 500, 0, 501, 0, 502,
- 0, 503, 0, 504, 0, 505, 0, 507,
- 506, 507, 506, 508, 507, 507, 6, 615,
- 509, 6, 507, 506, 509, 510, 528, 509,
- 534, 514, 555, 563, 591, 596, 507, 506,
- 507, 90, 506, 511, 507, 506, 512, 516,
- 507, 506, 513, 507, 506, 514, 507, 506,
- 515, 507, 506, 509, 507, 506, 517, 507,
- 506, 518, 507, 506, 519, 507, 506, 520,
- 507, 506, 521, 507, 506, 522, 507, 506,
- 523, 507, 506, 524, 507, 506, 525, 507,
- 506, 526, 507, 506, 527, 507, 506, 509,
- 507, 506, 529, 507, 506, 530, 507, 506,
- 531, 507, 506, 532, 507, 506, 533, 507,
- 506, 509, 507, 506, 535, 507, 542, 506,
- 536, 507, 506, 537, 507, 506, 538, 507,
- 506, 539, 507, 506, 540, 507, 506, 541,
- 507, 506, 509, 507, 506, 543, 507, 506,
- 544, 507, 506, 545, 507, 506, 546, 507,
- 506, 547, 507, 506, 548, 507, 506, 549,
- 507, 506, 550, 507, 506, 507, 551, 506,
- 552, 507, 506, 553, 507, 506, 554, 507,
- 506, 509, 507, 506, 556, 507, 506, 557,
- 507, 506, 558, 507, 506, 559, 507, 506,
- 560, 507, 506, 561, 507, 506, 562, 507,
- 506, 509, 507, 506, 564, 578, 507, 506,
- 565, 507, 506, 566, 507, 506, 567, 507,
- 506, 568, 507, 506, 569, 507, 506, 570,
- 507, 506, 571, 507, 506, 572, 507, 506,
- 573, 507, 506, 574, 507, 506, 575, 507,
- 506, 576, 507, 506, 577, 507, 506, 507,
- 90, 506, 579, 507, 506, 580, 507, 506,
- 581, 507, 506, 582, 507, 506, 583, 507,
- 506, 584, 507, 506, 585, 507, 506, 586,
- 507, 506, 587, 507, 506, 588, 507, 506,
- 589, 507, 506, 590, 507, 506, 577, 507,
- 506, 592, 507, 506, 593, 595, 507, 506,
- 594, 507, 506, 551, 507, 506, 537, 507,
- 90, 506, 597, 507, 506, 598, 507, 506,
- 599, 507, 506, 600, 507, 506, 601, 507,
- 506, 602, 507, 506, 603, 507, 506, 604,
- 507, 506, 605, 507, 506, 606, 507, 506,
- 607, 614, 507, 506, 608, 507, 506, 609,
- 507, 506, 610, 507, 506, 611, 507, 506,
- 612, 507, 506, 613, 507, 506, 577, 507,
- 506, 577, 507, 506, 507, 616, 506, 507,
- 617, 506, 507, 618, 506, 507, 619, 506,
- 507, 620, 506, 507, 621, 506, 507, 622,
- 506, 507, 623, 506, 507, 624, 506, 507,
- 625, 506, 507, 626, 506, 507, 627, 506,
- 507, 628, 506, 507, 6, 506, 630, 0,
- 631, 0, 632, 0, 633, 0, 634, 0,
- 635, 0, 636, 0, 637, 0, 638, 0,
- 639, 0, 640, 0, 641, 0, 642, 0,
- 644, 643, 644, 643, 645, 644, 644, 6,
- 805, 646, 6, 644, 643, 646, 647, 665,
- 646, 671, 651, 703, 729, 781, 787, 644,
- 643, 644, 90, 643, 648, 644, 643, 649,
- 653, 644, 643, 650, 644, 643, 651, 644,
- 643, 652, 644, 643, 646, 644, 643, 654,
- 644, 643, 655, 644, 643, 656, 644, 643,
- 657, 644, 643, 658, 644, 643, 659, 644,
- 643, 660, 644, 643, 661, 644, 643, 662,
- 644, 643, 663, 644, 643, 664, 644, 643,
- 646, 644, 643, 666, 644, 643, 667, 644,
- 643, 668, 644, 643, 669, 644, 643, 670,
- 644, 643, 646, 644, 643, 672, 644, 690,
- 643, 673, 644, 643, 674, 644, 643, 675,
- 679, 644, 643, 676, 644, 643, 677, 644,
- 643, 678, 644, 643, 646, 644, 643, 680,
- 644, 643, 681, 644, 643, 682, 644, 643,
- 683, 644, 643, 684, 644, 643, 685, 644,
- 643, 686, 644, 643, 687, 644, 643, 688,
- 644, 643, 689, 644, 643, 644, 90, 643,
- 691, 644, 643, 692, 644, 643, 693, 644,
- 643, 694, 644, 643, 695, 644, 643, 696,
- 644, 643, 697, 644, 643, 698, 644, 643,
- 644, 699, 643, 700, 644, 643, 701, 644,
- 643, 702, 644, 643, 646, 644, 643, 704,
- 644, 643, 705, 723, 644, 643, 706, 644,
- 643, 707, 644, 643, 708, 644, 643, 709,
- 644, 643, 710, 644, 643, 711, 644, 643,
- 712, 644, 643, 713, 644, 643, 714, 644,
- 643, 715, 644, 643, 716, 644, 643, 717,
- 644, 643, 718, 644, 643, 719, 644, 643,
- 720, 644, 643, 721, 644, 643, 722, 644,
- 643, 689, 644, 643, 724, 644, 643, 725,
- 644, 643, 726, 644, 643, 727, 644, 643,
- 728, 644, 643, 646, 644, 643, 730, 743,
- 644, 643, 731, 644, 643, 732, 644, 643,
- 733, 644, 643, 734, 644, 643, 735, 644,
- 643, 736, 644, 643, 737, 644, 643, 738,
- 644, 643, 739, 644, 643, 740, 644, 643,
- 741, 644, 643, 742, 644, 643, 689, 644,
- 643, 744, 769, 644, 643, 745, 644, 643,
- 746, 644, 643, 747, 644, 643, 748, 644,
- 643, 749, 644, 643, 750, 644, 643, 751,
- 644, 643, 752, 644, 643, 753, 644, 643,
- 754, 644, 643, 755, 644, 643, 756, 644,
- 643, 757, 644, 643, 758, 644, 643, 644,
- 759, 643, 760, 644, 643, 761, 644, 643,
- 762, 644, 643, 763, 644, 643, 764, 644,
- 643, 765, 644, 643, 766, 644, 643, 767,
- 644, 643, 768, 644, 643, 717, 644, 643,
- 770, 644, 643, 771, 644, 643, 772, 644,
- 643, 773, 644, 643, 774, 644, 643, 775,
- 644, 643, 776, 644, 643, 777, 644, 643,
- 778, 644, 643, 779, 644, 643, 780, 644,
- 643, 689, 644, 643, 782, 644, 643, 783,
- 785, 644, 643, 784, 644, 643, 699, 644,
- 643, 786, 644, 90, 643, 675, 644, 643,
- 788, 644, 643, 789, 644, 643, 790, 644,
- 643, 791, 644, 643, 792, 644, 643, 793,
- 644, 643, 794, 644, 643, 795, 644, 643,
- 796, 644, 643, 797, 644, 643, 798, 722,
- 644, 643, 799, 644, 643, 800, 644, 643,
- 801, 644, 643, 802, 644, 643, 803, 644,
- 643, 804, 644, 643, 689, 644, 643, 644,
- 806, 643, 644, 807, 643, 644, 808, 643,
- 644, 809, 643, 644, 810, 643, 644, 811,
- 643, 644, 812, 643, 644, 813, 643, 644,
- 814, 643, 644, 815, 643, 644, 816, 643,
- 644, 817, 643, 644, 818, 643, 644, 6,
- 643, 820, 0, 821, 823, 0, 822, 0,
- 249, 0, 824, 4, 0, 70, 0, 826,
- 0, 827, 0, 828, 0, 829, 0, 830,
- 0, 831, 0, 832, 0, 833, 0, 834,
- 0, 835, 0, 836, 843, 0, 837, 0,
- 838, 0, 839, 0, 840, 0, 841, 0,
- 842, 0, 340, 0, 340, 0, 845, 0,
- 6, 0, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 29, 0, 54, 0, 5, 1, 0, 29,
- 1, 35, 0, 43, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 43, 0,
- 43, 149, 126, 57, 110, 23, 0, 29,
- 54, 0, 5, 1, 0, 29, 1, 35,
- 0, 43, 0, 43, 0, 43, 139, 48,
- 9, 106, 11, 0, 134, 45, 45, 45,
- 3, 122, 33, 33, 33, 0, 122, 33,
- 33, 33, 0, 122, 33, 0, 33, 0,
- 102, 7, 7, 43, 54, 0, 0, 43,
- 114, 25, 0, 54, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 43, 43, 43, 43, 0, 27, 118,
- 27, 27, 51, 27, 0, 54, 0, 1,
- 0, 43, 0, 0, 0, 43, 54, 37,
- 37, 87, 37, 37, 43, 0, 39, 0,
- 43, 0, 0, 54, 0, 0, 39, 0,
- 0, 96, 54, 0, 93, 90, 41, 96,
- 90, 99, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 84, 54, 0, 72, 33, 84, 72,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 54, 0, 54, 15,
- 0, 63, 130, 31, 60, 57, 31, 63,
- 57, 66, 31, 43, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 15, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 15, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 84, 54, 0, 81,
- 81, 0, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 21, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 84, 54, 0,
- 69, 33, 69, 0, 0, 0, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 13, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 13, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 54, 0, 78, 33,
- 84, 78, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 54, 0,
- 54, 19, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 19, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 19, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 19, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 84, 54, 0, 75,
- 33, 84, 75, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 54,
- 0, 54, 17, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 17, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 17, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 17,
- 0, 0, 43, 0, 0, 43, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 846;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/ru.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 1675 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/ru.c.rl"
-
-#line 1682 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/ru.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/ru.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/ru.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/ru.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/ru.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/ru.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/ru.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/ru.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/ru.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/ru.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/ru.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/ru.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/ru.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/ru.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/ru.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/ru.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/ru.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/ru.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/ru.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/ru.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/ru.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/ru.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/ru.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/ru.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1972 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/ru.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 2035 "ext/gherkin_lexer_ru/gherkin_lexer_ru.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/ru.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_ru()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Ru", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_sk/extconf.rb
index 000e7dd,000e7dd..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_sk/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_sk")
--have_library("c", "main")
--create_makefile("gherkin_lexer_sk")
diff --cc ext/gherkin_lexer_sk/gherkin_lexer_sk.c
index 39ecc13,e2e783f..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_sk/gherkin_lexer_sk.c
+++ /dev/null
@@@ -1,1298 -1,1739 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 17, 18, 19, 35, 36, 37,
- 39, 41, 46, 51, 56, 61, 65, 69,
- 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 89, 91, 96, 103, 108, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 145, 147, 149,
- 151, 153, 155, 157, 159, 161, 163, 165,
- 167, 169, 171, 173, 175, 191, 193, 196,
- 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 217, 219, 221, 223, 225,
- 227, 229, 231, 233, 235, 237, 239, 241,
- 243, 245, 247, 249, 251, 253, 255, 257,
- 259, 261, 263, 265, 267, 269, 271, 273,
- 275, 277, 280, 283, 285, 287, 289, 291,
- 293, 295, 297, 299, 301, 303, 305, 307,
- 309, 311, 313, 315, 317, 319, 321, 323,
- 325, 327, 329, 331, 333, 334, 335, 336,
- 337, 338, 339, 340, 341, 342, 343, 344,
- 358, 360, 362, 364, 366, 368, 370, 372,
- 374, 376, 378, 380, 382, 384, 386, 388,
- 391, 393, 395, 397, 399, 401, 403, 405,
- 407, 409, 411, 413, 415, 417, 419, 421,
- 423, 425, 427, 429, 431, 433, 436, 438,
- 440, 442, 444, 446, 448, 450, 452, 454,
- 456, 458, 460, 462, 464, 466, 468, 470,
- 472, 474, 476, 477, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 493, 495, 497,
- 499, 501, 503, 505, 507, 509, 511, 513,
- 515, 516, 517, 518, 519, 520, 521, 522,
- 523, 524, 538, 540, 542, 544, 546, 548,
- 550, 552, 554, 556, 558, 560, 562, 564,
- 566, 568, 571, 573, 575, 577, 579, 581,
- 583, 585, 587, 589, 591, 593, 595, 597,
- 599, 601, 603, 605, 607, 609, 611, 613,
- 617, 619, 621, 623, 625, 627, 629, 631,
- 633, 635, 637, 639, 641, 643, 645, 647,
- 649, 651, 653, 655, 657, 659, 661, 663,
- 665, 666, 667, 671, 677, 680, 682, 688,
- 704, 707, 709, 711, 713, 715, 717, 720,
- 722, 724, 726, 728, 730, 732, 734, 736,
- 738, 740, 742, 744, 746, 748, 750, 752,
- 754, 756, 758, 760, 762
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 75, 78, 80, 83, 84, 124, 9,
- 13, -69, -65, 10, 32, 34, 35, 37,
- 42, 64, 65, 75, 78, 80, 83, 84,
- 124, 9, 13, 34, 34, 10, 13, 10,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 9,
- 13, 10, 32, 9, 13, 10, 13, 10,
- 95, 70, 69, 65, 84, 85, 82, 69,
- 95, 69, 78, 68, 95, 37, 32, 10,
- 13, 10, 13, 13, 32, 64, 9, 10,
- 9, 10, 13, 32, 64, 11, 12, 10,
- 32, 64, 9, 13, 32, 108, 101, 101,
- -60, -113, -61, -95, -60, -115, 114, 116,
- 32, 83, 99, 101, 110, -61, -95, 114,
- 117, 58, 10, 10, 10, 32, 35, 37,
- 42, 64, 65, 75, 80, 83, 84, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 32, 34, 35, 37, 42, 64, 65, 75,
- 78, 80, 83, 84, 124, 9, 13, 111,
- 114, -59, 107, 122, -66, 105, 97, 100,
- 97, 118, 107, 97, 58, 10, 10, 10,
- 32, 35, 37, 64, 78, 80, 83, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, -61, 10, -95,
- 10, -60, 10, -115, 10, 10, 114, 10,
- 116, 10, 32, 10, 83, 10, 99, 10,
- 101, 10, 110, -61, 10, -95, 10, 10,
- 114, 10, 117, 10, 58, 10, 111, 114,
- -59, 10, 122, -66, 10, 10, 105, 10,
- 97, 10, 100, 10, 97, 10, 118, 10,
- 107, 10, 97, 10, 97, 10, 100, 10,
- 105, 10, 101, -61, 10, -83, 10, 10,
- 107, 10, 108, 10, 97, 10, 100, 10,
- 121, 10, 99, 10, 101, 10, 110, -61,
- 10, -95, 10, 10, 114, 105, 97, -60,
- -66, 97, 100, 105, 101, 58, 10, 10,
- 10, 32, 35, 37, 42, 64, 65, 75,
- 78, 80, 83, 84, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 32, 108, 10,
- 101, 10, 101, -60, 10, -113, 10, -61,
- 10, -95, 10, -60, 10, -115, 10, 10,
- 114, 10, 116, 10, 32, 10, 83, 10,
- 99, 10, 101, 10, 110, -61, 10, -95,
- 10, 10, 114, 10, 117, 10, 58, 10,
- 111, -59, 10, 107, -66, 10, 10, 105,
- 10, 97, 10, 100, 10, 97, 10, 118,
- 10, 107, 10, 97, 10, 105, 10, 97,
- -60, 10, -66, 10, 10, 99, 10, 101,
- 10, 110, -61, 10, -95, 10, 10, 114,
- 10, 97, 10, 107, -61, -83, 107, 108,
- 97, 100, 121, 58, 10, 10, 10, 32,
- 35, 80, 124, 9, 13, 10, 111, -59,
- 10, -66, 10, 10, 105, 10, 97, 10,
- 100, 10, 97, 10, 118, 10, 107, 10,
- 97, 10, 58, 99, 101, 110, -61, -95,
- 114, 58, 10, 10, 10, 32, 35, 37,
- 42, 64, 65, 75, 78, 80, 83, 84,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 32,
- 10, 32, 108, 10, 101, 10, 101, -60,
- 10, -113, 10, -61, 10, -95, 10, -60,
- 10, -115, 10, 10, 114, 10, 116, 10,
- 32, 10, 83, 10, 99, 10, 101, 10,
- 110, -61, 10, -95, 10, 10, 114, 10,
- 117, 10, 58, 10, 111, -59, 10, 107,
- 122, -66, 10, 10, 105, 10, 97, 10,
- 100, 10, 97, 10, 118, 10, 107, 10,
- 97, 10, 105, 10, 97, -60, 10, -66,
- 10, 10, 97, 10, 100, 10, 105, 10,
- 101, 10, 99, 10, 101, 10, 110, -61,
- 10, -95, 10, 10, 114, 10, 97, 10,
- 107, 97, 107, 32, 124, 9, 13, 10,
- 32, 92, 124, 9, 13, 10, 92, 124,
- 10, 92, 10, 32, 92, 124, 9, 13,
- 10, 32, 34, 35, 37, 42, 64, 65,
- 75, 78, 80, 83, 84, 124, 9, 13,
- 10, 32, 108, 10, 101, 10, 101, -60,
- 10, -113, 10, 10, 111, -59, 10, 107,
- -66, 10, 10, 105, 10, 97, 10, 100,
- 10, 97, 10, 118, 10, 107, 10, 97,
- 10, 58, 10, 105, 10, 97, -60, 10,
- -66, 10, 10, 99, 10, 101, 10, 110,
- -61, 10, -95, 10, 10, 114, 10, 97,
- 10, 107, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 15, 1, 1, 14, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 11, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 14, 2, 3, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 8, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 12,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 5, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 12, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 4,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 2, 4, 3, 2, 4, 14,
- 3, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 0, 0, 1, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 17, 19, 21, 37, 39, 41,
- 44, 47, 52, 57, 62, 67, 71, 75,
- 78, 80, 82, 84, 86, 88, 90, 92,
- 94, 96, 98, 100, 102, 104, 106, 108,
- 110, 113, 116, 121, 128, 133, 136, 138,
- 140, 142, 144, 146, 148, 150, 152, 154,
- 156, 158, 160, 162, 164, 166, 168, 170,
- 172, 174, 176, 178, 180, 193, 196, 199,
- 202, 205, 208, 211, 214, 217, 220, 223,
- 226, 229, 232, 235, 238, 254, 257, 261,
- 263, 265, 267, 269, 271, 273, 275, 277,
- 279, 281, 283, 293, 296, 299, 302, 305,
- 308, 311, 314, 317, 320, 323, 326, 329,
- 332, 335, 338, 341, 344, 347, 350, 353,
- 356, 359, 362, 365, 368, 371, 374, 377,
- 380, 383, 387, 391, 394, 397, 400, 403,
- 406, 409, 412, 415, 418, 421, 424, 427,
- 430, 433, 436, 439, 442, 445, 448, 451,
- 454, 457, 460, 463, 466, 468, 470, 472,
- 474, 476, 478, 480, 482, 484, 486, 488,
- 502, 505, 508, 511, 514, 517, 520, 523,
- 526, 529, 532, 535, 538, 541, 544, 547,
- 551, 554, 557, 560, 563, 566, 569, 572,
- 575, 578, 581, 584, 587, 590, 593, 596,
- 599, 602, 605, 608, 611, 614, 618, 621,
- 624, 627, 630, 633, 636, 639, 642, 645,
- 648, 651, 654, 657, 660, 663, 666, 669,
- 672, 675, 678, 680, 682, 684, 686, 688,
- 690, 692, 694, 696, 698, 705, 708, 711,
- 714, 717, 720, 723, 726, 729, 732, 735,
- 738, 740, 742, 744, 746, 748, 750, 752,
- 754, 756, 770, 773, 776, 779, 782, 785,
- 788, 791, 794, 797, 800, 803, 806, 809,
- 812, 815, 819, 822, 825, 828, 831, 834,
- 837, 840, 843, 846, 849, 852, 855, 858,
- 861, 864, 867, 870, 873, 876, 879, 882,
- 887, 890, 893, 896, 899, 902, 905, 908,
- 911, 914, 917, 920, 923, 926, 929, 932,
- 935, 938, 941, 944, 947, 950, 953, 956,
- 959, 961, 963, 967, 973, 977, 980, 986,
- 1002, 1006, 1009, 1012, 1015, 1018, 1021, 1025,
- 1028, 1031, 1034, 1037, 1040, 1043, 1046, 1049,
- 1052, 1055, 1058, 1061, 1064, 1067, 1070, 1073,
- 1076, 1079, 1082, 1085, 1088
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 39, 42, 77, 240, 312, 314, 4,
- 0, 3, 0, 4, 0, 4, 4, 5,
- 15, 17, 31, 34, 37, 39, 42, 77,
- 240, 312, 314, 4, 0, 6, 0, 7,
- 0, 9, 8, 8, 9, 8, 8, 10,
- 10, 11, 10, 10, 10, 10, 11, 10,
- 10, 10, 10, 12, 10, 10, 10, 10,
- 13, 10, 10, 4, 14, 14, 0, 4,
- 14, 14, 0, 4, 16, 15, 4, 0,
- 18, 0, 19, 0, 20, 0, 21, 0,
- 22, 0, 23, 0, 24, 0, 25, 0,
- 26, 0, 27, 0, 28, 0, 29, 0,
- 30, 0, 348, 0, 32, 0, 4, 16,
- 33, 4, 16, 33, 0, 0, 0, 0,
- 35, 36, 4, 36, 36, 34, 35, 35,
- 4, 36, 34, 36, 0, 32, 38, 0,
- 31, 0, 40, 0, 41, 0, 31, 0,
- 43, 0, 44, 0, 45, 0, 46, 0,
- 47, 0, 48, 0, 49, 0, 50, 0,
- 51, 0, 52, 0, 53, 0, 54, 0,
- 55, 0, 56, 0, 57, 0, 58, 0,
- 60, 59, 60, 59, 60, 60, 4, 61,
- 75, 4, 320, 322, 325, 340, 346, 60,
- 59, 60, 62, 59, 60, 63, 59, 60,
- 64, 59, 60, 65, 59, 60, 66, 59,
- 60, 67, 59, 60, 68, 59, 60, 69,
- 59, 60, 70, 59, 60, 71, 59, 60,
- 72, 59, 60, 73, 59, 60, 74, 59,
- 60, 4, 59, 60, 76, 59, 4, 4,
- 5, 15, 17, 31, 34, 37, 39, 42,
- 77, 240, 312, 314, 4, 0, 78, 218,
- 0, 79, 148, 152, 0, 80, 0, 81,
- 0, 82, 0, 83, 0, 84, 0, 85,
- 0, 86, 0, 87, 0, 88, 0, 90,
- 89, 90, 89, 90, 90, 4, 91, 4,
- 105, 121, 142, 90, 89, 90, 92, 89,
- 90, 93, 89, 90, 94, 89, 90, 95,
- 89, 90, 96, 89, 90, 97, 89, 90,
- 98, 89, 90, 99, 89, 90, 100, 89,
- 90, 101, 89, 90, 102, 89, 90, 103,
- 89, 90, 104, 89, 90, 4, 89, 106,
- 90, 89, 107, 90, 89, 108, 90, 89,
- 109, 90, 89, 90, 110, 89, 90, 111,
- 89, 90, 112, 89, 90, 113, 89, 90,
- 114, 89, 90, 115, 89, 90, 116, 89,
- 117, 90, 89, 118, 90, 89, 90, 119,
- 89, 90, 120, 89, 90, 76, 89, 90,
- 122, 135, 89, 123, 90, 131, 89, 124,
- 90, 89, 90, 125, 89, 90, 126, 89,
- 90, 127, 89, 90, 128, 89, 90, 129,
- 89, 90, 130, 89, 90, 120, 89, 90,
- 132, 89, 90, 133, 89, 90, 134, 89,
- 90, 120, 89, 136, 90, 89, 137, 90,
- 89, 90, 138, 89, 90, 139, 89, 90,
- 140, 89, 90, 141, 89, 90, 120, 89,
- 90, 143, 89, 90, 144, 89, 90, 145,
- 89, 146, 90, 89, 147, 90, 89, 90,
- 120, 89, 149, 0, 150, 0, 151, 0,
- 31, 0, 153, 0, 154, 0, 155, 0,
- 156, 0, 157, 0, 159, 158, 159, 158,
- 159, 159, 4, 160, 174, 4, 175, 177,
- 180, 196, 210, 216, 159, 158, 159, 161,
- 158, 159, 162, 158, 159, 163, 158, 159,
- 164, 158, 159, 165, 158, 159, 166, 158,
- 159, 167, 158, 159, 168, 158, 159, 169,
- 158, 159, 170, 158, 159, 171, 158, 159,
- 172, 158, 159, 173, 158, 159, 4, 158,
- 159, 76, 158, 159, 76, 176, 158, 159,
- 174, 158, 159, 178, 158, 179, 159, 158,
- 174, 159, 158, 181, 159, 158, 182, 159,
- 158, 183, 159, 158, 184, 159, 158, 159,
- 185, 158, 159, 186, 158, 159, 187, 158,
- 159, 188, 158, 159, 189, 158, 159, 190,
- 158, 159, 191, 158, 192, 159, 158, 193,
- 159, 158, 159, 194, 158, 159, 195, 158,
- 159, 76, 158, 159, 197, 158, 198, 159,
- 206, 158, 199, 159, 158, 159, 200, 158,
- 159, 201, 158, 159, 202, 158, 159, 203,
- 158, 159, 204, 158, 159, 205, 158, 159,
- 195, 158, 159, 207, 158, 159, 208, 158,
- 209, 159, 158, 174, 159, 158, 159, 211,
- 158, 159, 212, 158, 159, 213, 158, 214,
- 159, 158, 215, 159, 158, 159, 195, 158,
- 159, 217, 158, 159, 174, 158, 219, 0,
- 220, 0, 221, 0, 222, 0, 223, 0,
- 224, 0, 225, 0, 226, 0, 228, 227,
- 228, 227, 228, 228, 4, 229, 4, 228,
- 227, 228, 230, 227, 231, 228, 227, 232,
- 228, 227, 228, 233, 227, 228, 234, 227,
- 228, 235, 227, 228, 236, 227, 228, 237,
- 227, 228, 238, 227, 228, 239, 227, 228,
- 76, 227, 241, 0, 242, 0, 243, 0,
- 244, 0, 245, 0, 246, 0, 247, 0,
- 249, 248, 249, 248, 249, 249, 4, 250,
- 264, 4, 265, 267, 270, 286, 304, 310,
- 249, 248, 249, 251, 248, 249, 252, 248,
- 249, 253, 248, 249, 254, 248, 249, 255,
- 248, 249, 256, 248, 249, 257, 248, 249,
- 258, 248, 249, 259, 248, 249, 260, 248,
- 249, 261, 248, 249, 262, 248, 249, 263,
- 248, 249, 4, 248, 249, 76, 248, 249,
- 76, 266, 248, 249, 264, 248, 249, 268,
- 248, 269, 249, 248, 264, 249, 248, 271,
- 249, 248, 272, 249, 248, 273, 249, 248,
- 274, 249, 248, 249, 275, 248, 249, 276,
- 248, 249, 277, 248, 249, 278, 248, 249,
- 279, 248, 249, 280, 248, 249, 281, 248,
- 282, 249, 248, 283, 249, 248, 249, 284,
- 248, 249, 285, 248, 249, 76, 248, 249,
- 287, 248, 288, 249, 296, 300, 248, 289,
- 249, 248, 249, 290, 248, 249, 291, 248,
- 249, 292, 248, 249, 293, 248, 249, 294,
- 248, 249, 295, 248, 249, 285, 248, 249,
- 297, 248, 249, 298, 248, 299, 249, 248,
- 264, 249, 248, 249, 301, 248, 249, 302,
- 248, 249, 303, 248, 249, 285, 248, 249,
- 305, 248, 249, 306, 248, 249, 307, 248,
- 308, 249, 248, 309, 249, 248, 249, 285,
- 248, 249, 311, 248, 249, 264, 248, 313,
- 0, 31, 0, 314, 315, 314, 0, 319,
- 318, 317, 315, 318, 316, 0, 317, 315,
- 316, 0, 317, 316, 319, 318, 317, 315,
- 318, 316, 319, 319, 5, 15, 17, 31,
- 34, 37, 39, 42, 77, 240, 312, 314,
- 319, 0, 60, 76, 321, 59, 60, 75,
- 59, 60, 323, 59, 324, 60, 59, 75,
- 60, 59, 60, 326, 59, 327, 60, 336,
- 59, 328, 60, 59, 60, 329, 59, 60,
- 330, 59, 60, 331, 59, 60, 332, 59,
- 60, 333, 59, 60, 334, 59, 60, 335,
- 59, 60, 76, 59, 60, 337, 59, 60,
- 338, 59, 339, 60, 59, 75, 60, 59,
- 60, 341, 59, 60, 342, 59, 60, 343,
- 59, 344, 60, 59, 345, 60, 59, 60,
- 335, 59, 60, 347, 59, 60, 75, 59,
- 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 54, 0, 5,
- 1, 0, 29, 1, 29, 29, 29, 29,
- 29, 29, 35, 0, 43, 0, 43, 0,
- 43, 139, 48, 9, 106, 11, 0, 134,
- 45, 45, 45, 3, 122, 33, 33, 33,
- 0, 122, 33, 33, 33, 0, 122, 33,
- 0, 33, 0, 102, 7, 7, 43, 54,
- 0, 0, 43, 114, 25, 0, 54, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 149, 126,
- 57, 110, 23, 0, 43, 43, 43, 43,
- 0, 27, 118, 27, 27, 51, 27, 0,
- 54, 0, 1, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 78, 33,
- 84, 78, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 19, 0, 54, 19, 0, 130, 31,
- 60, 57, 31, 63, 57, 63, 63, 63,
- 63, 63, 63, 66, 31, 43, 0, 0,
- 43, 0, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 69, 33, 69,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 54,
- 0, 0, 0, 0, 54, 0, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 72, 33, 84, 72, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 15, 0,
- 54, 15, 0, 54, 15, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 15, 0, 54, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 81, 84, 81, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 21, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 75, 33,
- 84, 75, 84, 84, 84, 84, 84, 84,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 17, 0, 54, 17, 0, 54,
- 17, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 54,
- 0, 0, 0, 54, 0, 0, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 43, 0, 0, 0, 43, 54,
- 37, 37, 87, 37, 37, 43, 0, 39,
- 0, 43, 0, 0, 54, 0, 0, 39,
- 0, 0, 54, 0, 93, 90, 41, 96,
- 90, 96, 96, 96, 96, 96, 96, 99,
- 0, 43, 54, 19, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 0, 54, 0,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 19, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 348;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 902 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
-
- #line 909 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1199 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1262 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sk.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_sk()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Sk", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/sk.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/sk.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 21, 22, 23, 43, 44, 45,
- 47, 49, 54, 59, 64, 69, 73, 77,
- 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 97, 99, 104, 111, 116, 119, 123,
- 127, 130, 133, 136, 139, 142, 145, 148,
- 151, 154, 157, 160, 163, 166, 169, 172,
- 173, 174, 175, 176, 177, 178, 179, 180,
- 181, 182, 195, 197, 199, 201, 203, 205,
- 207, 209, 211, 213, 215, 217, 219, 221,
- 223, 225, 227, 229, 231, 233, 235, 237,
- 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 274, 276, 277, 278, 279, 295, 297,
- 299, 301, 303, 305, 307, 309, 311, 313,
- 315, 317, 319, 321, 323, 325, 329, 351,
- 352, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 367, 371,
- 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, 384, 385, 386, 387,
- 388, 389, 390, 391, 409, 411, 413, 415,
- 417, 419, 421, 423, 425, 427, 429, 431,
- 433, 435, 437, 439, 443, 465, 466, 467,
- 468, 469, 470, 471, 472, 473, 474, 492,
- 494, 496, 498, 500, 502, 504, 506, 508,
- 510, 512, 514, 516, 518, 520, 522, 526,
- 548, 549, 550, 551, 552, 553, 554, 555,
- 556, 557, 558, 559, 560, 561, 562, 563,
- 564, 565, 566, 567, 568, 569, 570, 571,
- 572, 574, 575, 576, 577, 578, 579, 580,
- 581, 582, 583, 584, 585, 586, 587, 588,
- 589, 593, 599, 602, 604, 610, 630, 632,
- 634, 636, 638, 640, 642, 644, 646, 648,
- 650, 652, 654, 656, 658, 660, 662, 664,
- 666, 668, 670, 672, 674, 676, 678, 680,
- 683, 685, 687, 689, 691, 693, 695, 697,
- 699, 701, 703, 705, 707, 709, 711, 716,
- 718, 720, 722, 724, 726, 728, 730, 732,
- 734, 736, 738, 740, 742, 744, 746, 748,
- 750, 752, 754, 756, 758, 760, 762, 764,
- 766, 768, 770, 772, 774, 776, 778, 780,
- 782, 784, 786, 788, 790, 792, 794, 796,
- 798, 800, 802, 804, 806, 808, 810, 812,
- 813, 814, 815, 816, 817, 818, 819, 820,
- 821, 822, 823, 824, 825, 826, 827, 829,
- 831, 833, 835, 837, 839, 841, 843, 845,
- 847, 849, 851, 853, 855, 857, 859, 861,
- 863, 865, 867, 869, 871, 873, 875, 877,
- 880, 882, 884, 886, 888, 890, 892, 894,
- 896, 898, 900, 902, 904, 906, 908, 912,
- 914, 916, 918, 920, 922, 924, 926, 928,
- 930, 932, 934, 936, 938, 940, 942, 944,
- 946, 948, 950, 952, 954, 956, 958, 960,
- 962, 964, 966, 968, 970, 972, 974, 976,
- 978, 980, 982, 984, 986, 988, 990, 992,
- 994, 996, 998, 999, 1000, 1001, 1002, 1003,
- 1004, 1005, 1006, 1007, 1008, 1017, 1019, 1021,
- 1023, 1025, 1027, 1029, 1031, 1033, 1035, 1037,
- 1039, 1041, 1043, 1045, 1047, 1049, 1051, 1053,
- 1055, 1057, 1059, 1061, 1063, 1065, 1067, 1069,
- 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077,
- 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1086,
- 1088, 1090, 1092, 1094, 1096, 1098, 1100, 1102,
- 1104, 1106, 1108, 1112, 1114, 1116, 1118, 1120,
- 1122, 1124, 1126, 1128, 1130, 1132, 1134, 1136,
- 1138, 1140, 1142, 1144, 1146, 1148, 1150, 1152,
- 1154, 1156, 1158, 1160, 1162, 1164, 1166, 1168,
- 1170, 1172, 1174, 1176, 1178, 1180, 1182, 1184,
- 1186, 1188, 1190, 1192, 1194, 1196, 1198, 1200,
- 1202, 1204, 1206, 1208, 1210, 1212, 1214, 1216,
- 1218, 1220, 1222, 1224, 1226, 1229, 1231, 1233,
- 1235, 1237, 1239, 1241, 1243, 1245, 1247, 1249,
- 1251, 1253, 1255, 1258, 1261, 1263, 1265, 1267,
- 1269, 1271, 1273, 1275, 1277, 1279, 1281, 1283,
- 1285, 1287, 1289, 1291, 1293, 1295, 1297, 1299,
- 1301, 1303, 1305, 1307, 1309, 1311, 1313, 1315,
- 1317, 1319, 1321, 1323, 1325, 1327
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 70, 75, 78, 79, 80, 83, 84,
- 86, 90, 124, 9, 13, -69, -65, 10,
- 32, 34, 35, 37, 42, 64, 65, 70,
- 75, 78, 79, 80, 83, 84, 86, 90,
- 124, 9, 13, 34, 34, 10, 13, 10,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 9,
- 13, 10, 32, 9, 13, 10, 13, 10,
- 95, 70, 69, 65, 84, 85, 82, 69,
- 95, 69, 78, 68, 95, 37, 32, 10,
- 13, 10, 13, 13, 32, 64, 9, 10,
- 9, 10, 13, 32, 64, 11, 12, 10,
- 32, 64, 9, 13, 32, 107, 108, 10,
- 13, 116, 122, 10, 13, 97, 105, 10,
- 13, 107, 10, 13, 116, 10, 13, 105,
- 10, 13, 101, -59, 10, 13, -66, 10,
- 13, 10, 13, 32, -61, 10, 13, -95,
- 10, 13, 10, 13, 114, 10, 13, 111,
- 10, 13, 118, 10, 13, 101, -59, 10,
- 13, -120, 10, 13, 101, 117, 110, 107,
- 99, 105, 97, 58, 10, 10, 10, 32,
- 35, 37, 64, 70, 78, 79, 80, 83,
- 86, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 117, 10, 110, 10, 107, 10, 99, 10,
- 105, 10, 97, 10, 58, 10, 32, 34,
- 35, 37, 42, 64, 65, 70, 75, 78,
- 79, 80, 83, 84, 86, 90, 124, 9,
- 13, 101, -60, -113, -61, -95, -60, -115,
- 114, 116, 32, 83, 99, 101, 110, -61,
- -95, 114, 97, 117, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 65, 70, 75,
- 80, 83, 84, 86, 90, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 32, 10, 32, 107,
- 108, 10, 32, 34, 35, 37, 42, 64,
- 65, 70, 75, 78, 79, 80, 83, 84,
- 86, 90, 116, 122, 124, 9, 13, 115,
- 110, 111, 118, 97, 32, 83, 99, 101,
- 110, -61, -95, 114, 97, 111, 114, -59,
- 107, 116, 122, -66, 105, 97, 100, 97,
- 118, 107, 105, 97, -60, -66, 111, 109,
- 97, 100, 105, 101, 58, 10, 10, 10,
- 32, 35, 37, 42, 64, 65, 70, 75,
- 78, 79, 80, 83, 84, 86, 90, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 32, 107, 108, 10, 32, 34, 35, 37,
- 42, 64, 65, 70, 75, 78, 79, 80,
- 83, 84, 86, 90, 116, 122, 124, 9,
- 13, 99, 101, 110, -61, -95, 114, 58,
- 10, 10, 10, 32, 35, 37, 42, 64,
- 65, 70, 75, 78, 79, 80, 83, 84,
- 86, 90, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, 10, 32, 107, 108, 10, 32,
- 34, 35, 37, 42, 64, 65, 70, 75,
- 78, 79, 80, 83, 84, 86, 90, 116,
- 122, 124, 9, 13, 97, 107, 108, 97,
- 115, 116, 110, 111, 115, -59, -91, 97,
- 32, 112, 114, 101, 100, 112, 111, 107,
- 108, 97, 100, 117, 97, 105, 107, 116,
- 105, 101, -59, -66, 32, -61, -95, 114,
- 111, 118, 101, -59, -120, 32, 124, 9,
- 13, 10, 32, 92, 124, 9, 13, 10,
- 92, 124, 10, 92, 10, 32, 92, 124,
- 9, 13, 10, 32, 34, 35, 37, 42,
- 64, 65, 70, 75, 78, 79, 80, 83,
- 84, 86, 90, 124, 9, 13, 10, 101,
- 10, 117, 10, 110, 10, 107, 10, 99,
- 10, 105, 10, 97, 10, 58, 10, 101,
- -60, 10, -113, 10, -61, 10, -95, 10,
- -60, 10, -115, 10, 10, 114, 10, 116,
- 10, 32, 10, 83, 10, 99, 10, 101,
- 10, 110, -61, 10, -95, 10, 10, 114,
- 10, 97, 117, 10, 115, 10, 110, 10,
- 111, 10, 118, 10, 97, 10, 32, 10,
- 83, 10, 99, 10, 101, 10, 110, -61,
- 10, -95, 10, 10, 114, 10, 111, -59,
- 10, 107, 116, 122, -66, 10, 10, 105,
- 10, 97, 10, 100, 10, 97, 10, 118,
- 10, 107, 10, 105, 10, 97, -60, 10,
- -66, 10, 10, 111, 10, 109, 10, 97,
- 10, 100, 10, 105, 10, 101, 10, 99,
- 10, 101, 10, 110, -61, 10, -95, 10,
- 10, 114, 10, 97, 10, 107, 10, 108,
- 10, 97, 10, 115, 10, 116, 10, 110,
- 10, 111, 10, 115, -59, 10, -91, 10,
- 10, 97, 10, 32, 10, 112, 10, 114,
- 10, 101, 10, 100, 10, 112, 10, 111,
- 10, 107, 10, 108, 10, 97, 10, 100,
- 10, 117, 97, 105, 107, 116, 105, 101,
- -59, -66, 32, -61, -95, 114, 111, 118,
- 101, -59, -120, 10, 101, 10, 117, 10,
- 110, 10, 107, 10, 99, 10, 105, 10,
- 97, 10, 58, 10, 101, -60, 10, -113,
- 10, -61, 10, -95, 10, -60, 10, -115,
- 10, 10, 114, 10, 116, 10, 32, 10,
- 83, 10, 99, 10, 101, 10, 110, -61,
- 10, -95, 10, 10, 114, 10, 97, 117,
- 10, 115, 10, 110, 10, 111, 10, 118,
- 10, 97, 10, 32, 10, 83, 10, 99,
- 10, 101, 10, 110, -61, 10, -95, 10,
- 10, 114, 10, 111, -59, 10, 107, 116,
- -66, 10, 10, 105, 10, 97, 10, 100,
- 10, 97, 10, 118, 10, 107, 10, 105,
- 10, 97, -60, 10, -66, 10, 10, 111,
- 10, 109, 10, 99, 10, 101, 10, 110,
- -61, 10, -95, 10, 10, 114, 10, 97,
- 10, 107, 10, 108, 10, 97, 10, 115,
- 10, 116, 10, 110, 10, 111, 10, 115,
- -59, 10, -91, 10, 10, 97, 10, 32,
- 10, 112, 10, 114, 10, 101, 10, 100,
- 10, 112, 10, 111, 10, 107, 10, 108,
- 10, 97, 10, 100, 10, 117, -61, -83,
- 107, 108, 97, 100, 121, 58, 10, 10,
- 10, 32, 35, 70, 80, 86, 124, 9,
- 13, 10, 117, 10, 110, 10, 107, 10,
- 99, 10, 105, 10, 97, 10, 58, 10,
- 111, -59, 10, -66, 10, 10, 105, 10,
- 97, 10, 100, 10, 97, 10, 118, 10,
- 107, 10, 108, 10, 97, 10, 115, 10,
- 116, 10, 110, 10, 111, 10, 115, -59,
- 10, -91, 10, 97, 105, 107, 116, 105,
- 101, -59, -66, 32, -61, -95, 114, 111,
- 118, 101, -59, -120, 10, 101, 10, 117,
- 10, 110, 10, 107, 10, 99, 10, 105,
- 10, 97, 10, 58, 10, 101, -60, 10,
- -113, 10, 10, 111, -59, 10, 107, 116,
- -66, 10, 10, 105, 10, 97, 10, 100,
- 10, 97, 10, 118, 10, 107, 10, 105,
- 10, 97, -60, 10, -66, 10, 10, 111,
- 10, 109, 10, 99, 10, 101, 10, 110,
- -61, 10, -95, 10, 10, 114, 10, 97,
- 10, 107, 10, 108, 10, 97, 10, 115,
- 10, 116, 10, 110, 10, 111, 10, 115,
- -59, 10, -91, 10, 10, 97, 10, 32,
- 10, 112, 10, 114, 10, 101, 10, 100,
- 10, 112, 10, 111, 10, 107, 10, 108,
- 10, 97, 10, 100, 10, 117, -61, 10,
- -95, 10, -60, 10, -115, 10, 10, 114,
- 10, 116, 10, 32, 10, 83, 10, 99,
- 10, 101, 10, 110, -61, 10, -95, 10,
- 10, 114, 10, 97, 117, 10, 115, 10,
- 110, 10, 111, 10, 118, 10, 97, 10,
- 32, 10, 83, 10, 99, 10, 101, 10,
- 110, -61, 10, -95, 10, 10, 114, 10,
- 111, 114, -59, 10, 122, -66, 10, 10,
- 105, 10, 97, 10, 100, 10, 97, 10,
- 118, 10, 107, 10, 97, 10, 100, 10,
- 105, 10, 101, -61, 10, -83, 10, 10,
- 107, 10, 108, 10, 97, 10, 100, 10,
- 121, 10, 99, 10, 101, 10, 110, -61,
- 10, -95, 10, 10, 114, 10, 108, 10,
- 97, 10, 115, 10, 116, 10, 110, 10,
- 111, 10, 115, -59, 10, -91, 10, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 19, 1, 1, 18, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 3, 4, 4,
- 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 11, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 18,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 2, 1, 1, 1, 14, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 4, 20, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 2, 4, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 16, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 4, 20, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 16, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 4, 20,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 4, 3, 2, 4, 18, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 5, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 4, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 7, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 4, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 1, 0, 0, 1, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 21, 23, 25, 45, 47, 49,
- 52, 55, 60, 65, 70, 75, 79, 83,
- 86, 88, 90, 92, 94, 96, 98, 100,
- 102, 104, 106, 108, 110, 112, 114, 116,
- 118, 121, 124, 129, 136, 141, 145, 150,
- 155, 159, 163, 167, 171, 175, 179, 183,
- 187, 191, 195, 199, 203, 207, 211, 215,
- 217, 219, 221, 223, 225, 227, 229, 231,
- 233, 235, 248, 251, 254, 257, 260, 263,
- 266, 269, 272, 275, 278, 281, 284, 287,
- 290, 293, 296, 299, 302, 305, 308, 311,
- 331, 333, 335, 337, 339, 341, 343, 345,
- 347, 349, 351, 353, 355, 357, 359, 361,
- 363, 365, 368, 370, 372, 374, 390, 393,
- 396, 399, 402, 405, 408, 411, 414, 417,
- 420, 423, 426, 429, 432, 435, 440, 462,
- 464, 466, 468, 470, 472, 474, 476, 478,
- 480, 482, 484, 486, 488, 490, 493, 498,
- 500, 502, 504, 506, 508, 510, 512, 514,
- 516, 518, 520, 522, 524, 526, 528, 530,
- 532, 534, 536, 538, 556, 559, 562, 565,
- 568, 571, 574, 577, 580, 583, 586, 589,
- 592, 595, 598, 601, 606, 628, 630, 632,
- 634, 636, 638, 640, 642, 644, 646, 664,
- 667, 670, 673, 676, 679, 682, 685, 688,
- 691, 694, 697, 700, 703, 706, 709, 714,
- 736, 738, 740, 742, 744, 746, 748, 750,
- 752, 754, 756, 758, 760, 762, 764, 766,
- 768, 770, 772, 774, 776, 778, 780, 782,
- 784, 787, 789, 791, 793, 795, 797, 799,
- 801, 803, 805, 807, 809, 811, 813, 815,
- 817, 821, 827, 831, 834, 840, 860, 863,
- 866, 869, 872, 875, 878, 881, 884, 887,
- 890, 893, 896, 899, 902, 905, 908, 911,
- 914, 917, 920, 923, 926, 929, 932, 935,
- 939, 942, 945, 948, 951, 954, 957, 960,
- 963, 966, 969, 972, 975, 978, 981, 987,
- 990, 993, 996, 999, 1002, 1005, 1008, 1011,
- 1014, 1017, 1020, 1023, 1026, 1029, 1032, 1035,
- 1038, 1041, 1044, 1047, 1050, 1053, 1056, 1059,
- 1062, 1065, 1068, 1071, 1074, 1077, 1080, 1083,
- 1086, 1089, 1092, 1095, 1098, 1101, 1104, 1107,
- 1110, 1113, 1116, 1119, 1122, 1125, 1128, 1131,
- 1133, 1135, 1137, 1139, 1141, 1143, 1145, 1147,
- 1149, 1151, 1153, 1155, 1157, 1159, 1161, 1164,
- 1167, 1170, 1173, 1176, 1179, 1182, 1185, 1188,
- 1191, 1194, 1197, 1200, 1203, 1206, 1209, 1212,
- 1215, 1218, 1221, 1224, 1227, 1230, 1233, 1236,
- 1240, 1243, 1246, 1249, 1252, 1255, 1258, 1261,
- 1264, 1267, 1270, 1273, 1276, 1279, 1282, 1287,
- 1290, 1293, 1296, 1299, 1302, 1305, 1308, 1311,
- 1314, 1317, 1320, 1323, 1326, 1329, 1332, 1335,
- 1338, 1341, 1344, 1347, 1350, 1353, 1356, 1359,
- 1362, 1365, 1368, 1371, 1374, 1377, 1380, 1383,
- 1386, 1389, 1392, 1395, 1398, 1401, 1404, 1407,
- 1410, 1413, 1416, 1418, 1420, 1422, 1424, 1426,
- 1428, 1430, 1432, 1434, 1436, 1445, 1448, 1451,
- 1454, 1457, 1460, 1463, 1466, 1469, 1472, 1475,
- 1478, 1481, 1484, 1487, 1490, 1493, 1496, 1499,
- 1502, 1505, 1508, 1511, 1514, 1517, 1520, 1523,
- 1525, 1527, 1529, 1531, 1533, 1535, 1537, 1539,
- 1541, 1543, 1545, 1547, 1549, 1551, 1553, 1556,
- 1559, 1562, 1565, 1568, 1571, 1574, 1577, 1580,
- 1583, 1586, 1589, 1594, 1597, 1600, 1603, 1606,
- 1609, 1612, 1615, 1618, 1621, 1624, 1627, 1630,
- 1633, 1636, 1639, 1642, 1645, 1648, 1651, 1654,
- 1657, 1660, 1663, 1666, 1669, 1672, 1675, 1678,
- 1681, 1684, 1687, 1690, 1693, 1696, 1699, 1702,
- 1705, 1708, 1711, 1714, 1717, 1720, 1723, 1726,
- 1729, 1732, 1735, 1738, 1741, 1744, 1747, 1750,
- 1753, 1756, 1759, 1762, 1765, 1769, 1772, 1775,
- 1778, 1781, 1784, 1787, 1790, 1793, 1796, 1799,
- 1802, 1805, 1808, 1812, 1816, 1819, 1822, 1825,
- 1828, 1831, 1834, 1837, 1840, 1843, 1846, 1849,
- 1852, 1855, 1858, 1861, 1864, 1867, 1870, 1873,
- 1876, 1879, 1882, 1885, 1888, 1891, 1894, 1897,
- 1900, 1903, 1906, 1909, 1912, 1915
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 56, 88, 91, 127, 141, 181, 208,
- 210, 219, 248, 4, 0, 3, 0, 4,
- 0, 4, 4, 5, 15, 17, 31, 34,
- 37, 56, 88, 91, 127, 141, 181, 208,
- 210, 219, 248, 4, 0, 6, 0, 7,
- 0, 9, 8, 8, 9, 8, 8, 10,
- 10, 11, 10, 10, 10, 10, 11, 10,
- 10, 10, 10, 12, 10, 10, 10, 10,
- 13, 10, 10, 4, 14, 14, 0, 4,
- 14, 14, 0, 4, 16, 15, 4, 0,
- 18, 0, 19, 0, 20, 0, 21, 0,
- 22, 0, 23, 0, 24, 0, 25, 0,
- 26, 0, 27, 0, 28, 0, 29, 0,
- 30, 0, 613, 0, 32, 0, 4, 16,
- 33, 4, 16, 33, 0, 0, 0, 0,
- 35, 36, 4, 36, 36, 34, 35, 35,
- 4, 36, 34, 36, 0, 38, 31, 55,
- 0, 4, 16, 39, 47, 33, 4, 16,
- 40, 43, 33, 4, 16, 41, 33, 4,
- 16, 42, 33, 4, 16, 43, 33, 4,
- 16, 44, 33, 45, 4, 16, 33, 46,
- 4, 16, 33, 4, 16, 32, 33, 48,
- 4, 16, 33, 49, 4, 16, 33, 4,
- 16, 50, 33, 4, 16, 51, 33, 4,
- 16, 52, 33, 4, 16, 53, 33, 54,
- 4, 16, 33, 46, 4, 16, 33, 31,
- 0, 57, 0, 58, 0, 59, 0, 60,
- 0, 61, 0, 62, 0, 63, 0, 65,
- 64, 65, 64, 65, 65, 4, 66, 4,
- 80, 550, 565, 578, 598, 604, 65, 64,
- 65, 67, 64, 65, 68, 64, 65, 69,
- 64, 65, 70, 64, 65, 71, 64, 65,
- 72, 64, 65, 73, 64, 65, 74, 64,
- 65, 75, 64, 65, 76, 64, 65, 77,
- 64, 65, 78, 64, 65, 79, 64, 65,
- 4, 64, 65, 81, 64, 65, 82, 64,
- 65, 83, 64, 65, 84, 64, 65, 85,
- 64, 65, 86, 64, 65, 87, 64, 4,
- 4, 5, 15, 17, 31, 34, 37, 56,
- 88, 91, 127, 141, 181, 208, 210, 219,
- 248, 4, 0, 89, 0, 90, 0, 31,
- 0, 92, 0, 93, 0, 94, 0, 95,
- 0, 96, 0, 97, 0, 98, 0, 99,
- 0, 100, 0, 101, 0, 102, 0, 103,
- 0, 104, 0, 105, 0, 106, 106, 0,
- 107, 0, 109, 108, 109, 108, 109, 109,
- 4, 110, 124, 4, 125, 495, 502, 505,
- 520, 526, 528, 537, 109, 108, 109, 111,
- 108, 109, 112, 108, 109, 113, 108, 109,
- 114, 108, 109, 115, 108, 109, 116, 108,
- 109, 117, 108, 109, 118, 108, 109, 119,
- 108, 109, 120, 108, 109, 121, 108, 109,
- 122, 108, 109, 123, 108, 109, 4, 108,
- 109, 87, 108, 109, 126, 124, 494, 108,
- 4, 4, 5, 15, 17, 31, 34, 37,
- 56, 88, 91, 127, 141, 181, 208, 210,
- 219, 478, 486, 248, 4, 0, 128, 0,
- 129, 0, 130, 0, 131, 0, 132, 0,
- 133, 0, 134, 0, 135, 0, 136, 0,
- 137, 0, 138, 0, 139, 0, 140, 0,
- 106, 0, 142, 442, 0, 143, 150, 154,
- 156, 0, 144, 0, 145, 0, 146, 0,
- 147, 0, 148, 0, 149, 0, 61, 0,
- 151, 0, 152, 0, 153, 0, 31, 0,
- 155, 0, 31, 0, 157, 0, 158, 0,
- 159, 0, 160, 0, 161, 0, 163, 162,
- 163, 162, 163, 163, 4, 164, 178, 4,
- 179, 359, 366, 369, 384, 397, 412, 418,
- 420, 429, 163, 162, 163, 165, 162, 163,
- 166, 162, 163, 167, 162, 163, 168, 162,
- 163, 169, 162, 163, 170, 162, 163, 171,
- 162, 163, 172, 162, 163, 173, 162, 163,
- 174, 162, 163, 175, 162, 163, 176, 162,
- 163, 177, 162, 163, 4, 162, 163, 87,
- 162, 163, 180, 178, 358, 162, 4, 4,
- 5, 15, 17, 31, 34, 37, 56, 88,
- 91, 127, 141, 181, 208, 210, 219, 342,
- 350, 248, 4, 0, 182, 0, 183, 0,
- 184, 0, 185, 0, 186, 0, 187, 0,
- 188, 0, 190, 189, 190, 189, 190, 190,
- 4, 191, 205, 4, 206, 255, 262, 265,
- 280, 293, 312, 318, 320, 329, 190, 189,
- 190, 192, 189, 190, 193, 189, 190, 194,
- 189, 190, 195, 189, 190, 196, 189, 190,
- 197, 189, 190, 198, 189, 190, 199, 189,
- 190, 200, 189, 190, 201, 189, 190, 202,
- 189, 190, 203, 189, 190, 204, 189, 190,
- 4, 189, 190, 87, 189, 190, 207, 205,
- 254, 189, 4, 4, 5, 15, 17, 31,
- 34, 37, 56, 88, 91, 127, 141, 181,
- 208, 210, 219, 232, 240, 248, 4, 0,
- 209, 0, 31, 0, 211, 0, 212, 0,
- 213, 0, 214, 0, 215, 0, 216, 0,
- 217, 0, 218, 0, 62, 0, 220, 0,
- 221, 0, 222, 0, 223, 0, 224, 0,
- 225, 0, 226, 0, 227, 0, 228, 0,
- 229, 0, 230, 0, 231, 0, 31, 0,
- 233, 236, 0, 234, 0, 235, 0, 236,
- 0, 237, 0, 238, 0, 239, 0, 87,
- 0, 241, 0, 242, 0, 243, 0, 244,
- 0, 245, 0, 246, 0, 247, 0, 239,
- 0, 248, 249, 248, 0, 253, 252, 251,
- 249, 252, 250, 0, 251, 249, 250, 0,
- 251, 250, 253, 252, 251, 249, 252, 250,
- 253, 253, 5, 15, 17, 31, 34, 37,
- 56, 88, 91, 127, 141, 181, 208, 210,
- 219, 248, 253, 0, 190, 205, 189, 190,
- 256, 189, 190, 257, 189, 190, 258, 189,
- 190, 259, 189, 190, 260, 189, 190, 261,
- 189, 190, 87, 189, 190, 263, 189, 264,
- 190, 189, 205, 190, 189, 266, 190, 189,
- 267, 190, 189, 268, 190, 189, 269, 190,
- 189, 190, 270, 189, 190, 271, 189, 190,
- 272, 189, 190, 273, 189, 190, 274, 189,
- 190, 275, 189, 190, 276, 189, 277, 190,
- 189, 278, 190, 189, 190, 279, 189, 190,
- 261, 261, 189, 190, 281, 189, 190, 282,
- 189, 190, 283, 189, 190, 284, 189, 190,
- 285, 189, 190, 286, 189, 190, 287, 189,
- 190, 288, 189, 190, 289, 189, 190, 290,
- 189, 291, 190, 189, 292, 190, 189, 190,
- 260, 189, 190, 294, 189, 295, 190, 302,
- 306, 308, 189, 296, 190, 189, 190, 297,
- 189, 190, 298, 189, 190, 299, 189, 190,
- 300, 189, 190, 301, 189, 190, 260, 189,
- 190, 303, 189, 190, 304, 189, 305, 190,
- 189, 205, 190, 189, 190, 307, 189, 190,
- 205, 189, 190, 309, 189, 190, 310, 189,
- 190, 311, 189, 190, 261, 189, 190, 313,
- 189, 190, 314, 189, 190, 315, 189, 316,
- 190, 189, 317, 190, 189, 190, 261, 189,
- 190, 319, 189, 190, 205, 189, 190, 321,
- 189, 190, 322, 189, 190, 323, 189, 190,
- 324, 189, 190, 325, 189, 190, 326, 189,
- 190, 327, 189, 328, 190, 189, 261, 190,
- 189, 190, 330, 189, 190, 331, 189, 190,
- 332, 189, 190, 333, 189, 190, 334, 189,
- 190, 335, 189, 190, 336, 189, 190, 337,
- 189, 190, 338, 189, 190, 339, 189, 190,
- 340, 189, 190, 341, 189, 190, 205, 189,
- 343, 346, 0, 344, 0, 345, 0, 346,
- 0, 347, 0, 348, 0, 349, 0, 87,
- 0, 351, 0, 352, 0, 353, 0, 354,
- 0, 355, 0, 356, 0, 357, 0, 349,
- 0, 163, 178, 162, 163, 360, 162, 163,
- 361, 162, 163, 362, 162, 163, 363, 162,
- 163, 364, 162, 163, 365, 162, 163, 87,
- 162, 163, 367, 162, 368, 163, 162, 178,
- 163, 162, 370, 163, 162, 371, 163, 162,
- 372, 163, 162, 373, 163, 162, 163, 374,
- 162, 163, 375, 162, 163, 376, 162, 163,
- 377, 162, 163, 378, 162, 163, 379, 162,
- 163, 380, 162, 381, 163, 162, 382, 163,
- 162, 163, 383, 162, 163, 365, 365, 162,
- 163, 385, 162, 163, 386, 162, 163, 387,
- 162, 163, 388, 162, 163, 389, 162, 163,
- 390, 162, 163, 391, 162, 163, 392, 162,
- 163, 393, 162, 163, 394, 162, 395, 163,
- 162, 396, 163, 162, 163, 364, 162, 163,
- 398, 162, 399, 163, 406, 410, 162, 400,
- 163, 162, 163, 401, 162, 163, 402, 162,
- 163, 403, 162, 163, 404, 162, 163, 405,
- 162, 163, 364, 162, 163, 407, 162, 163,
- 408, 162, 409, 163, 162, 178, 163, 162,
- 163, 411, 162, 163, 178, 162, 163, 413,
- 162, 163, 414, 162, 163, 415, 162, 416,
- 163, 162, 417, 163, 162, 163, 365, 162,
- 163, 419, 162, 163, 178, 162, 163, 421,
- 162, 163, 422, 162, 163, 423, 162, 163,
- 424, 162, 163, 425, 162, 163, 426, 162,
- 163, 427, 162, 428, 163, 162, 365, 163,
- 162, 163, 430, 162, 163, 431, 162, 163,
- 432, 162, 163, 433, 162, 163, 434, 162,
- 163, 435, 162, 163, 436, 162, 163, 437,
- 162, 163, 438, 162, 163, 439, 162, 163,
- 440, 162, 163, 441, 162, 163, 178, 162,
- 443, 0, 444, 0, 445, 0, 446, 0,
- 447, 0, 448, 0, 449, 0, 450, 0,
- 452, 451, 452, 451, 452, 452, 4, 453,
- 460, 469, 4, 452, 451, 452, 454, 451,
- 452, 455, 451, 452, 456, 451, 452, 457,
- 451, 452, 458, 451, 452, 459, 451, 452,
- 87, 451, 452, 461, 451, 462, 452, 451,
- 463, 452, 451, 452, 464, 451, 452, 465,
- 451, 452, 466, 451, 452, 467, 451, 452,
- 468, 451, 452, 458, 451, 452, 470, 451,
- 452, 471, 451, 452, 472, 451, 452, 473,
- 451, 452, 474, 451, 452, 475, 451, 452,
- 476, 451, 477, 452, 451, 459, 452, 451,
- 479, 482, 0, 480, 0, 481, 0, 482,
- 0, 483, 0, 484, 0, 485, 0, 87,
- 0, 487, 0, 488, 0, 489, 0, 490,
- 0, 491, 0, 492, 0, 493, 0, 485,
- 0, 109, 124, 108, 109, 496, 108, 109,
- 497, 108, 109, 498, 108, 109, 499, 108,
- 109, 500, 108, 109, 501, 108, 109, 87,
- 108, 109, 503, 108, 504, 109, 108, 124,
- 109, 108, 109, 506, 108, 507, 109, 514,
- 518, 108, 508, 109, 108, 109, 509, 108,
- 109, 510, 108, 109, 511, 108, 109, 512,
- 108, 109, 513, 108, 109, 500, 108, 109,
- 515, 108, 109, 516, 108, 517, 109, 108,
- 124, 109, 108, 109, 519, 108, 109, 124,
- 108, 109, 521, 108, 109, 522, 108, 109,
- 523, 108, 524, 109, 108, 525, 109, 108,
- 109, 501, 108, 109, 527, 108, 109, 124,
- 108, 109, 529, 108, 109, 530, 108, 109,
- 531, 108, 109, 532, 108, 109, 533, 108,
- 109, 534, 108, 109, 535, 108, 536, 109,
- 108, 501, 109, 108, 109, 538, 108, 109,
- 539, 108, 109, 540, 108, 109, 541, 108,
- 109, 542, 108, 109, 543, 108, 109, 544,
- 108, 109, 545, 108, 109, 546, 108, 109,
- 547, 108, 109, 548, 108, 109, 549, 108,
- 109, 124, 108, 551, 65, 64, 552, 65,
- 64, 553, 65, 64, 554, 65, 64, 65,
- 555, 64, 65, 556, 64, 65, 557, 64,
- 65, 558, 64, 65, 559, 64, 65, 560,
- 64, 65, 561, 64, 562, 65, 64, 563,
- 65, 64, 65, 564, 64, 65, 86, 86,
- 64, 65, 566, 64, 65, 567, 64, 65,
- 568, 64, 65, 569, 64, 65, 570, 64,
- 65, 571, 64, 65, 572, 64, 65, 573,
- 64, 65, 574, 64, 65, 575, 64, 576,
- 65, 64, 577, 65, 64, 65, 85, 64,
- 65, 579, 591, 64, 580, 65, 587, 64,
- 581, 65, 64, 65, 582, 64, 65, 583,
- 64, 65, 584, 64, 65, 585, 64, 65,
- 586, 64, 65, 85, 64, 65, 588, 64,
- 65, 589, 64, 65, 590, 64, 65, 86,
- 64, 592, 65, 64, 593, 65, 64, 65,
- 594, 64, 65, 595, 64, 65, 596, 64,
- 65, 597, 64, 65, 86, 64, 65, 599,
- 64, 65, 600, 64, 65, 601, 64, 602,
- 65, 64, 603, 65, 64, 65, 86, 64,
- 65, 605, 64, 65, 606, 64, 65, 607,
- 64, 65, 608, 64, 65, 609, 64, 65,
- 610, 64, 65, 611, 64, 612, 65, 64,
- 86, 65, 64, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 29, 29, 35, 0, 43, 0, 43, 0,
- 43, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 29, 29, 35, 0, 43, 0, 43, 0,
- 43, 139, 48, 9, 106, 11, 0, 134,
- 45, 45, 45, 3, 122, 33, 33, 33,
- 0, 122, 33, 33, 33, 0, 122, 33,
- 0, 33, 0, 102, 7, 7, 43, 54,
- 0, 0, 43, 114, 25, 0, 54, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 149, 126,
- 57, 110, 23, 0, 43, 43, 43, 43,
- 0, 27, 118, 27, 27, 51, 27, 0,
- 54, 0, 1, 0, 43, 0, 0, 0,
- 43, 149, 126, 57, 57, 57, 110, 23,
- 0, 0, 0, 110, 23, 0, 0, 110,
- 23, 0, 0, 110, 23, 0, 0, 110,
- 23, 0, 0, 0, 110, 23, 0, 0,
- 110, 23, 0, 110, 23, 0, 0, 0,
- 110, 23, 0, 0, 110, 23, 0, 110,
- 23, 0, 0, 110, 23, 0, 0, 110,
- 23, 0, 0, 110, 23, 0, 0, 0,
- 110, 23, 0, 0, 110, 23, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 69, 33, 69,
- 84, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 130,
- 31, 60, 57, 31, 63, 57, 63, 63,
- 63, 63, 63, 63, 63, 63, 63, 63,
- 66, 31, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 78, 33, 84, 78, 84, 84, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 19, 0,
- 54, 19, 0, 54, 19, 0, 0, 0,
- 130, 31, 60, 57, 31, 63, 57, 63,
- 63, 63, 63, 63, 63, 63, 63, 63,
- 63, 0, 0, 66, 31, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0, 43, 0, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 54, 0, 72, 33, 84, 72,
- 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 15, 0, 54, 15,
- 0, 54, 15, 0, 0, 0, 130, 31,
- 60, 57, 31, 63, 57, 63, 63, 63,
- 63, 63, 63, 63, 63, 63, 63, 0,
- 0, 66, 31, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 75, 33, 84, 75, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 17, 0, 54, 17, 0, 54, 17, 0,
- 0, 0, 130, 31, 60, 57, 31, 63,
- 57, 63, 63, 63, 63, 63, 63, 63,
- 63, 63, 63, 0, 0, 66, 31, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 17,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 0, 43, 54, 37, 37,
- 87, 37, 37, 43, 0, 39, 0, 43,
- 0, 0, 54, 0, 0, 39, 0, 0,
- 54, 0, 93, 90, 41, 96, 90, 96,
- 96, 96, 96, 96, 96, 96, 96, 96,
- 96, 99, 0, 43, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 17, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 15,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 81, 84,
- 84, 84, 81, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 21, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 19,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 19,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 0, 54, 0,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 0, 0, 54, 0, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 613;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/sk.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 1343 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/sk.c.rl"
-
-#line 1350 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/sk.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/sk.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/sk.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/sk.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/sk.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/sk.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/sk.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/sk.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/sk.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/sk.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/sk.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/sk.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/sk.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/sk.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/sk.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/sk.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/sk.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/sk.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/sk.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/sk.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/sk.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/sk.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/sk.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/sk.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1640 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/sk.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1703 "ext/gherkin_lexer_sk/gherkin_lexer_sk.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/sk.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_sk()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Sk", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_sr_cyrl/extconf.rb
index dacc158,dacc158..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_sr_cyrl/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_sr_cyrl")
--have_library("c", "main")
--create_makefile("gherkin_lexer_sr_cyrl")
diff --cc ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c
index 9edc1e4,76a7541..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c
+++ /dev/null
@@@ -1,2112 -1,2112 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 12, 21, 22, 23, 24, 25,
- 26, 28, 30, 41, 42, 43, 45, 47,
- 52, 57, 62, 67, 71, 75, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 97, 104,
- 109, 113, 119, 122, 124, 130, 141, 142,
- 143, 144, 145, 146, 147, 148, 149, 150,
- 153, 154, 156, 157, 158, 160, 161, 162,
- 163, 164, 166, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 186, 196,
- 198, 200, 202, 204, 206, 217, 219, 221,
- 223, 225, 227, 229, 231, 233, 235, 239,
- 241, 244, 246, 248, 251, 253, 255, 257,
- 259, 261, 263, 265, 267, 269, 271, 273,
- 275, 277, 279, 281, 283, 285, 287, 289,
- 291, 293, 295, 297, 299, 301, 303, 306,
- 308, 310, 312, 314, 316, 318, 320, 322,
- 324, 326, 328, 330, 332, 334, 336, 338,
- 340, 342, 344, 346, 348, 350, 352, 354,
- 356, 359, 361, 363, 365, 367, 369, 372,
- 374, 376, 378, 380, 382, 384, 386, 388,
- 390, 392, 394, 396, 398, 400, 402, 404,
- 406, 408, 410, 412, 414, 416, 418, 420,
- 422, 424, 426, 428, 430, 432, 434, 436,
- 438, 440, 442, 444, 446, 448, 450, 452,
- 454, 456, 458, 460, 462, 464, 466, 468,
- 470, 472, 474, 476, 478, 480, 482, 484,
- 486, 488, 490, 492, 494, 496, 498, 500,
- 502, 504, 506, 508, 510, 512, 514, 516,
- 518, 520, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, 540, 550, 552, 554,
- 556, 558, 560, 562, 564, 566, 568, 570,
- 572, 574, 576, 578, 582, 584, 586, 588,
- 590, 593, 595, 597, 599, 601, 603, 605,
- 607, 609, 611, 613, 615, 617, 619, 621,
- 623, 625, 627, 629, 632, 634, 636, 638,
- 640, 642, 644, 646, 648, 650, 652, 654,
- 656, 658, 660, 662, 664, 666, 668, 670,
- 672, 674, 676, 678, 680, 682, 684, 686,
- 688, 690, 692, 694, 696, 698, 700, 702,
- 704, 706, 708, 710, 712, 714, 716, 718,
- 720, 722, 724, 726, 728, 730, 732, 734,
- 736, 738, 740, 742, 744, 746, 748, 750,
- 752, 754, 756, 758, 760, 762, 764, 766,
- 768, 770, 772, 774, 775, 776, 777, 778,
- 779, 780, 781, 782, 783, 784, 785, 786,
- 787, 788, 789, 790, 791, 792, 793, 801,
- 808, 810, 812, 814, 816, 818, 821, 823,
- 825, 827, 829, 831, 833, 835, 837, 839,
- 841, 843, 845, 847, 849, 851, 853, 855,
- 857, 859, 861, 863, 865, 867, 869, 871,
- 873, 875, 877, 880, 882, 884, 886, 888,
- 890, 892, 894, 896, 898, 900, 902, 904,
- 907, 909, 911, 913, 915, 917, 919, 921,
- 923, 925, 927, 929, 931, 933, 935, 937,
- 939, 942, 944, 947, 949, 951, 953, 955,
- 957, 960, 962, 964, 966, 968, 970, 972,
- 974, 976, 978, 980, 982, 984, 986, 988,
- 990, 992, 994, 996, 998, 1000, 1002, 1004,
- 1006, 1008, 1010, 1012, 1014, 1016, 1018, 1020,
- 1022, 1024, 1026, 1028, 1030, 1032, 1034, 1036,
- 1038, 1040, 1042, 1045, 1047, 1049, 1051, 1053,
- 1055, 1057, 1059, 1061, 1063, 1065, 1067, 1069,
- 1071, 1073, 1075, 1077, 1079, 1081, 1083, 1085,
- 1087, 1089, 1091, 1093, 1095, 1097, 1099, 1101,
- 1103, 1105, 1107, 1109, 1111, 1113, 1115, 1117,
- 1118, 1119, 1120, 1121, 1122, 1123, 1125, 1126,
- 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134,
- 1135, 1136, 1137, 1138, 1139, 1141, 1142, 1143,
- 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151,
- 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159,
- 1160, 1161, 1163, 1164, 1165, 1166, 1167, 1174,
- 1178, 1180, 1182, 1184, 1186, 1188, 1190, 1192,
- 1194, 1196, 1198, 1200, 1202, 1204, 1206, 1208,
- 1210, 1212, 1214, 1216, 1218, 1220, 1222, 1224,
- 1226, 1228, 1230, 1232, 1234, 1236, 1238, 1240,
- 1242, 1244, 1246, 1248, 1250, 1252, 1254, 1256,
- 1258, 1260, 1262, 1264, 1266, 1268, 1270, 1272,
- 1273, 1274, 1283, 1293, 1295, 1297, 1299, 1301,
- 1303, 1305, 1307, 1309, 1311, 1313, 1315, 1317,
- 1319, 1321, 1325, 1327, 1330, 1332, 1334, 1337,
- 1339, 1341, 1343, 1345, 1348, 1350, 1352, 1354,
- 1356, 1358, 1360, 1362, 1364, 1366, 1368, 1370,
- 1372, 1374, 1376, 1378, 1380, 1382, 1384, 1386,
- 1388, 1390, 1392, 1394, 1396, 1398, 1401, 1403,
- 1405, 1407, 1409, 1411, 1413, 1416, 1418, 1420,
- 1422, 1424, 1426, 1428, 1430, 1432, 1434, 1436,
- 1438, 1440, 1443, 1445, 1447, 1449, 1451, 1453,
- 1455, 1457, 1459, 1461, 1463, 1465, 1467, 1469,
- 1471, 1473, 1475, 1478, 1480, 1482, 1484, 1486,
- 1488, 1491, 1493, 1495, 1497, 1499, 1501, 1503,
- 1505, 1507, 1509, 1511, 1513, 1515, 1517, 1519,
- 1521, 1523, 1525, 1527, 1529, 1531, 1533, 1535,
- 1537, 1539, 1541, 1543, 1545, 1547, 1549, 1551,
- 1553, 1555, 1557, 1559, 1561, 1563, 1565, 1567,
- 1569, 1571, 1573, 1575, 1577, 1579, 1581, 1583,
- 1585, 1587, 1589, 1591, 1593, 1595, 1597, 1599,
- 1601, 1603, 1605, 1607, 1609, 1611, 1613, 1615,
- 1617, 1619, 1621, 1623, 1625, 1627, 1629, 1631,
- 1633, 1635, 1637, 1639, 1641, 1643, 1644, 1645,
- 1646, 1647, 1648, 1649, 1650, 1652, 1653, 1654,
- 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662,
- 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670,
- 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678,
- 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686,
- 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1695,
- 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703,
- 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711,
- 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719
- };
-
- static const char _lexer_trans_keys[] = {
- -48, -17, 10, 32, 34, 35, 37, 42,
- 64, 124, 9, 13, -112, -105, -104, -102,
- -100, -98, -97, -95, -92, -48, -69, -48,
- -72, 32, 10, 13, 10, 13, -48, 10,
- 32, 34, 35, 37, 42, 64, 124, 9,
- 13, 34, 34, 10, 13, 10, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 9, 13, 10,
- 32, 9, 13, 10, 13, 10, 95, 70,
- 69, 65, 84, 85, 82, 69, 95, 69,
- 78, 68, 95, 37, 13, 32, 64, 9,
- 10, 9, 10, 13, 32, 64, 11, 12,
- 10, 32, 64, 9, 13, 32, 124, 9,
- 13, 10, 32, 92, 124, 9, 13, 10,
- 92, 124, 10, 92, 10, 32, 92, 124,
- 9, 13, -48, 10, 32, 34, 35, 37,
- 42, 64, 124, 9, 13, -48, -80, -48,
- -76, -48, -80, -47, -126, -48, -75, -72,
- -66, -48, -80, -66, -48, -76, -48, 32,
- -80, -48, -67, -47, -126, -122, -48, -75,
- -48, -70, -47, -127, -47, -126, 58, 10,
- 10, -48, 10, 32, 35, 37, 42, 64,
- 9, 13, -112, -105, -104, -102, -100, -98,
- -97, -95, -92, 10, -48, 10, -69, 10,
- -48, 10, -72, 10, 10, 32, -48, 10,
- 32, 34, 35, 37, 42, 64, 124, 9,
- 13, -48, 10, -80, 10, -48, 10, -76,
- 10, -48, 10, -80, 10, -47, 10, -126,
- 10, -48, 10, -75, -72, -66, 10, -48,
- 10, -80, -66, 10, -48, 10, -76, 10,
- -48, 10, 32, -80, 10, -48, 10, -67,
- 10, -47, 10, -122, 10, -48, 10, -75,
- 10, -48, 10, -65, 10, -47, 10, -126,
- 10, 10, 58, -48, 10, -66, 10, -48,
- 10, -77, 10, -47, 10, -125, 10, -47,
- 10, -101, 10, -48, 10, -67, 10, -48,
- 10, -66, 10, -47, 10, -127, 10, -48,
- -47, 10, -67, 10, -48, 10, -76, 10,
- -48, 10, -127, 10, -48, 10, -66, 10,
- -48, 10, -79, 10, -48, 10, -72, 10,
- -48, 10, -67, 10, -48, 10, -80, 10,
- -47, 10, -128, 10, -48, 10, -72, 10,
- -48, 10, -68, 10, -48, 10, -75, 10,
- -47, 10, -128, 10, -48, -47, 10, -70,
- 10, -48, 10, -72, 10, -47, 10, -122,
- 10, -126, -122, 10, -47, 10, -128, 10,
- -47, 10, -125, 10, -48, 10, -70, 10,
- -47, 10, -126, 10, -47, 10, -125, 10,
- -47, 10, -128, 10, -48, 10, -80, 10,
- 10, 32, -47, 10, -127, 10, -47, 10,
- -122, 10, -48, 10, -75, 10, -48, 10,
- -67, 10, -48, 10, -80, 10, -47, 10,
- -128, 10, -48, 10, -72, 10, -47, 10,
- -104, 10, -48, 10, -75, 10, -48, 10,
- -67, 10, -48, 10, -80, 10, -47, 10,
- -128, 10, -48, 10, -72, 10, -48, 10,
- -66, 10, -47, 10, -125, 10, -48, 10,
- -67, 10, -48, 10, -70, 10, -47, 10,
- -122, 10, -48, 10, -72, 10, -48, 10,
- -66, 10, -48, 10, -67, 10, -48, 10,
- -80, 10, -48, 10, -69, 10, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, -48, -75, -48, -65, -47, -126,
- 58, 10, 10, -48, 10, 32, 35, 37,
- 42, 64, 9, 13, -112, -105, -104, -102,
- -100, -98, -97, -95, -92, 10, -48, 10,
- -69, 10, -48, 10, -72, 10, 10, 32,
- -48, 10, -80, 10, -48, 10, -76, 10,
- -48, 10, -80, 10, -47, 10, -126, 10,
- -48, 10, -75, -72, -66, 10, -48, 10,
- -80, 10, -48, 10, -76, 10, -48, 10,
- 32, -80, 10, -48, 10, -66, 10, -48,
- 10, -77, 10, -47, 10, -125, 10, -47,
- 10, -101, 10, -48, 10, -67, 10, -48,
- 10, -66, 10, -47, 10, -127, 10, -47,
- 10, -126, 10, 10, 58, -48, -47, 10,
- -67, 10, -48, 10, -76, 10, -48, 10,
- -127, 10, -48, 10, -66, 10, -48, 10,
- -79, 10, -48, 10, -72, 10, -48, 10,
- -67, 10, -48, 10, -80, 10, -47, 10,
- -128, 10, -48, 10, -72, 10, -48, 10,
- -68, 10, -48, 10, -75, 10, -47, 10,
- -128, 10, -47, 10, -122, 10, -48, 10,
- -75, 10, -48, 10, -67, 10, -48, 10,
- -80, 10, -47, 10, -128, 10, -48, 10,
- -72, 10, -48, 10, -66, 10, -47, 10,
- -125, 10, -48, 10, -67, 10, -48, 10,
- -70, 10, -47, 10, -122, 10, -48, 10,
- -72, 10, -48, 10, -66, 10, -48, 10,
- -67, 10, -48, 10, -80, 10, -48, 10,
- -69, 10, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, -48, -66,
- -48, -77, -47, -125, -47, -101, -48, -67,
- -48, -66, -47, -127, -47, -126, 58, 10,
- 10, -48, 10, 32, 35, 37, 64, 9,
- 13, -102, -100, -98, -97, -95, -92, 10,
- -48, 10, -66, 10, -48, 10, -67, 10,
- -47, 10, -126, -122, 10, -48, 10, -75,
- 10, -48, 10, -70, 10, -47, 10, -127,
- 10, -47, 10, -126, 10, 10, 58, -48,
- 10, -75, 10, -48, 10, -65, 10, -48,
- 10, -66, 10, -48, 10, -77, 10, -47,
- 10, -125, 10, -47, 10, -101, 10, -48,
- 10, -67, 10, -48, 10, -66, 10, -47,
- 10, -127, 10, -48, 10, -67, -66, 10,
- -48, 10, -66, 10, -48, 10, -78, 10,
- -48, 10, -80, 10, -48, 10, -79, 10,
- -48, 10, -72, 10, -48, 10, -67, 10,
- -48, -47, 10, -66, 10, -48, 10, -73,
- 10, -48, 10, -80, 10, -48, 10, -76,
- 10, -128, 10, -48, 10, -72, 10, -48,
- 10, -68, 10, -48, 10, -75, 10, -47,
- 10, -128, 10, -48, 10, 58, -72, 10,
- -48, -47, 10, -70, 10, -48, 10, -72,
- 10, -47, 10, -122, 10, -126, -122, 10,
- -47, 10, -128, 10, -47, 10, -125, 10,
- -48, 10, -70, 10, -47, 10, -126, 10,
- -47, 10, -125, 10, -47, 10, -128, 10,
- -48, 10, -80, 10, 10, 32, -47, 10,
- -127, 10, -47, 10, -122, 10, -48, 10,
- -75, 10, -48, 10, -67, 10, -48, 10,
- -80, 10, -47, 10, -128, 10, -48, 10,
- -72, 10, -47, 10, -104, 10, -48, 10,
- -75, 10, -48, 10, -67, 10, -48, 10,
- -80, 10, -47, 10, -128, 10, -48, 10,
- -72, 10, -48, -47, 10, -66, 10, -104,
- 10, -48, 10, -47, 10, -125, 10, -48,
- 10, -67, 10, -48, 10, -70, 10, -47,
- 10, -122, 10, -48, 10, -72, 10, -48,
- 10, -66, 10, -48, 10, -67, 10, -48,
- 10, -80, 10, -48, 10, -69, 10, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, -48, -47, -67, -48, -76,
- -48, -127, -48, -67, -66, -48, -66, -48,
- -78, -48, -80, -48, -79, -48, -72, -48,
- -67, -48, -80, -48, -47, -66, -48, -73,
- -48, -80, -48, -76, -48, -72, -48, -67,
- -128, -48, -72, -48, -68, -48, -75, -47,
- -128, -48, 58, -72, 58, 10, 10, -48,
- 10, 32, 35, 124, 9, 13, -100, -98,
- -92, 10, -48, 10, -66, 10, -48, 10,
- -77, 10, -47, 10, -125, 10, -47, 10,
- -101, 10, -48, 10, -67, 10, -48, 10,
- -66, 10, -47, 10, -127, 10, -47, 10,
- -126, 10, 10, 58, -47, 10, -127, 10,
- -48, 10, -66, 10, -48, 10, -79, 10,
- -48, 10, -72, 10, -48, 10, -67, 10,
- -48, 10, -80, 10, -47, 10, -125, 10,
- -48, 10, -67, 10, -48, 10, -70, 10,
- -47, 10, -122, 10, -48, 10, -72, 10,
- -48, 10, -66, 10, -48, 10, -67, 10,
- -48, 10, -80, 10, -48, 10, -69, 10,
- 10, 10, -48, 10, 32, 35, 37, 42,
- 64, 9, 13, -112, -105, -104, -102, -100,
- -98, -97, -95, -92, 10, -48, 10, -69,
- 10, -48, 10, -72, 10, 10, 32, -48,
- 10, -80, 10, -48, 10, -76, 10, -48,
- 10, -80, 10, -47, 10, -126, 10, -48,
- 10, -75, -72, -66, 10, -48, 10, -80,
- -66, 10, -48, 10, -76, 10, -48, 10,
- 32, -80, 10, -48, 10, -67, 10, -47,
- 10, -126, -122, 10, -48, 10, -75, 10,
- -48, 10, -70, 10, -47, 10, -127, 10,
- -47, 10, -126, 10, 10, 58, -48, 10,
- -75, 10, -48, 10, -65, 10, -48, 10,
- -66, 10, -48, 10, -77, 10, -47, 10,
- -125, 10, -47, 10, -101, 10, -48, 10,
- -67, 10, -48, 10, -66, 10, -48, -47,
- 10, -67, 10, -48, 10, -76, 10, -48,
- 10, -127, 10, -48, 10, -67, -66, 10,
- -48, 10, -66, 10, -48, 10, -78, 10,
- -48, 10, -80, 10, -48, 10, -79, 10,
- -48, 10, -72, 10, -48, 10, -67, 10,
- -48, -47, 10, -66, 10, -48, 10, -73,
- 10, -48, 10, -80, 10, -48, 10, -76,
- 10, -128, 10, -48, 10, -72, 10, -48,
- 10, -68, 10, -48, 10, -75, 10, -47,
- 10, -128, 10, -48, -47, 10, -70, 10,
- -48, 10, -72, 10, -47, 10, -122, 10,
- -126, -122, 10, -47, 10, -128, 10, -47,
- 10, -125, 10, -48, 10, -70, 10, -47,
- 10, -126, 10, -47, 10, -125, 10, -47,
- 10, -128, 10, -48, 10, -80, 10, 10,
- 32, -47, 10, -127, 10, -47, 10, -122,
- 10, -48, 10, -75, 10, -48, 10, -67,
- 10, -48, 10, -80, 10, -47, 10, -128,
- 10, -48, 10, -72, 10, -47, 10, -104,
- 10, -48, 10, -75, 10, -48, 10, -67,
- 10, -48, 10, -80, 10, -47, 10, -128,
- 10, -48, 10, -72, 10, -48, 10, -66,
- 10, -47, 10, -125, 10, -48, 10, -67,
- 10, -48, 10, -70, 10, -47, 10, -122,
- 10, -48, 10, -72, 10, -48, 10, -66,
- 10, -48, 10, -67, 10, -48, 10, -80,
- 10, -48, 10, -69, 10, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, -48, -47, -70, -48, -72, -47, -122,
- -48, -80, -126, -122, -47, -128, -47, -125,
- -48, -70, -47, -126, -47, -125, -47, -128,
- -48, -80, 32, -47, -127, -47, -122, -48,
- -75, -48, -67, -48, -80, -47, -128, -48,
- -72, -47, -104, -48, -75, -48, -67, -48,
- -80, -47, -128, -48, -72, -48, -47, -66,
- 58, -104, -48, -47, -125, -48, -67, -48,
- -70, -47, -122, -48, -72, -48, -66, -48,
- -67, -48, -80, -48, -69, -69, -65, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 10, 9, 1, 1, 1, 1, 1,
- 2, 2, 9, 1, 1, 2, 2, 3,
- 3, 3, 3, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 3, 5, 3,
- 2, 4, 3, 2, 4, 9, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 3,
- 1, 2, 1, 1, 2, 1, 1, 1,
- 1, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 7, 10, 2,
- 2, 2, 2, 2, 9, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 4, 2,
- 3, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 7, 10, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 4, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 6, 7,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 3, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 2, 1, 1, 1, 1, 5, 4,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 7, 10, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 4, 2, 3, 2, 2, 3, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 1,
- 1, 1, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 1, 1,
- 1, 1, 0, 0, 1, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 12, 22, 24, 26, 28, 30,
- 32, 35, 38, 49, 51, 53, 56, 59,
- 64, 69, 74, 79, 83, 87, 90, 92,
- 94, 96, 98, 100, 102, 104, 106, 108,
- 110, 112, 114, 116, 118, 120, 125, 132,
- 137, 141, 147, 151, 154, 160, 171, 173,
- 175, 177, 179, 181, 183, 185, 187, 189,
- 193, 195, 198, 200, 202, 205, 207, 209,
- 211, 213, 216, 218, 220, 222, 224, 226,
- 228, 230, 232, 234, 236, 238, 247, 258,
- 261, 264, 267, 270, 273, 284, 287, 290,
- 293, 296, 299, 302, 305, 308, 311, 316,
- 319, 323, 326, 329, 333, 336, 339, 342,
- 345, 348, 351, 354, 357, 360, 363, 366,
- 369, 372, 375, 378, 381, 384, 387, 390,
- 393, 396, 399, 402, 405, 408, 411, 415,
- 418, 421, 424, 427, 430, 433, 436, 439,
- 442, 445, 448, 451, 454, 457, 460, 463,
- 466, 469, 472, 475, 478, 481, 484, 487,
- 490, 494, 497, 500, 503, 506, 509, 513,
- 516, 519, 522, 525, 528, 531, 534, 537,
- 540, 543, 546, 549, 552, 555, 558, 561,
- 564, 567, 570, 573, 576, 579, 582, 585,
- 588, 591, 594, 597, 600, 603, 606, 609,
- 612, 615, 618, 621, 624, 627, 630, 633,
- 636, 639, 642, 645, 648, 651, 654, 657,
- 660, 663, 666, 669, 672, 675, 678, 681,
- 684, 687, 690, 693, 696, 699, 702, 705,
- 708, 711, 714, 717, 720, 723, 726, 729,
- 732, 735, 738, 740, 742, 744, 746, 748,
- 750, 752, 754, 756, 765, 776, 779, 782,
- 785, 788, 791, 794, 797, 800, 803, 806,
- 809, 812, 815, 818, 823, 826, 829, 832,
- 835, 839, 842, 845, 848, 851, 854, 857,
- 860, 863, 866, 869, 872, 875, 878, 881,
- 884, 887, 890, 893, 897, 900, 903, 906,
- 909, 912, 915, 918, 921, 924, 927, 930,
- 933, 936, 939, 942, 945, 948, 951, 954,
- 957, 960, 963, 966, 969, 972, 975, 978,
- 981, 984, 987, 990, 993, 996, 999, 1002,
- 1005, 1008, 1011, 1014, 1017, 1020, 1023, 1026,
- 1029, 1032, 1035, 1038, 1041, 1044, 1047, 1050,
- 1053, 1056, 1059, 1062, 1065, 1068, 1071, 1074,
- 1077, 1080, 1083, 1086, 1089, 1092, 1095, 1098,
- 1101, 1104, 1107, 1110, 1112, 1114, 1116, 1118,
- 1120, 1122, 1124, 1126, 1128, 1130, 1132, 1134,
- 1136, 1138, 1140, 1142, 1144, 1146, 1148, 1156,
- 1164, 1167, 1170, 1173, 1176, 1179, 1183, 1186,
- 1189, 1192, 1195, 1198, 1201, 1204, 1207, 1210,
- 1213, 1216, 1219, 1222, 1225, 1228, 1231, 1234,
- 1237, 1240, 1243, 1246, 1249, 1252, 1255, 1258,
- 1261, 1264, 1267, 1271, 1274, 1277, 1280, 1283,
- 1286, 1289, 1292, 1295, 1298, 1301, 1304, 1307,
- 1311, 1314, 1317, 1320, 1323, 1326, 1329, 1332,
- 1335, 1338, 1341, 1344, 1347, 1350, 1353, 1356,
- 1359, 1363, 1366, 1370, 1373, 1376, 1379, 1382,
- 1385, 1389, 1392, 1395, 1398, 1401, 1404, 1407,
- 1410, 1413, 1416, 1419, 1422, 1425, 1428, 1431,
- 1434, 1437, 1440, 1443, 1446, 1449, 1452, 1455,
- 1458, 1461, 1464, 1467, 1470, 1473, 1476, 1479,
- 1482, 1485, 1488, 1491, 1494, 1497, 1500, 1503,
- 1506, 1509, 1512, 1516, 1519, 1522, 1525, 1528,
- 1531, 1534, 1537, 1540, 1543, 1546, 1549, 1552,
- 1555, 1558, 1561, 1564, 1567, 1570, 1573, 1576,
- 1579, 1582, 1585, 1588, 1591, 1594, 1597, 1600,
- 1603, 1606, 1609, 1612, 1615, 1618, 1621, 1624,
- 1626, 1628, 1630, 1632, 1634, 1636, 1639, 1641,
- 1643, 1645, 1647, 1649, 1651, 1653, 1655, 1657,
- 1659, 1661, 1663, 1665, 1667, 1670, 1672, 1674,
- 1676, 1678, 1680, 1682, 1684, 1686, 1688, 1690,
- 1692, 1694, 1696, 1698, 1700, 1702, 1704, 1706,
- 1708, 1710, 1713, 1715, 1717, 1719, 1721, 1728,
- 1733, 1736, 1739, 1742, 1745, 1748, 1751, 1754,
- 1757, 1760, 1763, 1766, 1769, 1772, 1775, 1778,
- 1781, 1784, 1787, 1790, 1793, 1796, 1799, 1802,
- 1805, 1808, 1811, 1814, 1817, 1820, 1823, 1826,
- 1829, 1832, 1835, 1838, 1841, 1844, 1847, 1850,
- 1853, 1856, 1859, 1862, 1865, 1868, 1871, 1874,
- 1876, 1878, 1887, 1898, 1901, 1904, 1907, 1910,
- 1913, 1916, 1919, 1922, 1925, 1928, 1931, 1934,
- 1937, 1940, 1945, 1948, 1952, 1955, 1958, 1962,
- 1965, 1968, 1971, 1974, 1978, 1981, 1984, 1987,
- 1990, 1993, 1996, 1999, 2002, 2005, 2008, 2011,
- 2014, 2017, 2020, 2023, 2026, 2029, 2032, 2035,
- 2038, 2041, 2044, 2047, 2050, 2053, 2057, 2060,
- 2063, 2066, 2069, 2072, 2075, 2079, 2082, 2085,
- 2088, 2091, 2094, 2097, 2100, 2103, 2106, 2109,
- 2112, 2115, 2119, 2122, 2125, 2128, 2131, 2134,
- 2137, 2140, 2143, 2146, 2149, 2152, 2155, 2158,
- 2161, 2164, 2167, 2171, 2174, 2177, 2180, 2183,
- 2186, 2190, 2193, 2196, 2199, 2202, 2205, 2208,
- 2211, 2214, 2217, 2220, 2223, 2226, 2229, 2232,
- 2235, 2238, 2241, 2244, 2247, 2250, 2253, 2256,
- 2259, 2262, 2265, 2268, 2271, 2274, 2277, 2280,
- 2283, 2286, 2289, 2292, 2295, 2298, 2301, 2304,
- 2307, 2310, 2313, 2316, 2319, 2322, 2325, 2328,
- 2331, 2334, 2337, 2340, 2343, 2346, 2349, 2352,
- 2355, 2358, 2361, 2364, 2367, 2370, 2373, 2376,
- 2379, 2382, 2385, 2388, 2391, 2394, 2397, 2400,
- 2403, 2406, 2409, 2412, 2415, 2418, 2420, 2422,
- 2424, 2426, 2428, 2430, 2432, 2435, 2437, 2439,
- 2441, 2443, 2445, 2447, 2449, 2451, 2453, 2455,
- 2457, 2459, 2461, 2463, 2465, 2467, 2469, 2471,
- 2473, 2475, 2477, 2479, 2481, 2483, 2485, 2487,
- 2489, 2491, 2493, 2495, 2497, 2499, 2501, 2503,
- 2505, 2507, 2509, 2511, 2513, 2515, 2517, 2520,
- 2522, 2524, 2526, 2528, 2530, 2532, 2534, 2536,
- 2538, 2540, 2542, 2544, 2546, 2548, 2550, 2552,
- 2554, 2556, 2558, 2560, 2562, 2564, 2566, 2568
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 869, 10, 10, 11, 21, 23, 7,
- 37, 40, 10, 0, 3, 46, 7, 56,
- 355, 526, 548, 796, 851, 0, 4, 0,
- 5, 0, 6, 0, 7, 0, 8, 0,
- 10, 22, 9, 10, 22, 9, 2, 10,
- 10, 11, 21, 23, 7, 37, 40, 10,
- 0, 12, 0, 13, 0, 15, 14, 14,
- 15, 14, 14, 16, 16, 17, 16, 16,
- 16, 16, 17, 16, 16, 16, 16, 18,
- 16, 16, 16, 16, 19, 16, 16, 10,
- 20, 20, 0, 10, 20, 20, 0, 10,
- 22, 21, 10, 0, 24, 0, 25, 0,
- 26, 0, 27, 0, 28, 0, 29, 0,
- 30, 0, 31, 0, 32, 0, 33, 0,
- 34, 0, 35, 0, 36, 0, 871, 0,
- 0, 0, 0, 0, 38, 39, 10, 39,
- 39, 37, 38, 38, 10, 39, 37, 39,
- 0, 40, 41, 40, 0, 45, 44, 43,
- 41, 44, 42, 0, 43, 41, 42, 0,
- 43, 42, 45, 44, 43, 41, 44, 42,
- 2, 45, 45, 11, 21, 23, 7, 37,
- 40, 45, 0, 47, 0, 48, 0, 49,
- 0, 50, 0, 51, 0, 52, 0, 53,
- 0, 54, 0, 55, 0, 7, 7, 7,
- 0, 57, 0, 58, 62, 0, 59, 0,
- 60, 0, 61, 8, 0, 7, 0, 63,
- 0, 64, 0, 65, 0, 66, 234, 0,
- 67, 0, 68, 0, 69, 0, 70, 0,
- 71, 0, 72, 0, 73, 0, 74, 0,
- 75, 0, 77, 76, 77, 76, 78, 77,
- 77, 10, 220, 83, 10, 77, 76, 79,
- 85, 83, 95, 112, 126, 142, 152, 202,
- 77, 76, 80, 77, 76, 81, 77, 76,
- 82, 77, 76, 83, 77, 76, 77, 84,
- 76, 2, 10, 10, 11, 21, 23, 7,
- 37, 40, 10, 0, 86, 77, 76, 87,
- 77, 76, 88, 77, 76, 89, 77, 76,
- 90, 77, 76, 91, 77, 76, 92, 77,
- 76, 93, 77, 76, 94, 77, 76, 83,
- 83, 83, 77, 76, 96, 77, 76, 97,
- 101, 77, 76, 98, 77, 76, 99, 77,
- 76, 100, 77, 84, 76, 83, 77, 76,
- 102, 77, 76, 103, 77, 76, 104, 77,
- 76, 105, 77, 76, 106, 77, 76, 107,
- 77, 76, 108, 77, 76, 109, 77, 76,
- 110, 77, 76, 111, 77, 76, 77, 84,
- 76, 113, 77, 76, 114, 77, 76, 115,
- 77, 76, 116, 77, 76, 117, 77, 76,
- 118, 77, 76, 119, 77, 76, 120, 77,
- 76, 121, 77, 76, 122, 77, 76, 123,
- 77, 76, 124, 77, 76, 125, 77, 76,
- 109, 77, 76, 127, 131, 77, 76, 128,
- 77, 76, 129, 77, 76, 130, 77, 76,
- 100, 77, 76, 132, 77, 76, 133, 77,
- 76, 134, 77, 76, 135, 77, 76, 136,
- 77, 76, 137, 77, 76, 138, 77, 76,
- 139, 77, 76, 140, 77, 76, 141, 77,
- 76, 111, 77, 76, 143, 77, 76, 144,
- 77, 76, 145, 77, 76, 146, 77, 76,
- 147, 77, 76, 148, 77, 76, 149, 77,
- 76, 150, 77, 76, 151, 77, 76, 111,
- 77, 76, 153, 158, 77, 76, 154, 77,
- 76, 155, 77, 76, 156, 77, 76, 157,
- 77, 76, 140, 77, 76, 159, 190, 77,
- 76, 160, 77, 76, 161, 77, 76, 162,
- 77, 76, 163, 77, 76, 164, 77, 76,
- 165, 77, 76, 166, 77, 76, 167, 77,
- 76, 168, 77, 76, 169, 77, 76, 170,
- 77, 76, 171, 77, 76, 172, 77, 76,
- 173, 77, 76, 77, 174, 76, 175, 77,
- 76, 176, 77, 76, 177, 77, 76, 178,
- 77, 76, 179, 77, 76, 180, 77, 76,
- 181, 77, 76, 182, 77, 76, 183, 77,
- 76, 184, 77, 76, 185, 77, 76, 186,
- 77, 76, 187, 77, 76, 188, 77, 76,
- 189, 77, 76, 140, 77, 76, 191, 77,
- 76, 192, 77, 76, 193, 77, 76, 194,
- 77, 76, 195, 77, 76, 196, 77, 76,
- 197, 77, 76, 198, 77, 76, 199, 77,
- 76, 200, 77, 76, 201, 77, 76, 111,
- 77, 76, 203, 77, 76, 204, 77, 76,
- 205, 77, 76, 206, 77, 76, 207, 77,
- 76, 208, 77, 76, 209, 77, 76, 210,
- 77, 76, 211, 77, 76, 212, 77, 76,
- 213, 77, 76, 214, 77, 76, 215, 77,
- 76, 216, 77, 76, 217, 77, 76, 218,
- 77, 76, 219, 77, 76, 120, 77, 76,
- 77, 221, 76, 77, 222, 76, 77, 223,
- 76, 77, 224, 76, 77, 225, 76, 77,
- 226, 76, 77, 227, 76, 77, 228, 76,
- 77, 229, 76, 77, 230, 76, 77, 231,
- 76, 77, 232, 76, 77, 233, 76, 77,
- 10, 76, 235, 0, 236, 0, 237, 0,
- 238, 0, 239, 0, 240, 0, 241, 0,
- 243, 242, 243, 242, 244, 243, 243, 10,
- 341, 249, 10, 243, 242, 245, 250, 249,
- 260, 266, 283, 299, 309, 323, 243, 242,
- 246, 243, 242, 247, 243, 242, 248, 243,
- 242, 249, 243, 242, 243, 84, 242, 251,
- 243, 242, 252, 243, 242, 253, 243, 242,
- 254, 243, 242, 255, 243, 242, 256, 243,
- 242, 257, 243, 242, 258, 243, 242, 259,
- 243, 242, 249, 249, 249, 243, 242, 261,
- 243, 242, 262, 243, 242, 263, 243, 242,
- 264, 243, 242, 265, 243, 84, 242, 249,
- 243, 242, 267, 243, 242, 268, 243, 242,
- 269, 243, 242, 270, 243, 242, 271, 243,
- 242, 272, 243, 242, 273, 243, 242, 274,
- 243, 242, 275, 243, 242, 276, 243, 242,
- 277, 243, 242, 278, 243, 242, 279, 243,
- 242, 280, 243, 242, 281, 243, 242, 282,
- 243, 242, 243, 84, 242, 284, 288, 243,
- 242, 285, 243, 242, 286, 243, 242, 287,
- 243, 242, 265, 243, 242, 289, 243, 242,
- 290, 243, 242, 291, 243, 242, 292, 243,
- 242, 293, 243, 242, 294, 243, 242, 295,
- 243, 242, 296, 243, 242, 297, 243, 242,
- 298, 243, 242, 282, 243, 242, 300, 243,
- 242, 301, 243, 242, 302, 243, 242, 303,
- 243, 242, 304, 243, 242, 305, 243, 242,
- 306, 243, 242, 307, 243, 242, 308, 243,
- 242, 282, 243, 242, 310, 243, 242, 311,
- 243, 242, 312, 243, 242, 313, 243, 242,
- 314, 243, 242, 315, 243, 242, 316, 243,
- 242, 317, 243, 242, 318, 243, 242, 319,
- 243, 242, 320, 243, 242, 321, 243, 242,
- 322, 243, 242, 282, 243, 242, 324, 243,
- 242, 325, 243, 242, 326, 243, 242, 327,
- 243, 242, 328, 243, 242, 329, 243, 242,
- 330, 243, 242, 331, 243, 242, 332, 243,
- 242, 333, 243, 242, 334, 243, 242, 335,
- 243, 242, 336, 243, 242, 337, 243, 242,
- 338, 243, 242, 339, 243, 242, 340, 243,
- 242, 274, 243, 242, 243, 342, 242, 243,
- 343, 242, 243, 344, 242, 243, 345, 242,
- 243, 346, 242, 243, 347, 242, 243, 348,
- 242, 243, 349, 242, 243, 350, 242, 243,
- 351, 242, 243, 352, 242, 243, 353, 242,
- 243, 354, 242, 243, 10, 242, 356, 0,
- 357, 0, 358, 0, 359, 0, 360, 0,
- 361, 0, 362, 0, 363, 0, 364, 0,
- 365, 0, 366, 0, 367, 0, 368, 0,
- 369, 0, 370, 0, 371, 0, 372, 0,
- 374, 373, 374, 373, 375, 374, 374, 10,
- 512, 10, 374, 373, 376, 395, 407, 423,
- 442, 494, 374, 373, 377, 374, 373, 378,
- 374, 373, 379, 374, 373, 380, 374, 373,
- 381, 374, 373, 382, 391, 374, 373, 383,
- 374, 373, 384, 374, 373, 385, 374, 373,
- 386, 374, 373, 387, 374, 373, 388, 374,
- 373, 389, 374, 373, 390, 374, 373, 374,
- 84, 373, 392, 374, 373, 393, 374, 373,
- 394, 374, 373, 388, 374, 373, 396, 374,
- 373, 397, 374, 373, 398, 374, 373, 399,
- 374, 373, 400, 374, 373, 401, 374, 373,
- 402, 374, 373, 403, 374, 373, 404, 374,
- 373, 405, 374, 373, 406, 374, 373, 386,
- 374, 373, 408, 374, 373, 409, 374, 373,
- 410, 374, 373, 411, 417, 374, 373, 412,
- 374, 373, 413, 374, 373, 414, 374, 373,
- 415, 374, 373, 416, 374, 373, 390, 374,
- 373, 418, 374, 373, 419, 374, 373, 420,
- 374, 373, 421, 374, 373, 422, 374, 373,
- 415, 374, 373, 424, 431, 374, 373, 425,
- 374, 373, 426, 374, 373, 427, 374, 373,
- 428, 374, 373, 429, 374, 373, 430, 374,
- 373, 419, 374, 373, 432, 374, 373, 433,
- 374, 373, 434, 374, 373, 435, 374, 373,
- 436, 374, 373, 437, 374, 373, 438, 374,
- 373, 439, 374, 373, 440, 374, 373, 441,
- 374, 84, 373, 390, 374, 373, 443, 448,
- 374, 373, 444, 374, 373, 445, 374, 373,
- 446, 374, 373, 447, 374, 373, 415, 374,
- 373, 449, 480, 374, 373, 450, 374, 373,
- 451, 374, 373, 452, 374, 373, 453, 374,
- 373, 454, 374, 373, 455, 374, 373, 456,
- 374, 373, 457, 374, 373, 458, 374, 373,
- 459, 374, 373, 460, 374, 373, 461, 374,
- 373, 462, 374, 373, 463, 374, 373, 374,
- 464, 373, 465, 374, 373, 466, 374, 373,
- 467, 374, 373, 468, 374, 373, 469, 374,
- 373, 470, 374, 373, 471, 374, 373, 472,
- 374, 373, 473, 374, 373, 474, 374, 373,
- 475, 374, 373, 476, 374, 373, 477, 374,
- 373, 478, 374, 373, 479, 374, 373, 415,
- 374, 373, 481, 374, 373, 482, 374, 373,
- 483, 374, 373, 484, 374, 373, 485, 374,
- 373, 486, 374, 373, 487, 374, 373, 488,
- 374, 373, 489, 374, 373, 490, 374, 373,
- 491, 492, 374, 373, 390, 374, 373, 493,
- 374, 373, 441, 374, 373, 495, 374, 373,
- 496, 374, 373, 497, 374, 373, 498, 374,
- 373, 499, 374, 373, 500, 374, 373, 501,
- 374, 373, 502, 374, 373, 503, 374, 373,
- 504, 374, 373, 505, 374, 373, 506, 374,
- 373, 507, 374, 373, 508, 374, 373, 509,
- 374, 373, 510, 374, 373, 511, 374, 373,
- 403, 374, 373, 374, 513, 373, 374, 514,
- 373, 374, 515, 373, 374, 516, 373, 374,
- 517, 373, 374, 518, 373, 374, 519, 373,
- 374, 520, 373, 374, 521, 373, 374, 522,
- 373, 374, 523, 373, 374, 524, 373, 374,
- 525, 373, 374, 10, 373, 527, 531, 0,
- 528, 0, 529, 0, 530, 0, 61, 0,
- 532, 0, 533, 0, 534, 540, 0, 535,
- 0, 536, 0, 537, 0, 538, 0, 539,
- 0, 74, 0, 541, 0, 542, 0, 543,
- 0, 544, 0, 545, 0, 546, 0, 547,
- 0, 371, 0, 549, 560, 0, 550, 0,
- 551, 0, 552, 0, 553, 0, 554, 0,
- 555, 0, 556, 0, 557, 0, 558, 0,
- 559, 0, 538, 0, 561, 0, 562, 0,
- 563, 0, 564, 0, 565, 0, 566, 0,
- 567, 0, 568, 0, 569, 0, 570, 623,
- 0, 571, 0, 572, 0, 574, 573, 574,
- 573, 575, 574, 574, 10, 10, 574, 573,
- 576, 593, 605, 574, 573, 577, 574, 573,
- 578, 574, 573, 579, 574, 573, 580, 574,
- 573, 581, 574, 573, 582, 574, 573, 583,
- 574, 573, 584, 574, 573, 585, 574, 573,
- 586, 574, 573, 587, 574, 573, 588, 574,
- 573, 589, 574, 573, 590, 574, 573, 591,
- 574, 573, 592, 574, 573, 574, 84, 573,
- 594, 574, 573, 595, 574, 573, 596, 574,
- 573, 597, 574, 573, 598, 574, 573, 599,
- 574, 573, 600, 574, 573, 601, 574, 573,
- 602, 574, 573, 603, 574, 573, 604, 574,
- 573, 592, 574, 573, 606, 574, 573, 607,
- 574, 573, 608, 574, 573, 609, 574, 573,
- 610, 574, 573, 611, 574, 573, 612, 574,
- 573, 613, 574, 573, 614, 574, 573, 615,
- 574, 573, 616, 574, 573, 617, 574, 573,
- 618, 574, 573, 619, 574, 573, 620, 574,
- 573, 621, 574, 573, 622, 574, 573, 584,
- 574, 573, 625, 624, 625, 624, 626, 625,
- 625, 10, 782, 631, 10, 625, 624, 627,
- 632, 631, 642, 665, 677, 697, 714, 764,
- 625, 624, 628, 625, 624, 629, 625, 624,
- 630, 625, 624, 631, 625, 624, 625, 84,
- 624, 633, 625, 624, 634, 625, 624, 635,
- 625, 624, 636, 625, 624, 637, 625, 624,
- 638, 625, 624, 639, 625, 624, 640, 625,
- 624, 641, 625, 624, 631, 631, 631, 625,
- 624, 643, 625, 624, 644, 648, 625, 624,
- 645, 625, 624, 646, 625, 624, 647, 625,
- 84, 624, 631, 625, 624, 649, 625, 624,
- 650, 625, 624, 651, 625, 624, 652, 661,
- 625, 624, 653, 625, 624, 654, 625, 624,
- 655, 625, 624, 656, 625, 624, 657, 625,
- 624, 658, 625, 624, 659, 625, 624, 660,
- 625, 624, 625, 84, 624, 662, 625, 624,
- 663, 625, 624, 664, 625, 624, 658, 625,
- 624, 666, 625, 624, 667, 625, 624, 668,
- 625, 624, 669, 625, 624, 670, 625, 624,
- 671, 625, 624, 672, 625, 624, 673, 625,
- 624, 674, 625, 624, 675, 625, 624, 676,
- 625, 624, 656, 625, 624, 678, 682, 625,
- 624, 679, 625, 624, 680, 625, 624, 681,
- 625, 624, 647, 625, 624, 683, 625, 624,
- 684, 625, 624, 685, 691, 625, 624, 686,
- 625, 624, 687, 625, 624, 688, 625, 624,
- 689, 625, 624, 690, 625, 624, 660, 625,
- 624, 692, 625, 624, 693, 625, 624, 694,
- 625, 624, 695, 625, 624, 696, 625, 624,
- 689, 625, 624, 698, 705, 625, 624, 699,
- 625, 624, 700, 625, 624, 701, 625, 624,
- 702, 625, 624, 703, 625, 624, 704, 625,
- 624, 693, 625, 624, 706, 625, 624, 707,
- 625, 624, 708, 625, 624, 709, 625, 624,
- 710, 625, 624, 711, 625, 624, 712, 625,
- 624, 713, 625, 624, 660, 625, 624, 715,
- 720, 625, 624, 716, 625, 624, 717, 625,
- 624, 718, 625, 624, 719, 625, 624, 689,
- 625, 624, 721, 752, 625, 624, 722, 625,
- 624, 723, 625, 624, 724, 625, 624, 725,
- 625, 624, 726, 625, 624, 727, 625, 624,
- 728, 625, 624, 729, 625, 624, 730, 625,
- 624, 731, 625, 624, 732, 625, 624, 733,
- 625, 624, 734, 625, 624, 735, 625, 624,
- 625, 736, 624, 737, 625, 624, 738, 625,
- 624, 739, 625, 624, 740, 625, 624, 741,
- 625, 624, 742, 625, 624, 743, 625, 624,
- 744, 625, 624, 745, 625, 624, 746, 625,
- 624, 747, 625, 624, 748, 625, 624, 749,
- 625, 624, 750, 625, 624, 751, 625, 624,
- 689, 625, 624, 753, 625, 624, 754, 625,
- 624, 755, 625, 624, 756, 625, 624, 757,
- 625, 624, 758, 625, 624, 759, 625, 624,
- 760, 625, 624, 761, 625, 624, 762, 625,
- 624, 763, 625, 624, 660, 625, 624, 765,
- 625, 624, 766, 625, 624, 767, 625, 624,
- 768, 625, 624, 769, 625, 624, 770, 625,
- 624, 771, 625, 624, 772, 625, 624, 773,
- 625, 624, 774, 625, 624, 775, 625, 624,
- 776, 625, 624, 777, 625, 624, 778, 625,
- 624, 779, 625, 624, 780, 625, 624, 781,
- 625, 624, 673, 625, 624, 625, 783, 624,
- 625, 784, 624, 625, 785, 624, 625, 786,
- 624, 625, 787, 624, 625, 788, 624, 625,
- 789, 624, 625, 790, 624, 625, 791, 624,
- 625, 792, 624, 625, 793, 624, 625, 794,
- 624, 625, 795, 624, 625, 10, 624, 797,
- 804, 0, 798, 0, 799, 0, 800, 0,
- 801, 0, 802, 0, 803, 0, 240, 0,
- 805, 836, 0, 806, 0, 807, 0, 808,
- 0, 809, 0, 810, 0, 811, 0, 812,
- 0, 813, 0, 814, 0, 815, 0, 816,
- 0, 817, 0, 818, 0, 819, 0, 820,
- 0, 821, 0, 822, 0, 823, 0, 824,
- 0, 825, 0, 826, 0, 827, 0, 828,
- 0, 829, 0, 830, 0, 831, 0, 832,
- 0, 833, 0, 834, 0, 835, 0, 802,
- 0, 837, 0, 838, 0, 839, 0, 840,
- 0, 841, 0, 842, 0, 843, 0, 844,
- 0, 845, 0, 846, 0, 847, 849, 0,
- 848, 0, 623, 0, 850, 0, 570, 0,
- 852, 0, 853, 0, 854, 0, 855, 0,
- 856, 0, 857, 0, 858, 0, 859, 0,
- 860, 0, 861, 0, 862, 0, 863, 0,
- 864, 0, 865, 0, 866, 0, 867, 0,
- 868, 0, 363, 0, 870, 0, 10, 0,
- 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 29, 0, 54, 0, 5, 1, 0, 29,
- 1, 35, 0, 43, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 149, 126, 57, 110, 23, 0, 29, 54,
- 0, 5, 1, 0, 29, 1, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 0, 0, 43, 54, 37, 37,
- 87, 37, 37, 43, 0, 39, 0, 43,
- 0, 0, 54, 0, 0, 39, 0, 0,
- 96, 54, 0, 93, 90, 41, 96, 90,
- 99, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 0,
- 43, 0, 43, 0, 0, 43, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 84, 54,
- 0, 72, 33, 84, 72, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 15,
- 0, 63, 130, 31, 60, 57, 31, 63,
- 57, 66, 31, 43, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 15, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 15,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 15, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 84, 54, 0, 78,
- 33, 84, 78, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 19, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 19, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 19, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 84, 54, 0, 69,
- 33, 69, 0, 0, 0, 0, 0, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 13, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 13, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 84, 54, 0, 81, 81, 0, 0,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 21, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 144, 57, 54, 0, 84, 54,
- 0, 75, 33, 84, 75, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 17,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 17, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 17, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 871;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 1716 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
-
- #line 1723 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 2013 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 2076 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_cyrl.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_sr_cyrl()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Sr_cyrl", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/sr_cyrl.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/sr_cyrl.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 12, 21, 22, 23, 24, 25,
- 26, 28, 30, 41, 42, 43, 45, 47,
- 52, 57, 62, 67, 71, 75, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 97, 104,
- 109, 113, 119, 122, 124, 130, 141, 142,
- 143, 144, 145, 146, 147, 148, 149, 150,
- 153, 154, 156, 157, 158, 160, 161, 162,
- 163, 164, 166, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 186, 196,
- 198, 200, 202, 204, 206, 217, 219, 221,
- 223, 225, 227, 229, 231, 233, 235, 239,
- 241, 244, 246, 248, 251, 253, 255, 257,
- 259, 261, 263, 265, 267, 269, 271, 273,
- 275, 277, 279, 281, 283, 285, 287, 289,
- 291, 293, 295, 297, 299, 301, 303, 306,
- 308, 310, 312, 314, 316, 318, 320, 322,
- 324, 326, 328, 330, 332, 334, 336, 338,
- 340, 342, 344, 346, 348, 350, 352, 354,
- 356, 359, 361, 363, 365, 367, 369, 372,
- 374, 376, 378, 380, 382, 384, 386, 388,
- 390, 392, 394, 396, 398, 400, 402, 404,
- 406, 408, 410, 412, 414, 416, 418, 420,
- 422, 424, 426, 428, 430, 432, 434, 436,
- 438, 440, 442, 444, 446, 448, 450, 452,
- 454, 456, 458, 460, 462, 464, 466, 468,
- 470, 472, 474, 476, 478, 480, 482, 484,
- 486, 488, 490, 492, 494, 496, 498, 500,
- 502, 504, 506, 508, 510, 512, 514, 516,
- 518, 520, 522, 523, 524, 525, 526, 527,
- 528, 529, 530, 531, 540, 550, 552, 554,
- 556, 558, 560, 562, 564, 566, 568, 570,
- 572, 574, 576, 578, 582, 584, 586, 588,
- 590, 593, 595, 597, 599, 601, 603, 605,
- 607, 609, 611, 613, 615, 617, 619, 621,
- 623, 625, 627, 629, 632, 634, 636, 638,
- 640, 642, 644, 646, 648, 650, 652, 654,
- 656, 658, 660, 662, 664, 666, 668, 670,
- 672, 674, 676, 678, 680, 682, 684, 686,
- 688, 690, 692, 694, 696, 698, 700, 702,
- 704, 706, 708, 710, 712, 714, 716, 718,
- 720, 722, 724, 726, 728, 730, 732, 734,
- 736, 738, 740, 742, 744, 746, 748, 750,
- 752, 754, 756, 758, 760, 762, 764, 766,
- 768, 770, 772, 774, 775, 776, 777, 778,
- 779, 780, 781, 782, 783, 784, 785, 786,
- 787, 788, 789, 790, 791, 792, 793, 801,
- 808, 810, 812, 814, 816, 818, 821, 823,
- 825, 827, 829, 831, 833, 835, 837, 839,
- 841, 843, 845, 847, 849, 851, 853, 855,
- 857, 859, 861, 863, 865, 867, 869, 871,
- 873, 875, 877, 880, 882, 884, 886, 888,
- 890, 892, 894, 896, 898, 900, 902, 904,
- 907, 909, 911, 913, 915, 917, 919, 921,
- 923, 925, 927, 929, 931, 933, 935, 937,
- 939, 942, 944, 947, 949, 951, 953, 955,
- 957, 960, 962, 964, 966, 968, 970, 972,
- 974, 976, 978, 980, 982, 984, 986, 988,
- 990, 992, 994, 996, 998, 1000, 1002, 1004,
- 1006, 1008, 1010, 1012, 1014, 1016, 1018, 1020,
- 1022, 1024, 1026, 1028, 1030, 1032, 1034, 1036,
- 1038, 1040, 1042, 1045, 1047, 1049, 1051, 1053,
- 1055, 1057, 1059, 1061, 1063, 1065, 1067, 1069,
- 1071, 1073, 1075, 1077, 1079, 1081, 1083, 1085,
- 1087, 1089, 1091, 1093, 1095, 1097, 1099, 1101,
- 1103, 1105, 1107, 1109, 1111, 1113, 1115, 1117,
- 1118, 1119, 1120, 1121, 1122, 1123, 1125, 1126,
- 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134,
- 1135, 1136, 1137, 1138, 1139, 1141, 1142, 1143,
- 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151,
- 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159,
- 1160, 1161, 1163, 1164, 1165, 1166, 1167, 1174,
- 1178, 1180, 1182, 1184, 1186, 1188, 1190, 1192,
- 1194, 1196, 1198, 1200, 1202, 1204, 1206, 1208,
- 1210, 1212, 1214, 1216, 1218, 1220, 1222, 1224,
- 1226, 1228, 1230, 1232, 1234, 1236, 1238, 1240,
- 1242, 1244, 1246, 1248, 1250, 1252, 1254, 1256,
- 1258, 1260, 1262, 1264, 1266, 1268, 1270, 1272,
- 1273, 1274, 1283, 1293, 1295, 1297, 1299, 1301,
- 1303, 1305, 1307, 1309, 1311, 1313, 1315, 1317,
- 1319, 1321, 1325, 1327, 1330, 1332, 1334, 1337,
- 1339, 1341, 1343, 1345, 1348, 1350, 1352, 1354,
- 1356, 1358, 1360, 1362, 1364, 1366, 1368, 1370,
- 1372, 1374, 1376, 1378, 1380, 1382, 1384, 1386,
- 1388, 1390, 1392, 1394, 1396, 1398, 1401, 1403,
- 1405, 1407, 1409, 1411, 1413, 1416, 1418, 1420,
- 1422, 1424, 1426, 1428, 1430, 1432, 1434, 1436,
- 1438, 1440, 1443, 1445, 1447, 1449, 1451, 1453,
- 1455, 1457, 1459, 1461, 1463, 1465, 1467, 1469,
- 1471, 1473, 1475, 1478, 1480, 1482, 1484, 1486,
- 1488, 1491, 1493, 1495, 1497, 1499, 1501, 1503,
- 1505, 1507, 1509, 1511, 1513, 1515, 1517, 1519,
- 1521, 1523, 1525, 1527, 1529, 1531, 1533, 1535,
- 1537, 1539, 1541, 1543, 1545, 1547, 1549, 1551,
- 1553, 1555, 1557, 1559, 1561, 1563, 1565, 1567,
- 1569, 1571, 1573, 1575, 1577, 1579, 1581, 1583,
- 1585, 1587, 1589, 1591, 1593, 1595, 1597, 1599,
- 1601, 1603, 1605, 1607, 1609, 1611, 1613, 1615,
- 1617, 1619, 1621, 1623, 1625, 1627, 1629, 1631,
- 1633, 1635, 1637, 1639, 1641, 1643, 1644, 1645,
- 1646, 1647, 1648, 1649, 1650, 1652, 1653, 1654,
- 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662,
- 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670,
- 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678,
- 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686,
- 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1695,
- 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703,
- 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711,
- 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719
-};
-
-static const char _lexer_trans_keys[] = {
- -48, -17, 10, 32, 34, 35, 37, 42,
- 64, 124, 9, 13, -112, -105, -104, -102,
- -100, -98, -97, -95, -92, -48, -69, -48,
- -72, 32, 10, 13, 10, 13, -48, 10,
- 32, 34, 35, 37, 42, 64, 124, 9,
- 13, 34, 34, 10, 13, 10, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 9, 13, 10,
- 32, 9, 13, 10, 13, 10, 95, 70,
- 69, 65, 84, 85, 82, 69, 95, 69,
- 78, 68, 95, 37, 13, 32, 64, 9,
- 10, 9, 10, 13, 32, 64, 11, 12,
- 10, 32, 64, 9, 13, 32, 124, 9,
- 13, 10, 32, 92, 124, 9, 13, 10,
- 92, 124, 10, 92, 10, 32, 92, 124,
- 9, 13, -48, 10, 32, 34, 35, 37,
- 42, 64, 124, 9, 13, -48, -80, -48,
- -76, -48, -80, -47, -126, -48, -75, -72,
- -66, -48, -80, -66, -48, -76, -48, 32,
- -80, -48, -67, -47, -126, -122, -48, -75,
- -48, -70, -47, -127, -47, -126, 58, 10,
- 10, -48, 10, 32, 35, 37, 42, 64,
- 9, 13, -112, -105, -104, -102, -100, -98,
- -97, -95, -92, 10, -48, 10, -69, 10,
- -48, 10, -72, 10, 10, 32, -48, 10,
- 32, 34, 35, 37, 42, 64, 124, 9,
- 13, -48, 10, -80, 10, -48, 10, -76,
- 10, -48, 10, -80, 10, -47, 10, -126,
- 10, -48, 10, -75, -72, -66, 10, -48,
- 10, -80, -66, 10, -48, 10, -76, 10,
- -48, 10, 32, -80, 10, -48, 10, -67,
- 10, -47, 10, -122, 10, -48, 10, -75,
- 10, -48, 10, -65, 10, -47, 10, -126,
- 10, 10, 58, -48, 10, -66, 10, -48,
- 10, -77, 10, -47, 10, -125, 10, -47,
- 10, -101, 10, -48, 10, -67, 10, -48,
- 10, -66, 10, -47, 10, -127, 10, -48,
- -47, 10, -67, 10, -48, 10, -76, 10,
- -48, 10, -127, 10, -48, 10, -66, 10,
- -48, 10, -79, 10, -48, 10, -72, 10,
- -48, 10, -67, 10, -48, 10, -80, 10,
- -47, 10, -128, 10, -48, 10, -72, 10,
- -48, 10, -68, 10, -48, 10, -75, 10,
- -47, 10, -128, 10, -48, -47, 10, -70,
- 10, -48, 10, -72, 10, -47, 10, -122,
- 10, -126, -122, 10, -47, 10, -128, 10,
- -47, 10, -125, 10, -48, 10, -70, 10,
- -47, 10, -126, 10, -47, 10, -125, 10,
- -47, 10, -128, 10, -48, 10, -80, 10,
- 10, 32, -47, 10, -127, 10, -47, 10,
- -122, 10, -48, 10, -75, 10, -48, 10,
- -67, 10, -48, 10, -80, 10, -47, 10,
- -128, 10, -48, 10, -72, 10, -47, 10,
- -104, 10, -48, 10, -75, 10, -48, 10,
- -67, 10, -48, 10, -80, 10, -47, 10,
- -128, 10, -48, 10, -72, 10, -48, 10,
- -66, 10, -47, 10, -125, 10, -48, 10,
- -67, 10, -48, 10, -70, 10, -47, 10,
- -122, 10, -48, 10, -72, 10, -48, 10,
- -66, 10, -48, 10, -67, 10, -48, 10,
- -80, 10, -48, 10, -69, 10, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, -48, -75, -48, -65, -47, -126,
- 58, 10, 10, -48, 10, 32, 35, 37,
- 42, 64, 9, 13, -112, -105, -104, -102,
- -100, -98, -97, -95, -92, 10, -48, 10,
- -69, 10, -48, 10, -72, 10, 10, 32,
- -48, 10, -80, 10, -48, 10, -76, 10,
- -48, 10, -80, 10, -47, 10, -126, 10,
- -48, 10, -75, -72, -66, 10, -48, 10,
- -80, 10, -48, 10, -76, 10, -48, 10,
- 32, -80, 10, -48, 10, -66, 10, -48,
- 10, -77, 10, -47, 10, -125, 10, -47,
- 10, -101, 10, -48, 10, -67, 10, -48,
- 10, -66, 10, -47, 10, -127, 10, -47,
- 10, -126, 10, 10, 58, -48, -47, 10,
- -67, 10, -48, 10, -76, 10, -48, 10,
- -127, 10, -48, 10, -66, 10, -48, 10,
- -79, 10, -48, 10, -72, 10, -48, 10,
- -67, 10, -48, 10, -80, 10, -47, 10,
- -128, 10, -48, 10, -72, 10, -48, 10,
- -68, 10, -48, 10, -75, 10, -47, 10,
- -128, 10, -47, 10, -122, 10, -48, 10,
- -75, 10, -48, 10, -67, 10, -48, 10,
- -80, 10, -47, 10, -128, 10, -48, 10,
- -72, 10, -48, 10, -66, 10, -47, 10,
- -125, 10, -48, 10, -67, 10, -48, 10,
- -70, 10, -47, 10, -122, 10, -48, 10,
- -72, 10, -48, 10, -66, 10, -48, 10,
- -67, 10, -48, 10, -80, 10, -48, 10,
- -69, 10, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, -48, -66,
- -48, -77, -47, -125, -47, -101, -48, -67,
- -48, -66, -47, -127, -47, -126, 58, 10,
- 10, -48, 10, 32, 35, 37, 64, 9,
- 13, -102, -100, -98, -97, -95, -92, 10,
- -48, 10, -66, 10, -48, 10, -67, 10,
- -47, 10, -126, -122, 10, -48, 10, -75,
- 10, -48, 10, -70, 10, -47, 10, -127,
- 10, -47, 10, -126, 10, 10, 58, -48,
- 10, -75, 10, -48, 10, -65, 10, -48,
- 10, -66, 10, -48, 10, -77, 10, -47,
- 10, -125, 10, -47, 10, -101, 10, -48,
- 10, -67, 10, -48, 10, -66, 10, -47,
- 10, -127, 10, -48, 10, -67, -66, 10,
- -48, 10, -66, 10, -48, 10, -78, 10,
- -48, 10, -80, 10, -48, 10, -79, 10,
- -48, 10, -72, 10, -48, 10, -67, 10,
- -48, -47, 10, -66, 10, -48, 10, -73,
- 10, -48, 10, -80, 10, -48, 10, -76,
- 10, -128, 10, -48, 10, -72, 10, -48,
- 10, -68, 10, -48, 10, -75, 10, -47,
- 10, -128, 10, -48, 10, 58, -72, 10,
- -48, -47, 10, -70, 10, -48, 10, -72,
- 10, -47, 10, -122, 10, -126, -122, 10,
- -47, 10, -128, 10, -47, 10, -125, 10,
- -48, 10, -70, 10, -47, 10, -126, 10,
- -47, 10, -125, 10, -47, 10, -128, 10,
- -48, 10, -80, 10, 10, 32, -47, 10,
- -127, 10, -47, 10, -122, 10, -48, 10,
- -75, 10, -48, 10, -67, 10, -48, 10,
- -80, 10, -47, 10, -128, 10, -48, 10,
- -72, 10, -47, 10, -104, 10, -48, 10,
- -75, 10, -48, 10, -67, 10, -48, 10,
- -80, 10, -47, 10, -128, 10, -48, 10,
- -72, 10, -48, -47, 10, -66, 10, -104,
- 10, -48, 10, -47, 10, -125, 10, -48,
- 10, -67, 10, -48, 10, -70, 10, -47,
- 10, -122, 10, -48, 10, -72, 10, -48,
- 10, -66, 10, -48, 10, -67, 10, -48,
- 10, -80, 10, -48, 10, -69, 10, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, -48, -47, -67, -48, -76,
- -48, -127, -48, -67, -66, -48, -66, -48,
- -78, -48, -80, -48, -79, -48, -72, -48,
- -67, -48, -80, -48, -47, -66, -48, -73,
- -48, -80, -48, -76, -48, -72, -48, -67,
- -128, -48, -72, -48, -68, -48, -75, -47,
- -128, -48, 58, -72, 58, 10, 10, -48,
- 10, 32, 35, 124, 9, 13, -100, -98,
- -92, 10, -48, 10, -66, 10, -48, 10,
- -77, 10, -47, 10, -125, 10, -47, 10,
- -101, 10, -48, 10, -67, 10, -48, 10,
- -66, 10, -47, 10, -127, 10, -47, 10,
- -126, 10, 10, 58, -47, 10, -127, 10,
- -48, 10, -66, 10, -48, 10, -79, 10,
- -48, 10, -72, 10, -48, 10, -67, 10,
- -48, 10, -80, 10, -47, 10, -125, 10,
- -48, 10, -67, 10, -48, 10, -70, 10,
- -47, 10, -122, 10, -48, 10, -72, 10,
- -48, 10, -66, 10, -48, 10, -67, 10,
- -48, 10, -80, 10, -48, 10, -69, 10,
- 10, 10, -48, 10, 32, 35, 37, 42,
- 64, 9, 13, -112, -105, -104, -102, -100,
- -98, -97, -95, -92, 10, -48, 10, -69,
- 10, -48, 10, -72, 10, 10, 32, -48,
- 10, -80, 10, -48, 10, -76, 10, -48,
- 10, -80, 10, -47, 10, -126, 10, -48,
- 10, -75, -72, -66, 10, -48, 10, -80,
- -66, 10, -48, 10, -76, 10, -48, 10,
- 32, -80, 10, -48, 10, -67, 10, -47,
- 10, -126, -122, 10, -48, 10, -75, 10,
- -48, 10, -70, 10, -47, 10, -127, 10,
- -47, 10, -126, 10, 10, 58, -48, 10,
- -75, 10, -48, 10, -65, 10, -48, 10,
- -66, 10, -48, 10, -77, 10, -47, 10,
- -125, 10, -47, 10, -101, 10, -48, 10,
- -67, 10, -48, 10, -66, 10, -48, -47,
- 10, -67, 10, -48, 10, -76, 10, -48,
- 10, -127, 10, -48, 10, -67, -66, 10,
- -48, 10, -66, 10, -48, 10, -78, 10,
- -48, 10, -80, 10, -48, 10, -79, 10,
- -48, 10, -72, 10, -48, 10, -67, 10,
- -48, -47, 10, -66, 10, -48, 10, -73,
- 10, -48, 10, -80, 10, -48, 10, -76,
- 10, -128, 10, -48, 10, -72, 10, -48,
- 10, -68, 10, -48, 10, -75, 10, -47,
- 10, -128, 10, -48, -47, 10, -70, 10,
- -48, 10, -72, 10, -47, 10, -122, 10,
- -126, -122, 10, -47, 10, -128, 10, -47,
- 10, -125, 10, -48, 10, -70, 10, -47,
- 10, -126, 10, -47, 10, -125, 10, -47,
- 10, -128, 10, -48, 10, -80, 10, 10,
- 32, -47, 10, -127, 10, -47, 10, -122,
- 10, -48, 10, -75, 10, -48, 10, -67,
- 10, -48, 10, -80, 10, -47, 10, -128,
- 10, -48, 10, -72, 10, -47, 10, -104,
- 10, -48, 10, -75, 10, -48, 10, -67,
- 10, -48, 10, -80, 10, -47, 10, -128,
- 10, -48, 10, -72, 10, -48, 10, -66,
- 10, -47, 10, -125, 10, -48, 10, -67,
- 10, -48, 10, -70, 10, -47, 10, -122,
- 10, -48, 10, -72, 10, -48, 10, -66,
- 10, -48, 10, -67, 10, -48, 10, -80,
- 10, -48, 10, -69, 10, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, -48, -47, -70, -48, -72, -47, -122,
- -48, -80, -126, -122, -47, -128, -47, -125,
- -48, -70, -47, -126, -47, -125, -47, -128,
- -48, -80, 32, -47, -127, -47, -122, -48,
- -75, -48, -67, -48, -80, -47, -128, -48,
- -72, -47, -104, -48, -75, -48, -67, -48,
- -80, -47, -128, -48, -72, -48, -47, -66,
- 58, -104, -48, -47, -125, -48, -67, -48,
- -70, -47, -122, -48, -72, -48, -66, -48,
- -67, -48, -80, -48, -69, -69, -65, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 10, 9, 1, 1, 1, 1, 1,
- 2, 2, 9, 1, 1, 2, 2, 3,
- 3, 3, 3, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 3, 5, 3,
- 2, 4, 3, 2, 4, 9, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 3,
- 1, 2, 1, 1, 2, 1, 1, 1,
- 1, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 7, 10, 2,
- 2, 2, 2, 2, 9, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 4, 2,
- 3, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 7, 10, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 4, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 6, 7,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 3, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 2, 1, 1, 1, 1, 5, 4,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 7, 10, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 4, 2, 3, 2, 2, 3, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 1,
- 1, 1, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 1, 1,
- 1, 1, 0, 0, 1, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 12, 22, 24, 26, 28, 30,
- 32, 35, 38, 49, 51, 53, 56, 59,
- 64, 69, 74, 79, 83, 87, 90, 92,
- 94, 96, 98, 100, 102, 104, 106, 108,
- 110, 112, 114, 116, 118, 120, 125, 132,
- 137, 141, 147, 151, 154, 160, 171, 173,
- 175, 177, 179, 181, 183, 185, 187, 189,
- 193, 195, 198, 200, 202, 205, 207, 209,
- 211, 213, 216, 218, 220, 222, 224, 226,
- 228, 230, 232, 234, 236, 238, 247, 258,
- 261, 264, 267, 270, 273, 284, 287, 290,
- 293, 296, 299, 302, 305, 308, 311, 316,
- 319, 323, 326, 329, 333, 336, 339, 342,
- 345, 348, 351, 354, 357, 360, 363, 366,
- 369, 372, 375, 378, 381, 384, 387, 390,
- 393, 396, 399, 402, 405, 408, 411, 415,
- 418, 421, 424, 427, 430, 433, 436, 439,
- 442, 445, 448, 451, 454, 457, 460, 463,
- 466, 469, 472, 475, 478, 481, 484, 487,
- 490, 494, 497, 500, 503, 506, 509, 513,
- 516, 519, 522, 525, 528, 531, 534, 537,
- 540, 543, 546, 549, 552, 555, 558, 561,
- 564, 567, 570, 573, 576, 579, 582, 585,
- 588, 591, 594, 597, 600, 603, 606, 609,
- 612, 615, 618, 621, 624, 627, 630, 633,
- 636, 639, 642, 645, 648, 651, 654, 657,
- 660, 663, 666, 669, 672, 675, 678, 681,
- 684, 687, 690, 693, 696, 699, 702, 705,
- 708, 711, 714, 717, 720, 723, 726, 729,
- 732, 735, 738, 740, 742, 744, 746, 748,
- 750, 752, 754, 756, 765, 776, 779, 782,
- 785, 788, 791, 794, 797, 800, 803, 806,
- 809, 812, 815, 818, 823, 826, 829, 832,
- 835, 839, 842, 845, 848, 851, 854, 857,
- 860, 863, 866, 869, 872, 875, 878, 881,
- 884, 887, 890, 893, 897, 900, 903, 906,
- 909, 912, 915, 918, 921, 924, 927, 930,
- 933, 936, 939, 942, 945, 948, 951, 954,
- 957, 960, 963, 966, 969, 972, 975, 978,
- 981, 984, 987, 990, 993, 996, 999, 1002,
- 1005, 1008, 1011, 1014, 1017, 1020, 1023, 1026,
- 1029, 1032, 1035, 1038, 1041, 1044, 1047, 1050,
- 1053, 1056, 1059, 1062, 1065, 1068, 1071, 1074,
- 1077, 1080, 1083, 1086, 1089, 1092, 1095, 1098,
- 1101, 1104, 1107, 1110, 1112, 1114, 1116, 1118,
- 1120, 1122, 1124, 1126, 1128, 1130, 1132, 1134,
- 1136, 1138, 1140, 1142, 1144, 1146, 1148, 1156,
- 1164, 1167, 1170, 1173, 1176, 1179, 1183, 1186,
- 1189, 1192, 1195, 1198, 1201, 1204, 1207, 1210,
- 1213, 1216, 1219, 1222, 1225, 1228, 1231, 1234,
- 1237, 1240, 1243, 1246, 1249, 1252, 1255, 1258,
- 1261, 1264, 1267, 1271, 1274, 1277, 1280, 1283,
- 1286, 1289, 1292, 1295, 1298, 1301, 1304, 1307,
- 1311, 1314, 1317, 1320, 1323, 1326, 1329, 1332,
- 1335, 1338, 1341, 1344, 1347, 1350, 1353, 1356,
- 1359, 1363, 1366, 1370, 1373, 1376, 1379, 1382,
- 1385, 1389, 1392, 1395, 1398, 1401, 1404, 1407,
- 1410, 1413, 1416, 1419, 1422, 1425, 1428, 1431,
- 1434, 1437, 1440, 1443, 1446, 1449, 1452, 1455,
- 1458, 1461, 1464, 1467, 1470, 1473, 1476, 1479,
- 1482, 1485, 1488, 1491, 1494, 1497, 1500, 1503,
- 1506, 1509, 1512, 1516, 1519, 1522, 1525, 1528,
- 1531, 1534, 1537, 1540, 1543, 1546, 1549, 1552,
- 1555, 1558, 1561, 1564, 1567, 1570, 1573, 1576,
- 1579, 1582, 1585, 1588, 1591, 1594, 1597, 1600,
- 1603, 1606, 1609, 1612, 1615, 1618, 1621, 1624,
- 1626, 1628, 1630, 1632, 1634, 1636, 1639, 1641,
- 1643, 1645, 1647, 1649, 1651, 1653, 1655, 1657,
- 1659, 1661, 1663, 1665, 1667, 1670, 1672, 1674,
- 1676, 1678, 1680, 1682, 1684, 1686, 1688, 1690,
- 1692, 1694, 1696, 1698, 1700, 1702, 1704, 1706,
- 1708, 1710, 1713, 1715, 1717, 1719, 1721, 1728,
- 1733, 1736, 1739, 1742, 1745, 1748, 1751, 1754,
- 1757, 1760, 1763, 1766, 1769, 1772, 1775, 1778,
- 1781, 1784, 1787, 1790, 1793, 1796, 1799, 1802,
- 1805, 1808, 1811, 1814, 1817, 1820, 1823, 1826,
- 1829, 1832, 1835, 1838, 1841, 1844, 1847, 1850,
- 1853, 1856, 1859, 1862, 1865, 1868, 1871, 1874,
- 1876, 1878, 1887, 1898, 1901, 1904, 1907, 1910,
- 1913, 1916, 1919, 1922, 1925, 1928, 1931, 1934,
- 1937, 1940, 1945, 1948, 1952, 1955, 1958, 1962,
- 1965, 1968, 1971, 1974, 1978, 1981, 1984, 1987,
- 1990, 1993, 1996, 1999, 2002, 2005, 2008, 2011,
- 2014, 2017, 2020, 2023, 2026, 2029, 2032, 2035,
- 2038, 2041, 2044, 2047, 2050, 2053, 2057, 2060,
- 2063, 2066, 2069, 2072, 2075, 2079, 2082, 2085,
- 2088, 2091, 2094, 2097, 2100, 2103, 2106, 2109,
- 2112, 2115, 2119, 2122, 2125, 2128, 2131, 2134,
- 2137, 2140, 2143, 2146, 2149, 2152, 2155, 2158,
- 2161, 2164, 2167, 2171, 2174, 2177, 2180, 2183,
- 2186, 2190, 2193, 2196, 2199, 2202, 2205, 2208,
- 2211, 2214, 2217, 2220, 2223, 2226, 2229, 2232,
- 2235, 2238, 2241, 2244, 2247, 2250, 2253, 2256,
- 2259, 2262, 2265, 2268, 2271, 2274, 2277, 2280,
- 2283, 2286, 2289, 2292, 2295, 2298, 2301, 2304,
- 2307, 2310, 2313, 2316, 2319, 2322, 2325, 2328,
- 2331, 2334, 2337, 2340, 2343, 2346, 2349, 2352,
- 2355, 2358, 2361, 2364, 2367, 2370, 2373, 2376,
- 2379, 2382, 2385, 2388, 2391, 2394, 2397, 2400,
- 2403, 2406, 2409, 2412, 2415, 2418, 2420, 2422,
- 2424, 2426, 2428, 2430, 2432, 2435, 2437, 2439,
- 2441, 2443, 2445, 2447, 2449, 2451, 2453, 2455,
- 2457, 2459, 2461, 2463, 2465, 2467, 2469, 2471,
- 2473, 2475, 2477, 2479, 2481, 2483, 2485, 2487,
- 2489, 2491, 2493, 2495, 2497, 2499, 2501, 2503,
- 2505, 2507, 2509, 2511, 2513, 2515, 2517, 2520,
- 2522, 2524, 2526, 2528, 2530, 2532, 2534, 2536,
- 2538, 2540, 2542, 2544, 2546, 2548, 2550, 2552,
- 2554, 2556, 2558, 2560, 2562, 2564, 2566, 2568
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 869, 10, 10, 11, 21, 23, 7,
- 37, 40, 10, 0, 3, 46, 7, 56,
- 355, 526, 548, 796, 851, 0, 4, 0,
- 5, 0, 6, 0, 7, 0, 8, 0,
- 10, 22, 9, 10, 22, 9, 2, 10,
- 10, 11, 21, 23, 7, 37, 40, 10,
- 0, 12, 0, 13, 0, 15, 14, 14,
- 15, 14, 14, 16, 16, 17, 16, 16,
- 16, 16, 17, 16, 16, 16, 16, 18,
- 16, 16, 16, 16, 19, 16, 16, 10,
- 20, 20, 0, 10, 20, 20, 0, 10,
- 22, 21, 10, 0, 24, 0, 25, 0,
- 26, 0, 27, 0, 28, 0, 29, 0,
- 30, 0, 31, 0, 32, 0, 33, 0,
- 34, 0, 35, 0, 36, 0, 871, 0,
- 0, 0, 0, 0, 38, 39, 10, 39,
- 39, 37, 38, 38, 10, 39, 37, 39,
- 0, 40, 41, 40, 0, 45, 44, 43,
- 41, 44, 42, 0, 43, 41, 42, 0,
- 43, 42, 45, 44, 43, 41, 44, 42,
- 2, 45, 45, 11, 21, 23, 7, 37,
- 40, 45, 0, 47, 0, 48, 0, 49,
- 0, 50, 0, 51, 0, 52, 0, 53,
- 0, 54, 0, 55, 0, 7, 7, 7,
- 0, 57, 0, 58, 62, 0, 59, 0,
- 60, 0, 61, 8, 0, 7, 0, 63,
- 0, 64, 0, 65, 0, 66, 234, 0,
- 67, 0, 68, 0, 69, 0, 70, 0,
- 71, 0, 72, 0, 73, 0, 74, 0,
- 75, 0, 77, 76, 77, 76, 78, 77,
- 77, 10, 220, 83, 10, 77, 76, 79,
- 85, 83, 95, 112, 126, 142, 152, 202,
- 77, 76, 80, 77, 76, 81, 77, 76,
- 82, 77, 76, 83, 77, 76, 77, 84,
- 76, 2, 10, 10, 11, 21, 23, 7,
- 37, 40, 10, 0, 86, 77, 76, 87,
- 77, 76, 88, 77, 76, 89, 77, 76,
- 90, 77, 76, 91, 77, 76, 92, 77,
- 76, 93, 77, 76, 94, 77, 76, 83,
- 83, 83, 77, 76, 96, 77, 76, 97,
- 101, 77, 76, 98, 77, 76, 99, 77,
- 76, 100, 77, 84, 76, 83, 77, 76,
- 102, 77, 76, 103, 77, 76, 104, 77,
- 76, 105, 77, 76, 106, 77, 76, 107,
- 77, 76, 108, 77, 76, 109, 77, 76,
- 110, 77, 76, 111, 77, 76, 77, 84,
- 76, 113, 77, 76, 114, 77, 76, 115,
- 77, 76, 116, 77, 76, 117, 77, 76,
- 118, 77, 76, 119, 77, 76, 120, 77,
- 76, 121, 77, 76, 122, 77, 76, 123,
- 77, 76, 124, 77, 76, 125, 77, 76,
- 109, 77, 76, 127, 131, 77, 76, 128,
- 77, 76, 129, 77, 76, 130, 77, 76,
- 100, 77, 76, 132, 77, 76, 133, 77,
- 76, 134, 77, 76, 135, 77, 76, 136,
- 77, 76, 137, 77, 76, 138, 77, 76,
- 139, 77, 76, 140, 77, 76, 141, 77,
- 76, 111, 77, 76, 143, 77, 76, 144,
- 77, 76, 145, 77, 76, 146, 77, 76,
- 147, 77, 76, 148, 77, 76, 149, 77,
- 76, 150, 77, 76, 151, 77, 76, 111,
- 77, 76, 153, 158, 77, 76, 154, 77,
- 76, 155, 77, 76, 156, 77, 76, 157,
- 77, 76, 140, 77, 76, 159, 190, 77,
- 76, 160, 77, 76, 161, 77, 76, 162,
- 77, 76, 163, 77, 76, 164, 77, 76,
- 165, 77, 76, 166, 77, 76, 167, 77,
- 76, 168, 77, 76, 169, 77, 76, 170,
- 77, 76, 171, 77, 76, 172, 77, 76,
- 173, 77, 76, 77, 174, 76, 175, 77,
- 76, 176, 77, 76, 177, 77, 76, 178,
- 77, 76, 179, 77, 76, 180, 77, 76,
- 181, 77, 76, 182, 77, 76, 183, 77,
- 76, 184, 77, 76, 185, 77, 76, 186,
- 77, 76, 187, 77, 76, 188, 77, 76,
- 189, 77, 76, 140, 77, 76, 191, 77,
- 76, 192, 77, 76, 193, 77, 76, 194,
- 77, 76, 195, 77, 76, 196, 77, 76,
- 197, 77, 76, 198, 77, 76, 199, 77,
- 76, 200, 77, 76, 201, 77, 76, 111,
- 77, 76, 203, 77, 76, 204, 77, 76,
- 205, 77, 76, 206, 77, 76, 207, 77,
- 76, 208, 77, 76, 209, 77, 76, 210,
- 77, 76, 211, 77, 76, 212, 77, 76,
- 213, 77, 76, 214, 77, 76, 215, 77,
- 76, 216, 77, 76, 217, 77, 76, 218,
- 77, 76, 219, 77, 76, 120, 77, 76,
- 77, 221, 76, 77, 222, 76, 77, 223,
- 76, 77, 224, 76, 77, 225, 76, 77,
- 226, 76, 77, 227, 76, 77, 228, 76,
- 77, 229, 76, 77, 230, 76, 77, 231,
- 76, 77, 232, 76, 77, 233, 76, 77,
- 10, 76, 235, 0, 236, 0, 237, 0,
- 238, 0, 239, 0, 240, 0, 241, 0,
- 243, 242, 243, 242, 244, 243, 243, 10,
- 341, 249, 10, 243, 242, 245, 250, 249,
- 260, 266, 283, 299, 309, 323, 243, 242,
- 246, 243, 242, 247, 243, 242, 248, 243,
- 242, 249, 243, 242, 243, 84, 242, 251,
- 243, 242, 252, 243, 242, 253, 243, 242,
- 254, 243, 242, 255, 243, 242, 256, 243,
- 242, 257, 243, 242, 258, 243, 242, 259,
- 243, 242, 249, 249, 249, 243, 242, 261,
- 243, 242, 262, 243, 242, 263, 243, 242,
- 264, 243, 242, 265, 243, 84, 242, 249,
- 243, 242, 267, 243, 242, 268, 243, 242,
- 269, 243, 242, 270, 243, 242, 271, 243,
- 242, 272, 243, 242, 273, 243, 242, 274,
- 243, 242, 275, 243, 242, 276, 243, 242,
- 277, 243, 242, 278, 243, 242, 279, 243,
- 242, 280, 243, 242, 281, 243, 242, 282,
- 243, 242, 243, 84, 242, 284, 288, 243,
- 242, 285, 243, 242, 286, 243, 242, 287,
- 243, 242, 265, 243, 242, 289, 243, 242,
- 290, 243, 242, 291, 243, 242, 292, 243,
- 242, 293, 243, 242, 294, 243, 242, 295,
- 243, 242, 296, 243, 242, 297, 243, 242,
- 298, 243, 242, 282, 243, 242, 300, 243,
- 242, 301, 243, 242, 302, 243, 242, 303,
- 243, 242, 304, 243, 242, 305, 243, 242,
- 306, 243, 242, 307, 243, 242, 308, 243,
- 242, 282, 243, 242, 310, 243, 242, 311,
- 243, 242, 312, 243, 242, 313, 243, 242,
- 314, 243, 242, 315, 243, 242, 316, 243,
- 242, 317, 243, 242, 318, 243, 242, 319,
- 243, 242, 320, 243, 242, 321, 243, 242,
- 322, 243, 242, 282, 243, 242, 324, 243,
- 242, 325, 243, 242, 326, 243, 242, 327,
- 243, 242, 328, 243, 242, 329, 243, 242,
- 330, 243, 242, 331, 243, 242, 332, 243,
- 242, 333, 243, 242, 334, 243, 242, 335,
- 243, 242, 336, 243, 242, 337, 243, 242,
- 338, 243, 242, 339, 243, 242, 340, 243,
- 242, 274, 243, 242, 243, 342, 242, 243,
- 343, 242, 243, 344, 242, 243, 345, 242,
- 243, 346, 242, 243, 347, 242, 243, 348,
- 242, 243, 349, 242, 243, 350, 242, 243,
- 351, 242, 243, 352, 242, 243, 353, 242,
- 243, 354, 242, 243, 10, 242, 356, 0,
- 357, 0, 358, 0, 359, 0, 360, 0,
- 361, 0, 362, 0, 363, 0, 364, 0,
- 365, 0, 366, 0, 367, 0, 368, 0,
- 369, 0, 370, 0, 371, 0, 372, 0,
- 374, 373, 374, 373, 375, 374, 374, 10,
- 512, 10, 374, 373, 376, 395, 407, 423,
- 442, 494, 374, 373, 377, 374, 373, 378,
- 374, 373, 379, 374, 373, 380, 374, 373,
- 381, 374, 373, 382, 391, 374, 373, 383,
- 374, 373, 384, 374, 373, 385, 374, 373,
- 386, 374, 373, 387, 374, 373, 388, 374,
- 373, 389, 374, 373, 390, 374, 373, 374,
- 84, 373, 392, 374, 373, 393, 374, 373,
- 394, 374, 373, 388, 374, 373, 396, 374,
- 373, 397, 374, 373, 398, 374, 373, 399,
- 374, 373, 400, 374, 373, 401, 374, 373,
- 402, 374, 373, 403, 374, 373, 404, 374,
- 373, 405, 374, 373, 406, 374, 373, 386,
- 374, 373, 408, 374, 373, 409, 374, 373,
- 410, 374, 373, 411, 417, 374, 373, 412,
- 374, 373, 413, 374, 373, 414, 374, 373,
- 415, 374, 373, 416, 374, 373, 390, 374,
- 373, 418, 374, 373, 419, 374, 373, 420,
- 374, 373, 421, 374, 373, 422, 374, 373,
- 415, 374, 373, 424, 431, 374, 373, 425,
- 374, 373, 426, 374, 373, 427, 374, 373,
- 428, 374, 373, 429, 374, 373, 430, 374,
- 373, 419, 374, 373, 432, 374, 373, 433,
- 374, 373, 434, 374, 373, 435, 374, 373,
- 436, 374, 373, 437, 374, 373, 438, 374,
- 373, 439, 374, 373, 440, 374, 373, 441,
- 374, 84, 373, 390, 374, 373, 443, 448,
- 374, 373, 444, 374, 373, 445, 374, 373,
- 446, 374, 373, 447, 374, 373, 415, 374,
- 373, 449, 480, 374, 373, 450, 374, 373,
- 451, 374, 373, 452, 374, 373, 453, 374,
- 373, 454, 374, 373, 455, 374, 373, 456,
- 374, 373, 457, 374, 373, 458, 374, 373,
- 459, 374, 373, 460, 374, 373, 461, 374,
- 373, 462, 374, 373, 463, 374, 373, 374,
- 464, 373, 465, 374, 373, 466, 374, 373,
- 467, 374, 373, 468, 374, 373, 469, 374,
- 373, 470, 374, 373, 471, 374, 373, 472,
- 374, 373, 473, 374, 373, 474, 374, 373,
- 475, 374, 373, 476, 374, 373, 477, 374,
- 373, 478, 374, 373, 479, 374, 373, 415,
- 374, 373, 481, 374, 373, 482, 374, 373,
- 483, 374, 373, 484, 374, 373, 485, 374,
- 373, 486, 374, 373, 487, 374, 373, 488,
- 374, 373, 489, 374, 373, 490, 374, 373,
- 491, 492, 374, 373, 390, 374, 373, 493,
- 374, 373, 441, 374, 373, 495, 374, 373,
- 496, 374, 373, 497, 374, 373, 498, 374,
- 373, 499, 374, 373, 500, 374, 373, 501,
- 374, 373, 502, 374, 373, 503, 374, 373,
- 504, 374, 373, 505, 374, 373, 506, 374,
- 373, 507, 374, 373, 508, 374, 373, 509,
- 374, 373, 510, 374, 373, 511, 374, 373,
- 403, 374, 373, 374, 513, 373, 374, 514,
- 373, 374, 515, 373, 374, 516, 373, 374,
- 517, 373, 374, 518, 373, 374, 519, 373,
- 374, 520, 373, 374, 521, 373, 374, 522,
- 373, 374, 523, 373, 374, 524, 373, 374,
- 525, 373, 374, 10, 373, 527, 531, 0,
- 528, 0, 529, 0, 530, 0, 61, 0,
- 532, 0, 533, 0, 534, 540, 0, 535,
- 0, 536, 0, 537, 0, 538, 0, 539,
- 0, 74, 0, 541, 0, 542, 0, 543,
- 0, 544, 0, 545, 0, 546, 0, 547,
- 0, 371, 0, 549, 560, 0, 550, 0,
- 551, 0, 552, 0, 553, 0, 554, 0,
- 555, 0, 556, 0, 557, 0, 558, 0,
- 559, 0, 538, 0, 561, 0, 562, 0,
- 563, 0, 564, 0, 565, 0, 566, 0,
- 567, 0, 568, 0, 569, 0, 570, 623,
- 0, 571, 0, 572, 0, 574, 573, 574,
- 573, 575, 574, 574, 10, 10, 574, 573,
- 576, 593, 605, 574, 573, 577, 574, 573,
- 578, 574, 573, 579, 574, 573, 580, 574,
- 573, 581, 574, 573, 582, 574, 573, 583,
- 574, 573, 584, 574, 573, 585, 574, 573,
- 586, 574, 573, 587, 574, 573, 588, 574,
- 573, 589, 574, 573, 590, 574, 573, 591,
- 574, 573, 592, 574, 573, 574, 84, 573,
- 594, 574, 573, 595, 574, 573, 596, 574,
- 573, 597, 574, 573, 598, 574, 573, 599,
- 574, 573, 600, 574, 573, 601, 574, 573,
- 602, 574, 573, 603, 574, 573, 604, 574,
- 573, 592, 574, 573, 606, 574, 573, 607,
- 574, 573, 608, 574, 573, 609, 574, 573,
- 610, 574, 573, 611, 574, 573, 612, 574,
- 573, 613, 574, 573, 614, 574, 573, 615,
- 574, 573, 616, 574, 573, 617, 574, 573,
- 618, 574, 573, 619, 574, 573, 620, 574,
- 573, 621, 574, 573, 622, 574, 573, 584,
- 574, 573, 625, 624, 625, 624, 626, 625,
- 625, 10, 782, 631, 10, 625, 624, 627,
- 632, 631, 642, 665, 677, 697, 714, 764,
- 625, 624, 628, 625, 624, 629, 625, 624,
- 630, 625, 624, 631, 625, 624, 625, 84,
- 624, 633, 625, 624, 634, 625, 624, 635,
- 625, 624, 636, 625, 624, 637, 625, 624,
- 638, 625, 624, 639, 625, 624, 640, 625,
- 624, 641, 625, 624, 631, 631, 631, 625,
- 624, 643, 625, 624, 644, 648, 625, 624,
- 645, 625, 624, 646, 625, 624, 647, 625,
- 84, 624, 631, 625, 624, 649, 625, 624,
- 650, 625, 624, 651, 625, 624, 652, 661,
- 625, 624, 653, 625, 624, 654, 625, 624,
- 655, 625, 624, 656, 625, 624, 657, 625,
- 624, 658, 625, 624, 659, 625, 624, 660,
- 625, 624, 625, 84, 624, 662, 625, 624,
- 663, 625, 624, 664, 625, 624, 658, 625,
- 624, 666, 625, 624, 667, 625, 624, 668,
- 625, 624, 669, 625, 624, 670, 625, 624,
- 671, 625, 624, 672, 625, 624, 673, 625,
- 624, 674, 625, 624, 675, 625, 624, 676,
- 625, 624, 656, 625, 624, 678, 682, 625,
- 624, 679, 625, 624, 680, 625, 624, 681,
- 625, 624, 647, 625, 624, 683, 625, 624,
- 684, 625, 624, 685, 691, 625, 624, 686,
- 625, 624, 687, 625, 624, 688, 625, 624,
- 689, 625, 624, 690, 625, 624, 660, 625,
- 624, 692, 625, 624, 693, 625, 624, 694,
- 625, 624, 695, 625, 624, 696, 625, 624,
- 689, 625, 624, 698, 705, 625, 624, 699,
- 625, 624, 700, 625, 624, 701, 625, 624,
- 702, 625, 624, 703, 625, 624, 704, 625,
- 624, 693, 625, 624, 706, 625, 624, 707,
- 625, 624, 708, 625, 624, 709, 625, 624,
- 710, 625, 624, 711, 625, 624, 712, 625,
- 624, 713, 625, 624, 660, 625, 624, 715,
- 720, 625, 624, 716, 625, 624, 717, 625,
- 624, 718, 625, 624, 719, 625, 624, 689,
- 625, 624, 721, 752, 625, 624, 722, 625,
- 624, 723, 625, 624, 724, 625, 624, 725,
- 625, 624, 726, 625, 624, 727, 625, 624,
- 728, 625, 624, 729, 625, 624, 730, 625,
- 624, 731, 625, 624, 732, 625, 624, 733,
- 625, 624, 734, 625, 624, 735, 625, 624,
- 625, 736, 624, 737, 625, 624, 738, 625,
- 624, 739, 625, 624, 740, 625, 624, 741,
- 625, 624, 742, 625, 624, 743, 625, 624,
- 744, 625, 624, 745, 625, 624, 746, 625,
- 624, 747, 625, 624, 748, 625, 624, 749,
- 625, 624, 750, 625, 624, 751, 625, 624,
- 689, 625, 624, 753, 625, 624, 754, 625,
- 624, 755, 625, 624, 756, 625, 624, 757,
- 625, 624, 758, 625, 624, 759, 625, 624,
- 760, 625, 624, 761, 625, 624, 762, 625,
- 624, 763, 625, 624, 660, 625, 624, 765,
- 625, 624, 766, 625, 624, 767, 625, 624,
- 768, 625, 624, 769, 625, 624, 770, 625,
- 624, 771, 625, 624, 772, 625, 624, 773,
- 625, 624, 774, 625, 624, 775, 625, 624,
- 776, 625, 624, 777, 625, 624, 778, 625,
- 624, 779, 625, 624, 780, 625, 624, 781,
- 625, 624, 673, 625, 624, 625, 783, 624,
- 625, 784, 624, 625, 785, 624, 625, 786,
- 624, 625, 787, 624, 625, 788, 624, 625,
- 789, 624, 625, 790, 624, 625, 791, 624,
- 625, 792, 624, 625, 793, 624, 625, 794,
- 624, 625, 795, 624, 625, 10, 624, 797,
- 804, 0, 798, 0, 799, 0, 800, 0,
- 801, 0, 802, 0, 803, 0, 240, 0,
- 805, 836, 0, 806, 0, 807, 0, 808,
- 0, 809, 0, 810, 0, 811, 0, 812,
- 0, 813, 0, 814, 0, 815, 0, 816,
- 0, 817, 0, 818, 0, 819, 0, 820,
- 0, 821, 0, 822, 0, 823, 0, 824,
- 0, 825, 0, 826, 0, 827, 0, 828,
- 0, 829, 0, 830, 0, 831, 0, 832,
- 0, 833, 0, 834, 0, 835, 0, 802,
- 0, 837, 0, 838, 0, 839, 0, 840,
- 0, 841, 0, 842, 0, 843, 0, 844,
- 0, 845, 0, 846, 0, 847, 849, 0,
- 848, 0, 623, 0, 850, 0, 570, 0,
- 852, 0, 853, 0, 854, 0, 855, 0,
- 856, 0, 857, 0, 858, 0, 859, 0,
- 860, 0, 861, 0, 862, 0, 863, 0,
- 864, 0, 865, 0, 866, 0, 867, 0,
- 868, 0, 363, 0, 870, 0, 10, 0,
- 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 29, 0, 54, 0, 5, 1, 0, 29,
- 1, 35, 0, 43, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 149, 126, 57, 110, 23, 0, 29, 54,
- 0, 5, 1, 0, 29, 1, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 0, 0, 43, 54, 37, 37,
- 87, 37, 37, 43, 0, 39, 0, 43,
- 0, 0, 54, 0, 0, 39, 0, 0,
- 96, 54, 0, 93, 90, 41, 96, 90,
- 99, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 0,
- 43, 0, 43, 0, 0, 43, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 84, 54,
- 0, 72, 33, 84, 72, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 15,
- 0, 63, 130, 31, 60, 57, 31, 63,
- 57, 66, 31, 43, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 15, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 15,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 15, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 84, 54, 0, 78,
- 33, 84, 78, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 19, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 19, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 19, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 84, 54, 0, 69,
- 33, 69, 0, 0, 0, 0, 0, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 13, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 13, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 13, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 84, 54, 0, 81, 81, 0, 0,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 21, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 144, 57, 54, 0, 84, 54,
- 0, 75, 33, 84, 75, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 17,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 17, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 17, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 17, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 871;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/sr_cyrl.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 1716 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/sr_cyrl.c.rl"
-
-#line 1723 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/sr_cyrl.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/sr_cyrl.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/sr_cyrl.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/sr_cyrl.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/sr_cyrl.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/sr_cyrl.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/sr_cyrl.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/sr_cyrl.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/sr_cyrl.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/sr_cyrl.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/sr_cyrl.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/sr_cyrl.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/sr_cyrl.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/sr_cyrl.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/sr_cyrl.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/sr_cyrl.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/sr_cyrl.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/sr_cyrl.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/sr_cyrl.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/sr_cyrl.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/sr_cyrl.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/sr_cyrl.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/sr_cyrl.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/sr_cyrl.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 2013 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/sr_cyrl.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 2076 "ext/gherkin_lexer_sr_cyrl/gherkin_lexer_sr_cyrl.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/sr_cyrl.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_sr_cyrl()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Sr_cyrl", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_sr_latn/extconf.rb
index 1b586a0,1b586a0..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_sr_latn/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_sr_latn")
--have_library("c", "main")
--create_makefile("gherkin_lexer_sr_latn")
diff --cc ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c
index bad6a66,2a26a93..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c
+++ /dev/null
@@@ -1,1567 -1,1567 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 20, 21, 22, 41, 42, 43,
- 45, 47, 52, 57, 62, 67, 71, 75,
- 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 95, 97, 102, 109, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129, 130, 131, 132,
- 145, 147, 149, 151, 153, 155, 157, 159,
- 161, 163, 165, 167, 169, 171, 173, 175,
- 177, 179, 181, 183, 185, 187, 189, 191,
- 193, 195, 197, 199, 201, 220, 222, 223,
- 225, 226, 228, 229, 230, 231, 232, 233,
- 234, 251, 253, 255, 257, 259, 261, 263,
- 265, 267, 269, 271, 273, 275, 277, 279,
- 281, 283, 285, 287, 289, 291, 293, 295,
- 297, 299, 301, 303, 305, 307, 309, 311,
- 313, 315, 317, 320, 322, 324, 326, 329,
- 331, 334, 336, 338, 340, 342, 344, 346,
- 348, 350, 352, 354, 356, 358, 360, 362,
- 364, 366, 368, 370, 372, 374, 377, 379,
- 381, 384, 386, 388, 389, 390, 391, 392,
- 393, 394, 395, 412, 414, 416, 418, 420,
- 422, 424, 426, 428, 430, 432, 434, 436,
- 438, 440, 442, 444, 446, 448, 450, 452,
- 454, 456, 458, 460, 462, 464, 466, 468,
- 470, 472, 474, 477, 479, 482, 484, 486,
- 488, 490, 492, 494, 496, 499, 501, 504,
- 506, 508, 510, 512, 514, 516, 518, 520,
- 522, 524, 526, 528, 532, 534, 536, 538,
- 540, 542, 544, 546, 548, 550, 552, 554,
- 556, 558, 560, 562, 564, 566, 568, 570,
- 572, 574, 576, 578, 580, 582, 585, 587,
- 589, 592, 594, 596, 597, 598, 599, 601,
- 602, 604, 605, 606, 608, 609, 610, 611,
- 612, 613, 614, 615, 617, 618, 619, 620,
- 621, 622, 623, 624, 625, 626, 628, 629,
- 630, 647, 649, 651, 653, 655, 657, 659,
- 661, 663, 665, 667, 669, 671, 673, 675,
- 677, 679, 681, 683, 685, 687, 689, 691,
- 693, 695, 697, 699, 701, 703, 705, 707,
- 709, 712, 714, 717, 719, 722, 724, 726,
- 728, 730, 732, 734, 736, 739, 741, 744,
- 746, 748, 751, 753, 755, 757, 759, 761,
- 763, 766, 768, 770, 772, 774, 776, 778,
- 780, 784, 786, 788, 790, 792, 794, 796,
- 798, 800, 802, 804, 806, 808, 810, 812,
- 814, 816, 818, 820, 822, 824, 826, 828,
- 830, 832, 834, 837, 839, 841, 844, 846,
- 848, 849, 850, 851, 860, 862, 864, 866,
- 868, 870, 872, 874, 876, 878, 880, 882,
- 884, 886, 888, 890, 892, 894, 897, 899,
- 901, 903, 905, 907, 909, 911, 914, 915,
- 916, 917, 918, 919, 921, 922, 923, 924,
- 925, 926, 927, 928, 929, 930, 931, 932,
- 933, 934, 935, 936, 937, 938, 939, 940,
- 941, 942, 943, 945, 946, 947, 949, 950,
- 951, 955, 961, 964, 966, 972, 991, 993,
- 995, 998, 1000, 1002, 1004, 1006, 1008, 1010,
- 1012, 1015, 1017, 1019, 1022, 1024, 1026, 1028,
- 1030, 1032, 1034, 1037, 1039, 1041, 1043, 1045,
- 1047, 1049, 1051, 1054, 1058, 1060, 1062, 1064,
- 1066, 1068, 1071, 1073, 1075, 1077, 1079, 1081,
- 1083, 1085, 1087, 1089, 1091, 1093, 1095, 1097,
- 1099, 1101, 1103, 1105, 1107, 1109
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 70, 73, 75, 77, 79, 80, 83,
- 90, 124, 9, 13, -69, -65, 10, 32,
- 34, 35, 37, 42, 64, 65, 70, 73,
- 75, 77, 79, 80, 83, 90, 124, 9,
- 13, 34, 34, 10, 13, 10, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 9, 13, 10,
- 32, 9, 13, 10, 13, 10, 95, 70,
- 69, 65, 84, 85, 82, 69, 95, 69,
- 78, 68, 95, 37, 32, 10, 13, 10,
- 13, 13, 32, 64, 9, 10, 9, 10,
- 13, 32, 64, 11, 12, 10, 32, 64,
- 9, 13, 108, 105, 117, 110, 107, 99,
- 105, 111, 110, 97, 108, 110, 111, 115,
- 116, 58, 10, 10, 10, 32, 35, 37,
- 64, 70, 75, 77, 79, 80, 83, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 117, 10,
- 110, 10, 107, 10, 99, 10, 105, 10,
- 111, 10, 110, 10, 97, 10, 108, 10,
- 110, 10, 111, 10, 115, 10, 116, 10,
- 58, 10, 32, 34, 35, 37, 42, 64,
- 65, 70, 73, 75, 77, 79, 80, 83,
- 90, 124, 9, 13, 97, 111, 100, 32,
- 97, 110, 99, 116, 101, 112, 116, 58,
- 10, 10, 10, 32, 35, 37, 42, 64,
- 65, 70, 73, 75, 77, 79, 80, 83,
- 90, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 108, 10, 105, 10, 117, 10,
- 110, 10, 107, 10, 99, 10, 105, 10,
- 111, 10, 110, 10, 97, 10, 108, 10,
- 110, 10, 111, 10, 115, 10, 116, 10,
- 58, 10, 97, 10, 100, 10, 32, 97,
- 10, 111, 10, 103, 10, 117, -60, 10,
- 99, -121, 10, 10, 110, 115, 10, 100,
- 10, 97, 10, 111, 10, 98, 10, 105,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 109, 10, 101, 10, 114, 10, 99,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 111, 10, 97, 10, 100,
- 116, 10, 97, 10, 116, 10, 101, 111,
- 10, 97, 10, 116, 101, 107, 115, 116,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 65, 70, 73, 75, 77, 79, 80,
- 83, 90, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, 10, 108, 10, 105, 10, 117,
- 10, 110, 10, 107, 10, 99, 10, 105,
- 10, 111, 10, 110, 10, 97, 10, 108,
- 10, 110, 10, 111, 10, 115, 10, 116,
- 10, 58, 10, 97, 111, 10, 100, 10,
- 32, 97, 10, 110, 10, 99, 10, 101,
- 10, 112, 10, 111, 10, 103, 10, 117,
- -60, 10, 99, -121, 10, 10, 110, 115,
- 10, 100, 10, 97, 10, 111, 10, 98,
- 10, 105, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 109, 10, 101, 10, 114,
- 10, 99, 107, 116, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 111,
- 10, 105, 10, 99, 10, 114, 10, 117,
- 10, 107, 10, 116, 10, 117, 10, 114,
- 10, 97, 10, 32, 10, 115, 10, 99,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 106, 10, 97, 10, 100,
- 116, 10, 97, 10, 116, 10, 101, 111,
- 10, 97, 10, 116, 111, 103, 117, -60,
- 99, -121, 110, 115, 100, 97, 110, 111,
- 111, 118, 97, 98, 105, 110, 97, 111,
- 114, 122, 97, 100, 105, 110, 105, 109,
- 101, 114, 58, 105, 10, 10, 10, 32,
- 35, 37, 42, 64, 65, 70, 73, 75,
- 77, 79, 80, 83, 90, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 32, 10, 108, 10,
- 105, 10, 117, 10, 110, 10, 107, 10,
- 99, 10, 105, 10, 111, 10, 110, 10,
- 97, 10, 108, 10, 110, 10, 111, 10,
- 115, 10, 116, 10, 58, 10, 97, 111,
- 10, 100, 10, 32, 97, 10, 110, 10,
- 99, 116, 10, 101, 10, 112, 10, 101,
- 10, 107, 10, 111, 10, 103, 10, 117,
- -60, 10, 99, -121, 10, 10, 110, 115,
- 10, 100, 10, 97, 10, 110, 111, 10,
- 111, 10, 118, 10, 97, 10, 98, 10,
- 105, 10, 110, 10, 111, 114, 10, 122,
- 10, 97, 10, 100, 10, 105, 10, 109,
- 10, 101, 10, 114, 10, 99, 107, 116,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 111, 10, 105, 10, 99,
- 10, 114, 10, 117, 10, 107, 10, 116,
- 10, 117, 10, 114, 10, 97, 10, 32,
- 10, 115, 10, 99, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 106,
- 10, 97, 10, 100, 116, 10, 97, 10,
- 116, 10, 101, 111, 10, 97, 10, 116,
- 58, 10, 10, 10, 32, 35, 70, 77,
- 79, 124, 9, 13, 10, 117, 10, 110,
- 10, 107, 10, 99, 10, 105, 10, 111,
- 10, 110, 10, 97, 10, 108, 10, 110,
- 10, 111, 10, 115, 10, 116, 10, 58,
- 10, 111, 10, 103, 10, 117, -60, 10,
- 99, -121, 10, 10, 115, 10, 111, 10,
- 98, 10, 105, 10, 110, 10, 97, 99,
- 107, 116, 101, 110, 97, 114, 105, 106,
- 111, 105, 58, 105, 99, 97, 114, 117,
- 107, 116, 117, 114, 97, 32, 115, 99,
- 101, 110, 97, 114, 105, 106, 97, 100,
- 116, 97, 116, 101, 111, 97, 116, 32,
- 124, 9, 13, 10, 32, 92, 124, 9,
- 13, 10, 92, 124, 10, 92, 10, 32,
- 92, 124, 9, 13, 10, 32, 34, 35,
- 37, 42, 64, 65, 70, 73, 75, 77,
- 79, 80, 83, 90, 124, 9, 13, 10,
- 111, 10, 110, 10, 99, 116, 10, 101,
- 10, 112, 10, 101, 10, 107, 10, 111,
- 10, 103, 10, 117, -60, 10, 99, -121,
- 10, 10, 115, 10, 110, 111, 10, 111,
- 10, 118, 10, 97, 10, 98, 10, 105,
- 10, 110, 10, 111, 114, 10, 122, 10,
- 97, 10, 100, 10, 105, 10, 109, 10,
- 101, 10, 114, 10, 58, 105, 10, 99,
- 107, 116, 10, 101, 10, 110, 10, 97,
- 10, 114, 10, 105, 10, 106, 111, 10,
- 105, 10, 105, 10, 99, 10, 114, 10,
- 117, 10, 107, 10, 116, 10, 117, 10,
- 114, 10, 97, 10, 32, 10, 115, 10,
- 99, 10, 101, 10, 110, 10, 97, 10,
- 114, 10, 105, 10, 106, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 18, 1, 1, 17, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 11,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 17, 2, 1, 2,
- 1, 2, 1, 1, 1, 1, 1, 1,
- 15, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 3, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 3, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 15, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 4, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 3, 2, 2, 1, 1, 1, 2, 1,
- 2, 1, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 2, 1, 1,
- 15, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 3, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 3, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 4, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 3, 2, 2,
- 1, 1, 1, 7, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 3, 1, 1,
- 1, 1, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 2, 1, 1, 2, 1, 1,
- 2, 4, 3, 2, 4, 17, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 3, 4, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 1, 0, 0, 1, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 20, 22, 24, 43, 45, 47,
- 50, 53, 58, 63, 68, 73, 77, 81,
- 84, 86, 88, 90, 92, 94, 96, 98,
- 100, 102, 104, 106, 108, 110, 112, 114,
- 116, 119, 122, 127, 134, 139, 141, 143,
- 145, 147, 149, 151, 153, 155, 157, 159,
- 161, 163, 165, 167, 169, 171, 173, 175,
- 188, 191, 194, 197, 200, 203, 206, 209,
- 212, 215, 218, 221, 224, 227, 230, 233,
- 236, 239, 242, 245, 248, 251, 254, 257,
- 260, 263, 266, 269, 272, 291, 294, 296,
- 299, 301, 304, 306, 308, 310, 312, 314,
- 316, 333, 336, 339, 342, 345, 348, 351,
- 354, 357, 360, 363, 366, 369, 372, 375,
- 378, 381, 384, 387, 390, 393, 396, 399,
- 402, 405, 408, 411, 414, 417, 420, 423,
- 426, 429, 432, 436, 439, 442, 445, 449,
- 452, 456, 459, 462, 465, 468, 471, 474,
- 477, 480, 483, 486, 489, 492, 495, 498,
- 501, 504, 507, 510, 513, 516, 520, 523,
- 526, 530, 533, 536, 538, 540, 542, 544,
- 546, 548, 550, 567, 570, 573, 576, 579,
- 582, 585, 588, 591, 594, 597, 600, 603,
- 606, 609, 612, 615, 618, 621, 624, 627,
- 630, 633, 636, 639, 642, 645, 648, 651,
- 654, 657, 660, 664, 667, 671, 674, 677,
- 680, 683, 686, 689, 692, 696, 699, 703,
- 706, 709, 712, 715, 718, 721, 724, 727,
- 730, 733, 736, 739, 744, 747, 750, 753,
- 756, 759, 762, 765, 768, 771, 774, 777,
- 780, 783, 786, 789, 792, 795, 798, 801,
- 804, 807, 810, 813, 816, 819, 823, 826,
- 829, 833, 836, 839, 841, 843, 845, 848,
- 850, 853, 855, 857, 860, 862, 864, 866,
- 868, 870, 872, 874, 877, 879, 881, 883,
- 885, 887, 889, 891, 893, 895, 898, 900,
- 902, 919, 922, 925, 928, 931, 934, 937,
- 940, 943, 946, 949, 952, 955, 958, 961,
- 964, 967, 970, 973, 976, 979, 982, 985,
- 988, 991, 994, 997, 1000, 1003, 1006, 1009,
- 1012, 1016, 1019, 1023, 1026, 1030, 1033, 1036,
- 1039, 1042, 1045, 1048, 1051, 1055, 1058, 1062,
- 1065, 1068, 1072, 1075, 1078, 1081, 1084, 1087,
- 1090, 1094, 1097, 1100, 1103, 1106, 1109, 1112,
- 1115, 1120, 1123, 1126, 1129, 1132, 1135, 1138,
- 1141, 1144, 1147, 1150, 1153, 1156, 1159, 1162,
- 1165, 1168, 1171, 1174, 1177, 1180, 1183, 1186,
- 1189, 1192, 1195, 1199, 1202, 1205, 1209, 1212,
- 1215, 1217, 1219, 1221, 1230, 1233, 1236, 1239,
- 1242, 1245, 1248, 1251, 1254, 1257, 1260, 1263,
- 1266, 1269, 1272, 1275, 1278, 1281, 1285, 1288,
- 1291, 1294, 1297, 1300, 1303, 1306, 1310, 1312,
- 1314, 1316, 1318, 1320, 1323, 1325, 1327, 1329,
- 1331, 1333, 1335, 1337, 1339, 1341, 1343, 1345,
- 1347, 1349, 1351, 1353, 1355, 1357, 1359, 1361,
- 1363, 1365, 1367, 1370, 1372, 1374, 1377, 1379,
- 1381, 1385, 1391, 1395, 1398, 1404, 1423, 1426,
- 1429, 1433, 1436, 1439, 1442, 1445, 1448, 1451,
- 1454, 1458, 1461, 1464, 1468, 1471, 1474, 1477,
- 1480, 1483, 1486, 1490, 1493, 1496, 1499, 1502,
- 1505, 1508, 1511, 1515, 1520, 1523, 1526, 1529,
- 1532, 1535, 1539, 1542, 1545, 1548, 1551, 1554,
- 1557, 1560, 1563, 1566, 1569, 1572, 1575, 1578,
- 1581, 1584, 1587, 1590, 1593, 1596
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 39, 31, 85, 259, 264, 275, 413,
- 441, 448, 4, 0, 3, 0, 4, 0,
- 4, 4, 5, 15, 17, 31, 34, 37,
- 39, 31, 85, 259, 264, 275, 413, 441,
- 448, 4, 0, 6, 0, 7, 0, 9,
- 8, 8, 9, 8, 8, 10, 10, 11,
- 10, 10, 10, 10, 11, 10, 10, 10,
- 10, 12, 10, 10, 10, 10, 13, 10,
- 10, 4, 14, 14, 0, 4, 14, 14,
- 0, 4, 16, 15, 4, 0, 18, 0,
- 19, 0, 20, 0, 21, 0, 22, 0,
- 23, 0, 24, 0, 25, 0, 26, 0,
- 27, 0, 28, 0, 29, 0, 30, 0,
- 509, 0, 32, 0, 4, 16, 33, 4,
- 16, 33, 0, 0, 0, 0, 35, 36,
- 4, 36, 36, 34, 35, 35, 4, 36,
- 34, 36, 0, 38, 0, 31, 0, 40,
- 0, 41, 0, 42, 0, 43, 0, 44,
- 0, 45, 0, 46, 0, 47, 0, 48,
- 0, 49, 0, 50, 0, 51, 0, 52,
- 0, 53, 0, 55, 54, 55, 54, 55,
- 55, 4, 56, 4, 70, 454, 461, 466,
- 474, 483, 55, 54, 55, 57, 54, 55,
- 58, 54, 55, 59, 54, 55, 60, 54,
- 55, 61, 54, 55, 62, 54, 55, 63,
- 54, 55, 64, 54, 55, 65, 54, 55,
- 66, 54, 55, 67, 54, 55, 68, 54,
- 55, 69, 54, 55, 4, 54, 55, 71,
- 54, 55, 72, 54, 55, 73, 54, 55,
- 74, 54, 55, 75, 54, 55, 76, 54,
- 55, 77, 54, 55, 78, 54, 55, 79,
- 54, 55, 80, 54, 55, 81, 54, 55,
- 82, 54, 55, 83, 54, 55, 84, 54,
- 4, 4, 5, 15, 17, 31, 34, 37,
- 39, 31, 85, 259, 264, 275, 413, 441,
- 448, 4, 0, 86, 88, 0, 87, 0,
- 32, 31, 0, 89, 0, 90, 163, 0,
- 91, 0, 92, 0, 93, 0, 94, 0,
- 96, 95, 96, 95, 96, 96, 4, 97,
- 111, 4, 112, 114, 111, 128, 131, 136,
- 144, 149, 156, 96, 95, 96, 98, 95,
- 96, 99, 95, 96, 100, 95, 96, 101,
- 95, 96, 102, 95, 96, 103, 95, 96,
- 104, 95, 96, 105, 95, 96, 106, 95,
- 96, 107, 95, 96, 108, 95, 96, 109,
- 95, 96, 110, 95, 96, 4, 95, 96,
- 84, 95, 96, 113, 95, 96, 111, 95,
- 96, 115, 95, 96, 116, 95, 96, 117,
- 95, 96, 118, 95, 96, 119, 95, 96,
- 120, 95, 96, 121, 95, 96, 122, 95,
- 96, 123, 95, 96, 124, 95, 96, 125,
- 95, 96, 126, 95, 96, 127, 95, 96,
- 84, 95, 96, 129, 95, 96, 130, 95,
- 96, 84, 111, 95, 96, 132, 95, 96,
- 133, 95, 96, 134, 95, 135, 96, 123,
- 95, 123, 96, 95, 96, 137, 139, 95,
- 96, 138, 95, 96, 111, 95, 96, 140,
- 95, 96, 141, 95, 96, 142, 95, 96,
- 143, 95, 96, 127, 95, 96, 145, 95,
- 96, 146, 95, 96, 147, 95, 96, 148,
- 95, 96, 127, 95, 96, 150, 95, 96,
- 151, 95, 96, 152, 95, 96, 153, 95,
- 96, 154, 95, 96, 155, 95, 96, 127,
- 95, 96, 157, 95, 96, 158, 161, 95,
- 96, 159, 95, 96, 160, 95, 96, 111,
- 111, 95, 96, 162, 95, 96, 113, 95,
- 164, 0, 165, 0, 166, 0, 167, 0,
- 168, 0, 170, 169, 170, 169, 170, 170,
- 4, 171, 185, 4, 186, 188, 185, 202,
- 209, 214, 222, 227, 252, 170, 169, 170,
- 172, 169, 170, 173, 169, 170, 174, 169,
- 170, 175, 169, 170, 176, 169, 170, 177,
- 169, 170, 178, 169, 170, 179, 169, 170,
- 180, 169, 170, 181, 169, 170, 182, 169,
- 170, 183, 169, 170, 184, 169, 170, 4,
- 169, 170, 84, 169, 170, 187, 169, 170,
- 185, 169, 170, 189, 169, 170, 190, 169,
- 170, 191, 169, 170, 192, 169, 170, 193,
- 169, 170, 194, 169, 170, 195, 169, 170,
- 196, 169, 170, 197, 169, 170, 198, 169,
- 170, 199, 169, 170, 200, 169, 170, 201,
- 169, 170, 84, 169, 170, 203, 205, 169,
- 170, 204, 169, 170, 84, 185, 169, 170,
- 206, 169, 170, 207, 169, 170, 208, 169,
- 170, 200, 169, 170, 210, 169, 170, 211,
- 169, 170, 212, 169, 213, 170, 197, 169,
- 197, 170, 169, 170, 215, 217, 169, 170,
- 216, 169, 170, 185, 169, 170, 218, 169,
- 170, 219, 169, 170, 220, 169, 170, 221,
- 169, 170, 201, 169, 170, 223, 169, 170,
- 224, 169, 170, 225, 169, 170, 226, 169,
- 170, 201, 169, 170, 228, 234, 236, 169,
- 170, 229, 169, 170, 230, 169, 170, 231,
- 169, 170, 232, 169, 170, 233, 169, 170,
- 201, 169, 170, 235, 169, 170, 221, 169,
- 170, 237, 169, 170, 238, 169, 170, 239,
- 169, 170, 240, 169, 170, 241, 169, 170,
- 242, 169, 170, 243, 169, 170, 244, 169,
- 170, 245, 169, 170, 246, 169, 170, 247,
- 169, 170, 248, 169, 170, 249, 169, 170,
- 250, 169, 170, 251, 169, 170, 221, 169,
- 170, 253, 169, 170, 254, 257, 169, 170,
- 255, 169, 170, 256, 169, 170, 185, 185,
- 169, 170, 258, 169, 170, 187, 169, 260,
- 0, 261, 0, 262, 0, 263, 48, 0,
- 48, 0, 265, 267, 0, 266, 0, 31,
- 0, 268, 271, 0, 269, 0, 270, 0,
- 167, 0, 272, 0, 273, 0, 274, 0,
- 52, 0, 276, 281, 0, 277, 0, 278,
- 0, 279, 0, 280, 0, 270, 0, 282,
- 0, 283, 0, 284, 0, 285, 0, 286,
- 384, 0, 288, 287, 288, 287, 288, 288,
- 4, 289, 303, 4, 304, 306, 303, 320,
- 329, 334, 344, 352, 377, 288, 287, 288,
- 290, 287, 288, 291, 287, 288, 292, 287,
- 288, 293, 287, 288, 294, 287, 288, 295,
- 287, 288, 296, 287, 288, 297, 287, 288,
- 298, 287, 288, 299, 287, 288, 300, 287,
- 288, 301, 287, 288, 302, 287, 288, 4,
- 287, 288, 84, 287, 288, 305, 287, 288,
- 303, 287, 288, 307, 287, 288, 308, 287,
- 288, 309, 287, 288, 310, 287, 288, 311,
- 287, 288, 312, 287, 288, 313, 287, 288,
- 314, 287, 288, 315, 287, 288, 316, 287,
- 288, 317, 287, 288, 318, 287, 288, 319,
- 287, 288, 84, 287, 288, 321, 323, 287,
- 288, 322, 287, 288, 84, 303, 287, 288,
- 324, 287, 288, 325, 327, 287, 288, 326,
- 287, 288, 318, 287, 288, 328, 287, 288,
- 317, 287, 288, 330, 287, 288, 331, 287,
- 288, 332, 287, 333, 288, 315, 287, 315,
- 288, 287, 288, 335, 337, 287, 288, 336,
- 287, 288, 303, 287, 288, 338, 341, 287,
- 288, 339, 287, 288, 340, 287, 288, 319,
- 287, 288, 342, 287, 288, 343, 287, 288,
- 340, 287, 288, 345, 348, 287, 288, 346,
- 287, 288, 347, 287, 288, 342, 287, 288,
- 349, 287, 288, 350, 287, 288, 351, 287,
- 288, 319, 287, 288, 353, 359, 361, 287,
- 288, 354, 287, 288, 355, 287, 288, 356,
- 287, 288, 357, 287, 288, 358, 287, 288,
- 319, 287, 288, 360, 287, 288, 340, 287,
- 288, 362, 287, 288, 363, 287, 288, 364,
- 287, 288, 365, 287, 288, 366, 287, 288,
- 367, 287, 288, 368, 287, 288, 369, 287,
- 288, 370, 287, 288, 371, 287, 288, 372,
- 287, 288, 373, 287, 288, 374, 287, 288,
- 375, 287, 288, 376, 287, 288, 340, 287,
- 288, 378, 287, 288, 379, 382, 287, 288,
- 380, 287, 288, 381, 287, 288, 303, 303,
- 287, 288, 383, 287, 288, 305, 287, 385,
- 0, 387, 386, 387, 386, 387, 387, 4,
- 388, 402, 407, 4, 387, 386, 387, 389,
- 386, 387, 390, 386, 387, 391, 386, 387,
- 392, 386, 387, 393, 386, 387, 394, 386,
- 387, 395, 386, 387, 396, 386, 387, 397,
- 386, 387, 398, 386, 387, 399, 386, 387,
- 400, 386, 387, 401, 386, 387, 84, 386,
- 387, 403, 386, 387, 404, 386, 387, 405,
- 386, 406, 387, 397, 386, 397, 387, 386,
- 387, 408, 386, 387, 409, 386, 387, 410,
- 386, 387, 411, 386, 387, 412, 386, 387,
- 401, 386, 414, 422, 425, 0, 415, 0,
- 416, 0, 417, 0, 418, 0, 419, 0,
- 420, 421, 0, 384, 0, 286, 0, 423,
- 0, 424, 0, 93, 0, 426, 0, 427,
- 0, 428, 0, 429, 0, 430, 0, 431,
- 0, 432, 0, 433, 0, 434, 0, 435,
- 0, 436, 0, 437, 0, 438, 0, 439,
- 0, 440, 0, 424, 0, 442, 0, 443,
- 446, 0, 444, 0, 445, 0, 31, 31,
- 0, 447, 0, 38, 0, 448, 449, 448,
- 0, 453, 452, 451, 449, 452, 450, 0,
- 451, 449, 450, 0, 451, 450, 453, 452,
- 451, 449, 452, 450, 453, 453, 5, 15,
- 17, 31, 34, 37, 39, 31, 85, 259,
- 264, 275, 413, 441, 448, 453, 0, 55,
- 455, 54, 55, 456, 54, 55, 457, 459,
- 54, 55, 458, 54, 55, 82, 54, 55,
- 460, 54, 55, 81, 54, 55, 462, 54,
- 55, 463, 54, 55, 464, 54, 465, 55,
- 79, 54, 79, 55, 54, 55, 467, 54,
- 55, 468, 471, 54, 55, 469, 54, 55,
- 470, 54, 55, 83, 54, 55, 472, 54,
- 55, 473, 54, 55, 470, 54, 55, 475,
- 478, 54, 55, 476, 54, 55, 477, 54,
- 55, 472, 54, 55, 479, 54, 55, 480,
- 54, 55, 481, 54, 55, 482, 54, 55,
- 84, 83, 54, 55, 484, 491, 493, 54,
- 55, 485, 54, 55, 486, 54, 55, 487,
- 54, 55, 488, 54, 55, 489, 54, 55,
- 490, 83, 54, 55, 83, 54, 55, 492,
- 54, 55, 470, 54, 55, 494, 54, 55,
- 495, 54, 55, 496, 54, 55, 497, 54,
- 55, 498, 54, 55, 499, 54, 55, 500,
- 54, 55, 501, 54, 55, 502, 54, 55,
- 503, 54, 55, 504, 54, 55, 505, 54,
- 55, 506, 54, 55, 507, 54, 55, 508,
- 54, 55, 470, 54, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 29, 35, 0, 43, 0, 43, 0, 43,
- 54, 0, 5, 1, 0, 29, 1, 29,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 139,
- 48, 9, 106, 11, 0, 134, 45, 45,
- 45, 3, 122, 33, 33, 33, 0, 122,
- 33, 33, 33, 0, 122, 33, 0, 33,
- 0, 102, 7, 7, 43, 54, 0, 0,
- 43, 114, 25, 0, 54, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 149, 126, 57, 110,
- 23, 0, 43, 43, 43, 43, 0, 27,
- 118, 27, 27, 51, 27, 0, 54, 0,
- 1, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 69, 33, 69, 84, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 13, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 13, 0,
- 130, 31, 60, 57, 31, 63, 57, 63,
- 63, 63, 63, 63, 63, 63, 63, 63,
- 66, 31, 43, 0, 0, 43, 0, 43,
- 0, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 78, 33,
- 84, 78, 84, 84, 84, 84, 84, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 54,
- 19, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 19, 0, 54, 0, 0, 54, 0, 0,
- 54, 19, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 0, 54, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 72, 33, 84, 72, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 54, 15, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 15, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 15, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 0, 54, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 75, 33, 84, 75, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 17,
- 0, 54, 17, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 17, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 17, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 0,
- 54, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 144, 57, 54, 0, 54, 0, 81,
- 84, 84, 84, 81, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 21, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 0, 0,
- 43, 54, 37, 37, 87, 37, 37, 43,
- 0, 39, 0, 43, 0, 0, 54, 0,
- 0, 39, 0, 0, 54, 0, 93, 90,
- 41, 96, 90, 96, 96, 96, 96, 96,
- 96, 96, 96, 96, 99, 0, 43, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 0, 54, 0, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 509;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 1171 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
-
- #line 1178 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1468 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1531 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sr_latn.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_sr_latn()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Sr_latn", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/sr_latn.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/sr_latn.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 20, 21, 22, 41, 42, 43,
- 45, 47, 52, 57, 62, 67, 71, 75,
- 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 95, 97, 102, 109, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129, 130, 131, 132,
- 145, 147, 149, 151, 153, 155, 157, 159,
- 161, 163, 165, 167, 169, 171, 173, 175,
- 177, 179, 181, 183, 185, 187, 189, 191,
- 193, 195, 197, 199, 201, 220, 222, 223,
- 225, 226, 228, 229, 230, 231, 232, 233,
- 234, 251, 253, 255, 257, 259, 261, 263,
- 265, 267, 269, 271, 273, 275, 277, 279,
- 281, 283, 285, 287, 289, 291, 293, 295,
- 297, 299, 301, 303, 305, 307, 309, 311,
- 313, 315, 317, 320, 322, 324, 326, 329,
- 331, 334, 336, 338, 340, 342, 344, 346,
- 348, 350, 352, 354, 356, 358, 360, 362,
- 364, 366, 368, 370, 372, 374, 377, 379,
- 381, 384, 386, 388, 389, 390, 391, 392,
- 393, 394, 395, 412, 414, 416, 418, 420,
- 422, 424, 426, 428, 430, 432, 434, 436,
- 438, 440, 442, 444, 446, 448, 450, 452,
- 454, 456, 458, 460, 462, 464, 466, 468,
- 470, 472, 474, 477, 479, 482, 484, 486,
- 488, 490, 492, 494, 496, 499, 501, 504,
- 506, 508, 510, 512, 514, 516, 518, 520,
- 522, 524, 526, 528, 532, 534, 536, 538,
- 540, 542, 544, 546, 548, 550, 552, 554,
- 556, 558, 560, 562, 564, 566, 568, 570,
- 572, 574, 576, 578, 580, 582, 585, 587,
- 589, 592, 594, 596, 597, 598, 599, 601,
- 602, 604, 605, 606, 608, 609, 610, 611,
- 612, 613, 614, 615, 617, 618, 619, 620,
- 621, 622, 623, 624, 625, 626, 628, 629,
- 630, 647, 649, 651, 653, 655, 657, 659,
- 661, 663, 665, 667, 669, 671, 673, 675,
- 677, 679, 681, 683, 685, 687, 689, 691,
- 693, 695, 697, 699, 701, 703, 705, 707,
- 709, 712, 714, 717, 719, 722, 724, 726,
- 728, 730, 732, 734, 736, 739, 741, 744,
- 746, 748, 751, 753, 755, 757, 759, 761,
- 763, 766, 768, 770, 772, 774, 776, 778,
- 780, 784, 786, 788, 790, 792, 794, 796,
- 798, 800, 802, 804, 806, 808, 810, 812,
- 814, 816, 818, 820, 822, 824, 826, 828,
- 830, 832, 834, 837, 839, 841, 844, 846,
- 848, 849, 850, 851, 860, 862, 864, 866,
- 868, 870, 872, 874, 876, 878, 880, 882,
- 884, 886, 888, 890, 892, 894, 897, 899,
- 901, 903, 905, 907, 909, 911, 914, 915,
- 916, 917, 918, 919, 921, 922, 923, 924,
- 925, 926, 927, 928, 929, 930, 931, 932,
- 933, 934, 935, 936, 937, 938, 939, 940,
- 941, 942, 943, 945, 946, 947, 949, 950,
- 951, 955, 961, 964, 966, 972, 991, 993,
- 995, 998, 1000, 1002, 1004, 1006, 1008, 1010,
- 1012, 1015, 1017, 1019, 1022, 1024, 1026, 1028,
- 1030, 1032, 1034, 1037, 1039, 1041, 1043, 1045,
- 1047, 1049, 1051, 1054, 1058, 1060, 1062, 1064,
- 1066, 1068, 1071, 1073, 1075, 1077, 1079, 1081,
- 1083, 1085, 1087, 1089, 1091, 1093, 1095, 1097,
- 1099, 1101, 1103, 1105, 1107, 1109
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 70, 73, 75, 77, 79, 80, 83,
- 90, 124, 9, 13, -69, -65, 10, 32,
- 34, 35, 37, 42, 64, 65, 70, 73,
- 75, 77, 79, 80, 83, 90, 124, 9,
- 13, 34, 34, 10, 13, 10, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 9, 13, 10,
- 32, 9, 13, 10, 13, 10, 95, 70,
- 69, 65, 84, 85, 82, 69, 95, 69,
- 78, 68, 95, 37, 32, 10, 13, 10,
- 13, 13, 32, 64, 9, 10, 9, 10,
- 13, 32, 64, 11, 12, 10, 32, 64,
- 9, 13, 108, 105, 117, 110, 107, 99,
- 105, 111, 110, 97, 108, 110, 111, 115,
- 116, 58, 10, 10, 10, 32, 35, 37,
- 64, 70, 75, 77, 79, 80, 83, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 117, 10,
- 110, 10, 107, 10, 99, 10, 105, 10,
- 111, 10, 110, 10, 97, 10, 108, 10,
- 110, 10, 111, 10, 115, 10, 116, 10,
- 58, 10, 32, 34, 35, 37, 42, 64,
- 65, 70, 73, 75, 77, 79, 80, 83,
- 90, 124, 9, 13, 97, 111, 100, 32,
- 97, 110, 99, 116, 101, 112, 116, 58,
- 10, 10, 10, 32, 35, 37, 42, 64,
- 65, 70, 73, 75, 77, 79, 80, 83,
- 90, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 108, 10, 105, 10, 117, 10,
- 110, 10, 107, 10, 99, 10, 105, 10,
- 111, 10, 110, 10, 97, 10, 108, 10,
- 110, 10, 111, 10, 115, 10, 116, 10,
- 58, 10, 97, 10, 100, 10, 32, 97,
- 10, 111, 10, 103, 10, 117, -60, 10,
- 99, -121, 10, 10, 110, 115, 10, 100,
- 10, 97, 10, 111, 10, 98, 10, 105,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 109, 10, 101, 10, 114, 10, 99,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 111, 10, 97, 10, 100,
- 116, 10, 97, 10, 116, 10, 101, 111,
- 10, 97, 10, 116, 101, 107, 115, 116,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 65, 70, 73, 75, 77, 79, 80,
- 83, 90, 9, 13, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, 10, 108, 10, 105, 10, 117,
- 10, 110, 10, 107, 10, 99, 10, 105,
- 10, 111, 10, 110, 10, 97, 10, 108,
- 10, 110, 10, 111, 10, 115, 10, 116,
- 10, 58, 10, 97, 111, 10, 100, 10,
- 32, 97, 10, 110, 10, 99, 10, 101,
- 10, 112, 10, 111, 10, 103, 10, 117,
- -60, 10, 99, -121, 10, 10, 110, 115,
- 10, 100, 10, 97, 10, 111, 10, 98,
- 10, 105, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 109, 10, 101, 10, 114,
- 10, 99, 107, 116, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 111,
- 10, 105, 10, 99, 10, 114, 10, 117,
- 10, 107, 10, 116, 10, 117, 10, 114,
- 10, 97, 10, 32, 10, 115, 10, 99,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 106, 10, 97, 10, 100,
- 116, 10, 97, 10, 116, 10, 101, 111,
- 10, 97, 10, 116, 111, 103, 117, -60,
- 99, -121, 110, 115, 100, 97, 110, 111,
- 111, 118, 97, 98, 105, 110, 97, 111,
- 114, 122, 97, 100, 105, 110, 105, 109,
- 101, 114, 58, 105, 10, 10, 10, 32,
- 35, 37, 42, 64, 65, 70, 73, 75,
- 77, 79, 80, 83, 90, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 32, 10, 108, 10,
- 105, 10, 117, 10, 110, 10, 107, 10,
- 99, 10, 105, 10, 111, 10, 110, 10,
- 97, 10, 108, 10, 110, 10, 111, 10,
- 115, 10, 116, 10, 58, 10, 97, 111,
- 10, 100, 10, 32, 97, 10, 110, 10,
- 99, 116, 10, 101, 10, 112, 10, 101,
- 10, 107, 10, 111, 10, 103, 10, 117,
- -60, 10, 99, -121, 10, 10, 110, 115,
- 10, 100, 10, 97, 10, 110, 111, 10,
- 111, 10, 118, 10, 97, 10, 98, 10,
- 105, 10, 110, 10, 111, 114, 10, 122,
- 10, 97, 10, 100, 10, 105, 10, 109,
- 10, 101, 10, 114, 10, 99, 107, 116,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 111, 10, 105, 10, 99,
- 10, 114, 10, 117, 10, 107, 10, 116,
- 10, 117, 10, 114, 10, 97, 10, 32,
- 10, 115, 10, 99, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 106,
- 10, 97, 10, 100, 116, 10, 97, 10,
- 116, 10, 101, 111, 10, 97, 10, 116,
- 58, 10, 10, 10, 32, 35, 70, 77,
- 79, 124, 9, 13, 10, 117, 10, 110,
- 10, 107, 10, 99, 10, 105, 10, 111,
- 10, 110, 10, 97, 10, 108, 10, 110,
- 10, 111, 10, 115, 10, 116, 10, 58,
- 10, 111, 10, 103, 10, 117, -60, 10,
- 99, -121, 10, 10, 115, 10, 111, 10,
- 98, 10, 105, 10, 110, 10, 97, 99,
- 107, 116, 101, 110, 97, 114, 105, 106,
- 111, 105, 58, 105, 99, 97, 114, 117,
- 107, 116, 117, 114, 97, 32, 115, 99,
- 101, 110, 97, 114, 105, 106, 97, 100,
- 116, 97, 116, 101, 111, 97, 116, 32,
- 124, 9, 13, 10, 32, 92, 124, 9,
- 13, 10, 92, 124, 10, 92, 10, 32,
- 92, 124, 9, 13, 10, 32, 34, 35,
- 37, 42, 64, 65, 70, 73, 75, 77,
- 79, 80, 83, 90, 124, 9, 13, 10,
- 111, 10, 110, 10, 99, 116, 10, 101,
- 10, 112, 10, 101, 10, 107, 10, 111,
- 10, 103, 10, 117, -60, 10, 99, -121,
- 10, 10, 115, 10, 110, 111, 10, 111,
- 10, 118, 10, 97, 10, 98, 10, 105,
- 10, 110, 10, 111, 114, 10, 122, 10,
- 97, 10, 100, 10, 105, 10, 109, 10,
- 101, 10, 114, 10, 58, 105, 10, 99,
- 107, 116, 10, 101, 10, 110, 10, 97,
- 10, 114, 10, 105, 10, 106, 111, 10,
- 105, 10, 105, 10, 99, 10, 114, 10,
- 117, 10, 107, 10, 116, 10, 117, 10,
- 114, 10, 97, 10, 32, 10, 115, 10,
- 99, 10, 101, 10, 110, 10, 97, 10,
- 114, 10, 105, 10, 106, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 18, 1, 1, 17, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 11,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 17, 2, 1, 2,
- 1, 2, 1, 1, 1, 1, 1, 1,
- 15, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 3, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 3, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 15, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 4, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 3, 2, 2, 1, 1, 1, 2, 1,
- 2, 1, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 2, 1, 1,
- 15, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 3, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 3, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 4, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 3, 2, 2,
- 1, 1, 1, 7, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 3, 1, 1,
- 1, 1, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 2, 1, 1, 2, 1, 1,
- 2, 4, 3, 2, 4, 17, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 3, 4, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 1, 0, 0, 1, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 20, 22, 24, 43, 45, 47,
- 50, 53, 58, 63, 68, 73, 77, 81,
- 84, 86, 88, 90, 92, 94, 96, 98,
- 100, 102, 104, 106, 108, 110, 112, 114,
- 116, 119, 122, 127, 134, 139, 141, 143,
- 145, 147, 149, 151, 153, 155, 157, 159,
- 161, 163, 165, 167, 169, 171, 173, 175,
- 188, 191, 194, 197, 200, 203, 206, 209,
- 212, 215, 218, 221, 224, 227, 230, 233,
- 236, 239, 242, 245, 248, 251, 254, 257,
- 260, 263, 266, 269, 272, 291, 294, 296,
- 299, 301, 304, 306, 308, 310, 312, 314,
- 316, 333, 336, 339, 342, 345, 348, 351,
- 354, 357, 360, 363, 366, 369, 372, 375,
- 378, 381, 384, 387, 390, 393, 396, 399,
- 402, 405, 408, 411, 414, 417, 420, 423,
- 426, 429, 432, 436, 439, 442, 445, 449,
- 452, 456, 459, 462, 465, 468, 471, 474,
- 477, 480, 483, 486, 489, 492, 495, 498,
- 501, 504, 507, 510, 513, 516, 520, 523,
- 526, 530, 533, 536, 538, 540, 542, 544,
- 546, 548, 550, 567, 570, 573, 576, 579,
- 582, 585, 588, 591, 594, 597, 600, 603,
- 606, 609, 612, 615, 618, 621, 624, 627,
- 630, 633, 636, 639, 642, 645, 648, 651,
- 654, 657, 660, 664, 667, 671, 674, 677,
- 680, 683, 686, 689, 692, 696, 699, 703,
- 706, 709, 712, 715, 718, 721, 724, 727,
- 730, 733, 736, 739, 744, 747, 750, 753,
- 756, 759, 762, 765, 768, 771, 774, 777,
- 780, 783, 786, 789, 792, 795, 798, 801,
- 804, 807, 810, 813, 816, 819, 823, 826,
- 829, 833, 836, 839, 841, 843, 845, 848,
- 850, 853, 855, 857, 860, 862, 864, 866,
- 868, 870, 872, 874, 877, 879, 881, 883,
- 885, 887, 889, 891, 893, 895, 898, 900,
- 902, 919, 922, 925, 928, 931, 934, 937,
- 940, 943, 946, 949, 952, 955, 958, 961,
- 964, 967, 970, 973, 976, 979, 982, 985,
- 988, 991, 994, 997, 1000, 1003, 1006, 1009,
- 1012, 1016, 1019, 1023, 1026, 1030, 1033, 1036,
- 1039, 1042, 1045, 1048, 1051, 1055, 1058, 1062,
- 1065, 1068, 1072, 1075, 1078, 1081, 1084, 1087,
- 1090, 1094, 1097, 1100, 1103, 1106, 1109, 1112,
- 1115, 1120, 1123, 1126, 1129, 1132, 1135, 1138,
- 1141, 1144, 1147, 1150, 1153, 1156, 1159, 1162,
- 1165, 1168, 1171, 1174, 1177, 1180, 1183, 1186,
- 1189, 1192, 1195, 1199, 1202, 1205, 1209, 1212,
- 1215, 1217, 1219, 1221, 1230, 1233, 1236, 1239,
- 1242, 1245, 1248, 1251, 1254, 1257, 1260, 1263,
- 1266, 1269, 1272, 1275, 1278, 1281, 1285, 1288,
- 1291, 1294, 1297, 1300, 1303, 1306, 1310, 1312,
- 1314, 1316, 1318, 1320, 1323, 1325, 1327, 1329,
- 1331, 1333, 1335, 1337, 1339, 1341, 1343, 1345,
- 1347, 1349, 1351, 1353, 1355, 1357, 1359, 1361,
- 1363, 1365, 1367, 1370, 1372, 1374, 1377, 1379,
- 1381, 1385, 1391, 1395, 1398, 1404, 1423, 1426,
- 1429, 1433, 1436, 1439, 1442, 1445, 1448, 1451,
- 1454, 1458, 1461, 1464, 1468, 1471, 1474, 1477,
- 1480, 1483, 1486, 1490, 1493, 1496, 1499, 1502,
- 1505, 1508, 1511, 1515, 1520, 1523, 1526, 1529,
- 1532, 1535, 1539, 1542, 1545, 1548, 1551, 1554,
- 1557, 1560, 1563, 1566, 1569, 1572, 1575, 1578,
- 1581, 1584, 1587, 1590, 1593, 1596
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 39, 31, 85, 259, 264, 275, 413,
- 441, 448, 4, 0, 3, 0, 4, 0,
- 4, 4, 5, 15, 17, 31, 34, 37,
- 39, 31, 85, 259, 264, 275, 413, 441,
- 448, 4, 0, 6, 0, 7, 0, 9,
- 8, 8, 9, 8, 8, 10, 10, 11,
- 10, 10, 10, 10, 11, 10, 10, 10,
- 10, 12, 10, 10, 10, 10, 13, 10,
- 10, 4, 14, 14, 0, 4, 14, 14,
- 0, 4, 16, 15, 4, 0, 18, 0,
- 19, 0, 20, 0, 21, 0, 22, 0,
- 23, 0, 24, 0, 25, 0, 26, 0,
- 27, 0, 28, 0, 29, 0, 30, 0,
- 509, 0, 32, 0, 4, 16, 33, 4,
- 16, 33, 0, 0, 0, 0, 35, 36,
- 4, 36, 36, 34, 35, 35, 4, 36,
- 34, 36, 0, 38, 0, 31, 0, 40,
- 0, 41, 0, 42, 0, 43, 0, 44,
- 0, 45, 0, 46, 0, 47, 0, 48,
- 0, 49, 0, 50, 0, 51, 0, 52,
- 0, 53, 0, 55, 54, 55, 54, 55,
- 55, 4, 56, 4, 70, 454, 461, 466,
- 474, 483, 55, 54, 55, 57, 54, 55,
- 58, 54, 55, 59, 54, 55, 60, 54,
- 55, 61, 54, 55, 62, 54, 55, 63,
- 54, 55, 64, 54, 55, 65, 54, 55,
- 66, 54, 55, 67, 54, 55, 68, 54,
- 55, 69, 54, 55, 4, 54, 55, 71,
- 54, 55, 72, 54, 55, 73, 54, 55,
- 74, 54, 55, 75, 54, 55, 76, 54,
- 55, 77, 54, 55, 78, 54, 55, 79,
- 54, 55, 80, 54, 55, 81, 54, 55,
- 82, 54, 55, 83, 54, 55, 84, 54,
- 4, 4, 5, 15, 17, 31, 34, 37,
- 39, 31, 85, 259, 264, 275, 413, 441,
- 448, 4, 0, 86, 88, 0, 87, 0,
- 32, 31, 0, 89, 0, 90, 163, 0,
- 91, 0, 92, 0, 93, 0, 94, 0,
- 96, 95, 96, 95, 96, 96, 4, 97,
- 111, 4, 112, 114, 111, 128, 131, 136,
- 144, 149, 156, 96, 95, 96, 98, 95,
- 96, 99, 95, 96, 100, 95, 96, 101,
- 95, 96, 102, 95, 96, 103, 95, 96,
- 104, 95, 96, 105, 95, 96, 106, 95,
- 96, 107, 95, 96, 108, 95, 96, 109,
- 95, 96, 110, 95, 96, 4, 95, 96,
- 84, 95, 96, 113, 95, 96, 111, 95,
- 96, 115, 95, 96, 116, 95, 96, 117,
- 95, 96, 118, 95, 96, 119, 95, 96,
- 120, 95, 96, 121, 95, 96, 122, 95,
- 96, 123, 95, 96, 124, 95, 96, 125,
- 95, 96, 126, 95, 96, 127, 95, 96,
- 84, 95, 96, 129, 95, 96, 130, 95,
- 96, 84, 111, 95, 96, 132, 95, 96,
- 133, 95, 96, 134, 95, 135, 96, 123,
- 95, 123, 96, 95, 96, 137, 139, 95,
- 96, 138, 95, 96, 111, 95, 96, 140,
- 95, 96, 141, 95, 96, 142, 95, 96,
- 143, 95, 96, 127, 95, 96, 145, 95,
- 96, 146, 95, 96, 147, 95, 96, 148,
- 95, 96, 127, 95, 96, 150, 95, 96,
- 151, 95, 96, 152, 95, 96, 153, 95,
- 96, 154, 95, 96, 155, 95, 96, 127,
- 95, 96, 157, 95, 96, 158, 161, 95,
- 96, 159, 95, 96, 160, 95, 96, 111,
- 111, 95, 96, 162, 95, 96, 113, 95,
- 164, 0, 165, 0, 166, 0, 167, 0,
- 168, 0, 170, 169, 170, 169, 170, 170,
- 4, 171, 185, 4, 186, 188, 185, 202,
- 209, 214, 222, 227, 252, 170, 169, 170,
- 172, 169, 170, 173, 169, 170, 174, 169,
- 170, 175, 169, 170, 176, 169, 170, 177,
- 169, 170, 178, 169, 170, 179, 169, 170,
- 180, 169, 170, 181, 169, 170, 182, 169,
- 170, 183, 169, 170, 184, 169, 170, 4,
- 169, 170, 84, 169, 170, 187, 169, 170,
- 185, 169, 170, 189, 169, 170, 190, 169,
- 170, 191, 169, 170, 192, 169, 170, 193,
- 169, 170, 194, 169, 170, 195, 169, 170,
- 196, 169, 170, 197, 169, 170, 198, 169,
- 170, 199, 169, 170, 200, 169, 170, 201,
- 169, 170, 84, 169, 170, 203, 205, 169,
- 170, 204, 169, 170, 84, 185, 169, 170,
- 206, 169, 170, 207, 169, 170, 208, 169,
- 170, 200, 169, 170, 210, 169, 170, 211,
- 169, 170, 212, 169, 213, 170, 197, 169,
- 197, 170, 169, 170, 215, 217, 169, 170,
- 216, 169, 170, 185, 169, 170, 218, 169,
- 170, 219, 169, 170, 220, 169, 170, 221,
- 169, 170, 201, 169, 170, 223, 169, 170,
- 224, 169, 170, 225, 169, 170, 226, 169,
- 170, 201, 169, 170, 228, 234, 236, 169,
- 170, 229, 169, 170, 230, 169, 170, 231,
- 169, 170, 232, 169, 170, 233, 169, 170,
- 201, 169, 170, 235, 169, 170, 221, 169,
- 170, 237, 169, 170, 238, 169, 170, 239,
- 169, 170, 240, 169, 170, 241, 169, 170,
- 242, 169, 170, 243, 169, 170, 244, 169,
- 170, 245, 169, 170, 246, 169, 170, 247,
- 169, 170, 248, 169, 170, 249, 169, 170,
- 250, 169, 170, 251, 169, 170, 221, 169,
- 170, 253, 169, 170, 254, 257, 169, 170,
- 255, 169, 170, 256, 169, 170, 185, 185,
- 169, 170, 258, 169, 170, 187, 169, 260,
- 0, 261, 0, 262, 0, 263, 48, 0,
- 48, 0, 265, 267, 0, 266, 0, 31,
- 0, 268, 271, 0, 269, 0, 270, 0,
- 167, 0, 272, 0, 273, 0, 274, 0,
- 52, 0, 276, 281, 0, 277, 0, 278,
- 0, 279, 0, 280, 0, 270, 0, 282,
- 0, 283, 0, 284, 0, 285, 0, 286,
- 384, 0, 288, 287, 288, 287, 288, 288,
- 4, 289, 303, 4, 304, 306, 303, 320,
- 329, 334, 344, 352, 377, 288, 287, 288,
- 290, 287, 288, 291, 287, 288, 292, 287,
- 288, 293, 287, 288, 294, 287, 288, 295,
- 287, 288, 296, 287, 288, 297, 287, 288,
- 298, 287, 288, 299, 287, 288, 300, 287,
- 288, 301, 287, 288, 302, 287, 288, 4,
- 287, 288, 84, 287, 288, 305, 287, 288,
- 303, 287, 288, 307, 287, 288, 308, 287,
- 288, 309, 287, 288, 310, 287, 288, 311,
- 287, 288, 312, 287, 288, 313, 287, 288,
- 314, 287, 288, 315, 287, 288, 316, 287,
- 288, 317, 287, 288, 318, 287, 288, 319,
- 287, 288, 84, 287, 288, 321, 323, 287,
- 288, 322, 287, 288, 84, 303, 287, 288,
- 324, 287, 288, 325, 327, 287, 288, 326,
- 287, 288, 318, 287, 288, 328, 287, 288,
- 317, 287, 288, 330, 287, 288, 331, 287,
- 288, 332, 287, 333, 288, 315, 287, 315,
- 288, 287, 288, 335, 337, 287, 288, 336,
- 287, 288, 303, 287, 288, 338, 341, 287,
- 288, 339, 287, 288, 340, 287, 288, 319,
- 287, 288, 342, 287, 288, 343, 287, 288,
- 340, 287, 288, 345, 348, 287, 288, 346,
- 287, 288, 347, 287, 288, 342, 287, 288,
- 349, 287, 288, 350, 287, 288, 351, 287,
- 288, 319, 287, 288, 353, 359, 361, 287,
- 288, 354, 287, 288, 355, 287, 288, 356,
- 287, 288, 357, 287, 288, 358, 287, 288,
- 319, 287, 288, 360, 287, 288, 340, 287,
- 288, 362, 287, 288, 363, 287, 288, 364,
- 287, 288, 365, 287, 288, 366, 287, 288,
- 367, 287, 288, 368, 287, 288, 369, 287,
- 288, 370, 287, 288, 371, 287, 288, 372,
- 287, 288, 373, 287, 288, 374, 287, 288,
- 375, 287, 288, 376, 287, 288, 340, 287,
- 288, 378, 287, 288, 379, 382, 287, 288,
- 380, 287, 288, 381, 287, 288, 303, 303,
- 287, 288, 383, 287, 288, 305, 287, 385,
- 0, 387, 386, 387, 386, 387, 387, 4,
- 388, 402, 407, 4, 387, 386, 387, 389,
- 386, 387, 390, 386, 387, 391, 386, 387,
- 392, 386, 387, 393, 386, 387, 394, 386,
- 387, 395, 386, 387, 396, 386, 387, 397,
- 386, 387, 398, 386, 387, 399, 386, 387,
- 400, 386, 387, 401, 386, 387, 84, 386,
- 387, 403, 386, 387, 404, 386, 387, 405,
- 386, 406, 387, 397, 386, 397, 387, 386,
- 387, 408, 386, 387, 409, 386, 387, 410,
- 386, 387, 411, 386, 387, 412, 386, 387,
- 401, 386, 414, 422, 425, 0, 415, 0,
- 416, 0, 417, 0, 418, 0, 419, 0,
- 420, 421, 0, 384, 0, 286, 0, 423,
- 0, 424, 0, 93, 0, 426, 0, 427,
- 0, 428, 0, 429, 0, 430, 0, 431,
- 0, 432, 0, 433, 0, 434, 0, 435,
- 0, 436, 0, 437, 0, 438, 0, 439,
- 0, 440, 0, 424, 0, 442, 0, 443,
- 446, 0, 444, 0, 445, 0, 31, 31,
- 0, 447, 0, 38, 0, 448, 449, 448,
- 0, 453, 452, 451, 449, 452, 450, 0,
- 451, 449, 450, 0, 451, 450, 453, 452,
- 451, 449, 452, 450, 453, 453, 5, 15,
- 17, 31, 34, 37, 39, 31, 85, 259,
- 264, 275, 413, 441, 448, 453, 0, 55,
- 455, 54, 55, 456, 54, 55, 457, 459,
- 54, 55, 458, 54, 55, 82, 54, 55,
- 460, 54, 55, 81, 54, 55, 462, 54,
- 55, 463, 54, 55, 464, 54, 465, 55,
- 79, 54, 79, 55, 54, 55, 467, 54,
- 55, 468, 471, 54, 55, 469, 54, 55,
- 470, 54, 55, 83, 54, 55, 472, 54,
- 55, 473, 54, 55, 470, 54, 55, 475,
- 478, 54, 55, 476, 54, 55, 477, 54,
- 55, 472, 54, 55, 479, 54, 55, 480,
- 54, 55, 481, 54, 55, 482, 54, 55,
- 84, 83, 54, 55, 484, 491, 493, 54,
- 55, 485, 54, 55, 486, 54, 55, 487,
- 54, 55, 488, 54, 55, 489, 54, 55,
- 490, 83, 54, 55, 83, 54, 55, 492,
- 54, 55, 470, 54, 55, 494, 54, 55,
- 495, 54, 55, 496, 54, 55, 497, 54,
- 55, 498, 54, 55, 499, 54, 55, 500,
- 54, 55, 501, 54, 55, 502, 54, 55,
- 503, 54, 55, 504, 54, 55, 505, 54,
- 55, 506, 54, 55, 507, 54, 55, 508,
- 54, 55, 470, 54, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 29, 35, 0, 43, 0, 43, 0, 43,
- 54, 0, 5, 1, 0, 29, 1, 29,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 139,
- 48, 9, 106, 11, 0, 134, 45, 45,
- 45, 3, 122, 33, 33, 33, 0, 122,
- 33, 33, 33, 0, 122, 33, 0, 33,
- 0, 102, 7, 7, 43, 54, 0, 0,
- 43, 114, 25, 0, 54, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 149, 126, 57, 110,
- 23, 0, 43, 43, 43, 43, 0, 27,
- 118, 27, 27, 51, 27, 0, 54, 0,
- 1, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 69, 33, 69, 84, 84, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 13, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 13, 0,
- 130, 31, 60, 57, 31, 63, 57, 63,
- 63, 63, 63, 63, 63, 63, 63, 63,
- 66, 31, 43, 0, 0, 43, 0, 43,
- 0, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 78, 33,
- 84, 78, 84, 84, 84, 84, 84, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 54,
- 19, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 19, 0, 54, 0, 0, 54, 0, 0,
- 54, 19, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 0, 54, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 72, 33, 84, 72, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 54, 15, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 15, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 15, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 0, 54, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 75, 33, 84, 75, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 17,
- 0, 54, 17, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 17, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 17, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 0,
- 54, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 144, 57, 54, 0, 54, 0, 81,
- 84, 84, 84, 81, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 21, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 0, 0,
- 43, 54, 37, 37, 87, 37, 37, 43,
- 0, 39, 0, 43, 0, 0, 54, 0,
- 0, 39, 0, 0, 54, 0, 93, 90,
- 41, 96, 90, 96, 96, 96, 96, 96,
- 96, 96, 96, 96, 99, 0, 43, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 0, 54, 0, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 509;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/sr_latn.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 1171 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/sr_latn.c.rl"
-
-#line 1178 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/sr_latn.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/sr_latn.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/sr_latn.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/sr_latn.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/sr_latn.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/sr_latn.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/sr_latn.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/sr_latn.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/sr_latn.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/sr_latn.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/sr_latn.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/sr_latn.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/sr_latn.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/sr_latn.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/sr_latn.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/sr_latn.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/sr_latn.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/sr_latn.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/sr_latn.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/sr_latn.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/sr_latn.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/sr_latn.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/sr_latn.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/sr_latn.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1468 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/sr_latn.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1531 "ext/gherkin_lexer_sr_latn/gherkin_lexer_sr_latn.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/sr_latn.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_sr_latn()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Sr_latn", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_sv/extconf.rb
index 633b85c,633b85c..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_sv/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_sv")
--have_library("c", "main")
--create_makefile("gherkin_lexer_sv")
diff --cc ext/gherkin_lexer_sv/gherkin_lexer_sv.c
index 2aa69da,aac4307..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_sv/gherkin_lexer_sv.c
+++ /dev/null
@@@ -1,1324 -1,1324 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 128, 129, 130,
- 131, 145, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 165, 167, 169, 171, 173,
- 175, 193, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 218, 220, 222, 224,
- 226, 228, 230, 232, 234, 236, 238, 240,
- 242, 244, 246, 248, 250, 252, 254, 256,
- 258, 260, 262, 264, 266, 268, 270, 272,
- 274, 276, 278, 280, 282, 284, 286, 288,
- 290, 292, 294, 296, 298, 300, 302, 304,
- 306, 308, 310, 312, 314, 316, 318, 321,
- 323, 325, 327, 329, 331, 333, 335, 338,
- 340, 342, 344, 346, 347, 348, 349, 350,
- 351, 352, 353, 354, 355, 366, 368, 370,
- 372, 374, 376, 378, 380, 382, 384, 386,
- 388, 390, 392, 394, 396, 398, 400, 402,
- 404, 406, 408, 410, 412, 414, 416, 418,
- 420, 422, 424, 426, 428, 430, 432, 434,
- 436, 438, 440, 442, 445, 447, 449, 451,
- 453, 455, 457, 459, 461, 463, 465, 467,
- 469, 471, 473, 475, 477, 479, 481, 484,
- 486, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 503, 505, 507, 509, 511, 513,
- 515, 517, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 532, 533,
- 534, 535, 536, 537, 538, 539, 541, 542,
- 543, 559, 561, 563, 565, 567, 569, 571,
- 573, 575, 577, 579, 581, 583, 585, 587,
- 589, 591, 593, 595, 597, 599, 601, 603,
- 605, 607, 609, 611, 613, 615, 617, 619,
- 621, 623, 625, 627, 629, 631, 633, 635,
- 637, 639, 641, 643, 645, 647, 649, 651,
- 653, 655, 657, 659, 661, 663, 665, 667,
- 669, 671, 673, 676, 678, 680, 682, 684,
- 686, 688, 690, 693, 695, 697, 699, 700,
- 701, 702, 706, 712, 715, 717, 723, 741,
- 743, 745, 747, 749, 751, 753, 755, 757,
- 759, 761, 763, 765, 767, 769, 771, 773,
- 775, 777, 779, 782, 784, 786, 788, 790,
- 792, 794, 796
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 69, 71, 77, 78, 79, 83,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 65, 66, 69, 71,
- 77, 78, 79, 83, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 98, 115, 116, 114, 97, 107, 116, 32,
- 83, 99, 101, 110, 97, 114, 105, 111,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 69, 71, 77, 78, 79, 83, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 32, 34, 35, 37, 42, 64, 65, 66,
- 69, 71, 77, 78, 79, 83, 124, 9,
- 13, 97, 107, 103, 114, 117, 110, 100,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 65, 69, 71, 77, 78, 79, 83,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 32,
- 10, 98, 10, 115, 10, 116, 10, 114,
- 10, 97, 10, 107, 10, 116, 10, 32,
- 10, 83, 10, 99, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 111,
- 10, 58, 10, 103, 10, 101, 10, 110,
- 10, 115, 10, 107, 10, 97, 10, 112,
- 10, 105, 10, 118, 10, 101, 10, 116,
- 10, 101, 10, 110, -61, 10, -92, 10,
- 10, 114, 10, 99, 10, 104, -61, 10,
- 99, -91, 10, 10, 101, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 111, 10,
- 58, 109, 10, 97, 10, 108, 10, 108,
- 103, 120, 101, 110, 115, 107, 97, 112,
- 58, 10, 10, 10, 32, 35, 37, 64,
- 65, 66, 69, 83, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 98, 10, 115, 10, 116,
- 10, 114, 10, 97, 10, 107, 10, 116,
- 10, 32, 10, 83, 10, 99, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 111, 10, 58, 10, 97, 10, 107,
- 10, 103, 10, 114, 10, 117, 10, 110,
- 10, 100, 10, 103, 120, 10, 101, 10,
- 110, 10, 115, 10, 107, 10, 97, 10,
- 112, 10, 101, 10, 109, 10, 112, 10,
- 101, 10, 108, 10, 99, 10, 101, 10,
- 110, 10, 97, 10, 114, 10, 105, 10,
- 111, 10, 58, 109, 10, 97, 10, 108,
- 101, 109, 112, 101, 108, 58, 10, 10,
- 10, 32, 35, 69, 124, 9, 13, 10,
- 103, 10, 101, 10, 110, 10, 115, 10,
- 107, 10, 97, 10, 112, 10, 58, 105,
- 118, 101, 116, 101, 110, -61, -92, 114,
- 99, 104, -61, 99, -91, 101, 110, 97,
- 114, 105, 111, 58, 109, 10, 10, 10,
- 32, 35, 37, 42, 64, 65, 66, 69,
- 71, 77, 78, 79, 83, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 32, 10, 98, 10,
- 115, 10, 116, 10, 114, 10, 97, 10,
- 107, 10, 116, 10, 32, 10, 83, 10,
- 99, 10, 101, 10, 110, 10, 97, 10,
- 114, 10, 105, 10, 111, 10, 58, 10,
- 97, 10, 107, 10, 103, 10, 114, 10,
- 117, 10, 110, 10, 100, 10, 103, 10,
- 101, 10, 110, 10, 115, 10, 107, 10,
- 97, 10, 112, 10, 105, 10, 118, 10,
- 101, 10, 116, 10, 101, 10, 110, -61,
- 10, -92, 10, 10, 114, 10, 99, 10,
- 104, -61, 10, 99, -91, 10, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 111, 10, 58, 109, 10, 97, 10,
- 108, 10, 108, 97, 108, 108, 32, 124,
- 9, 13, 10, 32, 92, 124, 9, 13,
- 10, 92, 124, 10, 92, 10, 32, 92,
- 124, 9, 13, 10, 32, 34, 35, 37,
- 42, 64, 65, 66, 69, 71, 77, 78,
- 79, 83, 124, 9, 13, 10, 103, 10,
- 101, 10, 110, 10, 115, 10, 107, 10,
- 97, 10, 112, 10, 58, 10, 105, 10,
- 118, 10, 101, 10, 116, 10, 101, 10,
- 110, -61, 10, -92, 10, 10, 114, 10,
- 99, 10, 104, -61, 10, 99, -91, 10,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 111, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 12, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 16, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 13, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 9, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 5, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 2, 1, 1,
- 1, 1, 1, 1, 1, 2, 1, 1,
- 14, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 1, 1,
- 1, 2, 4, 3, 2, 4, 16, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 1, 0, 0, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 139, 141,
- 143, 145, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 165, 167, 169, 171, 173,
- 175, 189, 192, 195, 198, 201, 204, 207,
- 210, 213, 216, 219, 222, 225, 228, 231,
- 234, 252, 254, 256, 258, 260, 262, 264,
- 266, 268, 270, 272, 287, 290, 293, 296,
- 299, 302, 305, 308, 311, 314, 317, 320,
- 323, 326, 329, 332, 335, 338, 341, 344,
- 347, 350, 353, 356, 359, 362, 365, 368,
- 371, 374, 377, 380, 383, 386, 389, 392,
- 395, 398, 401, 404, 407, 410, 413, 416,
- 419, 422, 425, 428, 431, 434, 437, 441,
- 444, 447, 450, 453, 456, 459, 462, 466,
- 469, 472, 475, 478, 480, 482, 484, 486,
- 488, 490, 492, 494, 496, 507, 510, 513,
- 516, 519, 522, 525, 528, 531, 534, 537,
- 540, 543, 546, 549, 552, 555, 558, 561,
- 564, 567, 570, 573, 576, 579, 582, 585,
- 588, 591, 594, 597, 600, 603, 606, 609,
- 612, 615, 618, 621, 625, 628, 631, 634,
- 637, 640, 643, 646, 649, 652, 655, 658,
- 661, 664, 667, 670, 673, 676, 679, 683,
- 686, 689, 691, 693, 695, 697, 699, 701,
- 703, 705, 712, 715, 718, 721, 724, 727,
- 730, 733, 736, 738, 740, 742, 744, 746,
- 748, 750, 752, 754, 756, 758, 761, 763,
- 765, 767, 769, 771, 773, 775, 778, 780,
- 782, 798, 801, 804, 807, 810, 813, 816,
- 819, 822, 825, 828, 831, 834, 837, 840,
- 843, 846, 849, 852, 855, 858, 861, 864,
- 867, 870, 873, 876, 879, 882, 885, 888,
- 891, 894, 897, 900, 903, 906, 909, 912,
- 915, 918, 921, 924, 927, 930, 933, 936,
- 939, 942, 945, 948, 951, 954, 957, 960,
- 963, 966, 969, 973, 976, 979, 982, 985,
- 988, 991, 994, 998, 1001, 1004, 1007, 1009,
- 1011, 1013, 1017, 1023, 1027, 1030, 1036, 1054,
- 1057, 1060, 1063, 1066, 1069, 1072, 1075, 1078,
- 1081, 1084, 1087, 1090, 1093, 1096, 1099, 1102,
- 1105, 1108, 1111, 1115, 1118, 1121, 1124, 1127,
- 1130, 1133, 1136
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 73, 146, 234, 238, 240, 243, 245,
- 329, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 73,
- 146, 234, 238, 240, 243, 245, 329, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 362, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 0, 39, 0, 40, 0, 41,
- 0, 42, 0, 43, 0, 44, 0, 45,
- 0, 46, 0, 47, 0, 48, 0, 49,
- 0, 50, 0, 51, 0, 52, 0, 53,
- 0, 54, 0, 56, 55, 56, 55, 56,
- 56, 4, 57, 71, 4, 335, 343, 347,
- 349, 352, 354, 56, 55, 56, 58, 55,
- 56, 59, 55, 56, 60, 55, 56, 61,
- 55, 56, 62, 55, 56, 63, 55, 56,
- 64, 55, 56, 65, 55, 56, 66, 55,
- 56, 67, 55, 56, 68, 55, 56, 69,
- 55, 56, 70, 55, 56, 4, 55, 56,
- 72, 55, 4, 4, 5, 15, 17, 31,
- 34, 37, 73, 146, 234, 238, 240, 243,
- 245, 329, 4, 0, 74, 0, 75, 0,
- 76, 0, 77, 0, 78, 0, 79, 0,
- 80, 0, 81, 0, 83, 82, 83, 82,
- 83, 83, 4, 84, 98, 4, 99, 116,
- 123, 127, 129, 132, 134, 83, 82, 83,
- 85, 82, 83, 86, 82, 83, 87, 82,
- 83, 88, 82, 83, 89, 82, 83, 90,
- 82, 83, 91, 82, 83, 92, 82, 83,
- 93, 82, 83, 94, 82, 83, 95, 82,
- 83, 96, 82, 83, 97, 82, 83, 4,
- 82, 83, 72, 82, 83, 100, 82, 83,
- 101, 82, 83, 102, 82, 83, 103, 82,
- 83, 104, 82, 83, 105, 82, 83, 106,
- 82, 83, 107, 82, 83, 108, 82, 83,
- 109, 82, 83, 110, 82, 83, 111, 82,
- 83, 112, 82, 83, 113, 82, 83, 114,
- 82, 83, 115, 82, 83, 72, 82, 83,
- 117, 82, 83, 118, 82, 83, 119, 82,
- 83, 120, 82, 83, 121, 82, 83, 122,
- 82, 83, 115, 82, 83, 124, 82, 83,
- 125, 82, 83, 126, 82, 83, 98, 82,
- 83, 128, 82, 83, 98, 82, 130, 83,
- 82, 131, 83, 82, 83, 98, 82, 83,
- 133, 82, 83, 98, 82, 135, 83, 136,
- 82, 98, 83, 82, 83, 137, 82, 83,
- 138, 82, 83, 139, 82, 83, 140, 82,
- 83, 141, 82, 83, 142, 82, 83, 72,
- 143, 82, 83, 144, 82, 83, 145, 82,
- 83, 115, 82, 147, 217, 0, 148, 0,
- 149, 0, 150, 0, 151, 0, 152, 0,
- 153, 0, 154, 0, 156, 155, 156, 155,
- 156, 156, 4, 157, 4, 171, 188, 195,
- 207, 156, 155, 156, 158, 155, 156, 159,
- 155, 156, 160, 155, 156, 161, 155, 156,
- 162, 155, 156, 163, 155, 156, 164, 155,
- 156, 165, 155, 156, 166, 155, 156, 167,
- 155, 156, 168, 155, 156, 169, 155, 156,
- 170, 155, 156, 4, 155, 156, 172, 155,
- 156, 173, 155, 156, 174, 155, 156, 175,
- 155, 156, 176, 155, 156, 177, 155, 156,
- 178, 155, 156, 179, 155, 156, 180, 155,
- 156, 181, 155, 156, 182, 155, 156, 183,
- 155, 156, 184, 155, 156, 185, 155, 156,
- 186, 155, 156, 187, 155, 156, 72, 155,
- 156, 189, 155, 156, 190, 155, 156, 191,
- 155, 156, 192, 155, 156, 193, 155, 156,
- 194, 155, 156, 187, 155, 156, 196, 202,
- 155, 156, 197, 155, 156, 198, 155, 156,
- 199, 155, 156, 200, 155, 156, 201, 155,
- 156, 187, 155, 156, 203, 155, 156, 204,
- 155, 156, 205, 155, 156, 206, 155, 156,
- 187, 155, 156, 208, 155, 156, 209, 155,
- 156, 210, 155, 156, 211, 155, 156, 212,
- 155, 156, 213, 155, 156, 214, 155, 156,
- 72, 215, 155, 156, 216, 155, 156, 206,
- 155, 218, 0, 219, 0, 220, 0, 221,
- 0, 222, 0, 223, 0, 225, 224, 225,
- 224, 225, 225, 4, 226, 4, 225, 224,
- 225, 227, 224, 225, 228, 224, 225, 229,
- 224, 225, 230, 224, 225, 231, 224, 225,
- 232, 224, 225, 233, 224, 225, 72, 224,
- 235, 0, 236, 0, 237, 0, 31, 0,
- 239, 0, 31, 0, 241, 0, 242, 0,
- 31, 0, 244, 0, 31, 0, 246, 247,
- 0, 31, 0, 248, 0, 249, 0, 250,
- 0, 251, 0, 252, 0, 253, 0, 254,
- 326, 0, 256, 255, 256, 255, 256, 256,
- 4, 257, 271, 4, 272, 289, 296, 303,
- 307, 309, 312, 314, 256, 255, 256, 258,
- 255, 256, 259, 255, 256, 260, 255, 256,
- 261, 255, 256, 262, 255, 256, 263, 255,
- 256, 264, 255, 256, 265, 255, 256, 266,
- 255, 256, 267, 255, 256, 268, 255, 256,
- 269, 255, 256, 270, 255, 256, 4, 255,
- 256, 72, 255, 256, 273, 255, 256, 274,
- 255, 256, 275, 255, 256, 276, 255, 256,
- 277, 255, 256, 278, 255, 256, 279, 255,
- 256, 280, 255, 256, 281, 255, 256, 282,
- 255, 256, 283, 255, 256, 284, 255, 256,
- 285, 255, 256, 286, 255, 256, 287, 255,
- 256, 288, 255, 256, 72, 255, 256, 290,
- 255, 256, 291, 255, 256, 292, 255, 256,
- 293, 255, 256, 294, 255, 256, 295, 255,
- 256, 288, 255, 256, 297, 255, 256, 298,
- 255, 256, 299, 255, 256, 300, 255, 256,
- 301, 255, 256, 302, 255, 256, 288, 255,
- 256, 304, 255, 256, 305, 255, 256, 306,
- 255, 256, 271, 255, 256, 308, 255, 256,
- 271, 255, 310, 256, 255, 311, 256, 255,
- 256, 271, 255, 256, 313, 255, 256, 271,
- 255, 315, 256, 316, 255, 271, 256, 255,
- 256, 317, 255, 256, 318, 255, 256, 319,
- 255, 256, 320, 255, 256, 321, 255, 256,
- 322, 255, 256, 72, 323, 255, 256, 324,
- 255, 256, 325, 255, 256, 288, 255, 327,
- 0, 328, 0, 53, 0, 329, 330, 329,
- 0, 334, 333, 332, 330, 333, 331, 0,
- 332, 330, 331, 0, 332, 331, 334, 333,
- 332, 330, 333, 331, 334, 334, 5, 15,
- 17, 31, 34, 37, 73, 146, 234, 238,
- 240, 243, 245, 329, 334, 0, 56, 336,
- 55, 56, 337, 55, 56, 338, 55, 56,
- 339, 55, 56, 340, 55, 56, 341, 55,
- 56, 342, 55, 56, 72, 55, 56, 344,
- 55, 56, 345, 55, 56, 346, 55, 56,
- 71, 55, 56, 348, 55, 56, 71, 55,
- 350, 56, 55, 351, 56, 55, 56, 71,
- 55, 56, 353, 55, 56, 71, 55, 355,
- 56, 356, 55, 71, 56, 55, 56, 357,
- 55, 56, 358, 55, 56, 359, 55, 56,
- 360, 55, 56, 361, 55, 56, 342, 55,
- 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 78, 33, 84, 78, 84, 84, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 54,
- 19, 0, 130, 31, 60, 57, 31, 63,
- 57, 63, 63, 63, 63, 63, 63, 63,
- 63, 66, 31, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 72, 33, 84, 72, 84, 84,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 54, 15, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 69, 33, 69, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 13, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 13, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 81, 84, 81, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 21, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 75, 33, 84, 75, 84, 84, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 17, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 17, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 17, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 0, 0,
- 43, 54, 37, 37, 87, 37, 37, 43,
- 0, 39, 0, 43, 0, 0, 54, 0,
- 0, 39, 0, 0, 54, 0, 93, 90,
- 41, 96, 90, 96, 96, 96, 96, 96,
- 96, 96, 96, 99, 0, 43, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 19, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 362;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 928 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
-
- #line 935 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1225 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1288 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/sv.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_sv()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Sv", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/sv.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/sv.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 19, 20, 21, 39, 40, 41,
- 43, 45, 50, 55, 60, 65, 69, 73,
- 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 93, 95, 100, 107, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 128, 129, 130,
- 131, 145, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 165, 167, 169, 171, 173,
- 175, 193, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 218, 220, 222, 224,
- 226, 228, 230, 232, 234, 236, 238, 240,
- 242, 244, 246, 248, 250, 252, 254, 256,
- 258, 260, 262, 264, 266, 268, 270, 272,
- 274, 276, 278, 280, 282, 284, 286, 288,
- 290, 292, 294, 296, 298, 300, 302, 304,
- 306, 308, 310, 312, 314, 316, 318, 321,
- 323, 325, 327, 329, 331, 333, 335, 338,
- 340, 342, 344, 346, 347, 348, 349, 350,
- 351, 352, 353, 354, 355, 366, 368, 370,
- 372, 374, 376, 378, 380, 382, 384, 386,
- 388, 390, 392, 394, 396, 398, 400, 402,
- 404, 406, 408, 410, 412, 414, 416, 418,
- 420, 422, 424, 426, 428, 430, 432, 434,
- 436, 438, 440, 442, 445, 447, 449, 451,
- 453, 455, 457, 459, 461, 463, 465, 467,
- 469, 471, 473, 475, 477, 479, 481, 484,
- 486, 488, 489, 490, 491, 492, 493, 494,
- 495, 496, 503, 505, 507, 509, 511, 513,
- 515, 517, 519, 520, 521, 522, 523, 524,
- 525, 526, 527, 528, 529, 530, 532, 533,
- 534, 535, 536, 537, 538, 539, 541, 542,
- 543, 559, 561, 563, 565, 567, 569, 571,
- 573, 575, 577, 579, 581, 583, 585, 587,
- 589, 591, 593, 595, 597, 599, 601, 603,
- 605, 607, 609, 611, 613, 615, 617, 619,
- 621, 623, 625, 627, 629, 631, 633, 635,
- 637, 639, 641, 643, 645, 647, 649, 651,
- 653, 655, 657, 659, 661, 663, 665, 667,
- 669, 671, 673, 676, 678, 680, 682, 684,
- 686, 688, 690, 693, 695, 697, 699, 700,
- 701, 702, 706, 712, 715, 717, 723, 741,
- 743, 745, 747, 749, 751, 753, 755, 757,
- 759, 761, 763, 765, 767, 769, 771, 773,
- 775, 777, 779, 782, 784, 786, 788, 790,
- 792, 794, 796
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 65, 66, 69, 71, 77, 78, 79, 83,
- 124, 9, 13, -69, -65, 10, 32, 34,
- 35, 37, 42, 64, 65, 66, 69, 71,
- 77, 78, 79, 83, 124, 9, 13, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 10, 13, 10, 13, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 98, 115, 116, 114, 97, 107, 116, 32,
- 83, 99, 101, 110, 97, 114, 105, 111,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 69, 71, 77, 78, 79, 83, 9,
- 13, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 32, 34, 35, 37, 42, 64, 65, 66,
- 69, 71, 77, 78, 79, 83, 124, 9,
- 13, 97, 107, 103, 114, 117, 110, 100,
- 58, 10, 10, 10, 32, 35, 37, 42,
- 64, 65, 69, 71, 77, 78, 79, 83,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 32,
- 10, 98, 10, 115, 10, 116, 10, 114,
- 10, 97, 10, 107, 10, 116, 10, 32,
- 10, 83, 10, 99, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 105, 10, 111,
- 10, 58, 10, 103, 10, 101, 10, 110,
- 10, 115, 10, 107, 10, 97, 10, 112,
- 10, 105, 10, 118, 10, 101, 10, 116,
- 10, 101, 10, 110, -61, 10, -92, 10,
- 10, 114, 10, 99, 10, 104, -61, 10,
- 99, -91, 10, 10, 101, 10, 110, 10,
- 97, 10, 114, 10, 105, 10, 111, 10,
- 58, 109, 10, 97, 10, 108, 10, 108,
- 103, 120, 101, 110, 115, 107, 97, 112,
- 58, 10, 10, 10, 32, 35, 37, 64,
- 65, 66, 69, 83, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 98, 10, 115, 10, 116,
- 10, 114, 10, 97, 10, 107, 10, 116,
- 10, 32, 10, 83, 10, 99, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 111, 10, 58, 10, 97, 10, 107,
- 10, 103, 10, 114, 10, 117, 10, 110,
- 10, 100, 10, 103, 120, 10, 101, 10,
- 110, 10, 115, 10, 107, 10, 97, 10,
- 112, 10, 101, 10, 109, 10, 112, 10,
- 101, 10, 108, 10, 99, 10, 101, 10,
- 110, 10, 97, 10, 114, 10, 105, 10,
- 111, 10, 58, 109, 10, 97, 10, 108,
- 101, 109, 112, 101, 108, 58, 10, 10,
- 10, 32, 35, 69, 124, 9, 13, 10,
- 103, 10, 101, 10, 110, 10, 115, 10,
- 107, 10, 97, 10, 112, 10, 58, 105,
- 118, 101, 116, 101, 110, -61, -92, 114,
- 99, 104, -61, 99, -91, 101, 110, 97,
- 114, 105, 111, 58, 109, 10, 10, 10,
- 32, 35, 37, 42, 64, 65, 66, 69,
- 71, 77, 78, 79, 83, 9, 13, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, 10, 32, 10, 98, 10,
- 115, 10, 116, 10, 114, 10, 97, 10,
- 107, 10, 116, 10, 32, 10, 83, 10,
- 99, 10, 101, 10, 110, 10, 97, 10,
- 114, 10, 105, 10, 111, 10, 58, 10,
- 97, 10, 107, 10, 103, 10, 114, 10,
- 117, 10, 110, 10, 100, 10, 103, 10,
- 101, 10, 110, 10, 115, 10, 107, 10,
- 97, 10, 112, 10, 105, 10, 118, 10,
- 101, 10, 116, 10, 101, 10, 110, -61,
- 10, -92, 10, 10, 114, 10, 99, 10,
- 104, -61, 10, 99, -91, 10, 10, 101,
- 10, 110, 10, 97, 10, 114, 10, 105,
- 10, 111, 10, 58, 109, 10, 97, 10,
- 108, 10, 108, 97, 108, 108, 32, 124,
- 9, 13, 10, 32, 92, 124, 9, 13,
- 10, 92, 124, 10, 92, 10, 32, 92,
- 124, 9, 13, 10, 32, 34, 35, 37,
- 42, 64, 65, 66, 69, 71, 77, 78,
- 79, 83, 124, 9, 13, 10, 103, 10,
- 101, 10, 110, 10, 115, 10, 107, 10,
- 97, 10, 112, 10, 58, 10, 105, 10,
- 118, 10, 101, 10, 116, 10, 101, 10,
- 110, -61, 10, -92, 10, 10, 114, 10,
- 99, 10, 104, -61, 10, 99, -91, 10,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 105, 10, 111, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 17, 1, 1, 16, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 12, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 16, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 13, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 9, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 5, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 2, 1, 1,
- 1, 1, 1, 1, 1, 2, 1, 1,
- 14, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 1, 1,
- 1, 2, 4, 3, 2, 4, 16, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 1, 0, 0, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 19, 21, 23, 41, 43, 45,
- 48, 51, 56, 61, 66, 71, 75, 79,
- 82, 84, 86, 88, 90, 92, 94, 96,
- 98, 100, 102, 104, 106, 108, 110, 112,
- 114, 117, 120, 125, 132, 137, 139, 141,
- 143, 145, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 165, 167, 169, 171, 173,
- 175, 189, 192, 195, 198, 201, 204, 207,
- 210, 213, 216, 219, 222, 225, 228, 231,
- 234, 252, 254, 256, 258, 260, 262, 264,
- 266, 268, 270, 272, 287, 290, 293, 296,
- 299, 302, 305, 308, 311, 314, 317, 320,
- 323, 326, 329, 332, 335, 338, 341, 344,
- 347, 350, 353, 356, 359, 362, 365, 368,
- 371, 374, 377, 380, 383, 386, 389, 392,
- 395, 398, 401, 404, 407, 410, 413, 416,
- 419, 422, 425, 428, 431, 434, 437, 441,
- 444, 447, 450, 453, 456, 459, 462, 466,
- 469, 472, 475, 478, 480, 482, 484, 486,
- 488, 490, 492, 494, 496, 507, 510, 513,
- 516, 519, 522, 525, 528, 531, 534, 537,
- 540, 543, 546, 549, 552, 555, 558, 561,
- 564, 567, 570, 573, 576, 579, 582, 585,
- 588, 591, 594, 597, 600, 603, 606, 609,
- 612, 615, 618, 621, 625, 628, 631, 634,
- 637, 640, 643, 646, 649, 652, 655, 658,
- 661, 664, 667, 670, 673, 676, 679, 683,
- 686, 689, 691, 693, 695, 697, 699, 701,
- 703, 705, 712, 715, 718, 721, 724, 727,
- 730, 733, 736, 738, 740, 742, 744, 746,
- 748, 750, 752, 754, 756, 758, 761, 763,
- 765, 767, 769, 771, 773, 775, 778, 780,
- 782, 798, 801, 804, 807, 810, 813, 816,
- 819, 822, 825, 828, 831, 834, 837, 840,
- 843, 846, 849, 852, 855, 858, 861, 864,
- 867, 870, 873, 876, 879, 882, 885, 888,
- 891, 894, 897, 900, 903, 906, 909, 912,
- 915, 918, 921, 924, 927, 930, 933, 936,
- 939, 942, 945, 948, 951, 954, 957, 960,
- 963, 966, 969, 973, 976, 979, 982, 985,
- 988, 991, 994, 998, 1001, 1004, 1007, 1009,
- 1011, 1013, 1017, 1023, 1027, 1030, 1036, 1054,
- 1057, 1060, 1063, 1066, 1069, 1072, 1075, 1078,
- 1081, 1084, 1087, 1090, 1093, 1096, 1099, 1102,
- 1105, 1108, 1111, 1115, 1118, 1121, 1124, 1127,
- 1130, 1133, 1136
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 73, 146, 234, 238, 240, 243, 245,
- 329, 4, 0, 3, 0, 4, 0, 4,
- 4, 5, 15, 17, 31, 34, 37, 73,
- 146, 234, 238, 240, 243, 245, 329, 4,
- 0, 6, 0, 7, 0, 9, 8, 8,
- 9, 8, 8, 10, 10, 11, 10, 10,
- 10, 10, 11, 10, 10, 10, 10, 12,
- 10, 10, 10, 10, 13, 10, 10, 4,
- 14, 14, 0, 4, 14, 14, 0, 4,
- 16, 15, 4, 0, 18, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 0,
- 24, 0, 25, 0, 26, 0, 27, 0,
- 28, 0, 29, 0, 30, 0, 362, 0,
- 32, 0, 4, 16, 33, 4, 16, 33,
- 0, 0, 0, 0, 35, 36, 4, 36,
- 36, 34, 35, 35, 4, 36, 34, 36,
- 0, 38, 0, 39, 0, 40, 0, 41,
- 0, 42, 0, 43, 0, 44, 0, 45,
- 0, 46, 0, 47, 0, 48, 0, 49,
- 0, 50, 0, 51, 0, 52, 0, 53,
- 0, 54, 0, 56, 55, 56, 55, 56,
- 56, 4, 57, 71, 4, 335, 343, 347,
- 349, 352, 354, 56, 55, 56, 58, 55,
- 56, 59, 55, 56, 60, 55, 56, 61,
- 55, 56, 62, 55, 56, 63, 55, 56,
- 64, 55, 56, 65, 55, 56, 66, 55,
- 56, 67, 55, 56, 68, 55, 56, 69,
- 55, 56, 70, 55, 56, 4, 55, 56,
- 72, 55, 4, 4, 5, 15, 17, 31,
- 34, 37, 73, 146, 234, 238, 240, 243,
- 245, 329, 4, 0, 74, 0, 75, 0,
- 76, 0, 77, 0, 78, 0, 79, 0,
- 80, 0, 81, 0, 83, 82, 83, 82,
- 83, 83, 4, 84, 98, 4, 99, 116,
- 123, 127, 129, 132, 134, 83, 82, 83,
- 85, 82, 83, 86, 82, 83, 87, 82,
- 83, 88, 82, 83, 89, 82, 83, 90,
- 82, 83, 91, 82, 83, 92, 82, 83,
- 93, 82, 83, 94, 82, 83, 95, 82,
- 83, 96, 82, 83, 97, 82, 83, 4,
- 82, 83, 72, 82, 83, 100, 82, 83,
- 101, 82, 83, 102, 82, 83, 103, 82,
- 83, 104, 82, 83, 105, 82, 83, 106,
- 82, 83, 107, 82, 83, 108, 82, 83,
- 109, 82, 83, 110, 82, 83, 111, 82,
- 83, 112, 82, 83, 113, 82, 83, 114,
- 82, 83, 115, 82, 83, 72, 82, 83,
- 117, 82, 83, 118, 82, 83, 119, 82,
- 83, 120, 82, 83, 121, 82, 83, 122,
- 82, 83, 115, 82, 83, 124, 82, 83,
- 125, 82, 83, 126, 82, 83, 98, 82,
- 83, 128, 82, 83, 98, 82, 130, 83,
- 82, 131, 83, 82, 83, 98, 82, 83,
- 133, 82, 83, 98, 82, 135, 83, 136,
- 82, 98, 83, 82, 83, 137, 82, 83,
- 138, 82, 83, 139, 82, 83, 140, 82,
- 83, 141, 82, 83, 142, 82, 83, 72,
- 143, 82, 83, 144, 82, 83, 145, 82,
- 83, 115, 82, 147, 217, 0, 148, 0,
- 149, 0, 150, 0, 151, 0, 152, 0,
- 153, 0, 154, 0, 156, 155, 156, 155,
- 156, 156, 4, 157, 4, 171, 188, 195,
- 207, 156, 155, 156, 158, 155, 156, 159,
- 155, 156, 160, 155, 156, 161, 155, 156,
- 162, 155, 156, 163, 155, 156, 164, 155,
- 156, 165, 155, 156, 166, 155, 156, 167,
- 155, 156, 168, 155, 156, 169, 155, 156,
- 170, 155, 156, 4, 155, 156, 172, 155,
- 156, 173, 155, 156, 174, 155, 156, 175,
- 155, 156, 176, 155, 156, 177, 155, 156,
- 178, 155, 156, 179, 155, 156, 180, 155,
- 156, 181, 155, 156, 182, 155, 156, 183,
- 155, 156, 184, 155, 156, 185, 155, 156,
- 186, 155, 156, 187, 155, 156, 72, 155,
- 156, 189, 155, 156, 190, 155, 156, 191,
- 155, 156, 192, 155, 156, 193, 155, 156,
- 194, 155, 156, 187, 155, 156, 196, 202,
- 155, 156, 197, 155, 156, 198, 155, 156,
- 199, 155, 156, 200, 155, 156, 201, 155,
- 156, 187, 155, 156, 203, 155, 156, 204,
- 155, 156, 205, 155, 156, 206, 155, 156,
- 187, 155, 156, 208, 155, 156, 209, 155,
- 156, 210, 155, 156, 211, 155, 156, 212,
- 155, 156, 213, 155, 156, 214, 155, 156,
- 72, 215, 155, 156, 216, 155, 156, 206,
- 155, 218, 0, 219, 0, 220, 0, 221,
- 0, 222, 0, 223, 0, 225, 224, 225,
- 224, 225, 225, 4, 226, 4, 225, 224,
- 225, 227, 224, 225, 228, 224, 225, 229,
- 224, 225, 230, 224, 225, 231, 224, 225,
- 232, 224, 225, 233, 224, 225, 72, 224,
- 235, 0, 236, 0, 237, 0, 31, 0,
- 239, 0, 31, 0, 241, 0, 242, 0,
- 31, 0, 244, 0, 31, 0, 246, 247,
- 0, 31, 0, 248, 0, 249, 0, 250,
- 0, 251, 0, 252, 0, 253, 0, 254,
- 326, 0, 256, 255, 256, 255, 256, 256,
- 4, 257, 271, 4, 272, 289, 296, 303,
- 307, 309, 312, 314, 256, 255, 256, 258,
- 255, 256, 259, 255, 256, 260, 255, 256,
- 261, 255, 256, 262, 255, 256, 263, 255,
- 256, 264, 255, 256, 265, 255, 256, 266,
- 255, 256, 267, 255, 256, 268, 255, 256,
- 269, 255, 256, 270, 255, 256, 4, 255,
- 256, 72, 255, 256, 273, 255, 256, 274,
- 255, 256, 275, 255, 256, 276, 255, 256,
- 277, 255, 256, 278, 255, 256, 279, 255,
- 256, 280, 255, 256, 281, 255, 256, 282,
- 255, 256, 283, 255, 256, 284, 255, 256,
- 285, 255, 256, 286, 255, 256, 287, 255,
- 256, 288, 255, 256, 72, 255, 256, 290,
- 255, 256, 291, 255, 256, 292, 255, 256,
- 293, 255, 256, 294, 255, 256, 295, 255,
- 256, 288, 255, 256, 297, 255, 256, 298,
- 255, 256, 299, 255, 256, 300, 255, 256,
- 301, 255, 256, 302, 255, 256, 288, 255,
- 256, 304, 255, 256, 305, 255, 256, 306,
- 255, 256, 271, 255, 256, 308, 255, 256,
- 271, 255, 310, 256, 255, 311, 256, 255,
- 256, 271, 255, 256, 313, 255, 256, 271,
- 255, 315, 256, 316, 255, 271, 256, 255,
- 256, 317, 255, 256, 318, 255, 256, 319,
- 255, 256, 320, 255, 256, 321, 255, 256,
- 322, 255, 256, 72, 323, 255, 256, 324,
- 255, 256, 325, 255, 256, 288, 255, 327,
- 0, 328, 0, 53, 0, 329, 330, 329,
- 0, 334, 333, 332, 330, 333, 331, 0,
- 332, 330, 331, 0, 332, 331, 334, 333,
- 332, 330, 333, 331, 334, 334, 5, 15,
- 17, 31, 34, 37, 73, 146, 234, 238,
- 240, 243, 245, 329, 334, 0, 56, 336,
- 55, 56, 337, 55, 56, 338, 55, 56,
- 339, 55, 56, 340, 55, 56, 341, 55,
- 56, 342, 55, 56, 72, 55, 56, 344,
- 55, 56, 345, 55, 56, 346, 55, 56,
- 71, 55, 56, 348, 55, 56, 71, 55,
- 350, 56, 55, 351, 56, 55, 56, 71,
- 55, 56, 353, 55, 56, 71, 55, 355,
- 56, 356, 55, 71, 56, 55, 56, 357,
- 55, 56, 358, 55, 56, 359, 55, 56,
- 360, 55, 56, 361, 55, 56, 342, 55,
- 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 29,
- 35, 0, 43, 0, 43, 0, 43, 54,
- 0, 5, 1, 0, 29, 1, 29, 29,
- 29, 29, 29, 29, 29, 29, 35, 0,
- 43, 0, 43, 0, 43, 139, 48, 9,
- 106, 11, 0, 134, 45, 45, 45, 3,
- 122, 33, 33, 33, 0, 122, 33, 33,
- 33, 0, 122, 33, 0, 33, 0, 102,
- 7, 7, 43, 54, 0, 0, 43, 114,
- 25, 0, 54, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 54,
- 0, 78, 33, 84, 78, 84, 84, 84,
- 84, 84, 84, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 54,
- 19, 0, 130, 31, 60, 57, 31, 63,
- 57, 63, 63, 63, 63, 63, 63, 63,
- 63, 66, 31, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 72, 33, 84, 72, 84, 84,
- 84, 84, 84, 84, 84, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 54, 15, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 15, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 54, 0, 69, 33, 69, 84, 84, 84,
- 84, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 13, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 13, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 81, 84, 81, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 21, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 75, 33, 84, 75, 84, 84, 84, 84,
- 84, 84, 84, 84, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 54, 17, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 17, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 17, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 0, 0,
- 43, 54, 37, 37, 87, 37, 37, 43,
- 0, 39, 0, 43, 0, 0, 54, 0,
- 0, 39, 0, 0, 54, 0, 93, 90,
- 41, 96, 90, 96, 96, 96, 96, 96,
- 96, 96, 96, 99, 0, 43, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 19, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 362;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/sv.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 928 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/sv.c.rl"
-
-#line 935 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/sv.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/sv.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/sv.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/sv.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/sv.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/sv.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/sv.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/sv.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/sv.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/sv.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/sv.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/sv.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/sv.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/sv.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/sv.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/sv.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/sv.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/sv.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/sv.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/sv.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/sv.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/sv.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/sv.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/sv.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1225 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/sv.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1288 "ext/gherkin_lexer_sv/gherkin_lexer_sv.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/sv.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_sv()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Sv", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_tr/extconf.rb
index d234a39,d234a39..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_tr/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_tr")
--have_library("c", "main")
--create_makefile("gherkin_lexer_tr")
diff --cc ext/gherkin_lexer_tr/gherkin_lexer_tr.c
index 1d233ae,7f83b30..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_tr/gherkin_lexer_tr.c
+++ /dev/null
@@@ -1,1347 -1,1347 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 20, 21, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 39, 41,
- 43, 45, 47, 49, 51, 53, 55, 74,
- 93, 94, 95, 97, 99, 104, 109, 114,
- 119, 123, 127, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 147, 149, 154, 161,
- 166, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189,
- 190, 191, 192, 193, 194, 195, 211, 213,
- 215, 217, 219, 221, 223, 225, 227, 229,
- 231, 233, 235, 237, 239, 241, 243, 245,
- 247, 249, 251, 253, 255, 257, 259, 261,
- 263, 265, 267, 269, 271, 273, 275, 277,
- 279, 281, 283, 285, 287, 289, 291, 293,
- 295, 297, 299, 301, 303, 305, 307, 309,
- 311, 313, 315, 317, 319, 322, 324, 326,
- 328, 330, 332, 334, 336, 338, 340, 342,
- 343, 344, 345, 346, 347, 348, 349, 350,
- 351, 352, 353, 354, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 384, 386, 388, 390, 392, 394, 396,
- 398, 400, 402, 404, 406, 408, 410, 412,
- 414, 416, 418, 420, 422, 424, 426, 428,
- 430, 432, 434, 436, 438, 440, 442, 444,
- 446, 448, 450, 452, 454, 456, 458, 460,
- 462, 464, 466, 468, 470, 472, 474, 476,
- 478, 480, 482, 484, 486, 488, 490, 492,
- 494, 495, 496, 513, 515, 517, 519, 521,
- 523, 525, 527, 529, 531, 533, 535, 537,
- 539, 541, 543, 545, 547, 549, 551, 553,
- 555, 557, 559, 561, 563, 565, 567, 569,
- 571, 573, 575, 577, 579, 581, 583, 585,
- 587, 589, 591, 593, 595, 597, 599, 601,
- 603, 605, 607, 609, 611, 613, 615, 617,
- 619, 621, 623, 625, 627, 629, 631, 633,
- 635, 638, 640, 642, 644, 646, 648, 650,
- 652, 654, 656, 658, 659, 663, 669, 672,
- 674, 680, 699, 700, 701, 702, 703, 704,
- 705, 706, 707, 717, 719, 722, 724, 726,
- 728, 730, 732, 734, 736, 738, 740, 742,
- 744, 746, 748, 750, 752, 754, 756, 758,
- 760, 762, 764, 766, 768, 770, 772, 774,
- 776, 778, 780, 782, 784, 786, 788, 790,
- 792, 794, 796, 798, 800, 803, 805, 807,
- 809, 811, 813, 815, 817, 819, 821, 822,
- 823
- };
-
- static const char _lexer_trans_keys[] = {
- -61, -17, 10, 32, 34, 35, 37, 42,
- 64, 65, 68, 69, 70, 71, 79, 83,
- 86, 124, 9, 13, -106, 114, 122, 110,
- 101, 107, 108, 101, 114, 58, 10, 10,
- -61, 10, 32, 35, 124, 9, 13, -106,
- 10, 10, 122, 10, 101, 10, 108, 10,
- 108, 10, 105, 10, 107, 10, 58, -61,
- 10, 32, 34, 35, 37, 42, 64, 65,
- 68, 69, 70, 71, 79, 83, 86, 124,
- 9, 13, -61, 10, 32, 34, 35, 37,
- 42, 64, 65, 68, 69, 70, 71, 79,
- 83, 86, 124, 9, 13, 34, 34, 10,
- 13, 10, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 9, 13, 10, 32, 9, 13, 10,
- 13, 10, 95, 70, 69, 65, 84, 85,
- 82, 69, 95, 69, 78, 68, 95, 37,
- 32, 10, 13, 10, 13, 13, 32, 64,
- 9, 10, 9, 10, 13, 32, 64, 11,
- 12, 10, 32, 64, 9, 13, 109, 97,
- 105, 121, 101, 108, 105, 109, 32, 107,
- 105, -60, -97, 101, 114, 97, 107, 97,
- 116, 101, -61, -89, 109, 105, -59, -97,
- 58, 10, 10, -61, 10, 32, 35, 37,
- 42, 64, 65, 68, 69, 70, 79, 83,
- 86, 9, 13, -106, 10, 10, 122, 10,
- 101, 10, 108, 10, 108, 10, 105, 10,
- 107, 10, 58, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 109, 10, 97, 10, 105, 10,
- 121, 10, 101, 10, 108, 10, 105, 10,
- 109, 10, 32, 10, 107, 10, 105, -60,
- 10, -97, 10, 10, 101, 10, 114, 10,
- 97, 10, 107, 10, 97, 10, 116, 10,
- 32, 10, 122, 10, 97, 10, 109, 10,
- 97, 10, 110, 10, 101, 10, 110, 10,
- 97, 10, 114, 10, 121, 10, 111, 10,
- 32, 58, 10, 116, 10, 97, 10, 115,
- 10, 108, 10, 97, -60, 10, -97, 10,
- -60, 10, -79, 10, 10, 101, 32, 122,
- 97, 109, 97, 110, 101, 110, 97, 114,
- 121, 111, 32, 58, 116, 97, 115, 108,
- 97, -60, -97, -60, -79, 58, 10, 10,
- -61, 10, 32, 35, 37, 42, 64, 65,
- 68, 69, 70, 79, 83, 86, 9, 13,
- -106, 10, 10, 122, 10, 101, 10, 108,
- 10, 108, 10, 105, 10, 107, 10, 58,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 109,
- 10, 97, 10, 105, 10, 121, 10, 101,
- 10, 108, 10, 105, 10, 109, 10, 32,
- 10, 107, 10, 105, -60, 10, -97, 10,
- 10, 101, 10, 114, 10, 97, 10, 107,
- 10, 97, 10, 116, 10, 32, 10, 122,
- 10, 97, 10, 109, 10, 97, 10, 110,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 121, 10, 111, 10, 101, 10, 10,
- -61, 10, 32, 35, 37, 42, 64, 65,
- 68, 69, 70, 71, 79, 83, 86, 9,
- 13, -106, 10, 10, 122, 10, 101, 10,
- 108, 10, 108, 10, 105, 10, 107, 10,
- 58, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 109, 10, 97, 10, 105, 10, 121, 10,
- 101, 10, 108, 10, 105, 10, 109, 10,
- 32, 10, 107, 10, 105, -60, 10, -97,
- 10, 10, 101, 10, 114, 10, 97, 10,
- 107, 10, 97, 10, 116, 10, 101, -61,
- 10, -89, 10, 10, 109, 10, 105, -59,
- 10, -97, 10, 10, 32, 10, 122, 10,
- 97, 10, 109, 10, 97, 10, 110, 10,
- 101, 10, 110, 10, 97, 10, 114, 10,
- 121, 10, 111, 10, 32, 58, 10, 116,
- 10, 97, 10, 115, 10, 108, 10, 97,
- -60, 10, -97, 10, -60, 10, -79, 10,
- 10, 101, 101, 32, 124, 9, 13, 10,
- 32, 92, 124, 9, 13, 10, 92, 124,
- 10, 92, 10, 32, 92, 124, 9, 13,
- -61, 10, 32, 34, 35, 37, 42, 64,
- 65, 68, 69, 70, 71, 79, 83, 86,
- 124, 9, 13, 101, 108, 108, 105, 107,
- 58, 10, 10, -61, 10, 32, 35, 37,
- 64, 71, 83, 9, 13, -106, 10, 10,
- 114, 122, 10, 110, 10, 101, 10, 107,
- 10, 108, 10, 101, 10, 114, 10, 58,
- 10, 101, 10, 108, 10, 108, 10, 105,
- 10, 107, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 101,
- -61, 10, -89, 10, 10, 109, 10, 105,
- -59, 10, -97, 10, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 121, 10, 111,
- 10, 32, 58, 10, 116, 10, 97, 10,
- 115, 10, 108, 10, 97, -60, 10, -97,
- 10, -60, 10, -79, 10, -69, -65, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 18, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 5, 2, 2,
- 2, 2, 2, 2, 2, 2, 17, 17,
- 1, 1, 2, 2, 3, 3, 3, 3,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 2, 2, 3, 5, 3,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 14, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 14, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 15, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 2, 4, 3, 2,
- 4, 17, 1, 1, 1, 1, 1, 1,
- 1, 1, 8, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 1,
- 0, 0, 0, 0, 1, 1, 1, 1,
- 1, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 1, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 1, 0, 0,
- 1, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 20, 22, 25, 27, 29, 31,
- 33, 35, 37, 39, 41, 43, 50, 53,
- 56, 59, 62, 65, 68, 71, 74, 93,
- 112, 114, 116, 119, 122, 127, 132, 137,
- 142, 146, 150, 153, 155, 157, 159, 161,
- 163, 165, 167, 169, 171, 173, 175, 177,
- 179, 181, 183, 185, 188, 191, 196, 203,
- 208, 210, 212, 214, 216, 218, 220, 222,
- 224, 226, 228, 230, 232, 234, 236, 238,
- 240, 242, 244, 246, 248, 250, 252, 254,
- 256, 258, 260, 262, 264, 266, 282, 285,
- 288, 291, 294, 297, 300, 303, 306, 309,
- 312, 315, 318, 321, 324, 327, 330, 333,
- 336, 339, 342, 345, 348, 351, 354, 357,
- 360, 363, 366, 369, 372, 375, 378, 381,
- 384, 387, 390, 393, 396, 399, 402, 405,
- 408, 411, 414, 417, 420, 423, 426, 429,
- 432, 435, 438, 441, 444, 448, 451, 454,
- 457, 460, 463, 466, 469, 472, 475, 478,
- 480, 482, 484, 486, 488, 490, 492, 494,
- 496, 498, 500, 502, 505, 507, 509, 511,
- 513, 515, 517, 519, 521, 523, 525, 527,
- 529, 545, 548, 551, 554, 557, 560, 563,
- 566, 569, 572, 575, 578, 581, 584, 587,
- 590, 593, 596, 599, 602, 605, 608, 611,
- 614, 617, 620, 623, 626, 629, 632, 635,
- 638, 641, 644, 647, 650, 653, 656, 659,
- 662, 665, 668, 671, 674, 677, 680, 683,
- 686, 689, 692, 695, 698, 701, 704, 707,
- 710, 712, 714, 731, 734, 737, 740, 743,
- 746, 749, 752, 755, 758, 761, 764, 767,
- 770, 773, 776, 779, 782, 785, 788, 791,
- 794, 797, 800, 803, 806, 809, 812, 815,
- 818, 821, 824, 827, 830, 833, 836, 839,
- 842, 845, 848, 851, 854, 857, 860, 863,
- 866, 869, 872, 875, 878, 881, 884, 887,
- 890, 893, 896, 899, 902, 905, 908, 911,
- 914, 918, 921, 924, 927, 930, 933, 936,
- 939, 942, 945, 948, 950, 954, 960, 964,
- 967, 973, 992, 994, 996, 998, 1000, 1002,
- 1004, 1006, 1008, 1018, 1021, 1025, 1028, 1031,
- 1034, 1037, 1040, 1043, 1046, 1049, 1052, 1055,
- 1058, 1061, 1064, 1067, 1070, 1073, 1076, 1079,
- 1082, 1085, 1088, 1091, 1094, 1097, 1100, 1103,
- 1106, 1109, 1112, 1115, 1118, 1121, 1124, 1127,
- 1130, 1133, 1136, 1139, 1142, 1146, 1149, 1152,
- 1155, 1158, 1161, 1164, 1167, 1170, 1173, 1175,
- 1177
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 374, 23, 23, 24, 34, 36, 50,
- 53, 56, 58, 67, 71, 75, 151, 157,
- 307, 308, 23, 0, 3, 0, 4, 314,
- 0, 5, 0, 6, 0, 7, 0, 8,
- 0, 9, 0, 10, 0, 11, 0, 13,
- 12, 13, 12, 14, 13, 13, 23, 23,
- 13, 12, 15, 13, 12, 13, 16, 12,
- 13, 17, 12, 13, 18, 12, 13, 19,
- 12, 13, 20, 12, 13, 21, 12, 13,
- 22, 12, 2, 23, 23, 24, 34, 36,
- 50, 53, 56, 58, 67, 71, 75, 151,
- 157, 307, 308, 23, 0, 2, 23, 23,
- 24, 34, 36, 50, 53, 56, 58, 67,
- 71, 75, 151, 157, 307, 308, 23, 0,
- 25, 0, 26, 0, 28, 27, 27, 28,
- 27, 27, 29, 29, 30, 29, 29, 29,
- 29, 30, 29, 29, 29, 29, 31, 29,
- 29, 29, 29, 32, 29, 29, 23, 33,
- 33, 0, 23, 33, 33, 0, 23, 35,
- 34, 23, 0, 37, 0, 38, 0, 39,
- 0, 40, 0, 41, 0, 42, 0, 43,
- 0, 44, 0, 45, 0, 46, 0, 47,
- 0, 48, 0, 49, 0, 376, 0, 51,
- 0, 23, 35, 52, 23, 35, 52, 0,
- 0, 0, 0, 54, 55, 23, 55, 55,
- 53, 54, 54, 23, 55, 53, 55, 0,
- 57, 0, 50, 0, 59, 0, 60, 0,
- 61, 0, 62, 0, 63, 0, 64, 0,
- 65, 0, 66, 0, 50, 0, 68, 0,
- 69, 0, 70, 0, 64, 0, 72, 0,
- 73, 0, 74, 0, 50, 0, 76, 0,
- 77, 0, 78, 0, 79, 0, 80, 0,
- 81, 0, 82, 0, 83, 0, 85, 84,
- 85, 84, 86, 85, 85, 23, 94, 108,
- 23, 109, 111, 120, 124, 128, 134, 150,
- 85, 84, 87, 85, 84, 85, 88, 84,
- 85, 89, 84, 85, 90, 84, 85, 91,
- 84, 85, 92, 84, 85, 93, 84, 85,
- 22, 84, 85, 95, 84, 85, 96, 84,
- 85, 97, 84, 85, 98, 84, 85, 99,
- 84, 85, 100, 84, 85, 101, 84, 85,
- 102, 84, 85, 103, 84, 85, 104, 84,
- 85, 105, 84, 85, 106, 84, 85, 107,
- 84, 85, 23, 84, 85, 22, 84, 85,
- 110, 84, 85, 108, 84, 85, 112, 84,
- 85, 113, 84, 85, 114, 84, 85, 115,
- 84, 85, 116, 84, 85, 117, 84, 85,
- 118, 84, 85, 119, 84, 85, 108, 84,
- 121, 85, 84, 122, 85, 84, 85, 123,
- 84, 85, 117, 84, 85, 125, 84, 85,
- 126, 84, 85, 127, 84, 85, 108, 84,
- 85, 129, 84, 85, 130, 84, 85, 131,
- 84, 85, 132, 84, 85, 133, 84, 85,
- 108, 84, 85, 135, 84, 85, 136, 84,
- 85, 137, 84, 85, 138, 84, 85, 139,
- 84, 85, 140, 84, 85, 141, 22, 84,
- 85, 142, 84, 85, 143, 84, 85, 144,
- 84, 85, 145, 84, 85, 146, 84, 147,
- 85, 84, 148, 85, 84, 149, 85, 84,
- 93, 85, 84, 85, 108, 84, 152, 0,
- 153, 0, 154, 0, 155, 0, 156, 0,
- 50, 0, 158, 0, 159, 0, 160, 0,
- 161, 0, 162, 0, 163, 0, 164, 232,
- 0, 165, 0, 166, 0, 167, 0, 168,
- 0, 169, 0, 170, 0, 171, 0, 172,
- 0, 173, 0, 174, 0, 176, 175, 176,
- 175, 177, 176, 176, 23, 185, 199, 23,
- 200, 202, 211, 215, 219, 225, 231, 176,
- 175, 178, 176, 175, 176, 179, 175, 176,
- 180, 175, 176, 181, 175, 176, 182, 175,
- 176, 183, 175, 176, 184, 175, 176, 22,
- 175, 176, 186, 175, 176, 187, 175, 176,
- 188, 175, 176, 189, 175, 176, 190, 175,
- 176, 191, 175, 176, 192, 175, 176, 193,
- 175, 176, 194, 175, 176, 195, 175, 176,
- 196, 175, 176, 197, 175, 176, 198, 175,
- 176, 23, 175, 176, 22, 175, 176, 201,
- 175, 176, 199, 175, 176, 203, 175, 176,
- 204, 175, 176, 205, 175, 176, 206, 175,
- 176, 207, 175, 176, 208, 175, 176, 209,
- 175, 176, 210, 175, 176, 199, 175, 212,
- 176, 175, 213, 176, 175, 176, 214, 175,
- 176, 208, 175, 176, 216, 175, 176, 217,
- 175, 176, 218, 175, 176, 199, 175, 176,
- 220, 175, 176, 221, 175, 176, 222, 175,
- 176, 223, 175, 176, 224, 175, 176, 199,
- 175, 176, 226, 175, 176, 227, 175, 176,
- 228, 175, 176, 229, 175, 176, 230, 175,
- 176, 184, 175, 176, 199, 175, 234, 233,
- 234, 233, 235, 234, 234, 23, 243, 257,
- 23, 258, 260, 269, 273, 277, 284, 290,
- 306, 234, 233, 236, 234, 233, 234, 237,
- 233, 234, 238, 233, 234, 239, 233, 234,
- 240, 233, 234, 241, 233, 234, 242, 233,
- 234, 22, 233, 234, 244, 233, 234, 245,
- 233, 234, 246, 233, 234, 247, 233, 234,
- 248, 233, 234, 249, 233, 234, 250, 233,
- 234, 251, 233, 234, 252, 233, 234, 253,
- 233, 234, 254, 233, 234, 255, 233, 234,
- 256, 233, 234, 23, 233, 234, 22, 233,
- 234, 259, 233, 234, 257, 233, 234, 261,
- 233, 234, 262, 233, 234, 263, 233, 234,
- 264, 233, 234, 265, 233, 234, 266, 233,
- 234, 267, 233, 234, 268, 233, 234, 257,
- 233, 270, 234, 233, 271, 234, 233, 234,
- 272, 233, 234, 266, 233, 234, 274, 233,
- 234, 275, 233, 234, 276, 233, 234, 257,
- 233, 234, 278, 233, 279, 234, 233, 280,
- 234, 233, 234, 281, 233, 234, 282, 233,
- 283, 234, 233, 242, 234, 233, 234, 285,
- 233, 234, 286, 233, 234, 287, 233, 234,
- 288, 233, 234, 289, 233, 234, 257, 233,
- 234, 291, 233, 234, 292, 233, 234, 293,
- 233, 234, 294, 233, 234, 295, 233, 234,
- 296, 233, 234, 297, 22, 233, 234, 298,
- 233, 234, 299, 233, 234, 300, 233, 234,
- 301, 233, 234, 302, 233, 303, 234, 233,
- 304, 234, 233, 305, 234, 233, 242, 234,
- 233, 234, 257, 233, 50, 0, 308, 309,
- 308, 0, 313, 312, 311, 309, 312, 310,
- 0, 311, 309, 310, 0, 311, 310, 313,
- 312, 311, 309, 312, 310, 2, 313, 313,
- 24, 34, 36, 50, 53, 56, 58, 67,
- 71, 75, 151, 157, 307, 308, 313, 0,
- 315, 0, 316, 0, 317, 0, 318, 0,
- 319, 0, 320, 0, 322, 321, 322, 321,
- 323, 322, 322, 23, 337, 23, 351, 358,
- 322, 321, 324, 322, 321, 322, 325, 332,
- 321, 322, 326, 321, 322, 327, 321, 322,
- 328, 321, 322, 329, 321, 322, 330, 321,
- 322, 331, 321, 322, 22, 321, 322, 333,
- 321, 322, 334, 321, 322, 335, 321, 322,
- 336, 321, 322, 331, 321, 322, 338, 321,
- 322, 339, 321, 322, 340, 321, 322, 341,
- 321, 322, 342, 321, 322, 343, 321, 322,
- 344, 321, 322, 345, 321, 322, 346, 321,
- 322, 347, 321, 322, 348, 321, 322, 349,
- 321, 322, 350, 321, 322, 23, 321, 322,
- 352, 321, 353, 322, 321, 354, 322, 321,
- 322, 355, 321, 322, 356, 321, 357, 322,
- 321, 331, 322, 321, 322, 359, 321, 322,
- 360, 321, 322, 361, 321, 322, 362, 321,
- 322, 363, 321, 322, 364, 321, 322, 365,
- 22, 321, 322, 366, 321, 322, 367, 321,
- 322, 368, 321, 322, 369, 321, 322, 370,
- 321, 371, 322, 321, 372, 322, 321, 373,
- 322, 321, 331, 322, 321, 375, 0, 23,
- 0, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 29, 0, 54, 0, 5, 1, 0, 29,
- 1, 29, 29, 29, 29, 29, 29, 29,
- 29, 35, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 54, 0, 81, 81,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 21, 0, 63, 130, 31, 60, 57, 31,
- 63, 57, 63, 63, 63, 63, 63, 63,
- 63, 63, 66, 31, 43, 29, 54, 0,
- 5, 1, 0, 29, 1, 29, 29, 29,
- 29, 29, 29, 29, 29, 35, 0, 43,
- 0, 43, 0, 43, 139, 48, 9, 106,
- 11, 0, 134, 45, 45, 45, 3, 122,
- 33, 33, 33, 0, 122, 33, 33, 33,
- 0, 122, 33, 0, 33, 0, 102, 7,
- 7, 43, 54, 0, 0, 43, 114, 25,
- 0, 54, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 149, 126, 57, 110, 23, 0, 43,
- 43, 43, 43, 0, 27, 118, 27, 27,
- 51, 27, 0, 54, 0, 1, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 84, 54, 0, 72, 33, 84,
- 72, 84, 84, 84, 84, 84, 84, 84,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 15, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 15, 0, 54, 15, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 15, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 84, 54, 0, 78, 33, 84, 78,
- 84, 84, 84, 84, 84, 84, 84, 0,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 19,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 19, 0, 54, 19, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 144, 57,
- 54, 0, 84, 54, 0, 75, 33, 84,
- 75, 84, 84, 84, 84, 84, 84, 84,
- 84, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 17, 0, 54, 17, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 17, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 0, 43, 0, 0,
- 0, 43, 54, 37, 37, 87, 37, 37,
- 43, 0, 39, 0, 43, 0, 0, 54,
- 0, 0, 39, 0, 0, 96, 54, 0,
- 93, 90, 41, 96, 90, 96, 96, 96,
- 96, 96, 96, 96, 96, 99, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 84, 54, 0, 69, 33, 69, 84, 84,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 13, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 13, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 43, 0,
- 43, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 376;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 951 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
-
- #line 958 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1248 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1311 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/tr.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_tr()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Tr", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/tr.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/tr.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 20, 21, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 39, 41,
- 43, 45, 47, 49, 51, 53, 55, 74,
- 93, 94, 95, 97, 99, 104, 109, 114,
- 119, 123, 127, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 147, 149, 154, 161,
- 166, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189,
- 190, 191, 192, 193, 194, 195, 211, 213,
- 215, 217, 219, 221, 223, 225, 227, 229,
- 231, 233, 235, 237, 239, 241, 243, 245,
- 247, 249, 251, 253, 255, 257, 259, 261,
- 263, 265, 267, 269, 271, 273, 275, 277,
- 279, 281, 283, 285, 287, 289, 291, 293,
- 295, 297, 299, 301, 303, 305, 307, 309,
- 311, 313, 315, 317, 319, 322, 324, 326,
- 328, 330, 332, 334, 336, 338, 340, 342,
- 343, 344, 345, 346, 347, 348, 349, 350,
- 351, 352, 353, 354, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 367,
- 368, 384, 386, 388, 390, 392, 394, 396,
- 398, 400, 402, 404, 406, 408, 410, 412,
- 414, 416, 418, 420, 422, 424, 426, 428,
- 430, 432, 434, 436, 438, 440, 442, 444,
- 446, 448, 450, 452, 454, 456, 458, 460,
- 462, 464, 466, 468, 470, 472, 474, 476,
- 478, 480, 482, 484, 486, 488, 490, 492,
- 494, 495, 496, 513, 515, 517, 519, 521,
- 523, 525, 527, 529, 531, 533, 535, 537,
- 539, 541, 543, 545, 547, 549, 551, 553,
- 555, 557, 559, 561, 563, 565, 567, 569,
- 571, 573, 575, 577, 579, 581, 583, 585,
- 587, 589, 591, 593, 595, 597, 599, 601,
- 603, 605, 607, 609, 611, 613, 615, 617,
- 619, 621, 623, 625, 627, 629, 631, 633,
- 635, 638, 640, 642, 644, 646, 648, 650,
- 652, 654, 656, 658, 659, 663, 669, 672,
- 674, 680, 699, 700, 701, 702, 703, 704,
- 705, 706, 707, 717, 719, 722, 724, 726,
- 728, 730, 732, 734, 736, 738, 740, 742,
- 744, 746, 748, 750, 752, 754, 756, 758,
- 760, 762, 764, 766, 768, 770, 772, 774,
- 776, 778, 780, 782, 784, 786, 788, 790,
- 792, 794, 796, 798, 800, 803, 805, 807,
- 809, 811, 813, 815, 817, 819, 821, 822,
- 823
-};
-
-static const char _lexer_trans_keys[] = {
- -61, -17, 10, 32, 34, 35, 37, 42,
- 64, 65, 68, 69, 70, 71, 79, 83,
- 86, 124, 9, 13, -106, 114, 122, 110,
- 101, 107, 108, 101, 114, 58, 10, 10,
- -61, 10, 32, 35, 124, 9, 13, -106,
- 10, 10, 122, 10, 101, 10, 108, 10,
- 108, 10, 105, 10, 107, 10, 58, -61,
- 10, 32, 34, 35, 37, 42, 64, 65,
- 68, 69, 70, 71, 79, 83, 86, 124,
- 9, 13, -61, 10, 32, 34, 35, 37,
- 42, 64, 65, 68, 69, 70, 71, 79,
- 83, 86, 124, 9, 13, 34, 34, 10,
- 13, 10, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 9, 13, 10, 32, 9, 13, 10,
- 13, 10, 95, 70, 69, 65, 84, 85,
- 82, 69, 95, 69, 78, 68, 95, 37,
- 32, 10, 13, 10, 13, 13, 32, 64,
- 9, 10, 9, 10, 13, 32, 64, 11,
- 12, 10, 32, 64, 9, 13, 109, 97,
- 105, 121, 101, 108, 105, 109, 32, 107,
- 105, -60, -97, 101, 114, 97, 107, 97,
- 116, 101, -61, -89, 109, 105, -59, -97,
- 58, 10, 10, -61, 10, 32, 35, 37,
- 42, 64, 65, 68, 69, 70, 79, 83,
- 86, 9, 13, -106, 10, 10, 122, 10,
- 101, 10, 108, 10, 108, 10, 105, 10,
- 107, 10, 58, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 109, 10, 97, 10, 105, 10,
- 121, 10, 101, 10, 108, 10, 105, 10,
- 109, 10, 32, 10, 107, 10, 105, -60,
- 10, -97, 10, 10, 101, 10, 114, 10,
- 97, 10, 107, 10, 97, 10, 116, 10,
- 32, 10, 122, 10, 97, 10, 109, 10,
- 97, 10, 110, 10, 101, 10, 110, 10,
- 97, 10, 114, 10, 121, 10, 111, 10,
- 32, 58, 10, 116, 10, 97, 10, 115,
- 10, 108, 10, 97, -60, 10, -97, 10,
- -60, 10, -79, 10, 10, 101, 32, 122,
- 97, 109, 97, 110, 101, 110, 97, 114,
- 121, 111, 32, 58, 116, 97, 115, 108,
- 97, -60, -97, -60, -79, 58, 10, 10,
- -61, 10, 32, 35, 37, 42, 64, 65,
- 68, 69, 70, 79, 83, 86, 9, 13,
- -106, 10, 10, 122, 10, 101, 10, 108,
- 10, 108, 10, 105, 10, 107, 10, 58,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 109,
- 10, 97, 10, 105, 10, 121, 10, 101,
- 10, 108, 10, 105, 10, 109, 10, 32,
- 10, 107, 10, 105, -60, 10, -97, 10,
- 10, 101, 10, 114, 10, 97, 10, 107,
- 10, 97, 10, 116, 10, 32, 10, 122,
- 10, 97, 10, 109, 10, 97, 10, 110,
- 10, 101, 10, 110, 10, 97, 10, 114,
- 10, 121, 10, 111, 10, 101, 10, 10,
- -61, 10, 32, 35, 37, 42, 64, 65,
- 68, 69, 70, 71, 79, 83, 86, 9,
- 13, -106, 10, 10, 122, 10, 101, 10,
- 108, 10, 108, 10, 105, 10, 107, 10,
- 58, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, 10, 32, 10,
- 109, 10, 97, 10, 105, 10, 121, 10,
- 101, 10, 108, 10, 105, 10, 109, 10,
- 32, 10, 107, 10, 105, -60, 10, -97,
- 10, 10, 101, 10, 114, 10, 97, 10,
- 107, 10, 97, 10, 116, 10, 101, -61,
- 10, -89, 10, 10, 109, 10, 105, -59,
- 10, -97, 10, 10, 32, 10, 122, 10,
- 97, 10, 109, 10, 97, 10, 110, 10,
- 101, 10, 110, 10, 97, 10, 114, 10,
- 121, 10, 111, 10, 32, 58, 10, 116,
- 10, 97, 10, 115, 10, 108, 10, 97,
- -60, 10, -97, 10, -60, 10, -79, 10,
- 10, 101, 101, 32, 124, 9, 13, 10,
- 32, 92, 124, 9, 13, 10, 92, 124,
- 10, 92, 10, 32, 92, 124, 9, 13,
- -61, 10, 32, 34, 35, 37, 42, 64,
- 65, 68, 69, 70, 71, 79, 83, 86,
- 124, 9, 13, 101, 108, 108, 105, 107,
- 58, 10, 10, -61, 10, 32, 35, 37,
- 64, 71, 83, 9, 13, -106, 10, 10,
- 114, 122, 10, 110, 10, 101, 10, 107,
- 10, 108, 10, 101, 10, 114, 10, 58,
- 10, 101, 10, 108, 10, 108, 10, 105,
- 10, 107, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 101,
- -61, 10, -89, 10, 10, 109, 10, 105,
- -59, 10, -97, 10, 10, 101, 10, 110,
- 10, 97, 10, 114, 10, 121, 10, 111,
- 10, 32, 58, 10, 116, 10, 97, 10,
- 115, 10, 108, 10, 97, -60, 10, -97,
- 10, -60, 10, -79, 10, -69, -65, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 18, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 5, 2, 2,
- 2, 2, 2, 2, 2, 2, 17, 17,
- 1, 1, 2, 2, 3, 3, 3, 3,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 2, 2, 3, 5, 3,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 14, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 14, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 15, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 2, 4, 3, 2,
- 4, 17, 1, 1, 1, 1, 1, 1,
- 1, 1, 8, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 1,
- 0, 0, 0, 0, 1, 1, 1, 1,
- 1, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 1, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 1, 0, 0,
- 1, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 20, 22, 25, 27, 29, 31,
- 33, 35, 37, 39, 41, 43, 50, 53,
- 56, 59, 62, 65, 68, 71, 74, 93,
- 112, 114, 116, 119, 122, 127, 132, 137,
- 142, 146, 150, 153, 155, 157, 159, 161,
- 163, 165, 167, 169, 171, 173, 175, 177,
- 179, 181, 183, 185, 188, 191, 196, 203,
- 208, 210, 212, 214, 216, 218, 220, 222,
- 224, 226, 228, 230, 232, 234, 236, 238,
- 240, 242, 244, 246, 248, 250, 252, 254,
- 256, 258, 260, 262, 264, 266, 282, 285,
- 288, 291, 294, 297, 300, 303, 306, 309,
- 312, 315, 318, 321, 324, 327, 330, 333,
- 336, 339, 342, 345, 348, 351, 354, 357,
- 360, 363, 366, 369, 372, 375, 378, 381,
- 384, 387, 390, 393, 396, 399, 402, 405,
- 408, 411, 414, 417, 420, 423, 426, 429,
- 432, 435, 438, 441, 444, 448, 451, 454,
- 457, 460, 463, 466, 469, 472, 475, 478,
- 480, 482, 484, 486, 488, 490, 492, 494,
- 496, 498, 500, 502, 505, 507, 509, 511,
- 513, 515, 517, 519, 521, 523, 525, 527,
- 529, 545, 548, 551, 554, 557, 560, 563,
- 566, 569, 572, 575, 578, 581, 584, 587,
- 590, 593, 596, 599, 602, 605, 608, 611,
- 614, 617, 620, 623, 626, 629, 632, 635,
- 638, 641, 644, 647, 650, 653, 656, 659,
- 662, 665, 668, 671, 674, 677, 680, 683,
- 686, 689, 692, 695, 698, 701, 704, 707,
- 710, 712, 714, 731, 734, 737, 740, 743,
- 746, 749, 752, 755, 758, 761, 764, 767,
- 770, 773, 776, 779, 782, 785, 788, 791,
- 794, 797, 800, 803, 806, 809, 812, 815,
- 818, 821, 824, 827, 830, 833, 836, 839,
- 842, 845, 848, 851, 854, 857, 860, 863,
- 866, 869, 872, 875, 878, 881, 884, 887,
- 890, 893, 896, 899, 902, 905, 908, 911,
- 914, 918, 921, 924, 927, 930, 933, 936,
- 939, 942, 945, 948, 950, 954, 960, 964,
- 967, 973, 992, 994, 996, 998, 1000, 1002,
- 1004, 1006, 1008, 1018, 1021, 1025, 1028, 1031,
- 1034, 1037, 1040, 1043, 1046, 1049, 1052, 1055,
- 1058, 1061, 1064, 1067, 1070, 1073, 1076, 1079,
- 1082, 1085, 1088, 1091, 1094, 1097, 1100, 1103,
- 1106, 1109, 1112, 1115, 1118, 1121, 1124, 1127,
- 1130, 1133, 1136, 1139, 1142, 1146, 1149, 1152,
- 1155, 1158, 1161, 1164, 1167, 1170, 1173, 1175,
- 1177
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 374, 23, 23, 24, 34, 36, 50,
- 53, 56, 58, 67, 71, 75, 151, 157,
- 307, 308, 23, 0, 3, 0, 4, 314,
- 0, 5, 0, 6, 0, 7, 0, 8,
- 0, 9, 0, 10, 0, 11, 0, 13,
- 12, 13, 12, 14, 13, 13, 23, 23,
- 13, 12, 15, 13, 12, 13, 16, 12,
- 13, 17, 12, 13, 18, 12, 13, 19,
- 12, 13, 20, 12, 13, 21, 12, 13,
- 22, 12, 2, 23, 23, 24, 34, 36,
- 50, 53, 56, 58, 67, 71, 75, 151,
- 157, 307, 308, 23, 0, 2, 23, 23,
- 24, 34, 36, 50, 53, 56, 58, 67,
- 71, 75, 151, 157, 307, 308, 23, 0,
- 25, 0, 26, 0, 28, 27, 27, 28,
- 27, 27, 29, 29, 30, 29, 29, 29,
- 29, 30, 29, 29, 29, 29, 31, 29,
- 29, 29, 29, 32, 29, 29, 23, 33,
- 33, 0, 23, 33, 33, 0, 23, 35,
- 34, 23, 0, 37, 0, 38, 0, 39,
- 0, 40, 0, 41, 0, 42, 0, 43,
- 0, 44, 0, 45, 0, 46, 0, 47,
- 0, 48, 0, 49, 0, 376, 0, 51,
- 0, 23, 35, 52, 23, 35, 52, 0,
- 0, 0, 0, 54, 55, 23, 55, 55,
- 53, 54, 54, 23, 55, 53, 55, 0,
- 57, 0, 50, 0, 59, 0, 60, 0,
- 61, 0, 62, 0, 63, 0, 64, 0,
- 65, 0, 66, 0, 50, 0, 68, 0,
- 69, 0, 70, 0, 64, 0, 72, 0,
- 73, 0, 74, 0, 50, 0, 76, 0,
- 77, 0, 78, 0, 79, 0, 80, 0,
- 81, 0, 82, 0, 83, 0, 85, 84,
- 85, 84, 86, 85, 85, 23, 94, 108,
- 23, 109, 111, 120, 124, 128, 134, 150,
- 85, 84, 87, 85, 84, 85, 88, 84,
- 85, 89, 84, 85, 90, 84, 85, 91,
- 84, 85, 92, 84, 85, 93, 84, 85,
- 22, 84, 85, 95, 84, 85, 96, 84,
- 85, 97, 84, 85, 98, 84, 85, 99,
- 84, 85, 100, 84, 85, 101, 84, 85,
- 102, 84, 85, 103, 84, 85, 104, 84,
- 85, 105, 84, 85, 106, 84, 85, 107,
- 84, 85, 23, 84, 85, 22, 84, 85,
- 110, 84, 85, 108, 84, 85, 112, 84,
- 85, 113, 84, 85, 114, 84, 85, 115,
- 84, 85, 116, 84, 85, 117, 84, 85,
- 118, 84, 85, 119, 84, 85, 108, 84,
- 121, 85, 84, 122, 85, 84, 85, 123,
- 84, 85, 117, 84, 85, 125, 84, 85,
- 126, 84, 85, 127, 84, 85, 108, 84,
- 85, 129, 84, 85, 130, 84, 85, 131,
- 84, 85, 132, 84, 85, 133, 84, 85,
- 108, 84, 85, 135, 84, 85, 136, 84,
- 85, 137, 84, 85, 138, 84, 85, 139,
- 84, 85, 140, 84, 85, 141, 22, 84,
- 85, 142, 84, 85, 143, 84, 85, 144,
- 84, 85, 145, 84, 85, 146, 84, 147,
- 85, 84, 148, 85, 84, 149, 85, 84,
- 93, 85, 84, 85, 108, 84, 152, 0,
- 153, 0, 154, 0, 155, 0, 156, 0,
- 50, 0, 158, 0, 159, 0, 160, 0,
- 161, 0, 162, 0, 163, 0, 164, 232,
- 0, 165, 0, 166, 0, 167, 0, 168,
- 0, 169, 0, 170, 0, 171, 0, 172,
- 0, 173, 0, 174, 0, 176, 175, 176,
- 175, 177, 176, 176, 23, 185, 199, 23,
- 200, 202, 211, 215, 219, 225, 231, 176,
- 175, 178, 176, 175, 176, 179, 175, 176,
- 180, 175, 176, 181, 175, 176, 182, 175,
- 176, 183, 175, 176, 184, 175, 176, 22,
- 175, 176, 186, 175, 176, 187, 175, 176,
- 188, 175, 176, 189, 175, 176, 190, 175,
- 176, 191, 175, 176, 192, 175, 176, 193,
- 175, 176, 194, 175, 176, 195, 175, 176,
- 196, 175, 176, 197, 175, 176, 198, 175,
- 176, 23, 175, 176, 22, 175, 176, 201,
- 175, 176, 199, 175, 176, 203, 175, 176,
- 204, 175, 176, 205, 175, 176, 206, 175,
- 176, 207, 175, 176, 208, 175, 176, 209,
- 175, 176, 210, 175, 176, 199, 175, 212,
- 176, 175, 213, 176, 175, 176, 214, 175,
- 176, 208, 175, 176, 216, 175, 176, 217,
- 175, 176, 218, 175, 176, 199, 175, 176,
- 220, 175, 176, 221, 175, 176, 222, 175,
- 176, 223, 175, 176, 224, 175, 176, 199,
- 175, 176, 226, 175, 176, 227, 175, 176,
- 228, 175, 176, 229, 175, 176, 230, 175,
- 176, 184, 175, 176, 199, 175, 234, 233,
- 234, 233, 235, 234, 234, 23, 243, 257,
- 23, 258, 260, 269, 273, 277, 284, 290,
- 306, 234, 233, 236, 234, 233, 234, 237,
- 233, 234, 238, 233, 234, 239, 233, 234,
- 240, 233, 234, 241, 233, 234, 242, 233,
- 234, 22, 233, 234, 244, 233, 234, 245,
- 233, 234, 246, 233, 234, 247, 233, 234,
- 248, 233, 234, 249, 233, 234, 250, 233,
- 234, 251, 233, 234, 252, 233, 234, 253,
- 233, 234, 254, 233, 234, 255, 233, 234,
- 256, 233, 234, 23, 233, 234, 22, 233,
- 234, 259, 233, 234, 257, 233, 234, 261,
- 233, 234, 262, 233, 234, 263, 233, 234,
- 264, 233, 234, 265, 233, 234, 266, 233,
- 234, 267, 233, 234, 268, 233, 234, 257,
- 233, 270, 234, 233, 271, 234, 233, 234,
- 272, 233, 234, 266, 233, 234, 274, 233,
- 234, 275, 233, 234, 276, 233, 234, 257,
- 233, 234, 278, 233, 279, 234, 233, 280,
- 234, 233, 234, 281, 233, 234, 282, 233,
- 283, 234, 233, 242, 234, 233, 234, 285,
- 233, 234, 286, 233, 234, 287, 233, 234,
- 288, 233, 234, 289, 233, 234, 257, 233,
- 234, 291, 233, 234, 292, 233, 234, 293,
- 233, 234, 294, 233, 234, 295, 233, 234,
- 296, 233, 234, 297, 22, 233, 234, 298,
- 233, 234, 299, 233, 234, 300, 233, 234,
- 301, 233, 234, 302, 233, 303, 234, 233,
- 304, 234, 233, 305, 234, 233, 242, 234,
- 233, 234, 257, 233, 50, 0, 308, 309,
- 308, 0, 313, 312, 311, 309, 312, 310,
- 0, 311, 309, 310, 0, 311, 310, 313,
- 312, 311, 309, 312, 310, 2, 313, 313,
- 24, 34, 36, 50, 53, 56, 58, 67,
- 71, 75, 151, 157, 307, 308, 313, 0,
- 315, 0, 316, 0, 317, 0, 318, 0,
- 319, 0, 320, 0, 322, 321, 322, 321,
- 323, 322, 322, 23, 337, 23, 351, 358,
- 322, 321, 324, 322, 321, 322, 325, 332,
- 321, 322, 326, 321, 322, 327, 321, 322,
- 328, 321, 322, 329, 321, 322, 330, 321,
- 322, 331, 321, 322, 22, 321, 322, 333,
- 321, 322, 334, 321, 322, 335, 321, 322,
- 336, 321, 322, 331, 321, 322, 338, 321,
- 322, 339, 321, 322, 340, 321, 322, 341,
- 321, 322, 342, 321, 322, 343, 321, 322,
- 344, 321, 322, 345, 321, 322, 346, 321,
- 322, 347, 321, 322, 348, 321, 322, 349,
- 321, 322, 350, 321, 322, 23, 321, 322,
- 352, 321, 353, 322, 321, 354, 322, 321,
- 322, 355, 321, 322, 356, 321, 357, 322,
- 321, 331, 322, 321, 322, 359, 321, 322,
- 360, 321, 322, 361, 321, 322, 362, 321,
- 322, 363, 321, 322, 364, 321, 322, 365,
- 22, 321, 322, 366, 321, 322, 367, 321,
- 322, 368, 321, 322, 369, 321, 322, 370,
- 321, 371, 322, 321, 372, 322, 321, 373,
- 322, 321, 331, 322, 321, 375, 0, 23,
- 0, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 29, 0, 54, 0, 5, 1, 0, 29,
- 1, 29, 29, 29, 29, 29, 29, 29,
- 29, 35, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 54, 0, 81, 81,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 21, 0, 63, 130, 31, 60, 57, 31,
- 63, 57, 63, 63, 63, 63, 63, 63,
- 63, 63, 66, 31, 43, 29, 54, 0,
- 5, 1, 0, 29, 1, 29, 29, 29,
- 29, 29, 29, 29, 29, 35, 0, 43,
- 0, 43, 0, 43, 139, 48, 9, 106,
- 11, 0, 134, 45, 45, 45, 3, 122,
- 33, 33, 33, 0, 122, 33, 33, 33,
- 0, 122, 33, 0, 33, 0, 102, 7,
- 7, 43, 54, 0, 0, 43, 114, 25,
- 0, 54, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 149, 126, 57, 110, 23, 0, 43,
- 43, 43, 43, 0, 27, 118, 27, 27,
- 51, 27, 0, 54, 0, 1, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 84, 54, 0, 72, 33, 84,
- 72, 84, 84, 84, 84, 84, 84, 84,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 15, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 15, 0, 54, 15, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 15, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 84, 54, 0, 78, 33, 84, 78,
- 84, 84, 84, 84, 84, 84, 84, 0,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 19,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 19, 0, 54, 19, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 144, 57,
- 54, 0, 84, 54, 0, 75, 33, 84,
- 75, 84, 84, 84, 84, 84, 84, 84,
- 84, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 17, 0, 54, 17, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 17, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 0, 43, 0, 0,
- 0, 43, 54, 37, 37, 87, 37, 37,
- 43, 0, 39, 0, 43, 0, 0, 54,
- 0, 0, 39, 0, 0, 96, 54, 0,
- 93, 90, 41, 96, 90, 96, 96, 96,
- 96, 96, 96, 96, 96, 99, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 144, 57, 54, 0,
- 84, 54, 0, 69, 33, 69, 84, 84,
- 0, 0, 0, 54, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 13, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 13, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 43, 0,
- 43, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 376;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/tr.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 951 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/tr.c.rl"
-
-#line 958 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/tr.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/tr.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/tr.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/tr.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/tr.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/tr.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/tr.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/tr.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/tr.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/tr.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/tr.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/tr.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/tr.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/tr.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/tr.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/tr.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/tr.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/tr.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/tr.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/tr.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/tr.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/tr.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/tr.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/tr.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1248 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/tr.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1311 "ext/gherkin_lexer_tr/gherkin_lexer_tr.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/tr.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_tr()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Tr", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_uk/extconf.rb
index 4b48a7e,4b48a7e..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_uk/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_uk")
--have_library("c", "main")
--create_makefile("gherkin_lexer_uk")
diff --cc ext/gherkin_lexer_uk/gherkin_lexer_uk.c
index 111fc5b,810fadc..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_uk/gherkin_lexer_uk.c
+++ /dev/null
@@@ -1,1941 -1,1941 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 12, 22, 23, 25, 27, 38,
- 39, 40, 42, 44, 49, 54, 59, 64,
- 68, 72, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 89, 94, 101, 106, 110, 116, 119,
- 121, 127, 138, 140, 141, 142, 143, 144,
- 145, 146, 147, 148, 149, 150, 151, 152,
- 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 195, 204, 215, 217, 228, 231, 233,
- 235, 237, 239, 241, 243, 245, 247, 249,
- 251, 253, 255, 257, 259, 261, 263, 265,
- 267, 269, 271, 273, 275, 277, 279, 281,
- 283, 285, 287, 289, 291, 293, 295, 297,
- 299, 301, 303, 305, 307, 309, 311, 313,
- 315, 317, 319, 321, 323, 325, 327, 329,
- 331, 333, 336, 338, 340, 342, 344, 347,
- 349, 351, 353, 355, 357, 359, 361, 363,
- 365, 367, 369, 371, 373, 375, 377, 379,
- 381, 383, 385, 387, 389, 391, 393, 395,
- 397, 399, 401, 403, 405, 407, 409, 411,
- 413, 415, 417, 419, 421, 423, 425, 427,
- 429, 431, 433, 435, 437, 440, 443, 445,
- 447, 449, 451, 453, 455, 457, 459, 461,
- 463, 465, 467, 469, 471, 473, 475, 477,
- 479, 481, 483, 485, 487, 489, 491, 493,
- 495, 497, 499, 501, 503, 505, 507, 509,
- 511, 513, 515, 517, 518, 519, 520, 521,
- 523, 524, 525, 526, 527, 528, 529, 530,
- 531, 532, 533, 534, 541, 543, 545, 547,
- 549, 551, 553, 555, 557, 559, 561, 563,
- 565, 567, 569, 571, 573, 575, 577, 579,
- 581, 582, 583, 584, 585, 586, 587, 588,
- 589, 590, 591, 592, 593, 595, 596, 597,
- 598, 599, 601, 602, 603, 604, 605, 606,
- 607, 608, 609, 610, 611, 612, 613, 614,
- 615, 616, 617, 618, 619, 620, 621, 622,
- 623, 624, 625, 626, 627, 628, 629, 630,
- 631, 632, 633, 634, 635, 644, 655, 657,
- 660, 662, 664, 666, 668, 670, 672, 674,
- 676, 678, 680, 682, 684, 686, 688, 690,
- 692, 694, 696, 698, 700, 702, 704, 706,
- 708, 710, 712, 714, 716, 718, 720, 722,
- 724, 726, 728, 730, 732, 734, 736, 738,
- 740, 742, 744, 746, 748, 750, 752, 754,
- 756, 758, 760, 762, 765, 767, 769, 771,
- 773, 775, 777, 779, 781, 783, 785, 787,
- 789, 791, 793, 795, 797, 799, 801, 803,
- 806, 809, 811, 813, 815, 817, 819, 821,
- 823, 825, 827, 829, 831, 833, 835, 837,
- 839, 841, 843, 845, 847, 849, 851, 853,
- 855, 857, 859, 861, 863, 865, 867, 869,
- 871, 873, 875, 877, 879, 881, 883, 884,
- 885, 886, 887, 888, 889, 890, 891, 892,
- 893, 894, 895, 896, 897, 898, 907, 918,
- 920, 923, 925, 927, 929, 931, 933, 935,
- 937, 939, 941, 943, 945, 947, 949, 951,
- 953, 955, 957, 959, 961, 963, 965, 967,
- 969, 971, 973, 975, 977, 979, 981, 983,
- 985, 987, 989, 992, 994, 996, 998, 1000,
- 1002, 1004, 1006, 1008, 1010, 1012, 1014, 1016,
- 1018, 1020, 1022, 1024, 1026, 1028, 1030, 1032,
- 1034, 1036, 1038, 1040, 1042, 1044, 1046, 1048,
- 1050, 1052, 1054, 1056, 1058, 1060, 1062, 1065,
- 1067, 1069, 1071, 1073, 1076, 1078, 1080, 1082,
- 1084, 1086, 1088, 1090, 1092, 1094, 1096, 1098,
- 1100, 1102, 1104, 1106, 1108, 1110, 1112, 1114,
- 1116, 1118, 1120, 1122, 1124, 1126, 1128, 1130,
- 1132, 1134, 1136, 1138, 1140, 1142, 1144, 1146,
- 1148, 1150, 1152, 1154, 1156, 1158, 1160, 1162,
- 1164, 1167, 1170, 1172, 1174, 1176, 1178, 1180,
- 1182, 1184, 1186, 1188, 1190, 1192, 1194, 1196,
- 1198, 1200, 1202, 1204, 1206, 1208, 1210, 1212,
- 1214, 1216, 1218, 1220, 1222, 1224, 1226, 1228,
- 1230, 1232, 1234, 1236, 1238, 1240, 1242, 1244,
- 1245, 1247, 1249, 1250, 1251, 1252, 1253, 1254,
- 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262,
- 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270,
- 1271, 1272, 1273, 1281, 1285, 1288, 1290, 1292,
- 1294, 1296, 1298, 1300, 1302, 1304, 1306, 1308,
- 1310, 1312, 1314, 1316, 1318, 1320, 1322, 1324,
- 1326, 1328, 1330, 1332, 1334, 1336, 1338, 1340,
- 1342, 1344, 1346, 1348, 1350, 1352, 1355, 1357,
- 1359, 1361, 1363, 1365, 1367, 1369, 1371, 1373,
- 1375, 1377, 1379, 1381, 1383, 1385, 1387, 1389,
- 1391, 1393, 1395, 1397, 1399, 1401, 1403, 1405,
- 1407, 1409, 1411, 1413, 1415, 1417, 1419, 1421,
- 1423, 1425, 1427, 1429, 1431, 1433, 1435, 1437,
- 1439, 1441, 1443, 1445, 1447, 1449, 1451, 1453,
- 1455, 1457, 1459, 1461, 1463, 1465, 1467, 1469,
- 1471, 1473, 1475, 1477, 1479, 1481, 1483, 1485,
- 1487, 1489, 1491, 1493, 1495, 1497, 1499, 1501,
- 1503, 1505, 1506, 1507, 1508, 1509
- };
-
- static const char _lexer_trans_keys[] = {
- -48, -17, 10, 32, 34, 35, 37, 42,
- 64, 124, 9, 13, -122, -112, -108, -102,
- -99, -97, -95, -94, -92, -81, 32, 10,
- 13, 10, 13, -48, 10, 32, 34, 35,
- 37, 42, 64, 124, 9, 13, 34, 34,
- 10, 13, 10, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 9, 13, 10, 32, 9, 13,
- 10, 13, 10, 95, 70, 69, 65, 84,
- 85, 82, 69, 95, 69, 78, 68, 95,
- 37, 13, 32, 64, 9, 10, 9, 10,
- 13, 32, 64, 11, 12, 10, 32, 64,
- 9, 13, 32, 124, 9, 13, 10, 32,
- 92, 124, 9, 13, 10, 92, 124, 10,
- 92, 10, 32, 92, 124, 9, 13, -48,
- 10, 32, 34, 35, 37, 42, 64, 124,
- 9, 13, -48, 32, -69, -48, -75, -47,
- -126, -48, -80, -48, -70, -48, -66, -48,
- -74, -48, -80, -48, -67, -48, -66, -48,
- -66, -48, -69, -48, -72, -48, -75, -47,
- -123, -48, -80, -48, -71, -48, -47, -75,
- -47, -128, -48, -75, -48, -76, -47, -125,
- -48, -68, -48, -66, -48, -78, -48, -80,
- 58, 10, 10, -48, 10, 32, 35, 37,
- 42, 64, 9, 13, -122, -112, -108, -102,
- -99, -97, -95, -94, -92, -81, 10, 10,
- 32, -48, 10, 32, 34, 35, 37, 42,
- 64, 124, 9, 13, -48, 10, 32, -69,
- 10, -48, 10, -75, 10, -47, 10, -126,
- 10, -48, 10, -80, 10, -48, 10, -70,
- 10, -48, 10, -66, 10, -48, 10, -74,
- 10, -48, 10, -80, 10, -48, 10, -67,
- 10, -48, 10, -66, 10, -48, 10, -66,
- 10, -48, 10, -69, 10, -48, 10, -72,
- 10, -48, 10, -75, 10, -47, 10, -123,
- 10, -48, 10, -80, 10, -48, 10, -71,
- 10, -47, 10, -128, 10, -48, 10, -72,
- 10, -48, 10, -65, 10, -47, 10, -125,
- 10, -47, 10, -127, 10, -47, 10, -126,
- 10, -48, 10, -72, 10, -48, 10, -68,
- 10, -48, 10, -66, 10, 10, 32, 44,
- 10, 32, -47, 10, -119, 10, -47, 10,
- -126, -122, 10, -47, 10, -128, 10, -47,
- 10, -125, 10, -48, 10, -70, 10, -47,
- 10, -126, 10, -47, 10, -125, 10, -47,
- 10, -128, 10, -48, 10, -80, 10, 10,
- 32, -47, 10, -127, 10, -47, 10, -122,
- 10, -48, 10, -75, 10, -48, 10, -67,
- 10, -48, 10, -80, 10, -47, 10, -128,
- 10, -47, 10, -106, 10, -47, 10, -114,
- 10, 10, 58, -48, 10, -75, 10, -48,
- 10, -67, 10, -48, 10, -80, 10, -47,
- 10, -128, 10, -47, 10, -106, 10, -48,
- 10, -71, 10, -48, 10, -80, -66, 10,
- -48, 10, 32, -76, 10, -47, 10, -106,
- 10, -47, 10, -125, 10, -48, 10, -67,
- 10, -48, 10, -70, 10, -47, 10, -122,
- 10, -47, 10, -106, 10, -48, 10, -66,
- 10, -48, 10, -67, 10, -48, 10, -80,
- 10, -48, 10, -69, 10, -48, 10, -70,
- 10, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, -128, -48, -72,
- -48, -70, -65, -48, -69, -48, -80, -48,
- -76, -48, -72, 58, 10, 10, -48, 10,
- 32, 35, 124, 9, 13, -92, 10, -47,
- 10, -125, 10, -48, 10, -67, 10, -48,
- 10, -70, 10, -47, 10, -122, 10, -47,
- 10, -106, 10, -48, 10, -66, 10, -48,
- 10, -67, 10, -48, 10, -80, 10, -48,
- 10, -69, 10, 10, 58, -47, -125, -47,
- -127, -47, -126, -48, -72, -48, -68, -48,
- -66, 32, 44, 32, -47, -119, -47, -126,
- -122, -47, -128, -47, -125, -48, -70, -47,
- -126, -47, -125, -47, -128, -48, -80, 32,
- -47, -127, -47, -122, -48, -75, -48, -67,
- -48, -80, -47, -128, -47, -106, -47, -114,
- 58, 10, 10, -48, 10, 32, 35, 37,
- 42, 64, 9, 13, -122, -112, -108, -102,
- -99, -97, -95, -94, -92, -81, 10, 10,
- 32, -48, 10, 32, -69, 10, -48, 10,
- -75, 10, -47, 10, -126, 10, -48, 10,
- -80, 10, -48, 10, -70, 10, -48, 10,
- -66, 10, -48, 10, -74, 10, -48, 10,
- -80, 10, -48, 10, -67, 10, -48, 10,
- -66, 10, -48, 10, -66, 10, -48, 10,
- -69, 10, -48, 10, -72, 10, -48, 10,
- -75, 10, -47, 10, -123, 10, -48, 10,
- -80, 10, -48, 10, -71, 10, -47, 10,
- -128, 10, -48, 10, -72, 10, -48, 10,
- -65, 10, -47, 10, -125, 10, -47, 10,
- -127, 10, -47, 10, -126, 10, -48, 10,
- -72, 10, -48, 10, -68, 10, -48, 10,
- -66, 10, 10, 32, 44, 10, 32, -47,
- 10, -119, 10, -47, 10, -122, 10, -48,
- 10, -75, 10, -48, 10, -67, 10, -48,
- 10, -80, 10, -47, 10, -128, 10, -47,
- 10, -106, 10, -48, 10, -71, 10, 10,
- 58, -48, 10, -80, -66, 10, -48, 10,
- 32, -76, 10, -47, 10, -106, 10, -47,
- 10, -125, 10, -48, 10, -67, 10, -48,
- 10, -70, 10, -47, 10, -122, 10, -47,
- 10, -106, 10, -48, 10, -66, 10, -48,
- 10, -67, 10, -48, 10, -80, 10, -48,
- 10, -69, 10, -48, 10, -70, 10, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, -48, -75, -48, -67, -48,
- -80, -47, -128, -47, -106, -48, -71, 58,
- 10, 10, -48, 10, 32, 35, 37, 42,
- 64, 9, 13, -122, -112, -108, -102, -99,
- -97, -95, -94, -92, -81, 10, 10, 32,
- -48, 10, 32, -69, 10, -48, 10, -75,
- 10, -47, 10, -126, 10, -48, 10, -80,
- 10, -48, 10, -70, 10, -48, 10, -66,
- 10, -48, 10, -74, 10, -48, 10, -80,
- 10, -48, 10, -67, 10, -48, 10, -66,
- 10, -48, 10, -66, 10, -48, 10, -69,
- 10, -48, 10, -72, 10, -48, 10, -75,
- 10, -47, 10, -123, 10, -48, 10, -80,
- 10, -48, 10, -71, 10, -48, -47, 10,
- -75, 10, -47, 10, -128, 10, -48, 10,
- -75, 10, -48, 10, -76, 10, -47, 10,
- -125, 10, -48, 10, -68, 10, -48, 10,
- -66, 10, -48, 10, -78, 10, -48, 10,
- -80, 10, 10, 58, -128, 10, -48, 10,
- -72, 10, -48, 10, -65, 10, -47, 10,
- -125, 10, -47, 10, -127, 10, -47, 10,
- -126, 10, -48, 10, -72, 10, -48, 10,
- -68, 10, -48, 10, -66, 10, 10, 32,
- 44, 10, 32, -47, 10, -119, 10, -47,
- 10, -126, -122, 10, -47, 10, -128, 10,
- -47, 10, -125, 10, -48, 10, -70, 10,
- -47, 10, -126, 10, -47, 10, -125, 10,
- -47, 10, -128, 10, -48, 10, -80, 10,
- 10, 32, -47, 10, -127, 10, -47, 10,
- -122, 10, -48, 10, -75, 10, -48, 10,
- -67, 10, -48, 10, -80, 10, -47, 10,
- -128, 10, -47, 10, -106, 10, -47, 10,
- -114, 10, -48, 10, -75, 10, -48, 10,
- -67, 10, -48, 10, -80, 10, -47, 10,
- -128, 10, -47, 10, -106, 10, -48, 10,
- -71, 10, -48, 10, -80, -66, 10, -48,
- 10, 32, -76, 10, -47, 10, -106, 10,
- -47, 10, -125, 10, -48, 10, -67, 10,
- -48, 10, -70, 10, -47, 10, -122, 10,
- -47, 10, -106, 10, -48, 10, -66, 10,
- -48, 10, -67, 10, -48, 10, -80, 10,
- -48, 10, -69, 10, -48, 10, -70, 10,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, -48, -80, -66, -48,
- 32, -76, -47, -106, -47, -125, -48, -67,
- -48, -70, -47, -122, -47, -106, -48, -66,
- -48, -67, -48, -80, -48, -69, 58, 10,
- 10, -48, 10, 32, 35, 37, 64, 9,
- 13, -97, -95, -92, 10, -48, -47, 10,
- -75, 10, -47, 10, -128, 10, -48, 10,
- -75, 10, -48, 10, -76, 10, -47, 10,
- -125, 10, -48, 10, -68, 10, -48, 10,
- -66, 10, -48, 10, -78, 10, -48, 10,
- -80, 10, 10, 58, -128, 10, -48, 10,
- -72, 10, -48, 10, -70, 10, -48, 10,
- -69, 10, -48, 10, -80, 10, -48, 10,
- -76, 10, -48, 10, -72, 10, -47, 10,
- -126, -122, 10, -47, 10, -128, 10, -47,
- 10, -125, 10, -48, 10, -70, 10, -47,
- 10, -126, 10, -47, 10, -125, 10, -47,
- 10, -128, 10, -48, 10, -80, 10, 10,
- 32, -47, 10, -127, 10, -47, 10, -122,
- 10, -48, 10, -75, 10, -48, 10, -67,
- 10, -48, 10, -80, 10, -47, 10, -128,
- 10, -47, 10, -106, 10, -47, 10, -114,
- 10, -48, 10, -75, 10, -48, 10, -67,
- 10, -48, 10, -80, 10, -47, 10, -128,
- 10, -47, 10, -106, 10, -48, 10, -71,
- 10, -47, 10, -125, 10, -48, 10, -67,
- 10, -48, 10, -70, 10, -47, 10, -122,
- 10, -47, 10, -106, 10, -48, 10, -66,
- 10, -48, 10, -67, 10, -48, 10, -80,
- 10, -48, 10, -69, 10, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, -48, -70, -69, -65, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 10, 10, 1, 2, 2, 9, 1,
- 1, 2, 2, 3, 3, 3, 3, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 5, 3, 2, 4, 3, 2,
- 4, 9, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 7, 11, 2, 9, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 5, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 7, 11, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 7, 11, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 6, 4, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 1, 1, 1, 1, 1,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 0, 0,
- 1, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 12, 23, 25, 28, 31, 42,
- 44, 46, 49, 52, 57, 62, 67, 72,
- 76, 80, 83, 85, 87, 89, 91, 93,
- 95, 97, 99, 101, 103, 105, 107, 109,
- 111, 113, 118, 125, 130, 134, 140, 144,
- 147, 153, 164, 167, 169, 171, 173, 175,
- 177, 179, 181, 183, 185, 187, 189, 191,
- 193, 195, 197, 199, 201, 203, 205, 207,
- 209, 211, 213, 215, 217, 219, 221, 223,
- 225, 227, 229, 231, 233, 236, 238, 240,
- 242, 244, 246, 248, 250, 252, 254, 256,
- 258, 260, 262, 264, 266, 268, 270, 272,
- 274, 276, 285, 297, 300, 311, 315, 318,
- 321, 324, 327, 330, 333, 336, 339, 342,
- 345, 348, 351, 354, 357, 360, 363, 366,
- 369, 372, 375, 378, 381, 384, 387, 390,
- 393, 396, 399, 402, 405, 408, 411, 414,
- 417, 420, 423, 426, 429, 432, 435, 438,
- 441, 444, 447, 450, 453, 456, 459, 462,
- 465, 468, 472, 475, 478, 481, 484, 488,
- 491, 494, 497, 500, 503, 506, 509, 512,
- 515, 518, 521, 524, 527, 530, 533, 536,
- 539, 542, 545, 548, 551, 554, 557, 560,
- 563, 566, 569, 572, 575, 578, 581, 584,
- 587, 590, 593, 596, 599, 602, 605, 608,
- 611, 614, 617, 620, 623, 627, 631, 634,
- 637, 640, 643, 646, 649, 652, 655, 658,
- 661, 664, 667, 670, 673, 676, 679, 682,
- 685, 688, 691, 694, 697, 700, 703, 706,
- 709, 712, 715, 718, 721, 724, 727, 730,
- 733, 736, 739, 742, 744, 746, 748, 750,
- 753, 755, 757, 759, 761, 763, 765, 767,
- 769, 771, 773, 775, 782, 785, 788, 791,
- 794, 797, 800, 803, 806, 809, 812, 815,
- 818, 821, 824, 827, 830, 833, 836, 839,
- 842, 844, 846, 848, 850, 852, 854, 856,
- 858, 860, 862, 864, 866, 869, 871, 873,
- 875, 877, 880, 882, 884, 886, 888, 890,
- 892, 894, 896, 898, 900, 902, 904, 906,
- 908, 910, 912, 914, 916, 918, 920, 922,
- 924, 926, 928, 930, 932, 934, 936, 938,
- 940, 942, 944, 946, 948, 957, 969, 972,
- 976, 979, 982, 985, 988, 991, 994, 997,
- 1000, 1003, 1006, 1009, 1012, 1015, 1018, 1021,
- 1024, 1027, 1030, 1033, 1036, 1039, 1042, 1045,
- 1048, 1051, 1054, 1057, 1060, 1063, 1066, 1069,
- 1072, 1075, 1078, 1081, 1084, 1087, 1090, 1093,
- 1096, 1099, 1102, 1105, 1108, 1111, 1114, 1117,
- 1120, 1123, 1126, 1129, 1133, 1136, 1139, 1142,
- 1145, 1148, 1151, 1154, 1157, 1160, 1163, 1166,
- 1169, 1172, 1175, 1178, 1181, 1184, 1187, 1190,
- 1194, 1198, 1201, 1204, 1207, 1210, 1213, 1216,
- 1219, 1222, 1225, 1228, 1231, 1234, 1237, 1240,
- 1243, 1246, 1249, 1252, 1255, 1258, 1261, 1264,
- 1267, 1270, 1273, 1276, 1279, 1282, 1285, 1288,
- 1291, 1294, 1297, 1300, 1303, 1306, 1309, 1311,
- 1313, 1315, 1317, 1319, 1321, 1323, 1325, 1327,
- 1329, 1331, 1333, 1335, 1337, 1339, 1348, 1360,
- 1363, 1367, 1370, 1373, 1376, 1379, 1382, 1385,
- 1388, 1391, 1394, 1397, 1400, 1403, 1406, 1409,
- 1412, 1415, 1418, 1421, 1424, 1427, 1430, 1433,
- 1436, 1439, 1442, 1445, 1448, 1451, 1454, 1457,
- 1460, 1463, 1466, 1470, 1473, 1476, 1479, 1482,
- 1485, 1488, 1491, 1494, 1497, 1500, 1503, 1506,
- 1509, 1512, 1515, 1518, 1521, 1524, 1527, 1530,
- 1533, 1536, 1539, 1542, 1545, 1548, 1551, 1554,
- 1557, 1560, 1563, 1566, 1569, 1572, 1575, 1579,
- 1582, 1585, 1588, 1591, 1595, 1598, 1601, 1604,
- 1607, 1610, 1613, 1616, 1619, 1622, 1625, 1628,
- 1631, 1634, 1637, 1640, 1643, 1646, 1649, 1652,
- 1655, 1658, 1661, 1664, 1667, 1670, 1673, 1676,
- 1679, 1682, 1685, 1688, 1691, 1694, 1697, 1700,
- 1703, 1706, 1709, 1712, 1715, 1718, 1721, 1724,
- 1727, 1731, 1735, 1738, 1741, 1744, 1747, 1750,
- 1753, 1756, 1759, 1762, 1765, 1768, 1771, 1774,
- 1777, 1780, 1783, 1786, 1789, 1792, 1795, 1798,
- 1801, 1804, 1807, 1810, 1813, 1816, 1819, 1822,
- 1825, 1828, 1831, 1834, 1837, 1840, 1843, 1846,
- 1848, 1851, 1854, 1856, 1858, 1860, 1862, 1864,
- 1866, 1868, 1870, 1872, 1874, 1876, 1878, 1880,
- 1882, 1884, 1886, 1888, 1890, 1892, 1894, 1896,
- 1898, 1900, 1902, 1910, 1915, 1919, 1922, 1925,
- 1928, 1931, 1934, 1937, 1940, 1943, 1946, 1949,
- 1952, 1955, 1958, 1961, 1964, 1967, 1970, 1973,
- 1976, 1979, 1982, 1985, 1988, 1991, 1994, 1997,
- 2000, 2003, 2006, 2009, 2012, 2015, 2019, 2022,
- 2025, 2028, 2031, 2034, 2037, 2040, 2043, 2046,
- 2049, 2052, 2055, 2058, 2061, 2064, 2067, 2070,
- 2073, 2076, 2079, 2082, 2085, 2088, 2091, 2094,
- 2097, 2100, 2103, 2106, 2109, 2112, 2115, 2118,
- 2121, 2124, 2127, 2130, 2133, 2136, 2139, 2142,
- 2145, 2148, 2151, 2154, 2157, 2160, 2163, 2166,
- 2169, 2172, 2175, 2178, 2181, 2184, 2187, 2190,
- 2193, 2196, 2199, 2202, 2205, 2208, 2211, 2214,
- 2217, 2220, 2223, 2226, 2229, 2232, 2235, 2238,
- 2241, 2244, 2246, 2248, 2250, 2252
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 763, 6, 6, 7, 17, 19, 3,
- 33, 36, 6, 0, 3, 42, 56, 62,
- 68, 76, 296, 623, 629, 761, 0, 4,
- 0, 6, 18, 5, 6, 18, 5, 2,
- 6, 6, 7, 17, 19, 3, 33, 36,
- 6, 0, 8, 0, 9, 0, 11, 10,
- 10, 11, 10, 10, 12, 12, 13, 12,
- 12, 12, 12, 13, 12, 12, 12, 12,
- 14, 12, 12, 12, 12, 15, 12, 12,
- 6, 16, 16, 0, 6, 16, 16, 0,
- 6, 18, 17, 6, 0, 20, 0, 21,
- 0, 22, 0, 23, 0, 24, 0, 25,
- 0, 26, 0, 27, 0, 28, 0, 29,
- 0, 30, 0, 31, 0, 32, 0, 765,
- 0, 0, 0, 0, 0, 34, 35, 6,
- 35, 35, 33, 34, 34, 6, 35, 33,
- 35, 0, 36, 37, 36, 0, 41, 40,
- 39, 37, 40, 38, 0, 39, 37, 38,
- 0, 39, 38, 41, 40, 39, 37, 40,
- 38, 2, 41, 41, 7, 17, 19, 3,
- 33, 36, 41, 0, 43, 46, 0, 44,
- 0, 45, 0, 3, 0, 47, 0, 48,
- 0, 49, 0, 50, 0, 51, 0, 52,
- 0, 53, 0, 54, 0, 55, 0, 3,
- 0, 57, 0, 58, 0, 59, 0, 60,
- 0, 61, 0, 3, 0, 63, 0, 64,
- 0, 65, 0, 66, 0, 67, 0, 3,
- 0, 69, 0, 70, 0, 71, 0, 72,
- 0, 73, 0, 74, 0, 75, 0, 3,
- 0, 77, 243, 0, 78, 0, 79, 0,
- 80, 0, 81, 0, 82, 0, 83, 0,
- 84, 0, 85, 0, 86, 0, 87, 0,
- 88, 0, 89, 0, 90, 0, 91, 0,
- 92, 0, 93, 0, 94, 0, 95, 0,
- 97, 96, 97, 96, 98, 97, 97, 6,
- 229, 99, 6, 97, 96, 99, 101, 115,
- 121, 127, 135, 157, 203, 209, 227, 97,
- 96, 97, 100, 96, 2, 6, 6, 7,
- 17, 19, 3, 33, 36, 6, 0, 102,
- 97, 105, 96, 103, 97, 96, 104, 97,
- 96, 99, 97, 96, 106, 97, 96, 107,
- 97, 96, 108, 97, 96, 109, 97, 96,
- 110, 97, 96, 111, 97, 96, 112, 97,
- 96, 113, 97, 96, 114, 97, 96, 99,
- 97, 96, 116, 97, 96, 117, 97, 96,
- 118, 97, 96, 119, 97, 96, 120, 97,
- 96, 99, 97, 96, 122, 97, 96, 123,
- 97, 96, 124, 97, 96, 125, 97, 96,
- 126, 97, 96, 99, 97, 96, 128, 97,
- 96, 129, 97, 96, 130, 97, 96, 131,
- 97, 96, 132, 97, 96, 133, 97, 96,
- 134, 97, 96, 99, 97, 96, 136, 97,
- 96, 137, 97, 96, 138, 97, 96, 139,
- 97, 96, 140, 97, 96, 141, 97, 96,
- 142, 97, 96, 143, 97, 96, 144, 97,
- 96, 145, 97, 96, 146, 97, 96, 147,
- 97, 96, 148, 97, 96, 149, 97, 96,
- 150, 97, 96, 151, 97, 96, 152, 97,
- 96, 153, 97, 96, 97, 100, 154, 96,
- 97, 155, 96, 156, 97, 96, 119, 97,
- 96, 158, 97, 96, 159, 191, 97, 96,
- 160, 97, 96, 161, 97, 96, 162, 97,
- 96, 163, 97, 96, 164, 97, 96, 165,
- 97, 96, 166, 97, 96, 167, 97, 96,
- 168, 97, 96, 169, 97, 96, 170, 97,
- 96, 171, 97, 96, 172, 97, 96, 173,
- 97, 96, 97, 174, 96, 175, 97, 96,
- 176, 97, 96, 177, 97, 96, 178, 97,
- 96, 179, 97, 96, 180, 97, 96, 181,
- 97, 96, 182, 97, 96, 183, 97, 96,
- 184, 97, 96, 185, 97, 96, 186, 97,
- 96, 187, 97, 96, 188, 97, 96, 189,
- 97, 96, 190, 97, 96, 97, 100, 96,
- 192, 97, 96, 193, 97, 96, 194, 97,
- 96, 195, 97, 96, 196, 97, 96, 197,
- 97, 96, 198, 97, 96, 199, 97, 96,
- 200, 97, 96, 201, 97, 96, 202, 97,
- 96, 190, 97, 96, 204, 97, 96, 99,
- 205, 97, 96, 206, 97, 100, 96, 207,
- 97, 96, 208, 97, 96, 99, 97, 96,
- 210, 97, 96, 211, 97, 96, 212, 97,
- 96, 213, 97, 96, 214, 97, 96, 215,
- 97, 96, 216, 97, 96, 217, 97, 96,
- 218, 97, 96, 219, 97, 96, 220, 97,
- 96, 221, 97, 96, 222, 97, 96, 223,
- 97, 96, 224, 97, 96, 225, 97, 96,
- 226, 97, 96, 190, 97, 96, 228, 97,
- 96, 155, 97, 96, 97, 230, 96, 97,
- 231, 96, 97, 232, 96, 97, 233, 96,
- 97, 234, 96, 97, 235, 96, 97, 236,
- 96, 97, 237, 96, 97, 238, 96, 97,
- 239, 96, 97, 240, 96, 97, 241, 96,
- 97, 242, 96, 97, 6, 96, 244, 0,
- 245, 0, 246, 0, 247, 0, 248, 280,
- 0, 249, 0, 250, 0, 251, 0, 252,
- 0, 253, 0, 254, 0, 255, 0, 256,
- 0, 257, 0, 259, 258, 259, 258, 260,
- 259, 259, 6, 6, 259, 258, 261, 259,
- 258, 262, 259, 258, 263, 259, 258, 264,
- 259, 258, 265, 259, 258, 266, 259, 258,
- 267, 259, 258, 268, 259, 258, 269, 259,
- 258, 270, 259, 258, 271, 259, 258, 272,
- 259, 258, 273, 259, 258, 274, 259, 258,
- 275, 259, 258, 276, 259, 258, 277, 259,
- 258, 278, 259, 258, 279, 259, 258, 259,
- 100, 258, 281, 0, 282, 0, 283, 0,
- 284, 0, 285, 0, 286, 0, 287, 0,
- 288, 0, 289, 0, 290, 0, 291, 0,
- 292, 0, 4, 293, 0, 294, 0, 295,
- 0, 60, 0, 297, 0, 298, 446, 0,
- 299, 0, 300, 0, 301, 0, 302, 0,
- 303, 0, 304, 0, 305, 0, 306, 0,
- 307, 0, 308, 0, 309, 0, 310, 0,
- 311, 0, 312, 0, 313, 0, 314, 0,
- 315, 0, 316, 0, 317, 0, 318, 0,
- 319, 0, 320, 0, 321, 0, 322, 0,
- 323, 0, 324, 0, 325, 0, 326, 0,
- 327, 0, 328, 0, 329, 0, 330, 0,
- 332, 331, 332, 331, 333, 332, 332, 6,
- 432, 334, 6, 332, 331, 334, 335, 349,
- 355, 361, 369, 391, 406, 412, 430, 332,
- 331, 332, 100, 331, 336, 332, 339, 331,
- 337, 332, 331, 338, 332, 331, 334, 332,
- 331, 340, 332, 331, 341, 332, 331, 342,
- 332, 331, 343, 332, 331, 344, 332, 331,
- 345, 332, 331, 346, 332, 331, 347, 332,
- 331, 348, 332, 331, 334, 332, 331, 350,
- 332, 331, 351, 332, 331, 352, 332, 331,
- 353, 332, 331, 354, 332, 331, 334, 332,
- 331, 356, 332, 331, 357, 332, 331, 358,
- 332, 331, 359, 332, 331, 360, 332, 331,
- 334, 332, 331, 362, 332, 331, 363, 332,
- 331, 364, 332, 331, 365, 332, 331, 366,
- 332, 331, 367, 332, 331, 368, 332, 331,
- 334, 332, 331, 370, 332, 331, 371, 332,
- 331, 372, 332, 331, 373, 332, 331, 374,
- 332, 331, 375, 332, 331, 376, 332, 331,
- 377, 332, 331, 378, 332, 331, 379, 332,
- 331, 380, 332, 331, 381, 332, 331, 382,
- 332, 331, 383, 332, 331, 384, 332, 331,
- 385, 332, 331, 386, 332, 331, 387, 332,
- 331, 332, 100, 388, 331, 332, 389, 331,
- 390, 332, 331, 353, 332, 331, 392, 332,
- 331, 393, 332, 331, 394, 332, 331, 395,
- 332, 331, 396, 332, 331, 397, 332, 331,
- 398, 332, 331, 399, 332, 331, 400, 332,
- 331, 401, 332, 331, 402, 332, 331, 403,
- 332, 331, 404, 332, 331, 405, 332, 331,
- 332, 100, 331, 407, 332, 331, 334, 408,
- 332, 331, 409, 332, 100, 331, 410, 332,
- 331, 411, 332, 331, 334, 332, 331, 413,
- 332, 331, 414, 332, 331, 415, 332, 331,
- 416, 332, 331, 417, 332, 331, 418, 332,
- 331, 419, 332, 331, 420, 332, 331, 421,
- 332, 331, 422, 332, 331, 423, 332, 331,
- 424, 332, 331, 425, 332, 331, 426, 332,
- 331, 427, 332, 331, 428, 332, 331, 429,
- 332, 331, 405, 332, 331, 431, 332, 331,
- 389, 332, 331, 332, 433, 331, 332, 434,
- 331, 332, 435, 331, 332, 436, 331, 332,
- 437, 331, 332, 438, 331, 332, 439, 331,
- 332, 440, 331, 332, 441, 331, 332, 442,
- 331, 332, 443, 331, 332, 444, 331, 332,
- 445, 331, 332, 6, 331, 447, 0, 448,
- 0, 449, 0, 450, 0, 451, 0, 452,
- 0, 453, 0, 454, 0, 455, 0, 456,
- 0, 457, 0, 458, 0, 459, 0, 461,
- 460, 461, 460, 462, 461, 461, 6, 609,
- 463, 6, 461, 460, 463, 464, 478, 484,
- 490, 498, 538, 583, 589, 607, 461, 460,
- 461, 100, 460, 465, 461, 468, 460, 466,
- 461, 460, 467, 461, 460, 463, 461, 460,
- 469, 461, 460, 470, 461, 460, 471, 461,
- 460, 472, 461, 460, 473, 461, 460, 474,
- 461, 460, 475, 461, 460, 476, 461, 460,
- 477, 461, 460, 463, 461, 460, 479, 461,
- 460, 480, 461, 460, 481, 461, 460, 482,
- 461, 460, 483, 461, 460, 463, 461, 460,
- 485, 461, 460, 486, 461, 460, 487, 461,
- 460, 488, 461, 460, 489, 461, 460, 463,
- 461, 460, 491, 461, 460, 492, 461, 460,
- 493, 461, 460, 494, 461, 460, 495, 461,
- 460, 496, 461, 460, 497, 461, 460, 463,
- 461, 460, 499, 517, 461, 460, 500, 461,
- 460, 501, 461, 460, 502, 461, 460, 503,
- 461, 460, 504, 461, 460, 505, 461, 460,
- 506, 461, 460, 507, 461, 460, 508, 461,
- 460, 509, 461, 460, 510, 461, 460, 511,
- 461, 460, 512, 461, 460, 513, 461, 460,
- 514, 461, 460, 515, 461, 460, 516, 461,
- 460, 461, 100, 460, 518, 461, 460, 519,
- 461, 460, 520, 461, 460, 521, 461, 460,
- 522, 461, 460, 523, 461, 460, 524, 461,
- 460, 525, 461, 460, 526, 461, 460, 527,
- 461, 460, 528, 461, 460, 529, 461, 460,
- 530, 461, 460, 531, 461, 460, 532, 461,
- 460, 533, 461, 460, 534, 461, 460, 461,
- 100, 535, 460, 461, 536, 460, 537, 461,
- 460, 482, 461, 460, 539, 461, 460, 540,
- 571, 461, 460, 541, 461, 460, 542, 461,
- 460, 543, 461, 460, 544, 461, 460, 545,
- 461, 460, 546, 461, 460, 547, 461, 460,
- 548, 461, 460, 549, 461, 460, 550, 461,
- 460, 551, 461, 460, 552, 461, 460, 553,
- 461, 460, 554, 461, 460, 461, 555, 460,
- 556, 461, 460, 557, 461, 460, 558, 461,
- 460, 559, 461, 460, 560, 461, 460, 561,
- 461, 460, 562, 461, 460, 563, 461, 460,
- 564, 461, 460, 565, 461, 460, 566, 461,
- 460, 567, 461, 460, 568, 461, 460, 569,
- 461, 460, 570, 461, 460, 516, 461, 460,
- 572, 461, 460, 573, 461, 460, 574, 461,
- 460, 575, 461, 460, 576, 461, 460, 577,
- 461, 460, 578, 461, 460, 579, 461, 460,
- 580, 461, 460, 581, 461, 460, 582, 461,
- 460, 516, 461, 460, 584, 461, 460, 463,
- 585, 461, 460, 586, 461, 100, 460, 587,
- 461, 460, 588, 461, 460, 463, 461, 460,
- 590, 461, 460, 591, 461, 460, 592, 461,
- 460, 593, 461, 460, 594, 461, 460, 595,
- 461, 460, 596, 461, 460, 597, 461, 460,
- 598, 461, 460, 599, 461, 460, 600, 461,
- 460, 601, 461, 460, 602, 461, 460, 603,
- 461, 460, 604, 461, 460, 605, 461, 460,
- 606, 461, 460, 516, 461, 460, 608, 461,
- 460, 536, 461, 460, 461, 610, 460, 461,
- 611, 460, 461, 612, 460, 461, 613, 460,
- 461, 614, 460, 461, 615, 460, 461, 616,
- 460, 461, 617, 460, 461, 618, 460, 461,
- 619, 460, 461, 620, 460, 461, 621, 460,
- 461, 622, 460, 461, 6, 460, 624, 0,
- 3, 625, 0, 626, 4, 0, 627, 0,
- 628, 0, 3, 0, 630, 0, 631, 0,
- 632, 0, 633, 0, 634, 0, 635, 0,
- 636, 0, 637, 0, 638, 0, 639, 0,
- 640, 0, 641, 0, 642, 0, 643, 0,
- 644, 0, 645, 0, 646, 0, 647, 0,
- 648, 0, 650, 649, 650, 649, 651, 650,
- 650, 6, 747, 6, 650, 649, 652, 684,
- 729, 650, 649, 653, 671, 650, 649, 654,
- 650, 649, 655, 650, 649, 656, 650, 649,
- 657, 650, 649, 658, 650, 649, 659, 650,
- 649, 660, 650, 649, 661, 650, 649, 662,
- 650, 649, 663, 650, 649, 664, 650, 649,
- 665, 650, 649, 666, 650, 649, 667, 650,
- 649, 668, 650, 649, 669, 650, 649, 670,
- 650, 649, 650, 100, 649, 672, 650, 649,
- 673, 650, 649, 674, 650, 649, 675, 650,
- 649, 676, 650, 649, 677, 650, 649, 678,
- 650, 649, 679, 650, 649, 680, 650, 649,
- 681, 650, 649, 682, 650, 649, 683, 650,
- 649, 670, 650, 649, 685, 650, 649, 686,
- 717, 650, 649, 687, 650, 649, 688, 650,
- 649, 689, 650, 649, 690, 650, 649, 691,
- 650, 649, 692, 650, 649, 693, 650, 649,
- 694, 650, 649, 695, 650, 649, 696, 650,
- 649, 697, 650, 649, 698, 650, 649, 699,
- 650, 649, 700, 650, 649, 650, 701, 649,
- 702, 650, 649, 703, 650, 649, 704, 650,
- 649, 705, 650, 649, 706, 650, 649, 707,
- 650, 649, 708, 650, 649, 709, 650, 649,
- 710, 650, 649, 711, 650, 649, 712, 650,
- 649, 713, 650, 649, 714, 650, 649, 715,
- 650, 649, 716, 650, 649, 670, 650, 649,
- 718, 650, 649, 719, 650, 649, 720, 650,
- 649, 721, 650, 649, 722, 650, 649, 723,
- 650, 649, 724, 650, 649, 725, 650, 649,
- 726, 650, 649, 727, 650, 649, 728, 650,
- 649, 670, 650, 649, 730, 650, 649, 731,
- 650, 649, 732, 650, 649, 733, 650, 649,
- 734, 650, 649, 735, 650, 649, 736, 650,
- 649, 737, 650, 649, 738, 650, 649, 739,
- 650, 649, 740, 650, 649, 741, 650, 649,
- 742, 650, 649, 743, 650, 649, 744, 650,
- 649, 745, 650, 649, 746, 650, 649, 670,
- 650, 649, 650, 748, 649, 650, 749, 649,
- 650, 750, 649, 650, 751, 649, 650, 752,
- 649, 650, 753, 649, 650, 754, 649, 650,
- 755, 649, 650, 756, 649, 650, 757, 649,
- 650, 758, 649, 650, 759, 649, 650, 760,
- 649, 650, 6, 649, 762, 0, 294, 0,
- 764, 0, 6, 0, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 29, 0, 54, 0, 5, 1, 0, 29,
- 1, 35, 0, 43, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 43, 0,
- 43, 149, 126, 57, 110, 23, 0, 29,
- 54, 0, 5, 1, 0, 29, 1, 35,
- 0, 43, 0, 43, 0, 43, 139, 48,
- 9, 106, 11, 0, 134, 45, 45, 45,
- 3, 122, 33, 33, 33, 0, 122, 33,
- 33, 33, 0, 122, 33, 0, 33, 0,
- 102, 7, 7, 43, 54, 0, 0, 43,
- 114, 25, 0, 54, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 43, 43, 43, 43, 0, 27, 118,
- 27, 27, 51, 27, 0, 54, 0, 1,
- 0, 43, 0, 0, 0, 43, 54, 37,
- 37, 87, 37, 37, 43, 0, 39, 0,
- 43, 0, 0, 54, 0, 0, 39, 0,
- 0, 96, 54, 0, 93, 90, 41, 96,
- 90, 99, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 84, 54, 0, 72,
- 33, 84, 72, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 54,
- 0, 54, 15, 0, 63, 130, 31, 60,
- 57, 31, 63, 57, 66, 31, 43, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 15, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 15, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 15, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 15, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 84,
- 54, 0, 81, 81, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 21, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 84, 54, 0, 78,
- 33, 84, 78, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 54,
- 0, 54, 19, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 19, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 19, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 19, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 19, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 54, 0, 75, 33,
- 84, 75, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 54, 0,
- 54, 17, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 17, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 17, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 17, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 17, 0, 0, 43,
- 0, 0, 43, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 84, 54,
- 0, 69, 33, 69, 0, 0, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 13, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 13, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 765;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 1545 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
-
- #line 1552 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1842 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1905 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uk.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_uk()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Uk", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/uk.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/uk.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 12, 22, 23, 25, 27, 38,
- 39, 40, 42, 44, 49, 54, 59, 64,
- 68, 72, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 89, 94, 101, 106, 110, 116, 119,
- 121, 127, 138, 140, 141, 142, 143, 144,
- 145, 146, 147, 148, 149, 150, 151, 152,
- 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 195, 204, 215, 217, 228, 231, 233,
- 235, 237, 239, 241, 243, 245, 247, 249,
- 251, 253, 255, 257, 259, 261, 263, 265,
- 267, 269, 271, 273, 275, 277, 279, 281,
- 283, 285, 287, 289, 291, 293, 295, 297,
- 299, 301, 303, 305, 307, 309, 311, 313,
- 315, 317, 319, 321, 323, 325, 327, 329,
- 331, 333, 336, 338, 340, 342, 344, 347,
- 349, 351, 353, 355, 357, 359, 361, 363,
- 365, 367, 369, 371, 373, 375, 377, 379,
- 381, 383, 385, 387, 389, 391, 393, 395,
- 397, 399, 401, 403, 405, 407, 409, 411,
- 413, 415, 417, 419, 421, 423, 425, 427,
- 429, 431, 433, 435, 437, 440, 443, 445,
- 447, 449, 451, 453, 455, 457, 459, 461,
- 463, 465, 467, 469, 471, 473, 475, 477,
- 479, 481, 483, 485, 487, 489, 491, 493,
- 495, 497, 499, 501, 503, 505, 507, 509,
- 511, 513, 515, 517, 518, 519, 520, 521,
- 523, 524, 525, 526, 527, 528, 529, 530,
- 531, 532, 533, 534, 541, 543, 545, 547,
- 549, 551, 553, 555, 557, 559, 561, 563,
- 565, 567, 569, 571, 573, 575, 577, 579,
- 581, 582, 583, 584, 585, 586, 587, 588,
- 589, 590, 591, 592, 593, 595, 596, 597,
- 598, 599, 601, 602, 603, 604, 605, 606,
- 607, 608, 609, 610, 611, 612, 613, 614,
- 615, 616, 617, 618, 619, 620, 621, 622,
- 623, 624, 625, 626, 627, 628, 629, 630,
- 631, 632, 633, 634, 635, 644, 655, 657,
- 660, 662, 664, 666, 668, 670, 672, 674,
- 676, 678, 680, 682, 684, 686, 688, 690,
- 692, 694, 696, 698, 700, 702, 704, 706,
- 708, 710, 712, 714, 716, 718, 720, 722,
- 724, 726, 728, 730, 732, 734, 736, 738,
- 740, 742, 744, 746, 748, 750, 752, 754,
- 756, 758, 760, 762, 765, 767, 769, 771,
- 773, 775, 777, 779, 781, 783, 785, 787,
- 789, 791, 793, 795, 797, 799, 801, 803,
- 806, 809, 811, 813, 815, 817, 819, 821,
- 823, 825, 827, 829, 831, 833, 835, 837,
- 839, 841, 843, 845, 847, 849, 851, 853,
- 855, 857, 859, 861, 863, 865, 867, 869,
- 871, 873, 875, 877, 879, 881, 883, 884,
- 885, 886, 887, 888, 889, 890, 891, 892,
- 893, 894, 895, 896, 897, 898, 907, 918,
- 920, 923, 925, 927, 929, 931, 933, 935,
- 937, 939, 941, 943, 945, 947, 949, 951,
- 953, 955, 957, 959, 961, 963, 965, 967,
- 969, 971, 973, 975, 977, 979, 981, 983,
- 985, 987, 989, 992, 994, 996, 998, 1000,
- 1002, 1004, 1006, 1008, 1010, 1012, 1014, 1016,
- 1018, 1020, 1022, 1024, 1026, 1028, 1030, 1032,
- 1034, 1036, 1038, 1040, 1042, 1044, 1046, 1048,
- 1050, 1052, 1054, 1056, 1058, 1060, 1062, 1065,
- 1067, 1069, 1071, 1073, 1076, 1078, 1080, 1082,
- 1084, 1086, 1088, 1090, 1092, 1094, 1096, 1098,
- 1100, 1102, 1104, 1106, 1108, 1110, 1112, 1114,
- 1116, 1118, 1120, 1122, 1124, 1126, 1128, 1130,
- 1132, 1134, 1136, 1138, 1140, 1142, 1144, 1146,
- 1148, 1150, 1152, 1154, 1156, 1158, 1160, 1162,
- 1164, 1167, 1170, 1172, 1174, 1176, 1178, 1180,
- 1182, 1184, 1186, 1188, 1190, 1192, 1194, 1196,
- 1198, 1200, 1202, 1204, 1206, 1208, 1210, 1212,
- 1214, 1216, 1218, 1220, 1222, 1224, 1226, 1228,
- 1230, 1232, 1234, 1236, 1238, 1240, 1242, 1244,
- 1245, 1247, 1249, 1250, 1251, 1252, 1253, 1254,
- 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262,
- 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270,
- 1271, 1272, 1273, 1281, 1285, 1288, 1290, 1292,
- 1294, 1296, 1298, 1300, 1302, 1304, 1306, 1308,
- 1310, 1312, 1314, 1316, 1318, 1320, 1322, 1324,
- 1326, 1328, 1330, 1332, 1334, 1336, 1338, 1340,
- 1342, 1344, 1346, 1348, 1350, 1352, 1355, 1357,
- 1359, 1361, 1363, 1365, 1367, 1369, 1371, 1373,
- 1375, 1377, 1379, 1381, 1383, 1385, 1387, 1389,
- 1391, 1393, 1395, 1397, 1399, 1401, 1403, 1405,
- 1407, 1409, 1411, 1413, 1415, 1417, 1419, 1421,
- 1423, 1425, 1427, 1429, 1431, 1433, 1435, 1437,
- 1439, 1441, 1443, 1445, 1447, 1449, 1451, 1453,
- 1455, 1457, 1459, 1461, 1463, 1465, 1467, 1469,
- 1471, 1473, 1475, 1477, 1479, 1481, 1483, 1485,
- 1487, 1489, 1491, 1493, 1495, 1497, 1499, 1501,
- 1503, 1505, 1506, 1507, 1508, 1509
-};
-
-static const char _lexer_trans_keys[] = {
- -48, -17, 10, 32, 34, 35, 37, 42,
- 64, 124, 9, 13, -122, -112, -108, -102,
- -99, -97, -95, -94, -92, -81, 32, 10,
- 13, 10, 13, -48, 10, 32, 34, 35,
- 37, 42, 64, 124, 9, 13, 34, 34,
- 10, 13, 10, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 9, 13, 10, 32, 9, 13,
- 10, 13, 10, 95, 70, 69, 65, 84,
- 85, 82, 69, 95, 69, 78, 68, 95,
- 37, 13, 32, 64, 9, 10, 9, 10,
- 13, 32, 64, 11, 12, 10, 32, 64,
- 9, 13, 32, 124, 9, 13, 10, 32,
- 92, 124, 9, 13, 10, 92, 124, 10,
- 92, 10, 32, 92, 124, 9, 13, -48,
- 10, 32, 34, 35, 37, 42, 64, 124,
- 9, 13, -48, 32, -69, -48, -75, -47,
- -126, -48, -80, -48, -70, -48, -66, -48,
- -74, -48, -80, -48, -67, -48, -66, -48,
- -66, -48, -69, -48, -72, -48, -75, -47,
- -123, -48, -80, -48, -71, -48, -47, -75,
- -47, -128, -48, -75, -48, -76, -47, -125,
- -48, -68, -48, -66, -48, -78, -48, -80,
- 58, 10, 10, -48, 10, 32, 35, 37,
- 42, 64, 9, 13, -122, -112, -108, -102,
- -99, -97, -95, -94, -92, -81, 10, 10,
- 32, -48, 10, 32, 34, 35, 37, 42,
- 64, 124, 9, 13, -48, 10, 32, -69,
- 10, -48, 10, -75, 10, -47, 10, -126,
- 10, -48, 10, -80, 10, -48, 10, -70,
- 10, -48, 10, -66, 10, -48, 10, -74,
- 10, -48, 10, -80, 10, -48, 10, -67,
- 10, -48, 10, -66, 10, -48, 10, -66,
- 10, -48, 10, -69, 10, -48, 10, -72,
- 10, -48, 10, -75, 10, -47, 10, -123,
- 10, -48, 10, -80, 10, -48, 10, -71,
- 10, -47, 10, -128, 10, -48, 10, -72,
- 10, -48, 10, -65, 10, -47, 10, -125,
- 10, -47, 10, -127, 10, -47, 10, -126,
- 10, -48, 10, -72, 10, -48, 10, -68,
- 10, -48, 10, -66, 10, 10, 32, 44,
- 10, 32, -47, 10, -119, 10, -47, 10,
- -126, -122, 10, -47, 10, -128, 10, -47,
- 10, -125, 10, -48, 10, -70, 10, -47,
- 10, -126, 10, -47, 10, -125, 10, -47,
- 10, -128, 10, -48, 10, -80, 10, 10,
- 32, -47, 10, -127, 10, -47, 10, -122,
- 10, -48, 10, -75, 10, -48, 10, -67,
- 10, -48, 10, -80, 10, -47, 10, -128,
- 10, -47, 10, -106, 10, -47, 10, -114,
- 10, 10, 58, -48, 10, -75, 10, -48,
- 10, -67, 10, -48, 10, -80, 10, -47,
- 10, -128, 10, -47, 10, -106, 10, -48,
- 10, -71, 10, -48, 10, -80, -66, 10,
- -48, 10, 32, -76, 10, -47, 10, -106,
- 10, -47, 10, -125, 10, -48, 10, -67,
- 10, -48, 10, -70, 10, -47, 10, -122,
- 10, -47, 10, -106, 10, -48, 10, -66,
- 10, -48, 10, -67, 10, -48, 10, -80,
- 10, -48, 10, -69, 10, -48, 10, -70,
- 10, 10, 95, 10, 70, 10, 69, 10,
- 65, 10, 84, 10, 85, 10, 82, 10,
- 69, 10, 95, 10, 69, 10, 78, 10,
- 68, 10, 95, 10, 37, -128, -48, -72,
- -48, -70, -65, -48, -69, -48, -80, -48,
- -76, -48, -72, 58, 10, 10, -48, 10,
- 32, 35, 124, 9, 13, -92, 10, -47,
- 10, -125, 10, -48, 10, -67, 10, -48,
- 10, -70, 10, -47, 10, -122, 10, -47,
- 10, -106, 10, -48, 10, -66, 10, -48,
- 10, -67, 10, -48, 10, -80, 10, -48,
- 10, -69, 10, 10, 58, -47, -125, -47,
- -127, -47, -126, -48, -72, -48, -68, -48,
- -66, 32, 44, 32, -47, -119, -47, -126,
- -122, -47, -128, -47, -125, -48, -70, -47,
- -126, -47, -125, -47, -128, -48, -80, 32,
- -47, -127, -47, -122, -48, -75, -48, -67,
- -48, -80, -47, -128, -47, -106, -47, -114,
- 58, 10, 10, -48, 10, 32, 35, 37,
- 42, 64, 9, 13, -122, -112, -108, -102,
- -99, -97, -95, -94, -92, -81, 10, 10,
- 32, -48, 10, 32, -69, 10, -48, 10,
- -75, 10, -47, 10, -126, 10, -48, 10,
- -80, 10, -48, 10, -70, 10, -48, 10,
- -66, 10, -48, 10, -74, 10, -48, 10,
- -80, 10, -48, 10, -67, 10, -48, 10,
- -66, 10, -48, 10, -66, 10, -48, 10,
- -69, 10, -48, 10, -72, 10, -48, 10,
- -75, 10, -47, 10, -123, 10, -48, 10,
- -80, 10, -48, 10, -71, 10, -47, 10,
- -128, 10, -48, 10, -72, 10, -48, 10,
- -65, 10, -47, 10, -125, 10, -47, 10,
- -127, 10, -47, 10, -126, 10, -48, 10,
- -72, 10, -48, 10, -68, 10, -48, 10,
- -66, 10, 10, 32, 44, 10, 32, -47,
- 10, -119, 10, -47, 10, -122, 10, -48,
- 10, -75, 10, -48, 10, -67, 10, -48,
- 10, -80, 10, -47, 10, -128, 10, -47,
- 10, -106, 10, -48, 10, -71, 10, 10,
- 58, -48, 10, -80, -66, 10, -48, 10,
- 32, -76, 10, -47, 10, -106, 10, -47,
- 10, -125, 10, -48, 10, -67, 10, -48,
- 10, -70, 10, -47, 10, -122, 10, -47,
- 10, -106, 10, -48, 10, -66, 10, -48,
- 10, -67, 10, -48, 10, -80, 10, -48,
- 10, -69, 10, -48, 10, -70, 10, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, -48, -75, -48, -67, -48,
- -80, -47, -128, -47, -106, -48, -71, 58,
- 10, 10, -48, 10, 32, 35, 37, 42,
- 64, 9, 13, -122, -112, -108, -102, -99,
- -97, -95, -94, -92, -81, 10, 10, 32,
- -48, 10, 32, -69, 10, -48, 10, -75,
- 10, -47, 10, -126, 10, -48, 10, -80,
- 10, -48, 10, -70, 10, -48, 10, -66,
- 10, -48, 10, -74, 10, -48, 10, -80,
- 10, -48, 10, -67, 10, -48, 10, -66,
- 10, -48, 10, -66, 10, -48, 10, -69,
- 10, -48, 10, -72, 10, -48, 10, -75,
- 10, -47, 10, -123, 10, -48, 10, -80,
- 10, -48, 10, -71, 10, -48, -47, 10,
- -75, 10, -47, 10, -128, 10, -48, 10,
- -75, 10, -48, 10, -76, 10, -47, 10,
- -125, 10, -48, 10, -68, 10, -48, 10,
- -66, 10, -48, 10, -78, 10, -48, 10,
- -80, 10, 10, 58, -128, 10, -48, 10,
- -72, 10, -48, 10, -65, 10, -47, 10,
- -125, 10, -47, 10, -127, 10, -47, 10,
- -126, 10, -48, 10, -72, 10, -48, 10,
- -68, 10, -48, 10, -66, 10, 10, 32,
- 44, 10, 32, -47, 10, -119, 10, -47,
- 10, -126, -122, 10, -47, 10, -128, 10,
- -47, 10, -125, 10, -48, 10, -70, 10,
- -47, 10, -126, 10, -47, 10, -125, 10,
- -47, 10, -128, 10, -48, 10, -80, 10,
- 10, 32, -47, 10, -127, 10, -47, 10,
- -122, 10, -48, 10, -75, 10, -48, 10,
- -67, 10, -48, 10, -80, 10, -47, 10,
- -128, 10, -47, 10, -106, 10, -47, 10,
- -114, 10, -48, 10, -75, 10, -48, 10,
- -67, 10, -48, 10, -80, 10, -47, 10,
- -128, 10, -47, 10, -106, 10, -48, 10,
- -71, 10, -48, 10, -80, -66, 10, -48,
- 10, 32, -76, 10, -47, 10, -106, 10,
- -47, 10, -125, 10, -48, 10, -67, 10,
- -48, 10, -70, 10, -47, 10, -122, 10,
- -47, 10, -106, 10, -48, 10, -66, 10,
- -48, 10, -67, 10, -48, 10, -80, 10,
- -48, 10, -69, 10, -48, 10, -70, 10,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, -48, -80, -66, -48,
- 32, -76, -47, -106, -47, -125, -48, -67,
- -48, -70, -47, -122, -47, -106, -48, -66,
- -48, -67, -48, -80, -48, -69, 58, 10,
- 10, -48, 10, 32, 35, 37, 64, 9,
- 13, -97, -95, -92, 10, -48, -47, 10,
- -75, 10, -47, 10, -128, 10, -48, 10,
- -75, 10, -48, 10, -76, 10, -47, 10,
- -125, 10, -48, 10, -68, 10, -48, 10,
- -66, 10, -48, 10, -78, 10, -48, 10,
- -80, 10, 10, 58, -128, 10, -48, 10,
- -72, 10, -48, 10, -70, 10, -48, 10,
- -69, 10, -48, 10, -80, 10, -48, 10,
- -76, 10, -48, 10, -72, 10, -47, 10,
- -126, -122, 10, -47, 10, -128, 10, -47,
- 10, -125, 10, -48, 10, -70, 10, -47,
- 10, -126, 10, -47, 10, -125, 10, -47,
- 10, -128, 10, -48, 10, -80, 10, 10,
- 32, -47, 10, -127, 10, -47, 10, -122,
- 10, -48, 10, -75, 10, -48, 10, -67,
- 10, -48, 10, -80, 10, -47, 10, -128,
- 10, -47, 10, -106, 10, -47, 10, -114,
- 10, -48, 10, -75, 10, -48, 10, -67,
- 10, -48, 10, -80, 10, -47, 10, -128,
- 10, -47, 10, -106, 10, -48, 10, -71,
- 10, -47, 10, -125, 10, -48, 10, -67,
- 10, -48, 10, -70, 10, -47, 10, -122,
- 10, -47, 10, -106, 10, -48, 10, -66,
- 10, -48, 10, -67, 10, -48, 10, -80,
- 10, -48, 10, -69, 10, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, -48, -70, -69, -65, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 10, 10, 1, 2, 2, 9, 1,
- 1, 2, 2, 3, 3, 3, 3, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 5, 3, 2, 4, 3, 2,
- 4, 9, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 7, 11, 2, 9, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 5, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 1, 1, 1,
- 1, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 7, 11, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 7, 11, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 3, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 6, 4, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 1, 1, 1, 1, 1,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 0, 0,
- 1, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 12, 23, 25, 28, 31, 42,
- 44, 46, 49, 52, 57, 62, 67, 72,
- 76, 80, 83, 85, 87, 89, 91, 93,
- 95, 97, 99, 101, 103, 105, 107, 109,
- 111, 113, 118, 125, 130, 134, 140, 144,
- 147, 153, 164, 167, 169, 171, 173, 175,
- 177, 179, 181, 183, 185, 187, 189, 191,
- 193, 195, 197, 199, 201, 203, 205, 207,
- 209, 211, 213, 215, 217, 219, 221, 223,
- 225, 227, 229, 231, 233, 236, 238, 240,
- 242, 244, 246, 248, 250, 252, 254, 256,
- 258, 260, 262, 264, 266, 268, 270, 272,
- 274, 276, 285, 297, 300, 311, 315, 318,
- 321, 324, 327, 330, 333, 336, 339, 342,
- 345, 348, 351, 354, 357, 360, 363, 366,
- 369, 372, 375, 378, 381, 384, 387, 390,
- 393, 396, 399, 402, 405, 408, 411, 414,
- 417, 420, 423, 426, 429, 432, 435, 438,
- 441, 444, 447, 450, 453, 456, 459, 462,
- 465, 468, 472, 475, 478, 481, 484, 488,
- 491, 494, 497, 500, 503, 506, 509, 512,
- 515, 518, 521, 524, 527, 530, 533, 536,
- 539, 542, 545, 548, 551, 554, 557, 560,
- 563, 566, 569, 572, 575, 578, 581, 584,
- 587, 590, 593, 596, 599, 602, 605, 608,
- 611, 614, 617, 620, 623, 627, 631, 634,
- 637, 640, 643, 646, 649, 652, 655, 658,
- 661, 664, 667, 670, 673, 676, 679, 682,
- 685, 688, 691, 694, 697, 700, 703, 706,
- 709, 712, 715, 718, 721, 724, 727, 730,
- 733, 736, 739, 742, 744, 746, 748, 750,
- 753, 755, 757, 759, 761, 763, 765, 767,
- 769, 771, 773, 775, 782, 785, 788, 791,
- 794, 797, 800, 803, 806, 809, 812, 815,
- 818, 821, 824, 827, 830, 833, 836, 839,
- 842, 844, 846, 848, 850, 852, 854, 856,
- 858, 860, 862, 864, 866, 869, 871, 873,
- 875, 877, 880, 882, 884, 886, 888, 890,
- 892, 894, 896, 898, 900, 902, 904, 906,
- 908, 910, 912, 914, 916, 918, 920, 922,
- 924, 926, 928, 930, 932, 934, 936, 938,
- 940, 942, 944, 946, 948, 957, 969, 972,
- 976, 979, 982, 985, 988, 991, 994, 997,
- 1000, 1003, 1006, 1009, 1012, 1015, 1018, 1021,
- 1024, 1027, 1030, 1033, 1036, 1039, 1042, 1045,
- 1048, 1051, 1054, 1057, 1060, 1063, 1066, 1069,
- 1072, 1075, 1078, 1081, 1084, 1087, 1090, 1093,
- 1096, 1099, 1102, 1105, 1108, 1111, 1114, 1117,
- 1120, 1123, 1126, 1129, 1133, 1136, 1139, 1142,
- 1145, 1148, 1151, 1154, 1157, 1160, 1163, 1166,
- 1169, 1172, 1175, 1178, 1181, 1184, 1187, 1190,
- 1194, 1198, 1201, 1204, 1207, 1210, 1213, 1216,
- 1219, 1222, 1225, 1228, 1231, 1234, 1237, 1240,
- 1243, 1246, 1249, 1252, 1255, 1258, 1261, 1264,
- 1267, 1270, 1273, 1276, 1279, 1282, 1285, 1288,
- 1291, 1294, 1297, 1300, 1303, 1306, 1309, 1311,
- 1313, 1315, 1317, 1319, 1321, 1323, 1325, 1327,
- 1329, 1331, 1333, 1335, 1337, 1339, 1348, 1360,
- 1363, 1367, 1370, 1373, 1376, 1379, 1382, 1385,
- 1388, 1391, 1394, 1397, 1400, 1403, 1406, 1409,
- 1412, 1415, 1418, 1421, 1424, 1427, 1430, 1433,
- 1436, 1439, 1442, 1445, 1448, 1451, 1454, 1457,
- 1460, 1463, 1466, 1470, 1473, 1476, 1479, 1482,
- 1485, 1488, 1491, 1494, 1497, 1500, 1503, 1506,
- 1509, 1512, 1515, 1518, 1521, 1524, 1527, 1530,
- 1533, 1536, 1539, 1542, 1545, 1548, 1551, 1554,
- 1557, 1560, 1563, 1566, 1569, 1572, 1575, 1579,
- 1582, 1585, 1588, 1591, 1595, 1598, 1601, 1604,
- 1607, 1610, 1613, 1616, 1619, 1622, 1625, 1628,
- 1631, 1634, 1637, 1640, 1643, 1646, 1649, 1652,
- 1655, 1658, 1661, 1664, 1667, 1670, 1673, 1676,
- 1679, 1682, 1685, 1688, 1691, 1694, 1697, 1700,
- 1703, 1706, 1709, 1712, 1715, 1718, 1721, 1724,
- 1727, 1731, 1735, 1738, 1741, 1744, 1747, 1750,
- 1753, 1756, 1759, 1762, 1765, 1768, 1771, 1774,
- 1777, 1780, 1783, 1786, 1789, 1792, 1795, 1798,
- 1801, 1804, 1807, 1810, 1813, 1816, 1819, 1822,
- 1825, 1828, 1831, 1834, 1837, 1840, 1843, 1846,
- 1848, 1851, 1854, 1856, 1858, 1860, 1862, 1864,
- 1866, 1868, 1870, 1872, 1874, 1876, 1878, 1880,
- 1882, 1884, 1886, 1888, 1890, 1892, 1894, 1896,
- 1898, 1900, 1902, 1910, 1915, 1919, 1922, 1925,
- 1928, 1931, 1934, 1937, 1940, 1943, 1946, 1949,
- 1952, 1955, 1958, 1961, 1964, 1967, 1970, 1973,
- 1976, 1979, 1982, 1985, 1988, 1991, 1994, 1997,
- 2000, 2003, 2006, 2009, 2012, 2015, 2019, 2022,
- 2025, 2028, 2031, 2034, 2037, 2040, 2043, 2046,
- 2049, 2052, 2055, 2058, 2061, 2064, 2067, 2070,
- 2073, 2076, 2079, 2082, 2085, 2088, 2091, 2094,
- 2097, 2100, 2103, 2106, 2109, 2112, 2115, 2118,
- 2121, 2124, 2127, 2130, 2133, 2136, 2139, 2142,
- 2145, 2148, 2151, 2154, 2157, 2160, 2163, 2166,
- 2169, 2172, 2175, 2178, 2181, 2184, 2187, 2190,
- 2193, 2196, 2199, 2202, 2205, 2208, 2211, 2214,
- 2217, 2220, 2223, 2226, 2229, 2232, 2235, 2238,
- 2241, 2244, 2246, 2248, 2250, 2252
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 763, 6, 6, 7, 17, 19, 3,
- 33, 36, 6, 0, 3, 42, 56, 62,
- 68, 76, 296, 623, 629, 761, 0, 4,
- 0, 6, 18, 5, 6, 18, 5, 2,
- 6, 6, 7, 17, 19, 3, 33, 36,
- 6, 0, 8, 0, 9, 0, 11, 10,
- 10, 11, 10, 10, 12, 12, 13, 12,
- 12, 12, 12, 13, 12, 12, 12, 12,
- 14, 12, 12, 12, 12, 15, 12, 12,
- 6, 16, 16, 0, 6, 16, 16, 0,
- 6, 18, 17, 6, 0, 20, 0, 21,
- 0, 22, 0, 23, 0, 24, 0, 25,
- 0, 26, 0, 27, 0, 28, 0, 29,
- 0, 30, 0, 31, 0, 32, 0, 765,
- 0, 0, 0, 0, 0, 34, 35, 6,
- 35, 35, 33, 34, 34, 6, 35, 33,
- 35, 0, 36, 37, 36, 0, 41, 40,
- 39, 37, 40, 38, 0, 39, 37, 38,
- 0, 39, 38, 41, 40, 39, 37, 40,
- 38, 2, 41, 41, 7, 17, 19, 3,
- 33, 36, 41, 0, 43, 46, 0, 44,
- 0, 45, 0, 3, 0, 47, 0, 48,
- 0, 49, 0, 50, 0, 51, 0, 52,
- 0, 53, 0, 54, 0, 55, 0, 3,
- 0, 57, 0, 58, 0, 59, 0, 60,
- 0, 61, 0, 3, 0, 63, 0, 64,
- 0, 65, 0, 66, 0, 67, 0, 3,
- 0, 69, 0, 70, 0, 71, 0, 72,
- 0, 73, 0, 74, 0, 75, 0, 3,
- 0, 77, 243, 0, 78, 0, 79, 0,
- 80, 0, 81, 0, 82, 0, 83, 0,
- 84, 0, 85, 0, 86, 0, 87, 0,
- 88, 0, 89, 0, 90, 0, 91, 0,
- 92, 0, 93, 0, 94, 0, 95, 0,
- 97, 96, 97, 96, 98, 97, 97, 6,
- 229, 99, 6, 97, 96, 99, 101, 115,
- 121, 127, 135, 157, 203, 209, 227, 97,
- 96, 97, 100, 96, 2, 6, 6, 7,
- 17, 19, 3, 33, 36, 6, 0, 102,
- 97, 105, 96, 103, 97, 96, 104, 97,
- 96, 99, 97, 96, 106, 97, 96, 107,
- 97, 96, 108, 97, 96, 109, 97, 96,
- 110, 97, 96, 111, 97, 96, 112, 97,
- 96, 113, 97, 96, 114, 97, 96, 99,
- 97, 96, 116, 97, 96, 117, 97, 96,
- 118, 97, 96, 119, 97, 96, 120, 97,
- 96, 99, 97, 96, 122, 97, 96, 123,
- 97, 96, 124, 97, 96, 125, 97, 96,
- 126, 97, 96, 99, 97, 96, 128, 97,
- 96, 129, 97, 96, 130, 97, 96, 131,
- 97, 96, 132, 97, 96, 133, 97, 96,
- 134, 97, 96, 99, 97, 96, 136, 97,
- 96, 137, 97, 96, 138, 97, 96, 139,
- 97, 96, 140, 97, 96, 141, 97, 96,
- 142, 97, 96, 143, 97, 96, 144, 97,
- 96, 145, 97, 96, 146, 97, 96, 147,
- 97, 96, 148, 97, 96, 149, 97, 96,
- 150, 97, 96, 151, 97, 96, 152, 97,
- 96, 153, 97, 96, 97, 100, 154, 96,
- 97, 155, 96, 156, 97, 96, 119, 97,
- 96, 158, 97, 96, 159, 191, 97, 96,
- 160, 97, 96, 161, 97, 96, 162, 97,
- 96, 163, 97, 96, 164, 97, 96, 165,
- 97, 96, 166, 97, 96, 167, 97, 96,
- 168, 97, 96, 169, 97, 96, 170, 97,
- 96, 171, 97, 96, 172, 97, 96, 173,
- 97, 96, 97, 174, 96, 175, 97, 96,
- 176, 97, 96, 177, 97, 96, 178, 97,
- 96, 179, 97, 96, 180, 97, 96, 181,
- 97, 96, 182, 97, 96, 183, 97, 96,
- 184, 97, 96, 185, 97, 96, 186, 97,
- 96, 187, 97, 96, 188, 97, 96, 189,
- 97, 96, 190, 97, 96, 97, 100, 96,
- 192, 97, 96, 193, 97, 96, 194, 97,
- 96, 195, 97, 96, 196, 97, 96, 197,
- 97, 96, 198, 97, 96, 199, 97, 96,
- 200, 97, 96, 201, 97, 96, 202, 97,
- 96, 190, 97, 96, 204, 97, 96, 99,
- 205, 97, 96, 206, 97, 100, 96, 207,
- 97, 96, 208, 97, 96, 99, 97, 96,
- 210, 97, 96, 211, 97, 96, 212, 97,
- 96, 213, 97, 96, 214, 97, 96, 215,
- 97, 96, 216, 97, 96, 217, 97, 96,
- 218, 97, 96, 219, 97, 96, 220, 97,
- 96, 221, 97, 96, 222, 97, 96, 223,
- 97, 96, 224, 97, 96, 225, 97, 96,
- 226, 97, 96, 190, 97, 96, 228, 97,
- 96, 155, 97, 96, 97, 230, 96, 97,
- 231, 96, 97, 232, 96, 97, 233, 96,
- 97, 234, 96, 97, 235, 96, 97, 236,
- 96, 97, 237, 96, 97, 238, 96, 97,
- 239, 96, 97, 240, 96, 97, 241, 96,
- 97, 242, 96, 97, 6, 96, 244, 0,
- 245, 0, 246, 0, 247, 0, 248, 280,
- 0, 249, 0, 250, 0, 251, 0, 252,
- 0, 253, 0, 254, 0, 255, 0, 256,
- 0, 257, 0, 259, 258, 259, 258, 260,
- 259, 259, 6, 6, 259, 258, 261, 259,
- 258, 262, 259, 258, 263, 259, 258, 264,
- 259, 258, 265, 259, 258, 266, 259, 258,
- 267, 259, 258, 268, 259, 258, 269, 259,
- 258, 270, 259, 258, 271, 259, 258, 272,
- 259, 258, 273, 259, 258, 274, 259, 258,
- 275, 259, 258, 276, 259, 258, 277, 259,
- 258, 278, 259, 258, 279, 259, 258, 259,
- 100, 258, 281, 0, 282, 0, 283, 0,
- 284, 0, 285, 0, 286, 0, 287, 0,
- 288, 0, 289, 0, 290, 0, 291, 0,
- 292, 0, 4, 293, 0, 294, 0, 295,
- 0, 60, 0, 297, 0, 298, 446, 0,
- 299, 0, 300, 0, 301, 0, 302, 0,
- 303, 0, 304, 0, 305, 0, 306, 0,
- 307, 0, 308, 0, 309, 0, 310, 0,
- 311, 0, 312, 0, 313, 0, 314, 0,
- 315, 0, 316, 0, 317, 0, 318, 0,
- 319, 0, 320, 0, 321, 0, 322, 0,
- 323, 0, 324, 0, 325, 0, 326, 0,
- 327, 0, 328, 0, 329, 0, 330, 0,
- 332, 331, 332, 331, 333, 332, 332, 6,
- 432, 334, 6, 332, 331, 334, 335, 349,
- 355, 361, 369, 391, 406, 412, 430, 332,
- 331, 332, 100, 331, 336, 332, 339, 331,
- 337, 332, 331, 338, 332, 331, 334, 332,
- 331, 340, 332, 331, 341, 332, 331, 342,
- 332, 331, 343, 332, 331, 344, 332, 331,
- 345, 332, 331, 346, 332, 331, 347, 332,
- 331, 348, 332, 331, 334, 332, 331, 350,
- 332, 331, 351, 332, 331, 352, 332, 331,
- 353, 332, 331, 354, 332, 331, 334, 332,
- 331, 356, 332, 331, 357, 332, 331, 358,
- 332, 331, 359, 332, 331, 360, 332, 331,
- 334, 332, 331, 362, 332, 331, 363, 332,
- 331, 364, 332, 331, 365, 332, 331, 366,
- 332, 331, 367, 332, 331, 368, 332, 331,
- 334, 332, 331, 370, 332, 331, 371, 332,
- 331, 372, 332, 331, 373, 332, 331, 374,
- 332, 331, 375, 332, 331, 376, 332, 331,
- 377, 332, 331, 378, 332, 331, 379, 332,
- 331, 380, 332, 331, 381, 332, 331, 382,
- 332, 331, 383, 332, 331, 384, 332, 331,
- 385, 332, 331, 386, 332, 331, 387, 332,
- 331, 332, 100, 388, 331, 332, 389, 331,
- 390, 332, 331, 353, 332, 331, 392, 332,
- 331, 393, 332, 331, 394, 332, 331, 395,
- 332, 331, 396, 332, 331, 397, 332, 331,
- 398, 332, 331, 399, 332, 331, 400, 332,
- 331, 401, 332, 331, 402, 332, 331, 403,
- 332, 331, 404, 332, 331, 405, 332, 331,
- 332, 100, 331, 407, 332, 331, 334, 408,
- 332, 331, 409, 332, 100, 331, 410, 332,
- 331, 411, 332, 331, 334, 332, 331, 413,
- 332, 331, 414, 332, 331, 415, 332, 331,
- 416, 332, 331, 417, 332, 331, 418, 332,
- 331, 419, 332, 331, 420, 332, 331, 421,
- 332, 331, 422, 332, 331, 423, 332, 331,
- 424, 332, 331, 425, 332, 331, 426, 332,
- 331, 427, 332, 331, 428, 332, 331, 429,
- 332, 331, 405, 332, 331, 431, 332, 331,
- 389, 332, 331, 332, 433, 331, 332, 434,
- 331, 332, 435, 331, 332, 436, 331, 332,
- 437, 331, 332, 438, 331, 332, 439, 331,
- 332, 440, 331, 332, 441, 331, 332, 442,
- 331, 332, 443, 331, 332, 444, 331, 332,
- 445, 331, 332, 6, 331, 447, 0, 448,
- 0, 449, 0, 450, 0, 451, 0, 452,
- 0, 453, 0, 454, 0, 455, 0, 456,
- 0, 457, 0, 458, 0, 459, 0, 461,
- 460, 461, 460, 462, 461, 461, 6, 609,
- 463, 6, 461, 460, 463, 464, 478, 484,
- 490, 498, 538, 583, 589, 607, 461, 460,
- 461, 100, 460, 465, 461, 468, 460, 466,
- 461, 460, 467, 461, 460, 463, 461, 460,
- 469, 461, 460, 470, 461, 460, 471, 461,
- 460, 472, 461, 460, 473, 461, 460, 474,
- 461, 460, 475, 461, 460, 476, 461, 460,
- 477, 461, 460, 463, 461, 460, 479, 461,
- 460, 480, 461, 460, 481, 461, 460, 482,
- 461, 460, 483, 461, 460, 463, 461, 460,
- 485, 461, 460, 486, 461, 460, 487, 461,
- 460, 488, 461, 460, 489, 461, 460, 463,
- 461, 460, 491, 461, 460, 492, 461, 460,
- 493, 461, 460, 494, 461, 460, 495, 461,
- 460, 496, 461, 460, 497, 461, 460, 463,
- 461, 460, 499, 517, 461, 460, 500, 461,
- 460, 501, 461, 460, 502, 461, 460, 503,
- 461, 460, 504, 461, 460, 505, 461, 460,
- 506, 461, 460, 507, 461, 460, 508, 461,
- 460, 509, 461, 460, 510, 461, 460, 511,
- 461, 460, 512, 461, 460, 513, 461, 460,
- 514, 461, 460, 515, 461, 460, 516, 461,
- 460, 461, 100, 460, 518, 461, 460, 519,
- 461, 460, 520, 461, 460, 521, 461, 460,
- 522, 461, 460, 523, 461, 460, 524, 461,
- 460, 525, 461, 460, 526, 461, 460, 527,
- 461, 460, 528, 461, 460, 529, 461, 460,
- 530, 461, 460, 531, 461, 460, 532, 461,
- 460, 533, 461, 460, 534, 461, 460, 461,
- 100, 535, 460, 461, 536, 460, 537, 461,
- 460, 482, 461, 460, 539, 461, 460, 540,
- 571, 461, 460, 541, 461, 460, 542, 461,
- 460, 543, 461, 460, 544, 461, 460, 545,
- 461, 460, 546, 461, 460, 547, 461, 460,
- 548, 461, 460, 549, 461, 460, 550, 461,
- 460, 551, 461, 460, 552, 461, 460, 553,
- 461, 460, 554, 461, 460, 461, 555, 460,
- 556, 461, 460, 557, 461, 460, 558, 461,
- 460, 559, 461, 460, 560, 461, 460, 561,
- 461, 460, 562, 461, 460, 563, 461, 460,
- 564, 461, 460, 565, 461, 460, 566, 461,
- 460, 567, 461, 460, 568, 461, 460, 569,
- 461, 460, 570, 461, 460, 516, 461, 460,
- 572, 461, 460, 573, 461, 460, 574, 461,
- 460, 575, 461, 460, 576, 461, 460, 577,
- 461, 460, 578, 461, 460, 579, 461, 460,
- 580, 461, 460, 581, 461, 460, 582, 461,
- 460, 516, 461, 460, 584, 461, 460, 463,
- 585, 461, 460, 586, 461, 100, 460, 587,
- 461, 460, 588, 461, 460, 463, 461, 460,
- 590, 461, 460, 591, 461, 460, 592, 461,
- 460, 593, 461, 460, 594, 461, 460, 595,
- 461, 460, 596, 461, 460, 597, 461, 460,
- 598, 461, 460, 599, 461, 460, 600, 461,
- 460, 601, 461, 460, 602, 461, 460, 603,
- 461, 460, 604, 461, 460, 605, 461, 460,
- 606, 461, 460, 516, 461, 460, 608, 461,
- 460, 536, 461, 460, 461, 610, 460, 461,
- 611, 460, 461, 612, 460, 461, 613, 460,
- 461, 614, 460, 461, 615, 460, 461, 616,
- 460, 461, 617, 460, 461, 618, 460, 461,
- 619, 460, 461, 620, 460, 461, 621, 460,
- 461, 622, 460, 461, 6, 460, 624, 0,
- 3, 625, 0, 626, 4, 0, 627, 0,
- 628, 0, 3, 0, 630, 0, 631, 0,
- 632, 0, 633, 0, 634, 0, 635, 0,
- 636, 0, 637, 0, 638, 0, 639, 0,
- 640, 0, 641, 0, 642, 0, 643, 0,
- 644, 0, 645, 0, 646, 0, 647, 0,
- 648, 0, 650, 649, 650, 649, 651, 650,
- 650, 6, 747, 6, 650, 649, 652, 684,
- 729, 650, 649, 653, 671, 650, 649, 654,
- 650, 649, 655, 650, 649, 656, 650, 649,
- 657, 650, 649, 658, 650, 649, 659, 650,
- 649, 660, 650, 649, 661, 650, 649, 662,
- 650, 649, 663, 650, 649, 664, 650, 649,
- 665, 650, 649, 666, 650, 649, 667, 650,
- 649, 668, 650, 649, 669, 650, 649, 670,
- 650, 649, 650, 100, 649, 672, 650, 649,
- 673, 650, 649, 674, 650, 649, 675, 650,
- 649, 676, 650, 649, 677, 650, 649, 678,
- 650, 649, 679, 650, 649, 680, 650, 649,
- 681, 650, 649, 682, 650, 649, 683, 650,
- 649, 670, 650, 649, 685, 650, 649, 686,
- 717, 650, 649, 687, 650, 649, 688, 650,
- 649, 689, 650, 649, 690, 650, 649, 691,
- 650, 649, 692, 650, 649, 693, 650, 649,
- 694, 650, 649, 695, 650, 649, 696, 650,
- 649, 697, 650, 649, 698, 650, 649, 699,
- 650, 649, 700, 650, 649, 650, 701, 649,
- 702, 650, 649, 703, 650, 649, 704, 650,
- 649, 705, 650, 649, 706, 650, 649, 707,
- 650, 649, 708, 650, 649, 709, 650, 649,
- 710, 650, 649, 711, 650, 649, 712, 650,
- 649, 713, 650, 649, 714, 650, 649, 715,
- 650, 649, 716, 650, 649, 670, 650, 649,
- 718, 650, 649, 719, 650, 649, 720, 650,
- 649, 721, 650, 649, 722, 650, 649, 723,
- 650, 649, 724, 650, 649, 725, 650, 649,
- 726, 650, 649, 727, 650, 649, 728, 650,
- 649, 670, 650, 649, 730, 650, 649, 731,
- 650, 649, 732, 650, 649, 733, 650, 649,
- 734, 650, 649, 735, 650, 649, 736, 650,
- 649, 737, 650, 649, 738, 650, 649, 739,
- 650, 649, 740, 650, 649, 741, 650, 649,
- 742, 650, 649, 743, 650, 649, 744, 650,
- 649, 745, 650, 649, 746, 650, 649, 670,
- 650, 649, 650, 748, 649, 650, 749, 649,
- 650, 750, 649, 650, 751, 649, 650, 752,
- 649, 650, 753, 649, 650, 754, 649, 650,
- 755, 649, 650, 756, 649, 650, 757, 649,
- 650, 758, 649, 650, 759, 649, 650, 760,
- 649, 650, 6, 649, 762, 0, 294, 0,
- 764, 0, 6, 0, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 29, 0, 54, 0, 5, 1, 0, 29,
- 1, 35, 0, 43, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 43, 0,
- 43, 149, 126, 57, 110, 23, 0, 29,
- 54, 0, 5, 1, 0, 29, 1, 35,
- 0, 43, 0, 43, 0, 43, 139, 48,
- 9, 106, 11, 0, 134, 45, 45, 45,
- 3, 122, 33, 33, 33, 0, 122, 33,
- 33, 33, 0, 122, 33, 0, 33, 0,
- 102, 7, 7, 43, 54, 0, 0, 43,
- 114, 25, 0, 54, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 43, 43, 43, 43, 0, 27, 118,
- 27, 27, 51, 27, 0, 54, 0, 1,
- 0, 43, 0, 0, 0, 43, 54, 37,
- 37, 87, 37, 37, 43, 0, 39, 0,
- 43, 0, 0, 54, 0, 0, 39, 0,
- 0, 96, 54, 0, 93, 90, 41, 96,
- 90, 99, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 84, 54, 0, 72,
- 33, 84, 72, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 54,
- 0, 54, 15, 0, 63, 130, 31, 60,
- 57, 31, 63, 57, 66, 31, 43, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 15, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 15, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 15, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 15, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 84,
- 54, 0, 81, 81, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 21, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 84, 54, 0, 78,
- 33, 84, 78, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 54,
- 0, 54, 19, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 19, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 19, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 19, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 19, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 54, 0, 75, 33,
- 84, 75, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 54, 0,
- 54, 17, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 17, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 17, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 17, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 17, 0, 0, 43,
- 0, 0, 43, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 84, 54,
- 0, 69, 33, 69, 0, 0, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 13, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 13, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 765;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/uk.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 1545 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/uk.c.rl"
-
-#line 1552 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/uk.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/uk.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/uk.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/uk.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/uk.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/uk.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/uk.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/uk.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/uk.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/uk.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/uk.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/uk.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/uk.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/uk.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/uk.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/uk.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/uk.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/uk.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/uk.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/uk.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/uk.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/uk.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/uk.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/uk.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1842 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/uk.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1905 "ext/gherkin_lexer_uk/gherkin_lexer_uk.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/uk.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_uk()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Uk", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_uz/extconf.rb
index 5f82eae,5f82eae..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_uz/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_uz")
--have_library("c", "main")
--create_makefile("gherkin_lexer_uz")
diff --cc ext/gherkin_lexer_uz/gherkin_lexer_uz.c
index 7aad438,ac2d0ea..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_uz/gherkin_lexer_uz.c
+++ /dev/null
@@@ -1,1651 -1,1651 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_uz/gherkin_lexer_uz.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 12, 21, 22, 24, 25, 26,
- 27, 28, 29, 31, 33, 44, 45, 46,
- 48, 50, 55, 60, 65, 70, 74, 78,
- 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 89, 90, 91, 92, 93, 94, 95,
- 100, 107, 112, 116, 122, 125, 127, 133,
- 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 180, 181, 182, 183,
- 190, 192, 194, 196, 198, 200, 202, 204,
- 206, 208, 210, 212, 214, 216, 218, 220,
- 222, 224, 226, 228, 230, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 291, 299,
- 301, 304, 306, 308, 310, 312, 314, 316,
- 318, 320, 322, 324, 326, 328, 330, 332,
- 334, 336, 338, 340, 342, 344, 346, 348,
- 350, 352, 354, 356, 358, 360, 362, 364,
- 366, 368, 370, 372, 374, 376, 378, 380,
- 382, 384, 386, 388, 390, 392, 394, 396,
- 398, 400, 402, 404, 406, 408, 410, 412,
- 414, 416, 418, 420, 422, 424, 426, 428,
- 430, 432, 434, 436, 438, 440, 442, 444,
- 446, 448, 450, 452, 454, 456, 458, 460,
- 461, 462, 471, 480, 482, 485, 487, 489,
- 491, 493, 495, 497, 499, 501, 503, 505,
- 507, 509, 511, 513, 515, 517, 519, 521,
- 523, 525, 527, 529, 531, 533, 535, 537,
- 539, 541, 543, 545, 547, 549, 551, 553,
- 555, 557, 559, 561, 563, 565, 567, 570,
- 572, 574, 576, 578, 580, 582, 584, 586,
- 588, 590, 592, 594, 596, 598, 600, 602,
- 604, 606, 608, 610, 612, 614, 616, 618,
- 620, 622, 624, 626, 628, 630, 632, 634,
- 636, 638, 640, 642, 644, 646, 648, 650,
- 652, 654, 656, 658, 660, 662, 664, 666,
- 668, 670, 672, 674, 676, 678, 680, 682,
- 684, 686, 688, 690, 692, 694, 696, 698,
- 700, 702, 704, 705, 706, 707, 708, 709,
- 710, 711, 712, 713, 714, 715, 724, 732,
- 734, 737, 739, 741, 743, 745, 747, 749,
- 751, 753, 755, 757, 759, 761, 763, 765,
- 767, 769, 771, 773, 775, 777, 779, 781,
- 783, 785, 787, 789, 791, 793, 795, 797,
- 799, 801, 803, 805, 807, 809, 811, 813,
- 815, 817, 819, 822, 824, 826, 828, 830,
- 832, 834, 836, 838, 840, 842, 844, 846,
- 848, 850, 852, 854, 856, 858, 860, 862,
- 864, 866, 868, 870, 872, 874, 876, 878,
- 880, 882, 884, 886, 888, 890, 892, 894,
- 896, 898, 900, 902, 904, 906, 908, 910,
- 912, 914, 916, 918, 920, 922, 924, 926,
- 928, 930, 932, 934, 936, 938, 940, 941,
- 942, 943, 944, 945, 946, 947, 948, 949,
- 950, 951, 952, 953, 954, 955, 956, 957,
- 958, 959, 960, 961, 962, 963, 964, 965,
- 973, 978, 980, 982, 984, 986, 988, 990,
- 992, 994, 996, 998, 1000, 1002, 1004, 1006,
- 1008, 1010, 1012, 1014, 1016, 1018, 1020, 1022,
- 1024, 1026, 1028, 1030, 1032, 1034, 1036, 1039,
- 1041, 1043, 1045, 1047, 1049, 1051, 1053, 1055,
- 1057, 1059, 1061, 1063, 1065, 1067, 1069, 1071,
- 1073, 1075, 1077, 1079, 1081, 1083, 1085, 1087,
- 1089, 1091, 1093, 1095, 1097, 1099, 1101, 1103,
- 1105, 1107, 1109, 1111, 1113, 1115, 1117, 1119,
- 1121, 1123, 1125, 1127, 1129, 1131, 1133, 1135,
- 1137, 1139, 1141, 1143, 1145, 1147, 1149, 1151,
- 1153, 1155, 1157, 1159, 1161, 1163, 1164, 1165
- };
-
- static const char _lexer_trans_keys[] = {
- -48, -17, 10, 32, 34, 35, 37, 42,
- 64, 124, 9, 13, -112, -111, -110, -101,
- -100, -95, -94, -93, -92, -48, -77, -68,
- -48, -80, -47, -128, 32, 10, 13, 10,
- 13, -48, 10, 32, 34, 35, 37, 42,
- 64, 124, 9, 13, 34, 34, 10, 13,
- 10, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 9, 13, 10, 32, 9, 13, 10, 13,
- 10, 95, 70, 69, 65, 84, 85, 82,
- 69, 95, 69, 78, 68, 95, 37, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 32, 124, 9, 13, 10, 32, 92, 124,
- 9, 13, 10, 92, 124, 10, 92, 10,
- 32, 92, 124, 9, 13, -48, 10, 32,
- 34, 35, 37, 42, 64, 124, 9, 13,
- -48, -68, -48, -66, -48, -72, -47, -128,
- -48, -66, -48, -70, -48, -80, -48, -75,
- -48, -70, -48, -72, -48, -67, -48, -72,
- -47, -127, -48, -66, -48, -69, -48, -69,
- -48, -80, -47, -128, 58, 10, 10, -48,
- 10, 32, 35, 124, 9, 13, -92, 10,
- -47, 10, -125, 10, -48, 10, -67, 10,
- -48, 10, -70, 10, -47, 10, -122, 10,
- -48, 10, -72, 10, -48, 10, -66, 10,
- -48, 10, -67, 10, -48, 10, -80, 10,
- -48, 10, -69, 10, 10, 58, -48, 10,
- 32, 34, 35, 37, 42, 64, 124, 9,
- 13, -47, -122, -48, -75, -48, -67, -48,
- -80, -47, -128, -48, -72, -48, -71, 32,
- 58, -47, -127, -47, -126, -47, -128, -47,
- -125, -48, -70, -47, -126, -47, -125, -47,
- -128, -48, -80, -47, -127, -48, -72, 58,
- 10, 10, -48, 10, 32, 35, 37, 42,
- 64, 9, 13, -112, -111, -110, -101, -95,
- -93, -92, 10, -48, 10, -77, -68, 10,
- -48, 10, -80, 10, -47, 10, -128, 10,
- 10, 32, -48, 10, -68, 10, -48, 10,
- -66, 10, -48, 10, -72, 10, -47, 10,
- -128, 10, -48, 10, -66, 10, -48, 10,
- -70, 10, -48, 10, -80, 10, -48, 10,
- -75, 10, -48, 10, -70, 10, -48, 10,
- -72, 10, -48, 10, -67, 10, -47, 10,
- -122, 10, -48, 10, -75, 10, -48, 10,
- -67, 10, -48, 10, -80, 10, -47, 10,
- -128, 10, -48, 10, -72, 10, -48, 10,
- -71, 10, 10, 58, -48, 10, -67, 10,
- -48, 10, -76, 10, -47, 10, -125, 10,
- -48, 10, -67, 10, -48, 10, -70, 10,
- -47, 10, -122, 10, -48, 10, -72, 10,
- -48, 10, -66, 10, -48, 10, -67, 10,
- -48, 10, -80, 10, -48, 10, -69, 10,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 10, -48, 10,
- 32, 35, 37, 42, 64, 9, 13, -112,
- -111, -110, -101, -95, -94, -93, -92, 10,
- -48, 10, -77, -68, 10, -48, 10, -80,
- 10, -47, 10, -128, 10, 10, 32, -48,
- 10, -68, 10, -48, 10, -66, 10, -48,
- 10, -72, 10, -47, 10, -128, 10, -48,
- 10, -66, 10, -48, 10, -70, 10, -48,
- 10, -80, 10, -48, 10, -75, 10, -48,
- 10, -70, 10, -48, 10, -72, 10, -48,
- 10, -67, 10, -47, 10, -122, 10, -48,
- 10, -75, 10, -48, 10, -67, 10, -48,
- 10, -80, 10, -47, 10, -128, 10, -48,
- 10, -72, 10, -48, 10, -71, 10, 10,
- 32, 58, -47, 10, -127, 10, -47, 10,
- -126, 10, -47, 10, -128, 10, -47, 10,
- -125, 10, -48, 10, -70, 10, -47, 10,
- -126, 10, -47, 10, -125, 10, -47, 10,
- -128, 10, -48, 10, -80, 10, -47, 10,
- -127, 10, -48, 10, -72, 10, 10, 58,
- -48, 10, -80, 10, -47, 10, -128, 10,
- -48, 10, -72, 10, -47, 10, -123, 10,
- -48, 10, -67, 10, -48, 10, -76, 10,
- -47, 10, -125, 10, -48, 10, -67, 10,
- -48, 10, -70, 10, -47, 10, -122, 10,
- -48, 10, -72, 10, -48, 10, -66, 10,
- -48, 10, -67, 10, -48, 10, -80, 10,
- -48, 10, -69, 10, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- -48, -80, -47, -128, -48, -72, -47, -123,
- 58, 10, 10, -48, 10, 32, 35, 37,
- 42, 64, 9, 13, -112, -111, -110, -101,
- -95, -93, -92, 10, -48, 10, -77, -68,
- 10, -48, 10, -80, 10, -47, 10, -128,
- 10, 10, 32, -48, 10, -68, 10, -48,
- 10, -66, 10, -48, 10, -72, 10, -47,
- 10, -128, 10, -48, 10, -66, 10, -48,
- 10, -70, 10, -48, 10, -80, 10, -48,
- 10, -75, 10, -48, 10, -70, 10, -48,
- 10, -72, 10, -48, 10, -67, 10, -47,
- 10, -122, 10, -48, 10, -75, 10, -48,
- 10, -67, 10, -48, 10, -80, 10, -47,
- 10, -128, 10, -48, 10, -72, 10, -48,
- 10, -71, 10, 10, 32, 58, -47, 10,
- -127, 10, -47, 10, -126, 10, -47, 10,
- -128, 10, -47, 10, -125, 10, -48, 10,
- -70, 10, -47, 10, -126, 10, -47, 10,
- -125, 10, -47, 10, -128, 10, -48, 10,
- -80, 10, -47, 10, -127, 10, -48, 10,
- -72, 10, 10, 58, -48, 10, -67, 10,
- -48, 10, -76, 10, -47, 10, -125, 10,
- -48, 10, -67, 10, -48, 10, -70, 10,
- -47, 10, -122, 10, -48, 10, -72, 10,
- -48, 10, -66, 10, -48, 10, -67, 10,
- -48, 10, -80, 10, -48, 10, -69, 10,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, -48, -67, -48, -76,
- -47, -125, -48, -67, -48, -70, -47, -122,
- -48, -72, -48, -66, -48, -67, -48, -80,
- -48, -69, 58, 10, 10, -48, 10, 32,
- 35, 37, 64, 9, 13, -100, -95, -94,
- -92, 10, -48, 10, -72, 10, -47, 10,
- -127, 10, -48, 10, -66, 10, -48, 10,
- -69, 10, -48, 10, -69, 10, -48, 10,
- -80, 10, -47, 10, -128, 10, 10, 58,
- -47, 10, -122, 10, -48, 10, -75, 10,
- -48, 10, -67, 10, -48, 10, -80, 10,
- -47, 10, -128, 10, -48, 10, -72, 10,
- -48, 10, -71, 10, 10, 32, 58, -47,
- 10, -127, 10, -47, 10, -126, 10, -47,
- 10, -128, 10, -47, 10, -125, 10, -48,
- 10, -70, 10, -47, 10, -126, 10, -47,
- 10, -125, 10, -47, 10, -128, 10, -48,
- 10, -80, 10, -47, 10, -127, 10, -48,
- 10, -72, 10, -48, 10, -80, 10, -47,
- 10, -128, 10, -48, 10, -72, 10, -47,
- 10, -123, 10, -47, 10, -125, 10, -48,
- 10, -67, 10, -48, 10, -70, 10, -47,
- 10, -122, 10, -48, 10, -72, 10, -48,
- 10, -66, 10, -48, 10, -67, 10, -48,
- 10, -80, 10, -48, 10, -69, 10, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, -69, -65, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 10, 9, 1, 2, 1, 1, 1,
- 1, 1, 2, 2, 9, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 3,
- 5, 3, 2, 4, 3, 2, 4, 9,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 5,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 9, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 7, 8, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 7, 9, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 7, 8, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 6,
- 5, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 1, 1, 1, 1, 0, 0, 1, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 12, 22, 24, 27, 29, 31,
- 33, 35, 37, 40, 43, 54, 56, 58,
- 61, 64, 69, 74, 79, 84, 88, 92,
- 95, 97, 99, 101, 103, 105, 107, 109,
- 111, 113, 115, 117, 119, 121, 123, 125,
- 130, 137, 142, 146, 152, 156, 159, 165,
- 176, 178, 180, 182, 184, 186, 188, 190,
- 192, 194, 196, 198, 200, 202, 204, 206,
- 208, 210, 212, 214, 216, 218, 220, 222,
- 224, 226, 228, 230, 232, 234, 236, 238,
- 240, 242, 244, 246, 248, 250, 252, 254,
- 261, 264, 267, 270, 273, 276, 279, 282,
- 285, 288, 291, 294, 297, 300, 303, 306,
- 309, 312, 315, 318, 321, 332, 334, 336,
- 338, 340, 342, 344, 346, 348, 350, 352,
- 354, 356, 358, 360, 363, 365, 367, 369,
- 371, 373, 375, 377, 379, 381, 383, 385,
- 387, 389, 391, 393, 395, 397, 399, 401,
- 403, 405, 407, 409, 411, 413, 422, 431,
- 434, 438, 441, 444, 447, 450, 453, 456,
- 459, 462, 465, 468, 471, 474, 477, 480,
- 483, 486, 489, 492, 495, 498, 501, 504,
- 507, 510, 513, 516, 519, 522, 525, 528,
- 531, 534, 537, 540, 543, 546, 549, 552,
- 555, 558, 561, 564, 567, 570, 573, 576,
- 579, 582, 585, 588, 591, 594, 597, 600,
- 603, 606, 609, 612, 615, 618, 621, 624,
- 627, 630, 633, 636, 639, 642, 645, 648,
- 651, 654, 657, 660, 663, 666, 669, 672,
- 674, 676, 685, 695, 698, 702, 705, 708,
- 711, 714, 717, 720, 723, 726, 729, 732,
- 735, 738, 741, 744, 747, 750, 753, 756,
- 759, 762, 765, 768, 771, 774, 777, 780,
- 783, 786, 789, 792, 795, 798, 801, 804,
- 807, 810, 813, 816, 819, 822, 825, 829,
- 832, 835, 838, 841, 844, 847, 850, 853,
- 856, 859, 862, 865, 868, 871, 874, 877,
- 880, 883, 886, 889, 892, 895, 898, 901,
- 904, 907, 910, 913, 916, 919, 922, 925,
- 928, 931, 934, 937, 940, 943, 946, 949,
- 952, 955, 958, 961, 964, 967, 970, 973,
- 976, 979, 982, 985, 988, 991, 994, 997,
- 1000, 1003, 1006, 1009, 1012, 1015, 1018, 1021,
- 1024, 1027, 1030, 1032, 1034, 1036, 1038, 1040,
- 1042, 1044, 1046, 1048, 1050, 1052, 1061, 1070,
- 1073, 1077, 1080, 1083, 1086, 1089, 1092, 1095,
- 1098, 1101, 1104, 1107, 1110, 1113, 1116, 1119,
- 1122, 1125, 1128, 1131, 1134, 1137, 1140, 1143,
- 1146, 1149, 1152, 1155, 1158, 1161, 1164, 1167,
- 1170, 1173, 1176, 1179, 1182, 1185, 1188, 1191,
- 1194, 1197, 1200, 1204, 1207, 1210, 1213, 1216,
- 1219, 1222, 1225, 1228, 1231, 1234, 1237, 1240,
- 1243, 1246, 1249, 1252, 1255, 1258, 1261, 1264,
- 1267, 1270, 1273, 1276, 1279, 1282, 1285, 1288,
- 1291, 1294, 1297, 1300, 1303, 1306, 1309, 1312,
- 1315, 1318, 1321, 1324, 1327, 1330, 1333, 1336,
- 1339, 1342, 1345, 1348, 1351, 1354, 1357, 1360,
- 1363, 1366, 1369, 1372, 1375, 1378, 1381, 1383,
- 1385, 1387, 1389, 1391, 1393, 1395, 1397, 1399,
- 1401, 1403, 1405, 1407, 1409, 1411, 1413, 1415,
- 1417, 1419, 1421, 1423, 1425, 1427, 1429, 1431,
- 1439, 1445, 1448, 1451, 1454, 1457, 1460, 1463,
- 1466, 1469, 1472, 1475, 1478, 1481, 1484, 1487,
- 1490, 1493, 1496, 1499, 1502, 1505, 1508, 1511,
- 1514, 1517, 1520, 1523, 1526, 1529, 1532, 1536,
- 1539, 1542, 1545, 1548, 1551, 1554, 1557, 1560,
- 1563, 1566, 1569, 1572, 1575, 1578, 1581, 1584,
- 1587, 1590, 1593, 1596, 1599, 1602, 1605, 1608,
- 1611, 1614, 1617, 1620, 1623, 1626, 1629, 1632,
- 1635, 1638, 1641, 1644, 1647, 1650, 1653, 1656,
- 1659, 1662, 1665, 1668, 1671, 1674, 1677, 1680,
- 1683, 1686, 1689, 1692, 1695, 1698, 1701, 1704,
- 1707, 1710, 1713, 1716, 1719, 1722, 1724, 1726
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 581, 12, 12, 13, 23, 25, 9,
- 39, 42, 12, 0, 3, 52, 60, 62,
- 70, 109, 346, 462, 466, 0, 4, 0,
- 5, 48, 0, 6, 0, 7, 0, 8,
- 0, 9, 0, 10, 0, 12, 24, 11,
- 12, 24, 11, 2, 12, 12, 13, 23,
- 25, 9, 39, 42, 12, 0, 14, 0,
- 15, 0, 17, 16, 16, 17, 16, 16,
- 18, 18, 19, 18, 18, 18, 18, 19,
- 18, 18, 18, 18, 20, 18, 18, 18,
- 18, 21, 18, 18, 12, 22, 22, 0,
- 12, 22, 22, 0, 12, 24, 23, 12,
- 0, 26, 0, 27, 0, 28, 0, 29,
- 0, 30, 0, 31, 0, 32, 0, 33,
- 0, 34, 0, 35, 0, 36, 0, 37,
- 0, 38, 0, 583, 0, 0, 0, 0,
- 0, 40, 41, 12, 41, 41, 39, 40,
- 40, 12, 41, 39, 41, 0, 42, 43,
- 42, 0, 47, 46, 45, 43, 46, 44,
- 0, 45, 43, 44, 0, 45, 44, 47,
- 46, 45, 43, 46, 44, 2, 47, 47,
- 13, 23, 25, 9, 39, 42, 47, 0,
- 49, 0, 50, 0, 51, 0, 9, 0,
- 53, 0, 54, 0, 55, 0, 56, 0,
- 57, 0, 58, 0, 59, 0, 9, 0,
- 61, 0, 9, 0, 63, 0, 64, 0,
- 65, 0, 66, 0, 67, 0, 68, 0,
- 69, 0, 9, 0, 71, 0, 72, 0,
- 73, 0, 74, 0, 75, 0, 76, 0,
- 77, 0, 78, 0, 79, 0, 80, 0,
- 81, 0, 82, 0, 83, 0, 84, 0,
- 85, 0, 87, 86, 87, 86, 88, 87,
- 87, 12, 12, 87, 86, 89, 87, 86,
- 90, 87, 86, 91, 87, 86, 92, 87,
- 86, 93, 87, 86, 94, 87, 86, 95,
- 87, 86, 96, 87, 86, 97, 87, 86,
- 98, 87, 86, 99, 87, 86, 100, 87,
- 86, 101, 87, 86, 102, 87, 86, 103,
- 87, 86, 104, 87, 86, 105, 87, 86,
- 106, 87, 86, 107, 87, 86, 87, 108,
- 86, 2, 12, 12, 13, 23, 25, 9,
- 39, 42, 12, 0, 110, 0, 111, 0,
- 112, 0, 113, 0, 114, 0, 115, 0,
- 116, 0, 117, 0, 118, 0, 119, 0,
- 120, 0, 121, 0, 122, 0, 123, 0,
- 124, 231, 0, 125, 0, 126, 0, 127,
- 0, 128, 0, 129, 0, 130, 0, 131,
- 0, 132, 0, 133, 0, 134, 0, 135,
- 0, 136, 0, 137, 0, 138, 0, 139,
- 0, 140, 0, 141, 0, 142, 0, 143,
- 0, 144, 0, 145, 0, 146, 0, 147,
- 0, 149, 148, 149, 148, 150, 149, 149,
- 12, 217, 157, 12, 149, 148, 151, 162,
- 170, 172, 180, 195, 199, 149, 148, 152,
- 149, 148, 153, 158, 149, 148, 154, 149,
- 148, 155, 149, 148, 156, 149, 148, 157,
- 149, 148, 149, 108, 148, 159, 149, 148,
- 160, 149, 148, 161, 149, 148, 157, 149,
- 148, 163, 149, 148, 164, 149, 148, 165,
- 149, 148, 166, 149, 148, 167, 149, 148,
- 168, 149, 148, 169, 149, 148, 157, 149,
- 148, 171, 149, 148, 157, 149, 148, 173,
- 149, 148, 174, 149, 148, 175, 149, 148,
- 176, 149, 148, 177, 149, 148, 178, 149,
- 148, 179, 149, 148, 157, 149, 148, 181,
- 149, 148, 182, 149, 148, 183, 149, 148,
- 184, 149, 148, 185, 149, 148, 186, 149,
- 148, 187, 149, 148, 188, 149, 148, 189,
- 149, 148, 190, 149, 148, 191, 149, 148,
- 192, 149, 148, 193, 149, 148, 194, 149,
- 148, 149, 108, 148, 196, 149, 148, 197,
- 149, 148, 198, 149, 148, 170, 149, 148,
- 200, 149, 148, 201, 149, 148, 202, 149,
- 148, 203, 149, 148, 204, 149, 148, 205,
- 149, 148, 206, 149, 148, 207, 149, 148,
- 208, 149, 148, 209, 149, 148, 210, 149,
- 148, 211, 149, 148, 212, 149, 148, 213,
- 149, 148, 214, 149, 148, 215, 149, 148,
- 216, 149, 148, 194, 149, 148, 149, 218,
- 148, 149, 219, 148, 149, 220, 148, 149,
- 221, 148, 149, 222, 148, 149, 223, 148,
- 149, 224, 148, 149, 225, 148, 149, 226,
- 148, 149, 227, 148, 149, 228, 148, 149,
- 229, 148, 149, 230, 148, 149, 12, 148,
- 233, 232, 233, 232, 234, 233, 233, 12,
- 332, 241, 12, 233, 232, 235, 246, 254,
- 256, 264, 302, 310, 314, 233, 232, 236,
- 233, 232, 237, 242, 233, 232, 238, 233,
- 232, 239, 233, 232, 240, 233, 232, 241,
- 233, 232, 233, 108, 232, 243, 233, 232,
- 244, 233, 232, 245, 233, 232, 241, 233,
- 232, 247, 233, 232, 248, 233, 232, 249,
- 233, 232, 250, 233, 232, 251, 233, 232,
- 252, 233, 232, 253, 233, 232, 241, 233,
- 232, 255, 233, 232, 241, 233, 232, 257,
- 233, 232, 258, 233, 232, 259, 233, 232,
- 260, 233, 232, 261, 233, 232, 262, 233,
- 232, 263, 233, 232, 241, 233, 232, 265,
- 233, 232, 266, 233, 232, 267, 233, 232,
- 268, 233, 232, 269, 233, 232, 270, 233,
- 232, 271, 233, 232, 272, 233, 232, 273,
- 233, 232, 274, 233, 232, 275, 233, 232,
- 276, 233, 232, 277, 233, 232, 278, 233,
- 232, 233, 279, 108, 232, 280, 233, 232,
- 281, 233, 232, 282, 233, 232, 283, 233,
- 232, 284, 233, 232, 285, 233, 232, 286,
- 233, 232, 287, 233, 232, 288, 233, 232,
- 289, 233, 232, 290, 233, 232, 291, 233,
- 232, 292, 233, 232, 293, 233, 232, 294,
- 233, 232, 295, 233, 232, 296, 233, 232,
- 297, 233, 232, 298, 233, 232, 299, 233,
- 232, 300, 233, 232, 301, 233, 232, 233,
- 108, 232, 303, 233, 232, 304, 233, 232,
- 305, 233, 232, 306, 233, 232, 307, 233,
- 232, 308, 233, 232, 309, 233, 232, 301,
- 233, 232, 311, 233, 232, 312, 233, 232,
- 313, 233, 232, 254, 233, 232, 315, 233,
- 232, 316, 233, 232, 317, 233, 232, 318,
- 233, 232, 319, 233, 232, 320, 233, 232,
- 321, 233, 232, 322, 233, 232, 323, 233,
- 232, 324, 233, 232, 325, 233, 232, 326,
- 233, 232, 327, 233, 232, 328, 233, 232,
- 329, 233, 232, 330, 233, 232, 331, 233,
- 232, 301, 233, 232, 233, 333, 232, 233,
- 334, 232, 233, 335, 232, 233, 336, 232,
- 233, 337, 232, 233, 338, 232, 233, 339,
- 232, 233, 340, 232, 233, 341, 232, 233,
- 342, 232, 233, 343, 232, 233, 344, 232,
- 233, 345, 232, 233, 12, 232, 347, 0,
- 348, 0, 349, 0, 350, 0, 351, 0,
- 352, 0, 353, 0, 354, 0, 355, 0,
- 357, 356, 357, 356, 358, 357, 357, 12,
- 448, 365, 12, 357, 356, 359, 370, 378,
- 380, 388, 426, 430, 357, 356, 360, 357,
- 356, 361, 366, 357, 356, 362, 357, 356,
- 363, 357, 356, 364, 357, 356, 365, 357,
- 356, 357, 108, 356, 367, 357, 356, 368,
- 357, 356, 369, 357, 356, 365, 357, 356,
- 371, 357, 356, 372, 357, 356, 373, 357,
- 356, 374, 357, 356, 375, 357, 356, 376,
- 357, 356, 377, 357, 356, 365, 357, 356,
- 379, 357, 356, 365, 357, 356, 381, 357,
- 356, 382, 357, 356, 383, 357, 356, 384,
- 357, 356, 385, 357, 356, 386, 357, 356,
- 387, 357, 356, 365, 357, 356, 389, 357,
- 356, 390, 357, 356, 391, 357, 356, 392,
- 357, 356, 393, 357, 356, 394, 357, 356,
- 395, 357, 356, 396, 357, 356, 397, 357,
- 356, 398, 357, 356, 399, 357, 356, 400,
- 357, 356, 401, 357, 356, 402, 357, 356,
- 357, 403, 108, 356, 404, 357, 356, 405,
- 357, 356, 406, 357, 356, 407, 357, 356,
- 408, 357, 356, 409, 357, 356, 410, 357,
- 356, 411, 357, 356, 412, 357, 356, 413,
- 357, 356, 414, 357, 356, 415, 357, 356,
- 416, 357, 356, 417, 357, 356, 418, 357,
- 356, 419, 357, 356, 420, 357, 356, 421,
- 357, 356, 422, 357, 356, 423, 357, 356,
- 424, 357, 356, 425, 357, 356, 357, 108,
- 356, 427, 357, 356, 428, 357, 356, 429,
- 357, 356, 378, 357, 356, 431, 357, 356,
- 432, 357, 356, 433, 357, 356, 434, 357,
- 356, 435, 357, 356, 436, 357, 356, 437,
- 357, 356, 438, 357, 356, 439, 357, 356,
- 440, 357, 356, 441, 357, 356, 442, 357,
- 356, 443, 357, 356, 444, 357, 356, 445,
- 357, 356, 446, 357, 356, 447, 357, 356,
- 425, 357, 356, 357, 449, 356, 357, 450,
- 356, 357, 451, 356, 357, 452, 356, 357,
- 453, 356, 357, 454, 356, 357, 455, 356,
- 357, 456, 356, 357, 457, 356, 357, 458,
- 356, 357, 459, 356, 357, 460, 356, 357,
- 461, 356, 357, 12, 356, 463, 0, 464,
- 0, 465, 0, 60, 0, 467, 0, 468,
- 0, 469, 0, 470, 0, 471, 0, 472,
- 0, 473, 0, 474, 0, 475, 0, 476,
- 0, 477, 0, 478, 0, 479, 0, 480,
- 0, 481, 0, 482, 0, 483, 0, 484,
- 0, 485, 0, 487, 486, 487, 486, 488,
- 487, 487, 12, 567, 12, 487, 486, 489,
- 504, 541, 549, 487, 486, 490, 487, 486,
- 491, 487, 486, 492, 487, 486, 493, 487,
- 486, 494, 487, 486, 495, 487, 486, 496,
- 487, 486, 497, 487, 486, 498, 487, 486,
- 499, 487, 486, 500, 487, 486, 501, 487,
- 486, 502, 487, 486, 503, 487, 486, 487,
- 108, 486, 505, 487, 486, 506, 487, 486,
- 507, 487, 486, 508, 487, 486, 509, 487,
- 486, 510, 487, 486, 511, 487, 486, 512,
- 487, 486, 513, 487, 486, 514, 487, 486,
- 515, 487, 486, 516, 487, 486, 517, 487,
- 486, 518, 487, 486, 487, 519, 108, 486,
- 520, 487, 486, 521, 487, 486, 522, 487,
- 486, 523, 487, 486, 524, 487, 486, 525,
- 487, 486, 526, 487, 486, 527, 487, 486,
- 528, 487, 486, 529, 487, 486, 530, 487,
- 486, 531, 487, 486, 532, 487, 486, 533,
- 487, 486, 534, 487, 486, 535, 487, 486,
- 536, 487, 486, 537, 487, 486, 538, 487,
- 486, 539, 487, 486, 540, 487, 486, 503,
- 487, 486, 542, 487, 486, 543, 487, 486,
- 544, 487, 486, 545, 487, 486, 546, 487,
- 486, 547, 487, 486, 548, 487, 486, 503,
- 487, 486, 550, 487, 486, 551, 487, 486,
- 552, 487, 486, 553, 487, 486, 554, 487,
- 486, 555, 487, 486, 556, 487, 486, 557,
- 487, 486, 558, 487, 486, 559, 487, 486,
- 560, 487, 486, 561, 487, 486, 562, 487,
- 486, 563, 487, 486, 564, 487, 486, 565,
- 487, 486, 566, 487, 486, 503, 487, 486,
- 487, 568, 486, 487, 569, 486, 487, 570,
- 486, 487, 571, 486, 487, 572, 486, 487,
- 573, 486, 487, 574, 486, 487, 575, 486,
- 487, 576, 486, 487, 577, 486, 487, 578,
- 486, 487, 579, 486, 487, 580, 486, 487,
- 12, 486, 582, 0, 12, 0, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 29, 0, 54, 0, 5, 1, 0, 29,
- 1, 35, 0, 43, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 43, 0, 43,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 149, 126, 57,
- 110, 23, 0, 29, 54, 0, 5, 1,
- 0, 29, 1, 35, 0, 43, 0, 43,
- 0, 43, 139, 48, 9, 106, 11, 0,
- 134, 45, 45, 45, 3, 122, 33, 33,
- 33, 0, 122, 33, 33, 33, 0, 122,
- 33, 0, 33, 0, 102, 7, 7, 43,
- 54, 0, 0, 43, 114, 25, 0, 54,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 43, 43, 43,
- 43, 0, 27, 118, 27, 27, 51, 27,
- 0, 54, 0, 1, 0, 43, 0, 0,
- 0, 43, 54, 37, 37, 87, 37, 37,
- 43, 0, 39, 0, 43, 0, 0, 54,
- 0, 0, 39, 0, 0, 96, 54, 0,
- 93, 90, 41, 96, 90, 99, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 84, 54,
- 0, 81, 81, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 21,
- 0, 63, 130, 31, 60, 57, 31, 63,
- 57, 66, 31, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 84, 54, 0,
- 78, 33, 84, 78, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 19, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 19, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 19, 0,
- 144, 57, 54, 0, 84, 54, 0, 75,
- 33, 84, 75, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 17, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 17, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 17, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 17, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 84, 54, 0, 72,
- 33, 84, 72, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 15, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 15, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 15,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 15, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 84,
- 54, 0, 69, 33, 69, 0, 0, 0,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 13, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 13, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 0, 43, 0, 43, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 583;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 1255 "ext/gherkin_lexer_uz/gherkin_lexer_uz.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
-
- #line 1262 "ext/gherkin_lexer_uz/gherkin_lexer_uz.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1552 "ext/gherkin_lexer_uz/gherkin_lexer_uz.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1615 "ext/gherkin_lexer_uz/gherkin_lexer_uz.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/uz.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_uz()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Uz", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/uz.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/uz.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_uz/gherkin_lexer_uz.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 12, 21, 22, 24, 25, 26,
- 27, 28, 29, 31, 33, 44, 45, 46,
- 48, 50, 55, 60, 65, 70, 74, 78,
- 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 89, 90, 91, 92, 93, 94, 95,
- 100, 107, 112, 116, 122, 125, 127, 133,
- 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 180, 181, 182, 183,
- 190, 192, 194, 196, 198, 200, 202, 204,
- 206, 208, 210, 212, 214, 216, 218, 220,
- 222, 224, 226, 228, 230, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 291, 299,
- 301, 304, 306, 308, 310, 312, 314, 316,
- 318, 320, 322, 324, 326, 328, 330, 332,
- 334, 336, 338, 340, 342, 344, 346, 348,
- 350, 352, 354, 356, 358, 360, 362, 364,
- 366, 368, 370, 372, 374, 376, 378, 380,
- 382, 384, 386, 388, 390, 392, 394, 396,
- 398, 400, 402, 404, 406, 408, 410, 412,
- 414, 416, 418, 420, 422, 424, 426, 428,
- 430, 432, 434, 436, 438, 440, 442, 444,
- 446, 448, 450, 452, 454, 456, 458, 460,
- 461, 462, 471, 480, 482, 485, 487, 489,
- 491, 493, 495, 497, 499, 501, 503, 505,
- 507, 509, 511, 513, 515, 517, 519, 521,
- 523, 525, 527, 529, 531, 533, 535, 537,
- 539, 541, 543, 545, 547, 549, 551, 553,
- 555, 557, 559, 561, 563, 565, 567, 570,
- 572, 574, 576, 578, 580, 582, 584, 586,
- 588, 590, 592, 594, 596, 598, 600, 602,
- 604, 606, 608, 610, 612, 614, 616, 618,
- 620, 622, 624, 626, 628, 630, 632, 634,
- 636, 638, 640, 642, 644, 646, 648, 650,
- 652, 654, 656, 658, 660, 662, 664, 666,
- 668, 670, 672, 674, 676, 678, 680, 682,
- 684, 686, 688, 690, 692, 694, 696, 698,
- 700, 702, 704, 705, 706, 707, 708, 709,
- 710, 711, 712, 713, 714, 715, 724, 732,
- 734, 737, 739, 741, 743, 745, 747, 749,
- 751, 753, 755, 757, 759, 761, 763, 765,
- 767, 769, 771, 773, 775, 777, 779, 781,
- 783, 785, 787, 789, 791, 793, 795, 797,
- 799, 801, 803, 805, 807, 809, 811, 813,
- 815, 817, 819, 822, 824, 826, 828, 830,
- 832, 834, 836, 838, 840, 842, 844, 846,
- 848, 850, 852, 854, 856, 858, 860, 862,
- 864, 866, 868, 870, 872, 874, 876, 878,
- 880, 882, 884, 886, 888, 890, 892, 894,
- 896, 898, 900, 902, 904, 906, 908, 910,
- 912, 914, 916, 918, 920, 922, 924, 926,
- 928, 930, 932, 934, 936, 938, 940, 941,
- 942, 943, 944, 945, 946, 947, 948, 949,
- 950, 951, 952, 953, 954, 955, 956, 957,
- 958, 959, 960, 961, 962, 963, 964, 965,
- 973, 978, 980, 982, 984, 986, 988, 990,
- 992, 994, 996, 998, 1000, 1002, 1004, 1006,
- 1008, 1010, 1012, 1014, 1016, 1018, 1020, 1022,
- 1024, 1026, 1028, 1030, 1032, 1034, 1036, 1039,
- 1041, 1043, 1045, 1047, 1049, 1051, 1053, 1055,
- 1057, 1059, 1061, 1063, 1065, 1067, 1069, 1071,
- 1073, 1075, 1077, 1079, 1081, 1083, 1085, 1087,
- 1089, 1091, 1093, 1095, 1097, 1099, 1101, 1103,
- 1105, 1107, 1109, 1111, 1113, 1115, 1117, 1119,
- 1121, 1123, 1125, 1127, 1129, 1131, 1133, 1135,
- 1137, 1139, 1141, 1143, 1145, 1147, 1149, 1151,
- 1153, 1155, 1157, 1159, 1161, 1163, 1164, 1165
-};
-
-static const char _lexer_trans_keys[] = {
- -48, -17, 10, 32, 34, 35, 37, 42,
- 64, 124, 9, 13, -112, -111, -110, -101,
- -100, -95, -94, -93, -92, -48, -77, -68,
- -48, -80, -47, -128, 32, 10, 13, 10,
- 13, -48, 10, 32, 34, 35, 37, 42,
- 64, 124, 9, 13, 34, 34, 10, 13,
- 10, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 9, 13, 10, 32, 9, 13, 10, 13,
- 10, 95, 70, 69, 65, 84, 85, 82,
- 69, 95, 69, 78, 68, 95, 37, 13,
- 32, 64, 9, 10, 9, 10, 13, 32,
- 64, 11, 12, 10, 32, 64, 9, 13,
- 32, 124, 9, 13, 10, 32, 92, 124,
- 9, 13, 10, 92, 124, 10, 92, 10,
- 32, 92, 124, 9, 13, -48, 10, 32,
- 34, 35, 37, 42, 64, 124, 9, 13,
- -48, -68, -48, -66, -48, -72, -47, -128,
- -48, -66, -48, -70, -48, -80, -48, -75,
- -48, -70, -48, -72, -48, -67, -48, -72,
- -47, -127, -48, -66, -48, -69, -48, -69,
- -48, -80, -47, -128, 58, 10, 10, -48,
- 10, 32, 35, 124, 9, 13, -92, 10,
- -47, 10, -125, 10, -48, 10, -67, 10,
- -48, 10, -70, 10, -47, 10, -122, 10,
- -48, 10, -72, 10, -48, 10, -66, 10,
- -48, 10, -67, 10, -48, 10, -80, 10,
- -48, 10, -69, 10, 10, 58, -48, 10,
- 32, 34, 35, 37, 42, 64, 124, 9,
- 13, -47, -122, -48, -75, -48, -67, -48,
- -80, -47, -128, -48, -72, -48, -71, 32,
- 58, -47, -127, -47, -126, -47, -128, -47,
- -125, -48, -70, -47, -126, -47, -125, -47,
- -128, -48, -80, -47, -127, -48, -72, 58,
- 10, 10, -48, 10, 32, 35, 37, 42,
- 64, 9, 13, -112, -111, -110, -101, -95,
- -93, -92, 10, -48, 10, -77, -68, 10,
- -48, 10, -80, 10, -47, 10, -128, 10,
- 10, 32, -48, 10, -68, 10, -48, 10,
- -66, 10, -48, 10, -72, 10, -47, 10,
- -128, 10, -48, 10, -66, 10, -48, 10,
- -70, 10, -48, 10, -80, 10, -48, 10,
- -75, 10, -48, 10, -70, 10, -48, 10,
- -72, 10, -48, 10, -67, 10, -47, 10,
- -122, 10, -48, 10, -75, 10, -48, 10,
- -67, 10, -48, 10, -80, 10, -47, 10,
- -128, 10, -48, 10, -72, 10, -48, 10,
- -71, 10, 10, 58, -48, 10, -67, 10,
- -48, 10, -76, 10, -47, 10, -125, 10,
- -48, 10, -67, 10, -48, 10, -70, 10,
- -47, 10, -122, 10, -48, 10, -72, 10,
- -48, 10, -66, 10, -48, 10, -67, 10,
- -48, 10, -80, 10, -48, 10, -69, 10,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 10, -48, 10,
- 32, 35, 37, 42, 64, 9, 13, -112,
- -111, -110, -101, -95, -94, -93, -92, 10,
- -48, 10, -77, -68, 10, -48, 10, -80,
- 10, -47, 10, -128, 10, 10, 32, -48,
- 10, -68, 10, -48, 10, -66, 10, -48,
- 10, -72, 10, -47, 10, -128, 10, -48,
- 10, -66, 10, -48, 10, -70, 10, -48,
- 10, -80, 10, -48, 10, -75, 10, -48,
- 10, -70, 10, -48, 10, -72, 10, -48,
- 10, -67, 10, -47, 10, -122, 10, -48,
- 10, -75, 10, -48, 10, -67, 10, -48,
- 10, -80, 10, -47, 10, -128, 10, -48,
- 10, -72, 10, -48, 10, -71, 10, 10,
- 32, 58, -47, 10, -127, 10, -47, 10,
- -126, 10, -47, 10, -128, 10, -47, 10,
- -125, 10, -48, 10, -70, 10, -47, 10,
- -126, 10, -47, 10, -125, 10, -47, 10,
- -128, 10, -48, 10, -80, 10, -47, 10,
- -127, 10, -48, 10, -72, 10, 10, 58,
- -48, 10, -80, 10, -47, 10, -128, 10,
- -48, 10, -72, 10, -47, 10, -123, 10,
- -48, 10, -67, 10, -48, 10, -76, 10,
- -47, 10, -125, 10, -48, 10, -67, 10,
- -48, 10, -70, 10, -47, 10, -122, 10,
- -48, 10, -72, 10, -48, 10, -66, 10,
- -48, 10, -67, 10, -48, 10, -80, 10,
- -48, 10, -69, 10, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- -48, -80, -47, -128, -48, -72, -47, -123,
- 58, 10, 10, -48, 10, 32, 35, 37,
- 42, 64, 9, 13, -112, -111, -110, -101,
- -95, -93, -92, 10, -48, 10, -77, -68,
- 10, -48, 10, -80, 10, -47, 10, -128,
- 10, 10, 32, -48, 10, -68, 10, -48,
- 10, -66, 10, -48, 10, -72, 10, -47,
- 10, -128, 10, -48, 10, -66, 10, -48,
- 10, -70, 10, -48, 10, -80, 10, -48,
- 10, -75, 10, -48, 10, -70, 10, -48,
- 10, -72, 10, -48, 10, -67, 10, -47,
- 10, -122, 10, -48, 10, -75, 10, -48,
- 10, -67, 10, -48, 10, -80, 10, -47,
- 10, -128, 10, -48, 10, -72, 10, -48,
- 10, -71, 10, 10, 32, 58, -47, 10,
- -127, 10, -47, 10, -126, 10, -47, 10,
- -128, 10, -47, 10, -125, 10, -48, 10,
- -70, 10, -47, 10, -126, 10, -47, 10,
- -125, 10, -47, 10, -128, 10, -48, 10,
- -80, 10, -47, 10, -127, 10, -48, 10,
- -72, 10, 10, 58, -48, 10, -67, 10,
- -48, 10, -76, 10, -47, 10, -125, 10,
- -48, 10, -67, 10, -48, 10, -70, 10,
- -47, 10, -122, 10, -48, 10, -72, 10,
- -48, 10, -66, 10, -48, 10, -67, 10,
- -48, 10, -80, 10, -48, 10, -69, 10,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, -48, -67, -48, -76,
- -47, -125, -48, -67, -48, -70, -47, -122,
- -48, -72, -48, -66, -48, -67, -48, -80,
- -48, -69, 58, 10, 10, -48, 10, 32,
- 35, 37, 64, 9, 13, -100, -95, -94,
- -92, 10, -48, 10, -72, 10, -47, 10,
- -127, 10, -48, 10, -66, 10, -48, 10,
- -69, 10, -48, 10, -69, 10, -48, 10,
- -80, 10, -47, 10, -128, 10, 10, 58,
- -47, 10, -122, 10, -48, 10, -75, 10,
- -48, 10, -67, 10, -48, 10, -80, 10,
- -47, 10, -128, 10, -48, 10, -72, 10,
- -48, 10, -71, 10, 10, 32, 58, -47,
- 10, -127, 10, -47, 10, -126, 10, -47,
- 10, -128, 10, -47, 10, -125, 10, -48,
- 10, -70, 10, -47, 10, -126, 10, -47,
- 10, -125, 10, -47, 10, -128, 10, -48,
- 10, -80, 10, -47, 10, -127, 10, -48,
- 10, -72, 10, -48, 10, -80, 10, -47,
- 10, -128, 10, -48, 10, -72, 10, -47,
- 10, -123, 10, -47, 10, -125, 10, -48,
- 10, -67, 10, -48, 10, -70, 10, -47,
- 10, -122, 10, -48, 10, -72, 10, -48,
- 10, -66, 10, -48, 10, -67, 10, -48,
- 10, -80, 10, -48, 10, -69, 10, 10,
- 95, 10, 70, 10, 69, 10, 65, 10,
- 84, 10, 85, 10, 82, 10, 69, 10,
- 95, 10, 69, 10, 78, 10, 68, 10,
- 95, 10, 37, -69, -65, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 10, 9, 1, 2, 1, 1, 1,
- 1, 1, 2, 2, 9, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 3,
- 5, 3, 2, 4, 3, 2, 4, 9,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 5,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 9, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 7, 8, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 7, 9, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 7, 8, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 6,
- 5, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 1, 1, 1, 1, 0, 0, 1, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 12, 22, 24, 27, 29, 31,
- 33, 35, 37, 40, 43, 54, 56, 58,
- 61, 64, 69, 74, 79, 84, 88, 92,
- 95, 97, 99, 101, 103, 105, 107, 109,
- 111, 113, 115, 117, 119, 121, 123, 125,
- 130, 137, 142, 146, 152, 156, 159, 165,
- 176, 178, 180, 182, 184, 186, 188, 190,
- 192, 194, 196, 198, 200, 202, 204, 206,
- 208, 210, 212, 214, 216, 218, 220, 222,
- 224, 226, 228, 230, 232, 234, 236, 238,
- 240, 242, 244, 246, 248, 250, 252, 254,
- 261, 264, 267, 270, 273, 276, 279, 282,
- 285, 288, 291, 294, 297, 300, 303, 306,
- 309, 312, 315, 318, 321, 332, 334, 336,
- 338, 340, 342, 344, 346, 348, 350, 352,
- 354, 356, 358, 360, 363, 365, 367, 369,
- 371, 373, 375, 377, 379, 381, 383, 385,
- 387, 389, 391, 393, 395, 397, 399, 401,
- 403, 405, 407, 409, 411, 413, 422, 431,
- 434, 438, 441, 444, 447, 450, 453, 456,
- 459, 462, 465, 468, 471, 474, 477, 480,
- 483, 486, 489, 492, 495, 498, 501, 504,
- 507, 510, 513, 516, 519, 522, 525, 528,
- 531, 534, 537, 540, 543, 546, 549, 552,
- 555, 558, 561, 564, 567, 570, 573, 576,
- 579, 582, 585, 588, 591, 594, 597, 600,
- 603, 606, 609, 612, 615, 618, 621, 624,
- 627, 630, 633, 636, 639, 642, 645, 648,
- 651, 654, 657, 660, 663, 666, 669, 672,
- 674, 676, 685, 695, 698, 702, 705, 708,
- 711, 714, 717, 720, 723, 726, 729, 732,
- 735, 738, 741, 744, 747, 750, 753, 756,
- 759, 762, 765, 768, 771, 774, 777, 780,
- 783, 786, 789, 792, 795, 798, 801, 804,
- 807, 810, 813, 816, 819, 822, 825, 829,
- 832, 835, 838, 841, 844, 847, 850, 853,
- 856, 859, 862, 865, 868, 871, 874, 877,
- 880, 883, 886, 889, 892, 895, 898, 901,
- 904, 907, 910, 913, 916, 919, 922, 925,
- 928, 931, 934, 937, 940, 943, 946, 949,
- 952, 955, 958, 961, 964, 967, 970, 973,
- 976, 979, 982, 985, 988, 991, 994, 997,
- 1000, 1003, 1006, 1009, 1012, 1015, 1018, 1021,
- 1024, 1027, 1030, 1032, 1034, 1036, 1038, 1040,
- 1042, 1044, 1046, 1048, 1050, 1052, 1061, 1070,
- 1073, 1077, 1080, 1083, 1086, 1089, 1092, 1095,
- 1098, 1101, 1104, 1107, 1110, 1113, 1116, 1119,
- 1122, 1125, 1128, 1131, 1134, 1137, 1140, 1143,
- 1146, 1149, 1152, 1155, 1158, 1161, 1164, 1167,
- 1170, 1173, 1176, 1179, 1182, 1185, 1188, 1191,
- 1194, 1197, 1200, 1204, 1207, 1210, 1213, 1216,
- 1219, 1222, 1225, 1228, 1231, 1234, 1237, 1240,
- 1243, 1246, 1249, 1252, 1255, 1258, 1261, 1264,
- 1267, 1270, 1273, 1276, 1279, 1282, 1285, 1288,
- 1291, 1294, 1297, 1300, 1303, 1306, 1309, 1312,
- 1315, 1318, 1321, 1324, 1327, 1330, 1333, 1336,
- 1339, 1342, 1345, 1348, 1351, 1354, 1357, 1360,
- 1363, 1366, 1369, 1372, 1375, 1378, 1381, 1383,
- 1385, 1387, 1389, 1391, 1393, 1395, 1397, 1399,
- 1401, 1403, 1405, 1407, 1409, 1411, 1413, 1415,
- 1417, 1419, 1421, 1423, 1425, 1427, 1429, 1431,
- 1439, 1445, 1448, 1451, 1454, 1457, 1460, 1463,
- 1466, 1469, 1472, 1475, 1478, 1481, 1484, 1487,
- 1490, 1493, 1496, 1499, 1502, 1505, 1508, 1511,
- 1514, 1517, 1520, 1523, 1526, 1529, 1532, 1536,
- 1539, 1542, 1545, 1548, 1551, 1554, 1557, 1560,
- 1563, 1566, 1569, 1572, 1575, 1578, 1581, 1584,
- 1587, 1590, 1593, 1596, 1599, 1602, 1605, 1608,
- 1611, 1614, 1617, 1620, 1623, 1626, 1629, 1632,
- 1635, 1638, 1641, 1644, 1647, 1650, 1653, 1656,
- 1659, 1662, 1665, 1668, 1671, 1674, 1677, 1680,
- 1683, 1686, 1689, 1692, 1695, 1698, 1701, 1704,
- 1707, 1710, 1713, 1716, 1719, 1722, 1724, 1726
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 581, 12, 12, 13, 23, 25, 9,
- 39, 42, 12, 0, 3, 52, 60, 62,
- 70, 109, 346, 462, 466, 0, 4, 0,
- 5, 48, 0, 6, 0, 7, 0, 8,
- 0, 9, 0, 10, 0, 12, 24, 11,
- 12, 24, 11, 2, 12, 12, 13, 23,
- 25, 9, 39, 42, 12, 0, 14, 0,
- 15, 0, 17, 16, 16, 17, 16, 16,
- 18, 18, 19, 18, 18, 18, 18, 19,
- 18, 18, 18, 18, 20, 18, 18, 18,
- 18, 21, 18, 18, 12, 22, 22, 0,
- 12, 22, 22, 0, 12, 24, 23, 12,
- 0, 26, 0, 27, 0, 28, 0, 29,
- 0, 30, 0, 31, 0, 32, 0, 33,
- 0, 34, 0, 35, 0, 36, 0, 37,
- 0, 38, 0, 583, 0, 0, 0, 0,
- 0, 40, 41, 12, 41, 41, 39, 40,
- 40, 12, 41, 39, 41, 0, 42, 43,
- 42, 0, 47, 46, 45, 43, 46, 44,
- 0, 45, 43, 44, 0, 45, 44, 47,
- 46, 45, 43, 46, 44, 2, 47, 47,
- 13, 23, 25, 9, 39, 42, 47, 0,
- 49, 0, 50, 0, 51, 0, 9, 0,
- 53, 0, 54, 0, 55, 0, 56, 0,
- 57, 0, 58, 0, 59, 0, 9, 0,
- 61, 0, 9, 0, 63, 0, 64, 0,
- 65, 0, 66, 0, 67, 0, 68, 0,
- 69, 0, 9, 0, 71, 0, 72, 0,
- 73, 0, 74, 0, 75, 0, 76, 0,
- 77, 0, 78, 0, 79, 0, 80, 0,
- 81, 0, 82, 0, 83, 0, 84, 0,
- 85, 0, 87, 86, 87, 86, 88, 87,
- 87, 12, 12, 87, 86, 89, 87, 86,
- 90, 87, 86, 91, 87, 86, 92, 87,
- 86, 93, 87, 86, 94, 87, 86, 95,
- 87, 86, 96, 87, 86, 97, 87, 86,
- 98, 87, 86, 99, 87, 86, 100, 87,
- 86, 101, 87, 86, 102, 87, 86, 103,
- 87, 86, 104, 87, 86, 105, 87, 86,
- 106, 87, 86, 107, 87, 86, 87, 108,
- 86, 2, 12, 12, 13, 23, 25, 9,
- 39, 42, 12, 0, 110, 0, 111, 0,
- 112, 0, 113, 0, 114, 0, 115, 0,
- 116, 0, 117, 0, 118, 0, 119, 0,
- 120, 0, 121, 0, 122, 0, 123, 0,
- 124, 231, 0, 125, 0, 126, 0, 127,
- 0, 128, 0, 129, 0, 130, 0, 131,
- 0, 132, 0, 133, 0, 134, 0, 135,
- 0, 136, 0, 137, 0, 138, 0, 139,
- 0, 140, 0, 141, 0, 142, 0, 143,
- 0, 144, 0, 145, 0, 146, 0, 147,
- 0, 149, 148, 149, 148, 150, 149, 149,
- 12, 217, 157, 12, 149, 148, 151, 162,
- 170, 172, 180, 195, 199, 149, 148, 152,
- 149, 148, 153, 158, 149, 148, 154, 149,
- 148, 155, 149, 148, 156, 149, 148, 157,
- 149, 148, 149, 108, 148, 159, 149, 148,
- 160, 149, 148, 161, 149, 148, 157, 149,
- 148, 163, 149, 148, 164, 149, 148, 165,
- 149, 148, 166, 149, 148, 167, 149, 148,
- 168, 149, 148, 169, 149, 148, 157, 149,
- 148, 171, 149, 148, 157, 149, 148, 173,
- 149, 148, 174, 149, 148, 175, 149, 148,
- 176, 149, 148, 177, 149, 148, 178, 149,
- 148, 179, 149, 148, 157, 149, 148, 181,
- 149, 148, 182, 149, 148, 183, 149, 148,
- 184, 149, 148, 185, 149, 148, 186, 149,
- 148, 187, 149, 148, 188, 149, 148, 189,
- 149, 148, 190, 149, 148, 191, 149, 148,
- 192, 149, 148, 193, 149, 148, 194, 149,
- 148, 149, 108, 148, 196, 149, 148, 197,
- 149, 148, 198, 149, 148, 170, 149, 148,
- 200, 149, 148, 201, 149, 148, 202, 149,
- 148, 203, 149, 148, 204, 149, 148, 205,
- 149, 148, 206, 149, 148, 207, 149, 148,
- 208, 149, 148, 209, 149, 148, 210, 149,
- 148, 211, 149, 148, 212, 149, 148, 213,
- 149, 148, 214, 149, 148, 215, 149, 148,
- 216, 149, 148, 194, 149, 148, 149, 218,
- 148, 149, 219, 148, 149, 220, 148, 149,
- 221, 148, 149, 222, 148, 149, 223, 148,
- 149, 224, 148, 149, 225, 148, 149, 226,
- 148, 149, 227, 148, 149, 228, 148, 149,
- 229, 148, 149, 230, 148, 149, 12, 148,
- 233, 232, 233, 232, 234, 233, 233, 12,
- 332, 241, 12, 233, 232, 235, 246, 254,
- 256, 264, 302, 310, 314, 233, 232, 236,
- 233, 232, 237, 242, 233, 232, 238, 233,
- 232, 239, 233, 232, 240, 233, 232, 241,
- 233, 232, 233, 108, 232, 243, 233, 232,
- 244, 233, 232, 245, 233, 232, 241, 233,
- 232, 247, 233, 232, 248, 233, 232, 249,
- 233, 232, 250, 233, 232, 251, 233, 232,
- 252, 233, 232, 253, 233, 232, 241, 233,
- 232, 255, 233, 232, 241, 233, 232, 257,
- 233, 232, 258, 233, 232, 259, 233, 232,
- 260, 233, 232, 261, 233, 232, 262, 233,
- 232, 263, 233, 232, 241, 233, 232, 265,
- 233, 232, 266, 233, 232, 267, 233, 232,
- 268, 233, 232, 269, 233, 232, 270, 233,
- 232, 271, 233, 232, 272, 233, 232, 273,
- 233, 232, 274, 233, 232, 275, 233, 232,
- 276, 233, 232, 277, 233, 232, 278, 233,
- 232, 233, 279, 108, 232, 280, 233, 232,
- 281, 233, 232, 282, 233, 232, 283, 233,
- 232, 284, 233, 232, 285, 233, 232, 286,
- 233, 232, 287, 233, 232, 288, 233, 232,
- 289, 233, 232, 290, 233, 232, 291, 233,
- 232, 292, 233, 232, 293, 233, 232, 294,
- 233, 232, 295, 233, 232, 296, 233, 232,
- 297, 233, 232, 298, 233, 232, 299, 233,
- 232, 300, 233, 232, 301, 233, 232, 233,
- 108, 232, 303, 233, 232, 304, 233, 232,
- 305, 233, 232, 306, 233, 232, 307, 233,
- 232, 308, 233, 232, 309, 233, 232, 301,
- 233, 232, 311, 233, 232, 312, 233, 232,
- 313, 233, 232, 254, 233, 232, 315, 233,
- 232, 316, 233, 232, 317, 233, 232, 318,
- 233, 232, 319, 233, 232, 320, 233, 232,
- 321, 233, 232, 322, 233, 232, 323, 233,
- 232, 324, 233, 232, 325, 233, 232, 326,
- 233, 232, 327, 233, 232, 328, 233, 232,
- 329, 233, 232, 330, 233, 232, 331, 233,
- 232, 301, 233, 232, 233, 333, 232, 233,
- 334, 232, 233, 335, 232, 233, 336, 232,
- 233, 337, 232, 233, 338, 232, 233, 339,
- 232, 233, 340, 232, 233, 341, 232, 233,
- 342, 232, 233, 343, 232, 233, 344, 232,
- 233, 345, 232, 233, 12, 232, 347, 0,
- 348, 0, 349, 0, 350, 0, 351, 0,
- 352, 0, 353, 0, 354, 0, 355, 0,
- 357, 356, 357, 356, 358, 357, 357, 12,
- 448, 365, 12, 357, 356, 359, 370, 378,
- 380, 388, 426, 430, 357, 356, 360, 357,
- 356, 361, 366, 357, 356, 362, 357, 356,
- 363, 357, 356, 364, 357, 356, 365, 357,
- 356, 357, 108, 356, 367, 357, 356, 368,
- 357, 356, 369, 357, 356, 365, 357, 356,
- 371, 357, 356, 372, 357, 356, 373, 357,
- 356, 374, 357, 356, 375, 357, 356, 376,
- 357, 356, 377, 357, 356, 365, 357, 356,
- 379, 357, 356, 365, 357, 356, 381, 357,
- 356, 382, 357, 356, 383, 357, 356, 384,
- 357, 356, 385, 357, 356, 386, 357, 356,
- 387, 357, 356, 365, 357, 356, 389, 357,
- 356, 390, 357, 356, 391, 357, 356, 392,
- 357, 356, 393, 357, 356, 394, 357, 356,
- 395, 357, 356, 396, 357, 356, 397, 357,
- 356, 398, 357, 356, 399, 357, 356, 400,
- 357, 356, 401, 357, 356, 402, 357, 356,
- 357, 403, 108, 356, 404, 357, 356, 405,
- 357, 356, 406, 357, 356, 407, 357, 356,
- 408, 357, 356, 409, 357, 356, 410, 357,
- 356, 411, 357, 356, 412, 357, 356, 413,
- 357, 356, 414, 357, 356, 415, 357, 356,
- 416, 357, 356, 417, 357, 356, 418, 357,
- 356, 419, 357, 356, 420, 357, 356, 421,
- 357, 356, 422, 357, 356, 423, 357, 356,
- 424, 357, 356, 425, 357, 356, 357, 108,
- 356, 427, 357, 356, 428, 357, 356, 429,
- 357, 356, 378, 357, 356, 431, 357, 356,
- 432, 357, 356, 433, 357, 356, 434, 357,
- 356, 435, 357, 356, 436, 357, 356, 437,
- 357, 356, 438, 357, 356, 439, 357, 356,
- 440, 357, 356, 441, 357, 356, 442, 357,
- 356, 443, 357, 356, 444, 357, 356, 445,
- 357, 356, 446, 357, 356, 447, 357, 356,
- 425, 357, 356, 357, 449, 356, 357, 450,
- 356, 357, 451, 356, 357, 452, 356, 357,
- 453, 356, 357, 454, 356, 357, 455, 356,
- 357, 456, 356, 357, 457, 356, 357, 458,
- 356, 357, 459, 356, 357, 460, 356, 357,
- 461, 356, 357, 12, 356, 463, 0, 464,
- 0, 465, 0, 60, 0, 467, 0, 468,
- 0, 469, 0, 470, 0, 471, 0, 472,
- 0, 473, 0, 474, 0, 475, 0, 476,
- 0, 477, 0, 478, 0, 479, 0, 480,
- 0, 481, 0, 482, 0, 483, 0, 484,
- 0, 485, 0, 487, 486, 487, 486, 488,
- 487, 487, 12, 567, 12, 487, 486, 489,
- 504, 541, 549, 487, 486, 490, 487, 486,
- 491, 487, 486, 492, 487, 486, 493, 487,
- 486, 494, 487, 486, 495, 487, 486, 496,
- 487, 486, 497, 487, 486, 498, 487, 486,
- 499, 487, 486, 500, 487, 486, 501, 487,
- 486, 502, 487, 486, 503, 487, 486, 487,
- 108, 486, 505, 487, 486, 506, 487, 486,
- 507, 487, 486, 508, 487, 486, 509, 487,
- 486, 510, 487, 486, 511, 487, 486, 512,
- 487, 486, 513, 487, 486, 514, 487, 486,
- 515, 487, 486, 516, 487, 486, 517, 487,
- 486, 518, 487, 486, 487, 519, 108, 486,
- 520, 487, 486, 521, 487, 486, 522, 487,
- 486, 523, 487, 486, 524, 487, 486, 525,
- 487, 486, 526, 487, 486, 527, 487, 486,
- 528, 487, 486, 529, 487, 486, 530, 487,
- 486, 531, 487, 486, 532, 487, 486, 533,
- 487, 486, 534, 487, 486, 535, 487, 486,
- 536, 487, 486, 537, 487, 486, 538, 487,
- 486, 539, 487, 486, 540, 487, 486, 503,
- 487, 486, 542, 487, 486, 543, 487, 486,
- 544, 487, 486, 545, 487, 486, 546, 487,
- 486, 547, 487, 486, 548, 487, 486, 503,
- 487, 486, 550, 487, 486, 551, 487, 486,
- 552, 487, 486, 553, 487, 486, 554, 487,
- 486, 555, 487, 486, 556, 487, 486, 557,
- 487, 486, 558, 487, 486, 559, 487, 486,
- 560, 487, 486, 561, 487, 486, 562, 487,
- 486, 563, 487, 486, 564, 487, 486, 565,
- 487, 486, 566, 487, 486, 503, 487, 486,
- 487, 568, 486, 487, 569, 486, 487, 570,
- 486, 487, 571, 486, 487, 572, 486, 487,
- 573, 486, 487, 574, 486, 487, 575, 486,
- 487, 576, 486, 487, 577, 486, 487, 578,
- 486, 487, 579, 486, 487, 580, 486, 487,
- 12, 486, 582, 0, 12, 0, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 29, 0, 54, 0, 5, 1, 0, 29,
- 1, 35, 0, 43, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 43, 0, 43,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 149, 126, 57,
- 110, 23, 0, 29, 54, 0, 5, 1,
- 0, 29, 1, 35, 0, 43, 0, 43,
- 0, 43, 139, 48, 9, 106, 11, 0,
- 134, 45, 45, 45, 3, 122, 33, 33,
- 33, 0, 122, 33, 33, 33, 0, 122,
- 33, 0, 33, 0, 102, 7, 7, 43,
- 54, 0, 0, 43, 114, 25, 0, 54,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 43, 43, 43,
- 43, 0, 27, 118, 27, 27, 51, 27,
- 0, 54, 0, 1, 0, 43, 0, 0,
- 0, 43, 54, 37, 37, 87, 37, 37,
- 43, 0, 39, 0, 43, 0, 0, 54,
- 0, 0, 39, 0, 0, 96, 54, 0,
- 93, 90, 41, 96, 90, 99, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 84, 54,
- 0, 81, 81, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 21,
- 0, 63, 130, 31, 60, 57, 31, 63,
- 57, 66, 31, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 84, 54, 0,
- 78, 33, 84, 78, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 19, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 19, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 19, 0,
- 144, 57, 54, 0, 84, 54, 0, 75,
- 33, 84, 75, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 17, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 17, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 17, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 17, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 84, 54, 0, 72,
- 33, 84, 72, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 15, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 15, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 15,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 15, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 144, 57, 54, 0, 84,
- 54, 0, 69, 33, 69, 0, 0, 0,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 13, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 13, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 0, 43, 0, 43, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 583;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/uz.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 1255 "ext/gherkin_lexer_uz/gherkin_lexer_uz.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/uz.c.rl"
-
-#line 1262 "ext/gherkin_lexer_uz/gherkin_lexer_uz.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/uz.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/uz.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/uz.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/uz.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/uz.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/uz.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/uz.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/uz.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/uz.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/uz.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/uz.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/uz.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/uz.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/uz.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/uz.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/uz.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/uz.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/uz.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/uz.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/uz.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/uz.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/uz.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/uz.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/uz.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1552 "ext/gherkin_lexer_uz/gherkin_lexer_uz.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/uz.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1615 "ext/gherkin_lexer_uz/gherkin_lexer_uz.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/uz.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_uz()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Uz", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_vi/extconf.rb
index dd8ff16,dd8ff16..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_vi/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_vi")
--have_library("c", "main")
--create_makefile("gherkin_lexer_vi")
diff --cc ext/gherkin_lexer_vi/gherkin_lexer_vi.c
index 92c7a59,7bf32af..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_vi/gherkin_lexer_vi.c
+++ /dev/null
@@@ -1,1458 -1,1458 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 18, 19, 20, 37, 38, 39,
- 41, 43, 48, 53, 58, 63, 67, 71,
- 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 91, 93, 98, 105, 110, 112, 113,
- 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 139, 141, 143, 145,
- 147, 149, 151, 153, 155, 157, 159, 161,
- 163, 165, 167, 169, 186, 187, 188, 189,
- 190, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 208, 210, 212, 214,
- 216, 218, 220, 222, 224, 226, 228, 230,
- 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 259, 261,
- 263, 265, 267, 269, 271, 273, 275, 277,
- 279, 281, 283, 285, 287, 289, 292, 294,
- 296, 298, 300, 302, 304, 306, 308, 310,
- 312, 314, 316, 318, 320, 322, 324, 326,
- 329, 331, 333, 335, 337, 339, 341, 343,
- 345, 347, 349, 352, 354, 356, 358, 361,
- 363, 365, 367, 369, 371, 373, 375, 377,
- 379, 381, 383, 385, 387, 389, 391, 393,
- 395, 397, 400, 403, 405, 407, 409, 411,
- 413, 415, 417, 419, 421, 423, 425, 426,
- 427, 428, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, 443,
- 444, 458, 460, 462, 464, 466, 468, 470,
- 472, 474, 476, 478, 480, 482, 484, 486,
- 488, 490, 492, 494, 496, 498, 500, 502,
- 505, 507, 509, 511, 513, 515, 517, 519,
- 521, 523, 525, 527, 529, 531, 533, 535,
- 537, 539, 542, 545, 547, 549, 551, 553,
- 555, 557, 559, 561, 563, 565, 567, 569,
- 571, 573, 575, 577, 579, 581, 583, 585,
- 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 604, 606, 607, 608, 609, 610, 611,
- 612, 613, 614, 615, 616, 617, 618, 619,
- 620, 621, 622, 623, 624, 625, 626, 627,
- 638, 640, 642, 644, 646, 648, 650, 652,
- 654, 656, 658, 660, 662, 664, 666, 668,
- 670, 672, 674, 676, 678, 680, 682, 684,
- 686, 688, 690, 692, 694, 696, 698, 700,
- 702, 704, 706, 708, 710, 713, 715, 717,
- 719, 721, 723, 725, 727, 729, 731, 733,
- 735, 737, 739, 741, 744, 746, 748, 750,
- 752, 754, 756, 758, 760, 762, 764, 766,
- 768, 770, 772, 775, 777, 779, 781, 783,
- 785, 787, 788, 789, 790, 791, 795, 801,
- 804, 806, 812, 829, 831, 833, 835, 837,
- 839, 841, 843, 846, 848, 850, 852, 854,
- 856, 858, 860, 862, 864, 866, 868, 871,
- 873, 875, 877, 880, 882, 884, 886, 888,
- 890, 892, 894, 896, 898, 900, 902, 904,
- 906, 908, 910, 912, 914, 916, 919, 922,
- 924, 926, 928, 930, 932, 934, 936, 938,
- 940, 942, 943, 944, 945, 946
- };
-
- static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 66, 67, 68, 75, 78, 84, 86, 124,
- 9, 13, -69, -65, 10, 32, 34, 35,
- 37, 42, 64, 66, 67, 68, 75, 78,
- 84, 86, 124, 9, 13, 34, 34, 10,
- 13, 10, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 9, 13, 10, 32, 9, 13, 10,
- 13, 10, 95, 70, 69, 65, 84, 85,
- 82, 69, 95, 69, 78, 68, 95, 37,
- 32, 10, 13, 10, 13, 13, 32, 64,
- 9, 10, 9, 10, 13, 32, 64, 11,
- 12, 10, 32, 64, 9, 13, -31, 105,
- -69, -111, 105, 32, 99, -31, -70, -93,
- 110, 104, 58, 10, 10, 10, 32, 35,
- 37, 42, 64, 66, 67, 75, 78, 84,
- 86, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 32, 34, 35, 37, 42, 64,
- 66, 67, 68, 75, 78, 84, 86, 124,
- 9, 13, 104, 111, -31, -69, -81, 32,
- 108, 105, -31, -69, -121, 117, 58, 10,
- 10, 10, 32, 35, 84, 124, 9, 13,
- -61, 10, -83, 10, 10, 110, 10, 104,
- 10, 32, 10, 110, -60, 10, -125, 10,
- 10, 110, 10, 103, 10, 58, -31, 104,
- -69, -117, 99, 104, 32, 98, -31, -70,
- -93, 110, 58, 10, 10, 10, 32, 35,
- 37, 42, 64, 66, 67, 75, 78, 84,
- 86, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, -31, 10, 105, -69, 10, -111, 10,
- 10, 105, 10, 32, 10, 99, -31, 10,
- -70, 10, -93, 10, 10, 110, 10, 104,
- 10, 58, -31, 10, -70, 10, -65, 10,
- 10, 116, 10, 104, 10, 111, -31, 10,
- 104, -69, 10, -117, 10, 10, 99, 10,
- 104, 10, 32, 10, 98, -31, 10, -70,
- 10, -93, 10, 10, 110, 10, 105, 117,
- 10, 110, 10, 103, 10, 32, 10, 107,
- 116, -31, 10, -61, 10, -84, 10, 10,
- 110, 10, 104, 10, 32, 10, 104, 10,
- 117, -31, 10, -69, 10, -111, 10, 10,
- 110, 10, 103, 10, 104, -58, 10, -80,
- 10, 10, 110, 10, 103, -61, 10, 104,
- -84, -83, 10, 10, 110, 10, 104, 10,
- 32, 10, 110, -60, 10, -125, 10, -61,
- 10, -84, 10, -61, 10, -96, 10, 105,
- 117, 110, 103, 32, 107, 116, -31, -69,
- -117, 99, 104, 32, 98, -31, -70, -93,
- 110, 58, 10, 10, 10, 32, 35, 37,
- 42, 64, 66, 67, 75, 78, 84, 86,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 32,
- 10, 105, -31, 10, -70, 10, -65, 10,
- 10, 116, 10, 104, 10, 111, -31, 10,
- 104, -69, 10, -117, 10, 10, 99, 10,
- 104, 10, 32, 10, 98, -31, 10, -70,
- 10, -93, 10, 10, 110, 10, 58, 10,
- 105, 10, 104, -58, 10, -80, 10, 10,
- 110, 10, 103, -61, 10, 104, -84, -83,
- 10, 10, 110, 10, 104, 10, 32, 10,
- 104, 10, 117, -31, 10, -69, 10, -111,
- 10, 10, 110, 10, 103, 10, 110, 10,
- 104, 10, 32, 10, 110, -60, 10, -125,
- 10, -61, 10, -84, 10, -61, 10, -96,
- 10, -61, -84, 110, 104, 32, 104, 117,
- -31, -69, -111, 110, 103, 104, -58, -80,
- 110, 103, -61, 104, -84, -83, 110, 104,
- 32, 104, 117, -31, -69, -111, 110, 103,
- 110, 104, 32, 110, -60, -125, 110, 103,
- 58, 10, 10, 10, 32, 35, 37, 64,
- 66, 68, 75, 84, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, -31, 10, -69, 10, -111, 10,
- 10, 105, 10, 32, 10, 99, -31, 10,
- -70, 10, -93, 10, 10, 110, 10, 104,
- 10, 58, -31, 10, -69, 10, -81, 10,
- 10, 32, 10, 108, 10, 105, -31, 10,
- -69, 10, -121, 10, 10, 117, -31, 10,
- 104, -69, 10, -117, 10, 10, 99, 10,
- 104, 10, 32, 10, 98, -31, 10, -70,
- 10, -93, 10, 10, 110, 10, 117, 10,
- 110, 10, 103, 10, 32, 10, 107, 116,
- -31, 10, -61, 10, -84, 10, 10, 110,
- 10, 104, 10, 32, 10, 104, 10, 117,
- -31, 10, -69, 10, -111, 10, 10, 110,
- 10, 103, -61, 10, -84, -83, 10, 10,
- 110, 10, 104, 10, 32, 10, 110, -60,
- 10, -125, 10, -61, -84, -61, -96, 32,
- 124, 9, 13, 10, 32, 92, 124, 9,
- 13, 10, 92, 124, 10, 92, 10, 32,
- 92, 124, 9, 13, 10, 32, 34, 35,
- 37, 42, 64, 66, 67, 68, 75, 78,
- 84, 86, 124, 9, 13, 10, 105, -31,
- 10, -70, 10, -65, 10, 10, 116, 10,
- 104, 10, 111, -31, 10, 104, -69, 10,
- -117, 10, 10, 99, 10, 104, 10, 32,
- 10, 98, -31, 10, -70, 10, -93, 10,
- 10, 110, 10, 58, 10, 105, 117, 10,
- 110, 10, 103, 10, 32, 10, 107, 116,
- -31, 10, -61, 10, -84, 10, 10, 110,
- 10, 104, 10, 32, 10, 104, 10, 117,
- -31, 10, -69, 10, -111, 10, 10, 110,
- 10, 103, 10, 104, -58, 10, -80, 10,
- 10, 110, 10, 103, -61, 10, 104, -84,
- -83, 10, 10, 110, 10, 104, 10, 32,
- 10, 110, -60, 10, -125, 10, -61, 10,
- -84, 10, -61, 10, -96, 10, -31, -70,
- -65, 116, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 16, 1, 1, 15, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 12, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 15, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 5, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 12, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 12, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 9,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 2, 4, 3,
- 2, 4, 15, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 1, 0,
- 0, 1, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 18, 20, 22, 39, 41, 43,
- 46, 49, 54, 59, 64, 69, 73, 77,
- 80, 82, 84, 86, 88, 90, 92, 94,
- 96, 98, 100, 102, 104, 106, 108, 110,
- 112, 115, 118, 123, 130, 135, 138, 140,
- 142, 144, 146, 148, 150, 152, 154, 156,
- 158, 160, 162, 164, 178, 181, 184, 187,
- 190, 193, 196, 199, 202, 205, 208, 211,
- 214, 217, 220, 223, 240, 242, 244, 246,
- 248, 250, 252, 254, 256, 258, 260, 262,
- 264, 266, 268, 270, 277, 280, 283, 286,
- 289, 292, 295, 298, 301, 304, 307, 310,
- 313, 315, 317, 319, 321, 323, 325, 327,
- 329, 331, 333, 335, 337, 339, 353, 356,
- 359, 362, 365, 368, 371, 374, 377, 380,
- 383, 386, 389, 392, 395, 398, 402, 405,
- 408, 411, 414, 417, 420, 423, 426, 429,
- 432, 435, 438, 441, 444, 447, 450, 453,
- 457, 460, 463, 466, 469, 472, 475, 478,
- 481, 484, 487, 491, 494, 497, 500, 504,
- 507, 510, 513, 516, 519, 522, 525, 528,
- 531, 534, 537, 540, 543, 546, 549, 552,
- 555, 558, 562, 566, 569, 572, 575, 578,
- 581, 584, 587, 590, 593, 596, 599, 601,
- 603, 605, 608, 610, 612, 614, 616, 618,
- 620, 622, 624, 626, 628, 630, 632, 634,
- 636, 650, 653, 656, 659, 662, 665, 668,
- 671, 674, 677, 680, 683, 686, 689, 692,
- 695, 698, 701, 704, 707, 710, 713, 716,
- 720, 723, 726, 729, 732, 735, 738, 741,
- 744, 747, 750, 753, 756, 759, 762, 765,
- 768, 771, 775, 779, 782, 785, 788, 791,
- 794, 797, 800, 803, 806, 809, 812, 815,
- 818, 821, 824, 827, 830, 833, 836, 839,
- 841, 843, 845, 847, 849, 851, 853, 855,
- 857, 859, 861, 863, 865, 867, 869, 871,
- 873, 876, 879, 881, 883, 885, 887, 889,
- 891, 893, 895, 897, 899, 901, 903, 905,
- 907, 909, 911, 913, 915, 917, 919, 921,
- 932, 935, 938, 941, 944, 947, 950, 953,
- 956, 959, 962, 965, 968, 971, 974, 977,
- 980, 983, 986, 989, 992, 995, 998, 1001,
- 1004, 1007, 1010, 1013, 1016, 1019, 1022, 1025,
- 1028, 1031, 1034, 1037, 1040, 1044, 1047, 1050,
- 1053, 1056, 1059, 1062, 1065, 1068, 1071, 1074,
- 1077, 1080, 1083, 1086, 1090, 1093, 1096, 1099,
- 1102, 1105, 1108, 1111, 1114, 1117, 1120, 1123,
- 1126, 1129, 1132, 1136, 1139, 1142, 1145, 1148,
- 1151, 1154, 1156, 1158, 1160, 1162, 1166, 1172,
- 1176, 1179, 1185, 1202, 1205, 1208, 1211, 1214,
- 1217, 1220, 1223, 1227, 1230, 1233, 1236, 1239,
- 1242, 1245, 1248, 1251, 1254, 1257, 1260, 1264,
- 1267, 1270, 1273, 1277, 1280, 1283, 1286, 1289,
- 1292, 1295, 1298, 1301, 1304, 1307, 1310, 1313,
- 1316, 1319, 1322, 1325, 1328, 1331, 1335, 1339,
- 1342, 1345, 1348, 1351, 1354, 1357, 1360, 1363,
- 1366, 1369, 1371, 1373, 1375, 1377
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 68, 70, 95, 283, 288, 387, 389,
- 4, 0, 3, 0, 4, 0, 4, 4,
- 5, 15, 17, 31, 34, 37, 68, 70,
- 95, 283, 288, 387, 389, 4, 0, 6,
- 0, 7, 0, 9, 8, 8, 9, 8,
- 8, 10, 10, 11, 10, 10, 10, 10,
- 11, 10, 10, 10, 10, 12, 10, 10,
- 10, 10, 13, 10, 10, 4, 14, 14,
- 0, 4, 14, 14, 0, 4, 16, 15,
- 4, 0, 18, 0, 19, 0, 20, 0,
- 21, 0, 22, 0, 23, 0, 24, 0,
- 25, 0, 26, 0, 27, 0, 28, 0,
- 29, 0, 30, 0, 453, 0, 32, 0,
- 4, 16, 33, 4, 16, 33, 0, 0,
- 0, 0, 35, 36, 4, 36, 36, 34,
- 35, 35, 4, 36, 34, 36, 0, 38,
- 449, 0, 39, 0, 40, 0, 41, 0,
- 42, 0, 43, 0, 44, 0, 45, 0,
- 46, 0, 47, 0, 48, 0, 49, 0,
- 51, 50, 51, 50, 51, 51, 4, 52,
- 66, 4, 395, 400, 402, 432, 437, 447,
- 51, 50, 51, 53, 50, 51, 54, 50,
- 51, 55, 50, 51, 56, 50, 51, 57,
- 50, 51, 58, 50, 51, 59, 50, 51,
- 60, 50, 51, 61, 50, 51, 62, 50,
- 51, 63, 50, 51, 64, 50, 51, 65,
- 50, 51, 4, 50, 51, 67, 50, 4,
- 4, 5, 15, 17, 31, 34, 37, 68,
- 70, 95, 283, 288, 387, 389, 4, 0,
- 69, 0, 31, 0, 71, 0, 72, 0,
- 73, 0, 74, 0, 75, 0, 76, 0,
- 77, 0, 78, 0, 79, 0, 80, 0,
- 81, 0, 83, 82, 83, 82, 83, 83,
- 4, 84, 4, 83, 82, 85, 83, 82,
- 86, 83, 82, 83, 87, 82, 83, 88,
- 82, 83, 89, 82, 83, 90, 82, 91,
- 83, 82, 92, 83, 82, 83, 93, 82,
- 83, 94, 82, 83, 67, 82, 96, 189,
- 0, 97, 0, 98, 0, 99, 0, 100,
- 0, 101, 0, 102, 0, 103, 0, 104,
- 0, 105, 0, 106, 0, 107, 0, 109,
- 108, 109, 108, 109, 109, 4, 110, 124,
- 4, 125, 141, 143, 172, 177, 187, 109,
- 108, 109, 111, 108, 109, 112, 108, 109,
- 113, 108, 109, 114, 108, 109, 115, 108,
- 109, 116, 108, 109, 117, 108, 109, 118,
- 108, 109, 119, 108, 109, 120, 108, 109,
- 121, 108, 109, 122, 108, 109, 123, 108,
- 109, 4, 108, 109, 67, 108, 126, 109,
- 137, 108, 127, 109, 108, 128, 109, 108,
- 109, 129, 108, 109, 130, 108, 109, 131,
- 108, 132, 109, 108, 133, 109, 108, 134,
- 109, 108, 109, 135, 108, 109, 136, 108,
- 109, 67, 108, 138, 109, 108, 139, 109,
- 108, 140, 109, 108, 109, 124, 108, 109,
- 142, 108, 109, 124, 108, 144, 109, 154,
- 108, 145, 109, 108, 146, 109, 108, 109,
- 147, 108, 109, 148, 108, 109, 149, 108,
- 109, 150, 108, 151, 109, 108, 152, 109,
- 108, 153, 109, 108, 109, 136, 108, 109,
- 124, 155, 108, 109, 156, 108, 109, 157,
- 108, 109, 158, 108, 109, 159, 160, 108,
- 144, 109, 108, 161, 109, 108, 162, 109,
- 108, 109, 163, 108, 109, 164, 108, 109,
- 165, 108, 109, 166, 108, 109, 167, 108,
- 168, 109, 108, 169, 109, 108, 170, 109,
- 108, 109, 171, 108, 109, 136, 108, 109,
- 173, 108, 174, 109, 108, 175, 109, 108,
- 109, 176, 108, 109, 124, 108, 178, 109,
- 185, 108, 162, 179, 109, 108, 109, 180,
- 108, 109, 181, 108, 109, 182, 108, 109,
- 183, 108, 184, 109, 108, 170, 109, 108,
- 186, 109, 108, 124, 109, 108, 188, 109,
- 108, 124, 109, 108, 31, 190, 0, 191,
- 0, 192, 0, 193, 0, 194, 271, 0,
- 195, 0, 196, 0, 197, 0, 198, 0,
- 199, 0, 200, 0, 201, 0, 202, 0,
- 203, 0, 204, 0, 205, 0, 206, 0,
- 208, 207, 208, 207, 208, 208, 4, 209,
- 223, 4, 224, 229, 231, 244, 249, 269,
- 208, 207, 208, 210, 207, 208, 211, 207,
- 208, 212, 207, 208, 213, 207, 208, 214,
- 207, 208, 215, 207, 208, 216, 207, 208,
- 217, 207, 208, 218, 207, 208, 219, 207,
- 208, 220, 207, 208, 221, 207, 208, 222,
- 207, 208, 4, 207, 208, 67, 207, 208,
- 225, 207, 226, 208, 207, 227, 208, 207,
- 228, 208, 207, 208, 223, 207, 208, 230,
- 207, 208, 223, 207, 232, 208, 243, 207,
- 233, 208, 207, 234, 208, 207, 208, 235,
- 207, 208, 236, 207, 208, 237, 207, 208,
- 238, 207, 239, 208, 207, 240, 208, 207,
- 241, 208, 207, 208, 242, 207, 208, 67,
- 207, 208, 223, 207, 208, 245, 207, 246,
- 208, 207, 247, 208, 207, 208, 248, 207,
- 208, 223, 207, 250, 208, 267, 207, 251,
- 261, 208, 207, 208, 252, 207, 208, 253,
- 207, 208, 254, 207, 208, 255, 207, 208,
- 256, 207, 257, 208, 207, 258, 208, 207,
- 259, 208, 207, 208, 260, 207, 208, 242,
- 207, 208, 262, 207, 208, 263, 207, 208,
- 264, 207, 208, 265, 207, 266, 208, 207,
- 259, 208, 207, 268, 208, 207, 223, 208,
- 207, 270, 208, 207, 223, 208, 207, 272,
- 0, 273, 0, 274, 0, 275, 0, 276,
- 0, 277, 0, 278, 0, 279, 0, 280,
- 0, 281, 0, 282, 0, 205, 0, 284,
- 0, 285, 0, 286, 0, 287, 0, 31,
- 0, 289, 385, 0, 290, 300, 0, 291,
- 0, 292, 0, 293, 0, 294, 0, 295,
- 0, 296, 0, 297, 0, 298, 0, 299,
- 0, 106, 0, 301, 0, 302, 0, 303,
- 0, 304, 0, 305, 0, 306, 0, 307,
- 0, 308, 0, 309, 0, 311, 310, 311,
- 310, 311, 311, 4, 312, 4, 326, 338,
- 348, 377, 311, 310, 311, 313, 310, 311,
- 314, 310, 311, 315, 310, 311, 316, 310,
- 311, 317, 310, 311, 318, 310, 311, 319,
- 310, 311, 320, 310, 311, 321, 310, 311,
- 322, 310, 311, 323, 310, 311, 324, 310,
- 311, 325, 310, 311, 4, 310, 327, 311,
- 310, 328, 311, 310, 329, 311, 310, 311,
- 330, 310, 311, 331, 310, 311, 332, 310,
- 333, 311, 310, 334, 311, 310, 335, 311,
- 310, 311, 336, 310, 311, 337, 310, 311,
- 67, 310, 339, 311, 310, 340, 311, 310,
- 341, 311, 310, 311, 342, 310, 311, 343,
- 310, 311, 344, 310, 345, 311, 310, 346,
- 311, 310, 347, 311, 310, 311, 337, 310,
- 349, 311, 359, 310, 350, 311, 310, 351,
- 311, 310, 311, 352, 310, 311, 353, 310,
- 311, 354, 310, 311, 355, 310, 356, 311,
- 310, 357, 311, 310, 358, 311, 310, 311,
- 337, 310, 311, 360, 310, 311, 361, 310,
- 311, 362, 310, 311, 363, 310, 311, 364,
- 365, 310, 349, 311, 310, 366, 311, 310,
- 367, 311, 310, 311, 368, 310, 311, 369,
- 310, 311, 370, 310, 311, 371, 310, 311,
- 372, 310, 373, 311, 310, 374, 311, 310,
- 375, 311, 310, 311, 376, 310, 311, 337,
- 310, 378, 311, 310, 367, 379, 311, 310,
- 311, 380, 310, 311, 381, 310, 311, 382,
- 310, 311, 383, 310, 384, 311, 310, 375,
- 311, 310, 386, 0, 31, 0, 388, 0,
- 31, 0, 389, 390, 389, 0, 394, 393,
- 392, 390, 393, 391, 0, 392, 390, 391,
- 0, 392, 391, 394, 393, 392, 390, 393,
- 391, 394, 394, 5, 15, 17, 31, 34,
- 37, 68, 70, 95, 283, 288, 387, 389,
- 394, 0, 51, 396, 50, 397, 51, 50,
- 398, 51, 50, 399, 51, 50, 51, 66,
- 50, 51, 401, 50, 51, 66, 50, 403,
- 51, 414, 50, 404, 51, 50, 405, 51,
- 50, 51, 406, 50, 51, 407, 50, 51,
- 408, 50, 51, 409, 50, 410, 51, 50,
- 411, 51, 50, 412, 51, 50, 51, 413,
- 50, 51, 67, 50, 51, 66, 415, 50,
- 51, 416, 50, 51, 417, 50, 51, 418,
- 50, 51, 419, 420, 50, 403, 51, 50,
- 421, 51, 50, 422, 51, 50, 51, 423,
- 50, 51, 424, 50, 51, 425, 50, 51,
- 426, 50, 51, 427, 50, 428, 51, 50,
- 429, 51, 50, 430, 51, 50, 51, 431,
- 50, 51, 413, 50, 51, 433, 50, 434,
- 51, 50, 435, 51, 50, 51, 436, 50,
- 51, 66, 50, 438, 51, 445, 50, 422,
- 439, 51, 50, 51, 440, 50, 51, 441,
- 50, 51, 442, 50, 51, 443, 50, 444,
- 51, 50, 430, 51, 50, 446, 51, 50,
- 66, 51, 50, 448, 51, 50, 66, 51,
- 50, 450, 0, 451, 0, 452, 0, 31,
- 0, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 35,
- 0, 43, 0, 43, 0, 43, 54, 0,
- 5, 1, 0, 29, 1, 29, 29, 29,
- 29, 29, 29, 29, 35, 0, 43, 0,
- 43, 0, 43, 139, 48, 9, 106, 11,
- 0, 134, 45, 45, 45, 3, 122, 33,
- 33, 33, 0, 122, 33, 33, 33, 0,
- 122, 33, 0, 33, 0, 102, 7, 7,
- 43, 54, 0, 0, 43, 114, 25, 0,
- 54, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 149, 126, 57, 110, 23, 0, 43, 43,
- 43, 43, 0, 27, 118, 27, 27, 51,
- 27, 0, 54, 0, 1, 0, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 72, 33,
- 84, 72, 84, 84, 84, 84, 84, 84,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 15, 0, 54, 15, 0, 130,
- 31, 60, 57, 31, 63, 57, 63, 63,
- 63, 63, 63, 63, 63, 66, 31, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 81, 84, 81, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 21, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 75, 33, 84,
- 75, 84, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 54, 17, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 78, 33,
- 84, 78, 84, 84, 84, 84, 84, 84,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 19, 0, 54, 19, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 19,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 69, 33, 69, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 13, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0, 0, 43, 54, 37,
- 37, 87, 37, 37, 43, 0, 39, 0,
- 43, 0, 0, 54, 0, 0, 39, 0,
- 0, 54, 0, 93, 90, 41, 96, 90,
- 96, 96, 96, 96, 96, 96, 96, 99,
- 0, 43, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 15, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 453;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 1062 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
-
- #line 1069 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1359 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1422 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/vi.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_vi()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Vi", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/vi.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/vi.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 18, 19, 20, 37, 38, 39,
- 41, 43, 48, 53, 58, 63, 67, 71,
- 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 91, 93, 98, 105, 110, 112, 113,
- 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 139, 141, 143, 145,
- 147, 149, 151, 153, 155, 157, 159, 161,
- 163, 165, 167, 169, 186, 187, 188, 189,
- 190, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 208, 210, 212, 214,
- 216, 218, 220, 222, 224, 226, 228, 230,
- 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 259, 261,
- 263, 265, 267, 269, 271, 273, 275, 277,
- 279, 281, 283, 285, 287, 289, 292, 294,
- 296, 298, 300, 302, 304, 306, 308, 310,
- 312, 314, 316, 318, 320, 322, 324, 326,
- 329, 331, 333, 335, 337, 339, 341, 343,
- 345, 347, 349, 352, 354, 356, 358, 361,
- 363, 365, 367, 369, 371, 373, 375, 377,
- 379, 381, 383, 385, 387, 389, 391, 393,
- 395, 397, 400, 403, 405, 407, 409, 411,
- 413, 415, 417, 419, 421, 423, 425, 426,
- 427, 428, 430, 431, 432, 433, 434, 435,
- 436, 437, 438, 439, 440, 441, 442, 443,
- 444, 458, 460, 462, 464, 466, 468, 470,
- 472, 474, 476, 478, 480, 482, 484, 486,
- 488, 490, 492, 494, 496, 498, 500, 502,
- 505, 507, 509, 511, 513, 515, 517, 519,
- 521, 523, 525, 527, 529, 531, 533, 535,
- 537, 539, 542, 545, 547, 549, 551, 553,
- 555, 557, 559, 561, 563, 565, 567, 569,
- 571, 573, 575, 577, 579, 581, 583, 585,
- 586, 587, 588, 589, 590, 591, 592, 593,
- 594, 595, 596, 597, 598, 599, 600, 601,
- 602, 604, 606, 607, 608, 609, 610, 611,
- 612, 613, 614, 615, 616, 617, 618, 619,
- 620, 621, 622, 623, 624, 625, 626, 627,
- 638, 640, 642, 644, 646, 648, 650, 652,
- 654, 656, 658, 660, 662, 664, 666, 668,
- 670, 672, 674, 676, 678, 680, 682, 684,
- 686, 688, 690, 692, 694, 696, 698, 700,
- 702, 704, 706, 708, 710, 713, 715, 717,
- 719, 721, 723, 725, 727, 729, 731, 733,
- 735, 737, 739, 741, 744, 746, 748, 750,
- 752, 754, 756, 758, 760, 762, 764, 766,
- 768, 770, 772, 775, 777, 779, 781, 783,
- 785, 787, 788, 789, 790, 791, 795, 801,
- 804, 806, 812, 829, 831, 833, 835, 837,
- 839, 841, 843, 846, 848, 850, 852, 854,
- 856, 858, 860, 862, 864, 866, 868, 871,
- 873, 875, 877, 880, 882, 884, 886, 888,
- 890, 892, 894, 896, 898, 900, 902, 904,
- 906, 908, 910, 912, 914, 916, 919, 922,
- 924, 926, 928, 930, 932, 934, 936, 938,
- 940, 942, 943, 944, 945, 946
-};
-
-static const char _lexer_trans_keys[] = {
- -17, 10, 32, 34, 35, 37, 42, 64,
- 66, 67, 68, 75, 78, 84, 86, 124,
- 9, 13, -69, -65, 10, 32, 34, 35,
- 37, 42, 64, 66, 67, 68, 75, 78,
- 84, 86, 124, 9, 13, 34, 34, 10,
- 13, 10, 13, 10, 32, 34, 9, 13,
- 10, 32, 34, 9, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 9, 13, 10, 32, 9, 13, 10,
- 13, 10, 95, 70, 69, 65, 84, 85,
- 82, 69, 95, 69, 78, 68, 95, 37,
- 32, 10, 13, 10, 13, 13, 32, 64,
- 9, 10, 9, 10, 13, 32, 64, 11,
- 12, 10, 32, 64, 9, 13, -31, 105,
- -69, -111, 105, 32, 99, -31, -70, -93,
- 110, 104, 58, 10, 10, 10, 32, 35,
- 37, 42, 64, 66, 67, 75, 78, 84,
- 86, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, 10, 32, 34, 35, 37, 42, 64,
- 66, 67, 68, 75, 78, 84, 86, 124,
- 9, 13, 104, 111, -31, -69, -81, 32,
- 108, 105, -31, -69, -121, 117, 58, 10,
- 10, 10, 32, 35, 84, 124, 9, 13,
- -61, 10, -83, 10, 10, 110, 10, 104,
- 10, 32, 10, 110, -60, 10, -125, 10,
- 10, 110, 10, 103, 10, 58, -31, 104,
- -69, -117, 99, 104, 32, 98, -31, -70,
- -93, 110, 58, 10, 10, 10, 32, 35,
- 37, 42, 64, 66, 67, 75, 78, 84,
- 86, 9, 13, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, -31, 10, 105, -69, 10, -111, 10,
- 10, 105, 10, 32, 10, 99, -31, 10,
- -70, 10, -93, 10, 10, 110, 10, 104,
- 10, 58, -31, 10, -70, 10, -65, 10,
- 10, 116, 10, 104, 10, 111, -31, 10,
- 104, -69, 10, -117, 10, 10, 99, 10,
- 104, 10, 32, 10, 98, -31, 10, -70,
- 10, -93, 10, 10, 110, 10, 105, 117,
- 10, 110, 10, 103, 10, 32, 10, 107,
- 116, -31, 10, -61, 10, -84, 10, 10,
- 110, 10, 104, 10, 32, 10, 104, 10,
- 117, -31, 10, -69, 10, -111, 10, 10,
- 110, 10, 103, 10, 104, -58, 10, -80,
- 10, 10, 110, 10, 103, -61, 10, 104,
- -84, -83, 10, 10, 110, 10, 104, 10,
- 32, 10, 110, -60, 10, -125, 10, -61,
- 10, -84, 10, -61, 10, -96, 10, 105,
- 117, 110, 103, 32, 107, 116, -31, -69,
- -117, 99, 104, 32, 98, -31, -70, -93,
- 110, 58, 10, 10, 10, 32, 35, 37,
- 42, 64, 66, 67, 75, 78, 84, 86,
- 9, 13, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 32,
- 10, 105, -31, 10, -70, 10, -65, 10,
- 10, 116, 10, 104, 10, 111, -31, 10,
- 104, -69, 10, -117, 10, 10, 99, 10,
- 104, 10, 32, 10, 98, -31, 10, -70,
- 10, -93, 10, 10, 110, 10, 58, 10,
- 105, 10, 104, -58, 10, -80, 10, 10,
- 110, 10, 103, -61, 10, 104, -84, -83,
- 10, 10, 110, 10, 104, 10, 32, 10,
- 104, 10, 117, -31, 10, -69, 10, -111,
- 10, 10, 110, 10, 103, 10, 110, 10,
- 104, 10, 32, 10, 110, -60, 10, -125,
- 10, -61, 10, -84, 10, -61, 10, -96,
- 10, -61, -84, 110, 104, 32, 104, 117,
- -31, -69, -111, 110, 103, 104, -58, -80,
- 110, 103, -61, 104, -84, -83, 110, 104,
- 32, 104, 117, -31, -69, -111, 110, 103,
- 110, 104, 32, 110, -60, -125, 110, 103,
- 58, 10, 10, 10, 32, 35, 37, 64,
- 66, 68, 75, 84, 9, 13, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, -31, 10, -69, 10, -111, 10,
- 10, 105, 10, 32, 10, 99, -31, 10,
- -70, 10, -93, 10, 10, 110, 10, 104,
- 10, 58, -31, 10, -69, 10, -81, 10,
- 10, 32, 10, 108, 10, 105, -31, 10,
- -69, 10, -121, 10, 10, 117, -31, 10,
- 104, -69, 10, -117, 10, 10, 99, 10,
- 104, 10, 32, 10, 98, -31, 10, -70,
- 10, -93, 10, 10, 110, 10, 117, 10,
- 110, 10, 103, 10, 32, 10, 107, 116,
- -31, 10, -61, 10, -84, 10, 10, 110,
- 10, 104, 10, 32, 10, 104, 10, 117,
- -31, 10, -69, 10, -111, 10, 10, 110,
- 10, 103, -61, 10, -84, -83, 10, 10,
- 110, 10, 104, 10, 32, 10, 110, -60,
- 10, -125, 10, -61, -84, -61, -96, 32,
- 124, 9, 13, 10, 32, 92, 124, 9,
- 13, 10, 92, 124, 10, 92, 10, 32,
- 92, 124, 9, 13, 10, 32, 34, 35,
- 37, 42, 64, 66, 67, 68, 75, 78,
- 84, 86, 124, 9, 13, 10, 105, -31,
- 10, -70, 10, -65, 10, 10, 116, 10,
- 104, 10, 111, -31, 10, 104, -69, 10,
- -117, 10, 10, 99, 10, 104, 10, 32,
- 10, 98, -31, 10, -70, 10, -93, 10,
- 10, 110, 10, 58, 10, 105, 117, 10,
- 110, 10, 103, 10, 32, 10, 107, 116,
- -31, 10, -61, 10, -84, 10, 10, 110,
- 10, 104, 10, 32, 10, 104, 10, 117,
- -31, 10, -69, 10, -111, 10, 10, 110,
- 10, 103, 10, 104, -58, 10, -80, 10,
- 10, 110, 10, 103, -61, 10, 104, -84,
- -83, 10, 10, 110, 10, 104, 10, 32,
- 10, 110, -60, 10, -125, 10, -61, 10,
- -84, 10, -61, 10, -96, 10, -31, -70,
- -65, 116, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 16, 1, 1, 15, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 3, 5, 3, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 12, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 15, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 5, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 12, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1,
- 1, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 12, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 9,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 2, 4, 3,
- 2, 4, 15, 2, 2, 2, 2, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 2, 2, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 3, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 1, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 1, 0,
- 0, 1, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 18, 20, 22, 39, 41, 43,
- 46, 49, 54, 59, 64, 69, 73, 77,
- 80, 82, 84, 86, 88, 90, 92, 94,
- 96, 98, 100, 102, 104, 106, 108, 110,
- 112, 115, 118, 123, 130, 135, 138, 140,
- 142, 144, 146, 148, 150, 152, 154, 156,
- 158, 160, 162, 164, 178, 181, 184, 187,
- 190, 193, 196, 199, 202, 205, 208, 211,
- 214, 217, 220, 223, 240, 242, 244, 246,
- 248, 250, 252, 254, 256, 258, 260, 262,
- 264, 266, 268, 270, 277, 280, 283, 286,
- 289, 292, 295, 298, 301, 304, 307, 310,
- 313, 315, 317, 319, 321, 323, 325, 327,
- 329, 331, 333, 335, 337, 339, 353, 356,
- 359, 362, 365, 368, 371, 374, 377, 380,
- 383, 386, 389, 392, 395, 398, 402, 405,
- 408, 411, 414, 417, 420, 423, 426, 429,
- 432, 435, 438, 441, 444, 447, 450, 453,
- 457, 460, 463, 466, 469, 472, 475, 478,
- 481, 484, 487, 491, 494, 497, 500, 504,
- 507, 510, 513, 516, 519, 522, 525, 528,
- 531, 534, 537, 540, 543, 546, 549, 552,
- 555, 558, 562, 566, 569, 572, 575, 578,
- 581, 584, 587, 590, 593, 596, 599, 601,
- 603, 605, 608, 610, 612, 614, 616, 618,
- 620, 622, 624, 626, 628, 630, 632, 634,
- 636, 650, 653, 656, 659, 662, 665, 668,
- 671, 674, 677, 680, 683, 686, 689, 692,
- 695, 698, 701, 704, 707, 710, 713, 716,
- 720, 723, 726, 729, 732, 735, 738, 741,
- 744, 747, 750, 753, 756, 759, 762, 765,
- 768, 771, 775, 779, 782, 785, 788, 791,
- 794, 797, 800, 803, 806, 809, 812, 815,
- 818, 821, 824, 827, 830, 833, 836, 839,
- 841, 843, 845, 847, 849, 851, 853, 855,
- 857, 859, 861, 863, 865, 867, 869, 871,
- 873, 876, 879, 881, 883, 885, 887, 889,
- 891, 893, 895, 897, 899, 901, 903, 905,
- 907, 909, 911, 913, 915, 917, 919, 921,
- 932, 935, 938, 941, 944, 947, 950, 953,
- 956, 959, 962, 965, 968, 971, 974, 977,
- 980, 983, 986, 989, 992, 995, 998, 1001,
- 1004, 1007, 1010, 1013, 1016, 1019, 1022, 1025,
- 1028, 1031, 1034, 1037, 1040, 1044, 1047, 1050,
- 1053, 1056, 1059, 1062, 1065, 1068, 1071, 1074,
- 1077, 1080, 1083, 1086, 1090, 1093, 1096, 1099,
- 1102, 1105, 1108, 1111, 1114, 1117, 1120, 1123,
- 1126, 1129, 1132, 1136, 1139, 1142, 1145, 1148,
- 1151, 1154, 1156, 1158, 1160, 1162, 1166, 1172,
- 1176, 1179, 1185, 1202, 1205, 1208, 1211, 1214,
- 1217, 1220, 1223, 1227, 1230, 1233, 1236, 1239,
- 1242, 1245, 1248, 1251, 1254, 1257, 1260, 1264,
- 1267, 1270, 1273, 1277, 1280, 1283, 1286, 1289,
- 1292, 1295, 1298, 1301, 1304, 1307, 1310, 1313,
- 1316, 1319, 1322, 1325, 1328, 1331, 1335, 1339,
- 1342, 1345, 1348, 1351, 1354, 1357, 1360, 1363,
- 1366, 1369, 1371, 1373, 1375, 1377
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 4, 4, 5, 15, 17, 31, 34,
- 37, 68, 70, 95, 283, 288, 387, 389,
- 4, 0, 3, 0, 4, 0, 4, 4,
- 5, 15, 17, 31, 34, 37, 68, 70,
- 95, 283, 288, 387, 389, 4, 0, 6,
- 0, 7, 0, 9, 8, 8, 9, 8,
- 8, 10, 10, 11, 10, 10, 10, 10,
- 11, 10, 10, 10, 10, 12, 10, 10,
- 10, 10, 13, 10, 10, 4, 14, 14,
- 0, 4, 14, 14, 0, 4, 16, 15,
- 4, 0, 18, 0, 19, 0, 20, 0,
- 21, 0, 22, 0, 23, 0, 24, 0,
- 25, 0, 26, 0, 27, 0, 28, 0,
- 29, 0, 30, 0, 453, 0, 32, 0,
- 4, 16, 33, 4, 16, 33, 0, 0,
- 0, 0, 35, 36, 4, 36, 36, 34,
- 35, 35, 4, 36, 34, 36, 0, 38,
- 449, 0, 39, 0, 40, 0, 41, 0,
- 42, 0, 43, 0, 44, 0, 45, 0,
- 46, 0, 47, 0, 48, 0, 49, 0,
- 51, 50, 51, 50, 51, 51, 4, 52,
- 66, 4, 395, 400, 402, 432, 437, 447,
- 51, 50, 51, 53, 50, 51, 54, 50,
- 51, 55, 50, 51, 56, 50, 51, 57,
- 50, 51, 58, 50, 51, 59, 50, 51,
- 60, 50, 51, 61, 50, 51, 62, 50,
- 51, 63, 50, 51, 64, 50, 51, 65,
- 50, 51, 4, 50, 51, 67, 50, 4,
- 4, 5, 15, 17, 31, 34, 37, 68,
- 70, 95, 283, 288, 387, 389, 4, 0,
- 69, 0, 31, 0, 71, 0, 72, 0,
- 73, 0, 74, 0, 75, 0, 76, 0,
- 77, 0, 78, 0, 79, 0, 80, 0,
- 81, 0, 83, 82, 83, 82, 83, 83,
- 4, 84, 4, 83, 82, 85, 83, 82,
- 86, 83, 82, 83, 87, 82, 83, 88,
- 82, 83, 89, 82, 83, 90, 82, 91,
- 83, 82, 92, 83, 82, 83, 93, 82,
- 83, 94, 82, 83, 67, 82, 96, 189,
- 0, 97, 0, 98, 0, 99, 0, 100,
- 0, 101, 0, 102, 0, 103, 0, 104,
- 0, 105, 0, 106, 0, 107, 0, 109,
- 108, 109, 108, 109, 109, 4, 110, 124,
- 4, 125, 141, 143, 172, 177, 187, 109,
- 108, 109, 111, 108, 109, 112, 108, 109,
- 113, 108, 109, 114, 108, 109, 115, 108,
- 109, 116, 108, 109, 117, 108, 109, 118,
- 108, 109, 119, 108, 109, 120, 108, 109,
- 121, 108, 109, 122, 108, 109, 123, 108,
- 109, 4, 108, 109, 67, 108, 126, 109,
- 137, 108, 127, 109, 108, 128, 109, 108,
- 109, 129, 108, 109, 130, 108, 109, 131,
- 108, 132, 109, 108, 133, 109, 108, 134,
- 109, 108, 109, 135, 108, 109, 136, 108,
- 109, 67, 108, 138, 109, 108, 139, 109,
- 108, 140, 109, 108, 109, 124, 108, 109,
- 142, 108, 109, 124, 108, 144, 109, 154,
- 108, 145, 109, 108, 146, 109, 108, 109,
- 147, 108, 109, 148, 108, 109, 149, 108,
- 109, 150, 108, 151, 109, 108, 152, 109,
- 108, 153, 109, 108, 109, 136, 108, 109,
- 124, 155, 108, 109, 156, 108, 109, 157,
- 108, 109, 158, 108, 109, 159, 160, 108,
- 144, 109, 108, 161, 109, 108, 162, 109,
- 108, 109, 163, 108, 109, 164, 108, 109,
- 165, 108, 109, 166, 108, 109, 167, 108,
- 168, 109, 108, 169, 109, 108, 170, 109,
- 108, 109, 171, 108, 109, 136, 108, 109,
- 173, 108, 174, 109, 108, 175, 109, 108,
- 109, 176, 108, 109, 124, 108, 178, 109,
- 185, 108, 162, 179, 109, 108, 109, 180,
- 108, 109, 181, 108, 109, 182, 108, 109,
- 183, 108, 184, 109, 108, 170, 109, 108,
- 186, 109, 108, 124, 109, 108, 188, 109,
- 108, 124, 109, 108, 31, 190, 0, 191,
- 0, 192, 0, 193, 0, 194, 271, 0,
- 195, 0, 196, 0, 197, 0, 198, 0,
- 199, 0, 200, 0, 201, 0, 202, 0,
- 203, 0, 204, 0, 205, 0, 206, 0,
- 208, 207, 208, 207, 208, 208, 4, 209,
- 223, 4, 224, 229, 231, 244, 249, 269,
- 208, 207, 208, 210, 207, 208, 211, 207,
- 208, 212, 207, 208, 213, 207, 208, 214,
- 207, 208, 215, 207, 208, 216, 207, 208,
- 217, 207, 208, 218, 207, 208, 219, 207,
- 208, 220, 207, 208, 221, 207, 208, 222,
- 207, 208, 4, 207, 208, 67, 207, 208,
- 225, 207, 226, 208, 207, 227, 208, 207,
- 228, 208, 207, 208, 223, 207, 208, 230,
- 207, 208, 223, 207, 232, 208, 243, 207,
- 233, 208, 207, 234, 208, 207, 208, 235,
- 207, 208, 236, 207, 208, 237, 207, 208,
- 238, 207, 239, 208, 207, 240, 208, 207,
- 241, 208, 207, 208, 242, 207, 208, 67,
- 207, 208, 223, 207, 208, 245, 207, 246,
- 208, 207, 247, 208, 207, 208, 248, 207,
- 208, 223, 207, 250, 208, 267, 207, 251,
- 261, 208, 207, 208, 252, 207, 208, 253,
- 207, 208, 254, 207, 208, 255, 207, 208,
- 256, 207, 257, 208, 207, 258, 208, 207,
- 259, 208, 207, 208, 260, 207, 208, 242,
- 207, 208, 262, 207, 208, 263, 207, 208,
- 264, 207, 208, 265, 207, 266, 208, 207,
- 259, 208, 207, 268, 208, 207, 223, 208,
- 207, 270, 208, 207, 223, 208, 207, 272,
- 0, 273, 0, 274, 0, 275, 0, 276,
- 0, 277, 0, 278, 0, 279, 0, 280,
- 0, 281, 0, 282, 0, 205, 0, 284,
- 0, 285, 0, 286, 0, 287, 0, 31,
- 0, 289, 385, 0, 290, 300, 0, 291,
- 0, 292, 0, 293, 0, 294, 0, 295,
- 0, 296, 0, 297, 0, 298, 0, 299,
- 0, 106, 0, 301, 0, 302, 0, 303,
- 0, 304, 0, 305, 0, 306, 0, 307,
- 0, 308, 0, 309, 0, 311, 310, 311,
- 310, 311, 311, 4, 312, 4, 326, 338,
- 348, 377, 311, 310, 311, 313, 310, 311,
- 314, 310, 311, 315, 310, 311, 316, 310,
- 311, 317, 310, 311, 318, 310, 311, 319,
- 310, 311, 320, 310, 311, 321, 310, 311,
- 322, 310, 311, 323, 310, 311, 324, 310,
- 311, 325, 310, 311, 4, 310, 327, 311,
- 310, 328, 311, 310, 329, 311, 310, 311,
- 330, 310, 311, 331, 310, 311, 332, 310,
- 333, 311, 310, 334, 311, 310, 335, 311,
- 310, 311, 336, 310, 311, 337, 310, 311,
- 67, 310, 339, 311, 310, 340, 311, 310,
- 341, 311, 310, 311, 342, 310, 311, 343,
- 310, 311, 344, 310, 345, 311, 310, 346,
- 311, 310, 347, 311, 310, 311, 337, 310,
- 349, 311, 359, 310, 350, 311, 310, 351,
- 311, 310, 311, 352, 310, 311, 353, 310,
- 311, 354, 310, 311, 355, 310, 356, 311,
- 310, 357, 311, 310, 358, 311, 310, 311,
- 337, 310, 311, 360, 310, 311, 361, 310,
- 311, 362, 310, 311, 363, 310, 311, 364,
- 365, 310, 349, 311, 310, 366, 311, 310,
- 367, 311, 310, 311, 368, 310, 311, 369,
- 310, 311, 370, 310, 311, 371, 310, 311,
- 372, 310, 373, 311, 310, 374, 311, 310,
- 375, 311, 310, 311, 376, 310, 311, 337,
- 310, 378, 311, 310, 367, 379, 311, 310,
- 311, 380, 310, 311, 381, 310, 311, 382,
- 310, 311, 383, 310, 384, 311, 310, 375,
- 311, 310, 386, 0, 31, 0, 388, 0,
- 31, 0, 389, 390, 389, 0, 394, 393,
- 392, 390, 393, 391, 0, 392, 390, 391,
- 0, 392, 391, 394, 393, 392, 390, 393,
- 391, 394, 394, 5, 15, 17, 31, 34,
- 37, 68, 70, 95, 283, 288, 387, 389,
- 394, 0, 51, 396, 50, 397, 51, 50,
- 398, 51, 50, 399, 51, 50, 51, 66,
- 50, 51, 401, 50, 51, 66, 50, 403,
- 51, 414, 50, 404, 51, 50, 405, 51,
- 50, 51, 406, 50, 51, 407, 50, 51,
- 408, 50, 51, 409, 50, 410, 51, 50,
- 411, 51, 50, 412, 51, 50, 51, 413,
- 50, 51, 67, 50, 51, 66, 415, 50,
- 51, 416, 50, 51, 417, 50, 51, 418,
- 50, 51, 419, 420, 50, 403, 51, 50,
- 421, 51, 50, 422, 51, 50, 51, 423,
- 50, 51, 424, 50, 51, 425, 50, 51,
- 426, 50, 51, 427, 50, 428, 51, 50,
- 429, 51, 50, 430, 51, 50, 51, 431,
- 50, 51, 413, 50, 51, 433, 50, 434,
- 51, 50, 435, 51, 50, 51, 436, 50,
- 51, 66, 50, 438, 51, 445, 50, 422,
- 439, 51, 50, 51, 440, 50, 51, 441,
- 50, 51, 442, 50, 51, 443, 50, 444,
- 51, 50, 430, 51, 50, 446, 51, 50,
- 66, 51, 50, 448, 51, 50, 66, 51,
- 50, 450, 0, 451, 0, 452, 0, 31,
- 0, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 0, 54, 0, 5, 1, 0, 29, 1,
- 29, 29, 29, 29, 29, 29, 29, 35,
- 0, 43, 0, 43, 0, 43, 54, 0,
- 5, 1, 0, 29, 1, 29, 29, 29,
- 29, 29, 29, 29, 35, 0, 43, 0,
- 43, 0, 43, 139, 48, 9, 106, 11,
- 0, 134, 45, 45, 45, 3, 122, 33,
- 33, 33, 0, 122, 33, 33, 33, 0,
- 122, 33, 0, 33, 0, 102, 7, 7,
- 43, 54, 0, 0, 43, 114, 25, 0,
- 54, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 149, 126, 57, 110, 23, 0, 43, 43,
- 43, 43, 0, 27, 118, 27, 27, 51,
- 27, 0, 54, 0, 1, 0, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 72, 33,
- 84, 72, 84, 84, 84, 84, 84, 84,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 15, 0, 54, 15, 0, 130,
- 31, 60, 57, 31, 63, 57, 63, 63,
- 63, 63, 63, 63, 63, 66, 31, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 54, 0,
- 81, 84, 81, 0, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 21, 0, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 54, 0, 75, 33, 84,
- 75, 84, 84, 84, 84, 84, 84, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 54, 17, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 17, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 144, 57, 54, 0, 54, 0, 78, 33,
- 84, 78, 84, 84, 84, 84, 84, 84,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 19, 0, 54, 19, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 19,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0, 43, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 54, 0, 69, 33, 69, 84, 84,
- 84, 84, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 13, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 0, 0, 43, 54, 37,
- 37, 87, 37, 37, 43, 0, 39, 0,
- 43, 0, 0, 54, 0, 0, 39, 0,
- 0, 54, 0, 93, 90, 41, 96, 90,
- 96, 96, 96, 96, 96, 96, 96, 99,
- 0, 43, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 54,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 15, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 0,
- 0, 54, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 453;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/vi.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 1062 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/vi.c.rl"
-
-#line 1069 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/vi.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/vi.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/vi.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/vi.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/vi.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/vi.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/vi.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/vi.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/vi.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/vi.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/vi.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/vi.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/vi.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/vi.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/vi.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/vi.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/vi.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/vi.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/vi.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/vi.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/vi.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/vi.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/vi.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/vi.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1359 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/vi.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1422 "ext/gherkin_lexer_vi/gherkin_lexer_vi.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/vi.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_vi()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Vi", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_zh_cn/extconf.rb
index ac549a4,ac549a4..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_zh_cn/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_zh_cn")
--have_library("c", "main")
--create_makefile("gherkin_lexer_zh_cn")
diff --cc ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c
index 64ec34c,ffbf884..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c
+++ /dev/null
@@@ -1,1314 -1,1314 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 15, 17, 18, 19, 20, 21,
- 23, 25, 39, 46, 47, 49, 51, 52,
- 53, 54, 55, 56, 57, 58, 59, 61,
- 62, 63, 64, 65, 66, 67, 68, 69,
- 81, 83, 85, 87, 89, 91, 105, 107,
- 108, 109, 110, 111, 112, 113, 114, 115,
- 116, 117, 118, 130, 132, 134, 136, 138,
- 140, 148, 150, 153, 156, 158, 160, 162,
- 164, 166, 168, 170, 172, 175, 177, 179,
- 181, 183, 185, 187, 189, 191, 193, 195,
- 197, 199, 201, 203, 205, 207, 209, 211,
- 213, 215, 217, 219, 221, 223, 225, 227,
- 229, 231, 233, 235, 237, 239, 241, 243,
- 245, 247, 249, 251, 253, 255, 257, 259,
- 261, 263, 265, 266, 267, 268, 269, 270,
- 271, 272, 274, 276, 281, 286, 291, 296,
- 300, 304, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, 318, 319,
- 320, 321, 322, 327, 334, 339, 343, 349,
- 352, 354, 360, 374, 382, 384, 387, 390,
- 392, 394, 396, 398, 400, 402, 404, 406,
- 408, 410, 412, 414, 416, 418, 420, 422,
- 424, 426, 428, 430, 432, 434, 436, 438,
- 440, 442, 444, 446, 448, 450, 452, 454,
- 456, 458, 460, 462, 464, 466, 468, 470,
- 472, 474, 476, 478, 480, 482, 484, 486,
- 487, 488, 500, 502, 504, 506, 508, 510,
- 518, 520, 523, 526, 528, 530, 532, 534,
- 536, 538, 540, 542, 545, 547, 549, 551,
- 553, 555, 557, 559, 561, 563, 565, 567,
- 569, 571, 573, 575, 577, 579, 581, 583,
- 585, 587, 589, 591, 594, 596, 598, 600,
- 602, 604, 606, 608, 610, 612, 614, 616,
- 618, 620, 622, 624, 626, 628, 630, 632,
- 634, 636, 638, 640, 642, 644, 645, 646,
- 647, 648, 649, 650, 651, 661, 663, 665,
- 667, 669, 671, 673, 677, 679, 681, 683,
- 685, 688, 690, 692, 694, 696, 698, 700,
- 702, 704, 706, 708, 710, 712, 714, 716,
- 718, 720, 722, 724, 726, 728, 730, 732,
- 734, 736, 738, 740, 742, 744, 746, 748,
- 750, 752, 753, 754, 755, 756, 757, 758,
- 759, 760, 761, 762, 763, 764, 765, 766,
- 767, 768, 769, 776, 778, 780, 782, 784,
- 786, 788, 789, 790
- };
-
- static const char _lexer_trans_keys[] = {
- -28, -27, -24, -23, -17, 10, 32, 34,
- 35, 37, 42, 64, 124, 9, 13, -67,
- -66, -122, -26, -104, -81, 10, 13, 10,
- 13, -28, -27, -24, -23, 10, 32, 34,
- 35, 37, 42, 64, 124, 9, 13, -127,
- -119, -118, -112, -100, -71, -67, -121, -27,
- -24, -90, -82, -126, -102, -82, -66, -89,
- -26, -100, -84, -27, 58, -92, -89, -25,
- -70, -78, 58, 10, 10, -28, -27, -24,
- -23, 10, 32, 35, 37, 42, 64, 9,
- 13, -67, 10, -122, 10, -26, 10, -104,
- 10, -81, 10, -28, -27, -24, -23, 10,
- 32, 34, 35, 37, 42, 64, 124, 9,
- 13, -128, -125, -116, -28, -72, -108, -116,
- -26, -103, -81, 58, 10, 10, -28, -27,
- -24, -23, 10, 32, 35, 37, 42, 64,
- 9, 13, -67, 10, -122, 10, -26, 10,
- -104, 10, -81, 10, -127, -119, -118, -112,
- -100, -71, -67, 10, -121, 10, -27, -24,
- 10, -90, -82, 10, -126, 10, -102, 10,
- -82, 10, -66, 10, -89, 10, -26, 10,
- -100, 10, -84, 10, -27, 10, 58, -92,
- 10, -89, 10, -25, 10, -70, 10, -78,
- 10, 10, 58, -97, 10, -24, 10, -125,
- 10, -67, 10, -116, 10, -26, 10, -105,
- 10, -74, 10, -70, 10, -26, 10, -103,
- 10, -81, 10, -74, 10, -28, 10, -72,
- 10, -108, 10, -109, 10, -128, 10, -116,
- 10, -126, 10, -93, 10, -28, 10, -71,
- 10, -120, 10, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, -126, -93, -28, -71, -120, 34, 34,
- 10, 13, 10, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 9, 13, 10, 32, 9, 13,
- 10, 13, 10, 95, 70, 69, 65, 84,
- 85, 82, 69, 95, 69, 78, 68, 95,
- 37, 32, 13, 32, 64, 9, 10, 9,
- 10, 13, 32, 64, 11, 12, 10, 32,
- 64, 9, 13, 32, 124, 9, 13, 10,
- 32, 92, 124, 9, 13, 10, 92, 124,
- 10, 92, 10, 32, 92, 124, 9, 13,
- -28, -27, -24, -23, 10, 32, 34, 35,
- 37, 42, 64, 124, 9, 13, -127, -119,
- -118, -112, -100, -71, -67, 10, -121, 10,
- -27, -24, 10, -90, -82, 10, -126, 10,
- -102, 10, -82, 10, -66, 10, -89, 10,
- -26, 10, -100, 10, -84, 10, 10, 58,
- -97, 10, -24, 10, -125, 10, -67, 10,
- -116, 10, -26, 10, -105, 10, -74, 10,
- -70, 10, -26, 10, -103, 10, -81, 10,
- -74, 10, -28, 10, -72, 10, -108, 10,
- -109, 10, -128, 10, -116, 10, -126, 10,
- -93, 10, -28, 10, -71, 10, -120, 10,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 10,
- -28, -27, -24, -23, 10, 32, 35, 37,
- 42, 64, 9, 13, -67, 10, -122, 10,
- -26, 10, -104, 10, -81, 10, -127, -119,
- -118, -112, -100, -71, -67, 10, -121, 10,
- -27, -24, 10, -90, -82, 10, -126, 10,
- -102, 10, -82, 10, -66, 10, -89, 10,
- -26, 10, -100, 10, -84, 10, -27, 10,
- 58, -92, 10, -89, 10, -25, 10, -70,
- 10, -78, 10, 10, 58, -97, 10, -24,
- 10, -125, 10, -67, 10, -116, 10, -26,
- 10, -105, 10, -74, 10, -70, 10, -26,
- 10, -103, 10, -81, 10, -74, 10, -28,
- 10, -72, 10, -108, 10, -109, 10, -128,
- -125, 10, -116, 10, -116, 10, -26, 10,
- -103, 10, -81, 10, -126, 10, -93, 10,
- -28, 10, -71, 10, -120, 10, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, -97, -24, -125, -67,
- 58, 10, 10, -28, -27, -24, 10, 32,
- 35, 37, 64, 9, 13, -66, 10, -117,
- 10, -27, 10, -83, 10, -112, 10, 10,
- 58, -119, -118, -100, 10, -89, 10, -26,
- 10, -100, 10, -84, 10, -27, 10, 58,
- -92, 10, -89, 10, -25, 10, -70, 10,
- -78, 10, -97, 10, -24, 10, -125, 10,
- -67, 10, -70, 10, -26, 10, -103, 10,
- -81, 10, -125, 10, -116, 10, -26, 10,
- -103, 10, -81, 10, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- -116, -26, -105, -74, -70, -26, -103, -81,
- -74, -109, -117, -27, -83, -112, 58, 10,
- 10, -27, 10, 32, 35, 124, 9, 13,
- -118, 10, -97, 10, -24, 10, -125, 10,
- -67, 10, 10, 58, -69, -65, 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 13, 2, 1, 1, 1, 1, 2,
- 2, 12, 7, 1, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 10,
- 2, 2, 2, 2, 2, 12, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 10, 2, 2, 2, 2, 2,
- 8, 2, 3, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 2, 2, 3, 3, 3, 3, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 3, 5, 3, 2, 4, 3,
- 2, 4, 12, 8, 2, 3, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 10, 2, 2, 2, 2, 2, 8,
- 2, 3, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 8, 2, 2, 2,
- 2, 2, 2, 4, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 5, 2, 2, 2, 2, 2,
- 2, 1, 1, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 1, 1, 1, 1,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 1, 1, 0,
- 0, 1, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 15, 18, 20, 22, 24, 26,
- 29, 32, 46, 54, 56, 59, 62, 64,
- 66, 68, 70, 72, 74, 76, 78, 81,
- 83, 85, 87, 89, 91, 93, 95, 97,
- 109, 112, 115, 118, 121, 124, 138, 141,
- 143, 145, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 175, 178, 181, 184, 187,
- 190, 199, 202, 206, 210, 213, 216, 219,
- 222, 225, 228, 231, 234, 238, 241, 244,
- 247, 250, 253, 256, 259, 262, 265, 268,
- 271, 274, 277, 280, 283, 286, 289, 292,
- 295, 298, 301, 304, 307, 310, 313, 316,
- 319, 322, 325, 328, 331, 334, 337, 340,
- 343, 346, 349, 352, 355, 358, 361, 364,
- 367, 370, 373, 375, 377, 379, 381, 383,
- 385, 387, 390, 393, 398, 403, 408, 413,
- 417, 421, 424, 426, 428, 430, 432, 434,
- 436, 438, 440, 442, 444, 446, 448, 450,
- 452, 454, 456, 461, 468, 473, 477, 483,
- 487, 490, 496, 510, 519, 522, 526, 530,
- 533, 536, 539, 542, 545, 548, 551, 554,
- 557, 560, 563, 566, 569, 572, 575, 578,
- 581, 584, 587, 590, 593, 596, 599, 602,
- 605, 608, 611, 614, 617, 620, 623, 626,
- 629, 632, 635, 638, 641, 644, 647, 650,
- 653, 656, 659, 662, 665, 668, 671, 674,
- 676, 678, 690, 693, 696, 699, 702, 705,
- 714, 717, 721, 725, 728, 731, 734, 737,
- 740, 743, 746, 749, 753, 756, 759, 762,
- 765, 768, 771, 774, 777, 780, 783, 786,
- 789, 792, 795, 798, 801, 804, 807, 810,
- 813, 816, 819, 822, 826, 829, 832, 835,
- 838, 841, 844, 847, 850, 853, 856, 859,
- 862, 865, 868, 871, 874, 877, 880, 883,
- 886, 889, 892, 895, 898, 901, 903, 905,
- 907, 909, 911, 913, 915, 925, 928, 931,
- 934, 937, 940, 943, 948, 951, 954, 957,
- 960, 964, 967, 970, 973, 976, 979, 982,
- 985, 988, 991, 994, 997, 1000, 1003, 1006,
- 1009, 1012, 1015, 1018, 1021, 1024, 1027, 1030,
- 1033, 1036, 1039, 1042, 1045, 1048, 1051, 1054,
- 1057, 1060, 1062, 1064, 1066, 1068, 1070, 1072,
- 1074, 1076, 1078, 1080, 1082, 1084, 1086, 1088,
- 1090, 1092, 1094, 1101, 1104, 1107, 1110, 1113,
- 1116, 1119, 1121, 1123
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 10, 38, 114, 353, 9, 9, 119,
- 129, 131, 145, 146, 149, 9, 0, 3,
- 339, 0, 4, 0, 5, 0, 6, 0,
- 7, 0, 9, 130, 8, 9, 130, 8,
- 2, 10, 38, 114, 9, 9, 119, 129,
- 131, 145, 146, 149, 9, 0, 11, 18,
- 277, 329, 333, 337, 338, 0, 12, 0,
- 13, 16, 0, 14, 15, 0, 7, 0,
- 7, 0, 17, 0, 7, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 207,
- 0, 24, 0, 25, 0, 26, 0, 27,
- 0, 28, 0, 29, 0, 31, 30, 31,
- 30, 32, 155, 185, 187, 31, 31, 9,
- 192, 206, 9, 31, 30, 33, 31, 30,
- 34, 31, 30, 35, 31, 30, 36, 31,
- 30, 37, 31, 30, 2, 10, 38, 114,
- 9, 9, 119, 129, 131, 145, 146, 149,
- 9, 0, 39, 43, 0, 40, 0, 41,
- 0, 42, 0, 7, 0, 44, 0, 45,
- 0, 46, 0, 47, 0, 48, 0, 50,
- 49, 50, 49, 51, 56, 92, 94, 50,
- 50, 9, 99, 113, 9, 50, 49, 52,
- 50, 49, 53, 50, 49, 54, 50, 49,
- 55, 50, 49, 37, 50, 49, 57, 64,
- 75, 79, 83, 87, 91, 50, 49, 58,
- 50, 49, 59, 62, 50, 49, 60, 61,
- 50, 49, 37, 50, 49, 37, 50, 49,
- 63, 50, 49, 37, 50, 49, 65, 50,
- 49, 66, 50, 49, 67, 50, 49, 68,
- 50, 49, 69, 50, 37, 49, 70, 50,
- 49, 71, 50, 49, 72, 50, 49, 73,
- 50, 49, 74, 50, 49, 50, 37, 49,
- 76, 50, 49, 77, 50, 49, 78, 50,
- 49, 74, 50, 49, 80, 50, 49, 81,
- 50, 49, 82, 50, 49, 37, 50, 49,
- 84, 50, 49, 85, 50, 49, 86, 50,
- 49, 68, 50, 49, 88, 50, 49, 89,
- 50, 49, 90, 50, 49, 37, 50, 49,
- 37, 50, 49, 93, 50, 49, 88, 50,
- 49, 95, 50, 49, 96, 50, 49, 97,
- 50, 49, 98, 50, 49, 37, 50, 49,
- 50, 100, 49, 50, 101, 49, 50, 102,
- 49, 50, 103, 49, 50, 104, 49, 50,
- 105, 49, 50, 106, 49, 50, 107, 49,
- 50, 108, 49, 50, 109, 49, 50, 110,
- 49, 50, 111, 49, 50, 112, 49, 50,
- 9, 49, 50, 37, 49, 115, 0, 116,
- 0, 117, 0, 118, 0, 7, 0, 120,
- 0, 121, 0, 123, 122, 122, 123, 122,
- 122, 124, 124, 125, 124, 124, 124, 124,
- 125, 124, 124, 124, 124, 126, 124, 124,
- 124, 124, 127, 124, 124, 9, 128, 128,
- 0, 9, 128, 128, 0, 9, 130, 129,
- 9, 0, 132, 0, 133, 0, 134, 0,
- 135, 0, 136, 0, 137, 0, 138, 0,
- 139, 0, 140, 0, 141, 0, 142, 0,
- 143, 0, 144, 0, 355, 0, 7, 0,
- 0, 0, 0, 0, 147, 148, 9, 148,
- 148, 146, 147, 147, 9, 148, 146, 148,
- 0, 149, 150, 149, 0, 154, 153, 152,
- 150, 153, 151, 0, 152, 150, 151, 0,
- 152, 151, 154, 153, 152, 150, 153, 151,
- 2, 10, 38, 114, 154, 154, 119, 129,
- 131, 145, 146, 149, 154, 0, 156, 163,
- 168, 172, 176, 180, 184, 31, 30, 157,
- 31, 30, 158, 161, 31, 30, 159, 160,
- 31, 30, 37, 31, 30, 37, 31, 30,
- 162, 31, 30, 37, 31, 30, 164, 31,
- 30, 165, 31, 30, 166, 31, 30, 167,
- 31, 30, 31, 37, 30, 169, 31, 30,
- 170, 31, 30, 171, 31, 30, 167, 31,
- 30, 173, 31, 30, 174, 31, 30, 175,
- 31, 30, 37, 31, 30, 177, 31, 30,
- 178, 31, 30, 179, 31, 30, 167, 31,
- 30, 181, 31, 30, 182, 31, 30, 183,
- 31, 30, 37, 31, 30, 37, 31, 30,
- 186, 31, 30, 181, 31, 30, 188, 31,
- 30, 189, 31, 30, 190, 31, 30, 191,
- 31, 30, 37, 31, 30, 31, 193, 30,
- 31, 194, 30, 31, 195, 30, 31, 196,
- 30, 31, 197, 30, 31, 198, 30, 31,
- 199, 30, 31, 200, 30, 31, 201, 30,
- 31, 202, 30, 31, 203, 30, 31, 204,
- 30, 31, 205, 30, 31, 9, 30, 31,
- 37, 30, 209, 208, 209, 208, 210, 215,
- 251, 257, 209, 209, 9, 262, 276, 9,
- 209, 208, 211, 209, 208, 212, 209, 208,
- 213, 209, 208, 214, 209, 208, 37, 209,
- 208, 216, 223, 234, 238, 242, 246, 250,
- 209, 208, 217, 209, 208, 218, 221, 209,
- 208, 219, 220, 209, 208, 37, 209, 208,
- 37, 209, 208, 222, 209, 208, 37, 209,
- 208, 224, 209, 208, 225, 209, 208, 226,
- 209, 208, 227, 209, 208, 228, 209, 37,
- 208, 229, 209, 208, 230, 209, 208, 231,
- 209, 208, 232, 209, 208, 233, 209, 208,
- 209, 37, 208, 235, 209, 208, 236, 209,
- 208, 237, 209, 208, 233, 209, 208, 239,
- 209, 208, 240, 209, 208, 241, 209, 208,
- 37, 209, 208, 243, 209, 208, 244, 209,
- 208, 245, 209, 208, 227, 209, 208, 247,
- 209, 208, 248, 209, 208, 249, 209, 208,
- 37, 209, 208, 37, 209, 208, 252, 253,
- 209, 208, 247, 209, 208, 254, 209, 208,
- 255, 209, 208, 256, 209, 208, 233, 209,
- 208, 258, 209, 208, 259, 209, 208, 260,
- 209, 208, 261, 209, 208, 37, 209, 208,
- 209, 263, 208, 209, 264, 208, 209, 265,
- 208, 209, 266, 208, 209, 267, 208, 209,
- 268, 208, 209, 269, 208, 209, 270, 208,
- 209, 271, 208, 209, 272, 208, 209, 273,
- 208, 209, 274, 208, 209, 275, 208, 209,
- 9, 208, 209, 37, 208, 278, 0, 279,
- 0, 280, 0, 281, 0, 282, 0, 284,
- 283, 284, 283, 285, 291, 310, 284, 284,
- 9, 315, 9, 284, 283, 286, 284, 283,
- 287, 284, 283, 288, 284, 283, 289, 284,
- 283, 290, 284, 283, 284, 37, 283, 292,
- 302, 306, 284, 283, 293, 284, 283, 294,
- 284, 283, 295, 284, 283, 296, 284, 283,
- 297, 284, 37, 283, 298, 284, 283, 299,
- 284, 283, 300, 284, 283, 301, 284, 283,
- 290, 284, 283, 303, 284, 283, 304, 284,
- 283, 305, 284, 283, 290, 284, 283, 307,
- 284, 283, 308, 284, 283, 309, 284, 283,
- 296, 284, 283, 311, 284, 283, 312, 284,
- 283, 313, 284, 283, 314, 284, 283, 290,
- 284, 283, 284, 316, 283, 284, 317, 283,
- 284, 318, 283, 284, 319, 283, 284, 320,
- 283, 284, 321, 283, 284, 322, 283, 284,
- 323, 283, 284, 324, 283, 284, 325, 283,
- 284, 326, 283, 284, 327, 283, 284, 328,
- 283, 284, 9, 283, 330, 0, 331, 0,
- 332, 0, 7, 0, 334, 0, 335, 0,
- 336, 0, 22, 0, 40, 0, 7, 0,
- 340, 0, 341, 0, 342, 0, 343, 0,
- 344, 0, 346, 345, 346, 345, 347, 346,
- 346, 9, 9, 346, 345, 348, 346, 345,
- 349, 346, 345, 350, 346, 345, 351, 346,
- 345, 352, 346, 345, 346, 37, 345, 354,
- 0, 9, 0, 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 29, 29, 29, 29, 0, 54, 0, 5,
- 1, 0, 29, 1, 35, 0, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 29, 29, 29, 29, 54, 0, 5, 1,
- 0, 29, 1, 35, 0, 43, 0, 0,
- 0, 0, 0, 0, 0, 43, 0, 43,
- 0, 0, 43, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 84, 84, 84, 84, 54, 0, 78,
- 33, 84, 78, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 19, 54, 0, 63, 63, 63, 63,
- 130, 31, 60, 57, 31, 63, 57, 66,
- 31, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 84, 84, 84, 54,
- 0, 72, 33, 84, 72, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 15, 54, 0, 0, 0,
- 0, 0, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 0,
- 54, 0, 15, 54, 0, 15, 54, 0,
- 0, 54, 0, 15, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 15, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 15, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 15, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 15, 54, 0,
- 15, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 15, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 15, 0, 54, 15, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 139, 48, 9, 106, 11,
- 0, 134, 45, 45, 45, 3, 122, 33,
- 33, 33, 0, 122, 33, 33, 33, 0,
- 122, 33, 0, 33, 0, 102, 7, 7,
- 43, 54, 0, 0, 43, 114, 25, 0,
- 54, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 0, 0, 43, 54, 37, 37,
- 87, 37, 37, 43, 0, 39, 0, 43,
- 0, 0, 54, 0, 0, 39, 0, 0,
- 96, 96, 96, 96, 54, 0, 93, 90,
- 41, 96, 90, 99, 0, 43, 0, 0,
- 0, 0, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 0,
- 54, 0, 19, 54, 0, 19, 54, 0,
- 0, 54, 0, 19, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 19, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 19, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 19, 54, 0, 19, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 19, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 54,
- 19, 0, 144, 57, 54, 0, 84, 84,
- 84, 84, 54, 0, 75, 33, 84, 75,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 17, 54,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 17, 54, 0,
- 17, 54, 0, 0, 54, 0, 17, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 17,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 17, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 17, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 17, 54, 0, 17, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 17, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 17, 0, 54, 17, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 84, 84, 54, 0,
- 69, 33, 69, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 13, 0, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 13, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 13, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 84, 54,
- 0, 81, 81, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 21, 0, 0,
- 43, 0, 43, 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 355;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 918 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
-
- #line 925 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1215 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1278 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_cn.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_zh_cn()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Zh_cn", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/zh_cn.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/zh_cn.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 15, 17, 18, 19, 20, 21,
- 23, 25, 39, 46, 47, 49, 51, 52,
- 53, 54, 55, 56, 57, 58, 59, 61,
- 62, 63, 64, 65, 66, 67, 68, 69,
- 81, 83, 85, 87, 89, 91, 105, 107,
- 108, 109, 110, 111, 112, 113, 114, 115,
- 116, 117, 118, 130, 132, 134, 136, 138,
- 140, 148, 150, 153, 156, 158, 160, 162,
- 164, 166, 168, 170, 172, 175, 177, 179,
- 181, 183, 185, 187, 189, 191, 193, 195,
- 197, 199, 201, 203, 205, 207, 209, 211,
- 213, 215, 217, 219, 221, 223, 225, 227,
- 229, 231, 233, 235, 237, 239, 241, 243,
- 245, 247, 249, 251, 253, 255, 257, 259,
- 261, 263, 265, 266, 267, 268, 269, 270,
- 271, 272, 274, 276, 281, 286, 291, 296,
- 300, 304, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, 318, 319,
- 320, 321, 322, 327, 334, 339, 343, 349,
- 352, 354, 360, 374, 382, 384, 387, 390,
- 392, 394, 396, 398, 400, 402, 404, 406,
- 408, 410, 412, 414, 416, 418, 420, 422,
- 424, 426, 428, 430, 432, 434, 436, 438,
- 440, 442, 444, 446, 448, 450, 452, 454,
- 456, 458, 460, 462, 464, 466, 468, 470,
- 472, 474, 476, 478, 480, 482, 484, 486,
- 487, 488, 500, 502, 504, 506, 508, 510,
- 518, 520, 523, 526, 528, 530, 532, 534,
- 536, 538, 540, 542, 545, 547, 549, 551,
- 553, 555, 557, 559, 561, 563, 565, 567,
- 569, 571, 573, 575, 577, 579, 581, 583,
- 585, 587, 589, 591, 594, 596, 598, 600,
- 602, 604, 606, 608, 610, 612, 614, 616,
- 618, 620, 622, 624, 626, 628, 630, 632,
- 634, 636, 638, 640, 642, 644, 645, 646,
- 647, 648, 649, 650, 651, 661, 663, 665,
- 667, 669, 671, 673, 677, 679, 681, 683,
- 685, 688, 690, 692, 694, 696, 698, 700,
- 702, 704, 706, 708, 710, 712, 714, 716,
- 718, 720, 722, 724, 726, 728, 730, 732,
- 734, 736, 738, 740, 742, 744, 746, 748,
- 750, 752, 753, 754, 755, 756, 757, 758,
- 759, 760, 761, 762, 763, 764, 765, 766,
- 767, 768, 769, 776, 778, 780, 782, 784,
- 786, 788, 789, 790
-};
-
-static const char _lexer_trans_keys[] = {
- -28, -27, -24, -23, -17, 10, 32, 34,
- 35, 37, 42, 64, 124, 9, 13, -67,
- -66, -122, -26, -104, -81, 10, 13, 10,
- 13, -28, -27, -24, -23, 10, 32, 34,
- 35, 37, 42, 64, 124, 9, 13, -127,
- -119, -118, -112, -100, -71, -67, -121, -27,
- -24, -90, -82, -126, -102, -82, -66, -89,
- -26, -100, -84, -27, 58, -92, -89, -25,
- -70, -78, 58, 10, 10, -28, -27, -24,
- -23, 10, 32, 35, 37, 42, 64, 9,
- 13, -67, 10, -122, 10, -26, 10, -104,
- 10, -81, 10, -28, -27, -24, -23, 10,
- 32, 34, 35, 37, 42, 64, 124, 9,
- 13, -128, -125, -116, -28, -72, -108, -116,
- -26, -103, -81, 58, 10, 10, -28, -27,
- -24, -23, 10, 32, 35, 37, 42, 64,
- 9, 13, -67, 10, -122, 10, -26, 10,
- -104, 10, -81, 10, -127, -119, -118, -112,
- -100, -71, -67, 10, -121, 10, -27, -24,
- 10, -90, -82, 10, -126, 10, -102, 10,
- -82, 10, -66, 10, -89, 10, -26, 10,
- -100, 10, -84, 10, -27, 10, 58, -92,
- 10, -89, 10, -25, 10, -70, 10, -78,
- 10, 10, 58, -97, 10, -24, 10, -125,
- 10, -67, 10, -116, 10, -26, 10, -105,
- 10, -74, 10, -70, 10, -26, 10, -103,
- 10, -81, 10, -74, 10, -28, 10, -72,
- 10, -108, 10, -109, 10, -128, 10, -116,
- 10, -126, 10, -93, 10, -28, 10, -71,
- 10, -120, 10, 10, 95, 10, 70, 10,
- 69, 10, 65, 10, 84, 10, 85, 10,
- 82, 10, 69, 10, 95, 10, 69, 10,
- 78, 10, 68, 10, 95, 10, 37, 10,
- 32, -126, -93, -28, -71, -120, 34, 34,
- 10, 13, 10, 13, 10, 32, 34, 9,
- 13, 10, 32, 34, 9, 13, 10, 32,
- 34, 9, 13, 10, 32, 34, 9, 13,
- 10, 32, 9, 13, 10, 32, 9, 13,
- 10, 13, 10, 95, 70, 69, 65, 84,
- 85, 82, 69, 95, 69, 78, 68, 95,
- 37, 32, 13, 32, 64, 9, 10, 9,
- 10, 13, 32, 64, 11, 12, 10, 32,
- 64, 9, 13, 32, 124, 9, 13, 10,
- 32, 92, 124, 9, 13, 10, 92, 124,
- 10, 92, 10, 32, 92, 124, 9, 13,
- -28, -27, -24, -23, 10, 32, 34, 35,
- 37, 42, 64, 124, 9, 13, -127, -119,
- -118, -112, -100, -71, -67, 10, -121, 10,
- -27, -24, 10, -90, -82, 10, -126, 10,
- -102, 10, -82, 10, -66, 10, -89, 10,
- -26, 10, -100, 10, -84, 10, 10, 58,
- -97, 10, -24, 10, -125, 10, -67, 10,
- -116, 10, -26, 10, -105, 10, -74, 10,
- -70, 10, -26, 10, -103, 10, -81, 10,
- -74, 10, -28, 10, -72, 10, -108, 10,
- -109, 10, -128, 10, -116, 10, -126, 10,
- -93, 10, -28, 10, -71, 10, -120, 10,
- 10, 95, 10, 70, 10, 69, 10, 65,
- 10, 84, 10, 85, 10, 82, 10, 69,
- 10, 95, 10, 69, 10, 78, 10, 68,
- 10, 95, 10, 37, 10, 32, 10, 10,
- -28, -27, -24, -23, 10, 32, 35, 37,
- 42, 64, 9, 13, -67, 10, -122, 10,
- -26, 10, -104, 10, -81, 10, -127, -119,
- -118, -112, -100, -71, -67, 10, -121, 10,
- -27, -24, 10, -90, -82, 10, -126, 10,
- -102, 10, -82, 10, -66, 10, -89, 10,
- -26, 10, -100, 10, -84, 10, -27, 10,
- 58, -92, 10, -89, 10, -25, 10, -70,
- 10, -78, 10, 10, 58, -97, 10, -24,
- 10, -125, 10, -67, 10, -116, 10, -26,
- 10, -105, 10, -74, 10, -70, 10, -26,
- 10, -103, 10, -81, 10, -74, 10, -28,
- 10, -72, 10, -108, 10, -109, 10, -128,
- -125, 10, -116, 10, -116, 10, -26, 10,
- -103, 10, -81, 10, -126, 10, -93, 10,
- -28, 10, -71, 10, -120, 10, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, -97, -24, -125, -67,
- 58, 10, 10, -28, -27, -24, 10, 32,
- 35, 37, 64, 9, 13, -66, 10, -117,
- 10, -27, 10, -83, 10, -112, 10, 10,
- 58, -119, -118, -100, 10, -89, 10, -26,
- 10, -100, 10, -84, 10, -27, 10, 58,
- -92, 10, -89, 10, -25, 10, -70, 10,
- -78, 10, -97, 10, -24, 10, -125, 10,
- -67, 10, -70, 10, -26, 10, -103, 10,
- -81, 10, -125, 10, -116, 10, -26, 10,
- -103, 10, -81, 10, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- -116, -26, -105, -74, -70, -26, -103, -81,
- -74, -109, -117, -27, -83, -112, 58, 10,
- 10, -27, 10, 32, 35, 124, 9, 13,
- -118, 10, -97, 10, -24, 10, -125, 10,
- -67, 10, 10, 58, -69, -65, 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 13, 2, 1, 1, 1, 1, 2,
- 2, 12, 7, 1, 2, 2, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 10,
- 2, 2, 2, 2, 2, 12, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 10, 2, 2, 2, 2, 2,
- 8, 2, 3, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 2, 2, 3, 3, 3, 3, 2,
- 2, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 3, 5, 3, 2, 4, 3,
- 2, 4, 12, 8, 2, 3, 3, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 10, 2, 2, 2, 2, 2, 8,
- 2, 3, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 8, 2, 2, 2,
- 2, 2, 2, 4, 2, 2, 2, 2,
- 3, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 5, 2, 2, 2, 2, 2,
- 2, 1, 1, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 1, 1, 1, 1,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 1, 1, 0,
- 0, 1, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 15, 18, 20, 22, 24, 26,
- 29, 32, 46, 54, 56, 59, 62, 64,
- 66, 68, 70, 72, 74, 76, 78, 81,
- 83, 85, 87, 89, 91, 93, 95, 97,
- 109, 112, 115, 118, 121, 124, 138, 141,
- 143, 145, 147, 149, 151, 153, 155, 157,
- 159, 161, 163, 175, 178, 181, 184, 187,
- 190, 199, 202, 206, 210, 213, 216, 219,
- 222, 225, 228, 231, 234, 238, 241, 244,
- 247, 250, 253, 256, 259, 262, 265, 268,
- 271, 274, 277, 280, 283, 286, 289, 292,
- 295, 298, 301, 304, 307, 310, 313, 316,
- 319, 322, 325, 328, 331, 334, 337, 340,
- 343, 346, 349, 352, 355, 358, 361, 364,
- 367, 370, 373, 375, 377, 379, 381, 383,
- 385, 387, 390, 393, 398, 403, 408, 413,
- 417, 421, 424, 426, 428, 430, 432, 434,
- 436, 438, 440, 442, 444, 446, 448, 450,
- 452, 454, 456, 461, 468, 473, 477, 483,
- 487, 490, 496, 510, 519, 522, 526, 530,
- 533, 536, 539, 542, 545, 548, 551, 554,
- 557, 560, 563, 566, 569, 572, 575, 578,
- 581, 584, 587, 590, 593, 596, 599, 602,
- 605, 608, 611, 614, 617, 620, 623, 626,
- 629, 632, 635, 638, 641, 644, 647, 650,
- 653, 656, 659, 662, 665, 668, 671, 674,
- 676, 678, 690, 693, 696, 699, 702, 705,
- 714, 717, 721, 725, 728, 731, 734, 737,
- 740, 743, 746, 749, 753, 756, 759, 762,
- 765, 768, 771, 774, 777, 780, 783, 786,
- 789, 792, 795, 798, 801, 804, 807, 810,
- 813, 816, 819, 822, 826, 829, 832, 835,
- 838, 841, 844, 847, 850, 853, 856, 859,
- 862, 865, 868, 871, 874, 877, 880, 883,
- 886, 889, 892, 895, 898, 901, 903, 905,
- 907, 909, 911, 913, 915, 925, 928, 931,
- 934, 937, 940, 943, 948, 951, 954, 957,
- 960, 964, 967, 970, 973, 976, 979, 982,
- 985, 988, 991, 994, 997, 1000, 1003, 1006,
- 1009, 1012, 1015, 1018, 1021, 1024, 1027, 1030,
- 1033, 1036, 1039, 1042, 1045, 1048, 1051, 1054,
- 1057, 1060, 1062, 1064, 1066, 1068, 1070, 1072,
- 1074, 1076, 1078, 1080, 1082, 1084, 1086, 1088,
- 1090, 1092, 1094, 1101, 1104, 1107, 1110, 1113,
- 1116, 1119, 1121, 1123
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 10, 38, 114, 353, 9, 9, 119,
- 129, 131, 145, 146, 149, 9, 0, 3,
- 339, 0, 4, 0, 5, 0, 6, 0,
- 7, 0, 9, 130, 8, 9, 130, 8,
- 2, 10, 38, 114, 9, 9, 119, 129,
- 131, 145, 146, 149, 9, 0, 11, 18,
- 277, 329, 333, 337, 338, 0, 12, 0,
- 13, 16, 0, 14, 15, 0, 7, 0,
- 7, 0, 17, 0, 7, 0, 19, 0,
- 20, 0, 21, 0, 22, 0, 23, 207,
- 0, 24, 0, 25, 0, 26, 0, 27,
- 0, 28, 0, 29, 0, 31, 30, 31,
- 30, 32, 155, 185, 187, 31, 31, 9,
- 192, 206, 9, 31, 30, 33, 31, 30,
- 34, 31, 30, 35, 31, 30, 36, 31,
- 30, 37, 31, 30, 2, 10, 38, 114,
- 9, 9, 119, 129, 131, 145, 146, 149,
- 9, 0, 39, 43, 0, 40, 0, 41,
- 0, 42, 0, 7, 0, 44, 0, 45,
- 0, 46, 0, 47, 0, 48, 0, 50,
- 49, 50, 49, 51, 56, 92, 94, 50,
- 50, 9, 99, 113, 9, 50, 49, 52,
- 50, 49, 53, 50, 49, 54, 50, 49,
- 55, 50, 49, 37, 50, 49, 57, 64,
- 75, 79, 83, 87, 91, 50, 49, 58,
- 50, 49, 59, 62, 50, 49, 60, 61,
- 50, 49, 37, 50, 49, 37, 50, 49,
- 63, 50, 49, 37, 50, 49, 65, 50,
- 49, 66, 50, 49, 67, 50, 49, 68,
- 50, 49, 69, 50, 37, 49, 70, 50,
- 49, 71, 50, 49, 72, 50, 49, 73,
- 50, 49, 74, 50, 49, 50, 37, 49,
- 76, 50, 49, 77, 50, 49, 78, 50,
- 49, 74, 50, 49, 80, 50, 49, 81,
- 50, 49, 82, 50, 49, 37, 50, 49,
- 84, 50, 49, 85, 50, 49, 86, 50,
- 49, 68, 50, 49, 88, 50, 49, 89,
- 50, 49, 90, 50, 49, 37, 50, 49,
- 37, 50, 49, 93, 50, 49, 88, 50,
- 49, 95, 50, 49, 96, 50, 49, 97,
- 50, 49, 98, 50, 49, 37, 50, 49,
- 50, 100, 49, 50, 101, 49, 50, 102,
- 49, 50, 103, 49, 50, 104, 49, 50,
- 105, 49, 50, 106, 49, 50, 107, 49,
- 50, 108, 49, 50, 109, 49, 50, 110,
- 49, 50, 111, 49, 50, 112, 49, 50,
- 9, 49, 50, 37, 49, 115, 0, 116,
- 0, 117, 0, 118, 0, 7, 0, 120,
- 0, 121, 0, 123, 122, 122, 123, 122,
- 122, 124, 124, 125, 124, 124, 124, 124,
- 125, 124, 124, 124, 124, 126, 124, 124,
- 124, 124, 127, 124, 124, 9, 128, 128,
- 0, 9, 128, 128, 0, 9, 130, 129,
- 9, 0, 132, 0, 133, 0, 134, 0,
- 135, 0, 136, 0, 137, 0, 138, 0,
- 139, 0, 140, 0, 141, 0, 142, 0,
- 143, 0, 144, 0, 355, 0, 7, 0,
- 0, 0, 0, 0, 147, 148, 9, 148,
- 148, 146, 147, 147, 9, 148, 146, 148,
- 0, 149, 150, 149, 0, 154, 153, 152,
- 150, 153, 151, 0, 152, 150, 151, 0,
- 152, 151, 154, 153, 152, 150, 153, 151,
- 2, 10, 38, 114, 154, 154, 119, 129,
- 131, 145, 146, 149, 154, 0, 156, 163,
- 168, 172, 176, 180, 184, 31, 30, 157,
- 31, 30, 158, 161, 31, 30, 159, 160,
- 31, 30, 37, 31, 30, 37, 31, 30,
- 162, 31, 30, 37, 31, 30, 164, 31,
- 30, 165, 31, 30, 166, 31, 30, 167,
- 31, 30, 31, 37, 30, 169, 31, 30,
- 170, 31, 30, 171, 31, 30, 167, 31,
- 30, 173, 31, 30, 174, 31, 30, 175,
- 31, 30, 37, 31, 30, 177, 31, 30,
- 178, 31, 30, 179, 31, 30, 167, 31,
- 30, 181, 31, 30, 182, 31, 30, 183,
- 31, 30, 37, 31, 30, 37, 31, 30,
- 186, 31, 30, 181, 31, 30, 188, 31,
- 30, 189, 31, 30, 190, 31, 30, 191,
- 31, 30, 37, 31, 30, 31, 193, 30,
- 31, 194, 30, 31, 195, 30, 31, 196,
- 30, 31, 197, 30, 31, 198, 30, 31,
- 199, 30, 31, 200, 30, 31, 201, 30,
- 31, 202, 30, 31, 203, 30, 31, 204,
- 30, 31, 205, 30, 31, 9, 30, 31,
- 37, 30, 209, 208, 209, 208, 210, 215,
- 251, 257, 209, 209, 9, 262, 276, 9,
- 209, 208, 211, 209, 208, 212, 209, 208,
- 213, 209, 208, 214, 209, 208, 37, 209,
- 208, 216, 223, 234, 238, 242, 246, 250,
- 209, 208, 217, 209, 208, 218, 221, 209,
- 208, 219, 220, 209, 208, 37, 209, 208,
- 37, 209, 208, 222, 209, 208, 37, 209,
- 208, 224, 209, 208, 225, 209, 208, 226,
- 209, 208, 227, 209, 208, 228, 209, 37,
- 208, 229, 209, 208, 230, 209, 208, 231,
- 209, 208, 232, 209, 208, 233, 209, 208,
- 209, 37, 208, 235, 209, 208, 236, 209,
- 208, 237, 209, 208, 233, 209, 208, 239,
- 209, 208, 240, 209, 208, 241, 209, 208,
- 37, 209, 208, 243, 209, 208, 244, 209,
- 208, 245, 209, 208, 227, 209, 208, 247,
- 209, 208, 248, 209, 208, 249, 209, 208,
- 37, 209, 208, 37, 209, 208, 252, 253,
- 209, 208, 247, 209, 208, 254, 209, 208,
- 255, 209, 208, 256, 209, 208, 233, 209,
- 208, 258, 209, 208, 259, 209, 208, 260,
- 209, 208, 261, 209, 208, 37, 209, 208,
- 209, 263, 208, 209, 264, 208, 209, 265,
- 208, 209, 266, 208, 209, 267, 208, 209,
- 268, 208, 209, 269, 208, 209, 270, 208,
- 209, 271, 208, 209, 272, 208, 209, 273,
- 208, 209, 274, 208, 209, 275, 208, 209,
- 9, 208, 209, 37, 208, 278, 0, 279,
- 0, 280, 0, 281, 0, 282, 0, 284,
- 283, 284, 283, 285, 291, 310, 284, 284,
- 9, 315, 9, 284, 283, 286, 284, 283,
- 287, 284, 283, 288, 284, 283, 289, 284,
- 283, 290, 284, 283, 284, 37, 283, 292,
- 302, 306, 284, 283, 293, 284, 283, 294,
- 284, 283, 295, 284, 283, 296, 284, 283,
- 297, 284, 37, 283, 298, 284, 283, 299,
- 284, 283, 300, 284, 283, 301, 284, 283,
- 290, 284, 283, 303, 284, 283, 304, 284,
- 283, 305, 284, 283, 290, 284, 283, 307,
- 284, 283, 308, 284, 283, 309, 284, 283,
- 296, 284, 283, 311, 284, 283, 312, 284,
- 283, 313, 284, 283, 314, 284, 283, 290,
- 284, 283, 284, 316, 283, 284, 317, 283,
- 284, 318, 283, 284, 319, 283, 284, 320,
- 283, 284, 321, 283, 284, 322, 283, 284,
- 323, 283, 284, 324, 283, 284, 325, 283,
- 284, 326, 283, 284, 327, 283, 284, 328,
- 283, 284, 9, 283, 330, 0, 331, 0,
- 332, 0, 7, 0, 334, 0, 335, 0,
- 336, 0, 22, 0, 40, 0, 7, 0,
- 340, 0, 341, 0, 342, 0, 343, 0,
- 344, 0, 346, 345, 346, 345, 347, 346,
- 346, 9, 9, 346, 345, 348, 346, 345,
- 349, 346, 345, 350, 346, 345, 351, 346,
- 345, 352, 346, 345, 346, 37, 345, 354,
- 0, 9, 0, 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 29, 29, 29, 29, 0, 54, 0, 5,
- 1, 0, 29, 1, 35, 0, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 149, 126, 57, 110, 23, 0,
- 29, 29, 29, 29, 54, 0, 5, 1,
- 0, 29, 1, 35, 0, 43, 0, 0,
- 0, 0, 0, 0, 0, 43, 0, 43,
- 0, 0, 43, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 84, 84, 84, 84, 54, 0, 78,
- 33, 84, 78, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 19, 54, 0, 63, 63, 63, 63,
- 130, 31, 60, 57, 31, 63, 57, 66,
- 31, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 84, 84, 84, 54,
- 0, 72, 33, 84, 72, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 15, 54, 0, 0, 0,
- 0, 0, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 0,
- 54, 0, 15, 54, 0, 15, 54, 0,
- 0, 54, 0, 15, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 15, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 15, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 15, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 15, 54, 0,
- 15, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 15, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 15, 0, 54, 15, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 139, 48, 9, 106, 11,
- 0, 134, 45, 45, 45, 3, 122, 33,
- 33, 33, 0, 122, 33, 33, 33, 0,
- 122, 33, 0, 33, 0, 102, 7, 7,
- 43, 54, 0, 0, 43, 114, 25, 0,
- 54, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 43, 43, 43, 43, 0, 27, 118, 27,
- 27, 51, 27, 0, 54, 0, 1, 0,
- 43, 0, 0, 0, 43, 54, 37, 37,
- 87, 37, 37, 43, 0, 39, 0, 43,
- 0, 0, 54, 0, 0, 39, 0, 0,
- 96, 96, 96, 96, 54, 0, 93, 90,
- 41, 96, 90, 99, 0, 43, 0, 0,
- 0, 0, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 0, 54, 0, 0, 0,
- 54, 0, 19, 54, 0, 19, 54, 0,
- 0, 54, 0, 19, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 19, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 19, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 19, 54, 0, 19, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 19, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 19, 0, 54,
- 19, 0, 144, 57, 54, 0, 84, 84,
- 84, 84, 54, 0, 75, 33, 84, 75,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 17, 54,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 17, 54, 0,
- 17, 54, 0, 0, 54, 0, 17, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 17,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 54, 17, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 17, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 17, 54, 0, 17, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 17, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 17, 0, 54, 17, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 84, 84, 54, 0,
- 69, 33, 69, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 13, 0, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 13, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 13, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 144, 57, 54, 0, 84, 54,
- 0, 81, 81, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 21, 0, 0,
- 43, 0, 43, 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 355;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/zh_cn.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 918 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/zh_cn.c.rl"
-
-#line 925 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/zh_cn.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/zh_cn.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/zh_cn.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/zh_cn.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/zh_cn.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/zh_cn.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/zh_cn.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/zh_cn.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/zh_cn.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/zh_cn.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/zh_cn.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/zh_cn.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/zh_cn.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/zh_cn.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/zh_cn.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/zh_cn.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/zh_cn.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/zh_cn.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/zh_cn.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/zh_cn.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/zh_cn.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/zh_cn.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/zh_cn.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/zh_cn.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1215 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/zh_cn.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1278 "ext/gherkin_lexer_zh_cn/gherkin_lexer_zh_cn.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/zh_cn.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_zh_cn()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Zh_cn", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
diff --cc ext/gherkin_lexer_zh_tw/extconf.rb
index 3d9cb62,3d9cb62..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_zh_tw/extconf.rb
+++ /dev/null
@@@ -1,6 -1,6 +1,0 @@@
--require 'mkmf'
--CONFIG['warnflags'].gsub!(/-Wshorten-64-to-32/, '') if CONFIG['warnflags']
--$CFLAGS << ' -O0 -Wall' if CONFIG['CC'] =~ /gcc|clang/
--dir_config("gherkin_lexer_zh_tw")
--have_library("c", "main")
--create_makefile("gherkin_lexer_zh_tw")
diff --cc ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c
index 3c483a1,ab845fd..0000000
deleted file mode 100644,100644
--- a/ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c
+++ /dev/null
@@@ -1,1307 -1,1307 +1,0 @@@
--
- #line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- #include <assert.h>
- #include <ruby.h>
-
- #if defined(_WIN32)
- #include <stddef.h>
- #endif
-
- #ifdef HAVE_RUBY_RE_H
- #include <ruby/re.h>
- #else
- #include <re.h>
- #endif
-
- #ifdef HAVE_RUBY_ENCODING_H
- #include <ruby/encoding.h>
- #define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
- #else
- #define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
- #endif
-
- #ifndef RSTRING_PTR
- #define RSTRING_PTR(s) (RSTRING(s)->ptr)
- #endif
-
- #ifndef RSTRING_LEN
- #define RSTRING_LEN(s) (RSTRING(s)->len)
- #endif
-
- #define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
- typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
- } lexer_state;
-
- static VALUE mGherkin;
- static VALUE mGherkinLexer;
- static VALUE mCLexer;
- static VALUE cI18nLexer;
- static VALUE rb_eGherkinLexingError;
-
- #define LEN(AT, P) (P - data - lexer->AT)
- #define MARK(M, P) (lexer->M = (P) - data)
- #define PTR_TO(P) (data + lexer->P)
-
- #define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
- #define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
- #line 254 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
-
-
- /** Data **/
-
- #line 89 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
- static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
- };
-
- static const short _lexer_key_offsets[] = {
- 0, 0, 16, 19, 20, 21, 22, 23,
- 25, 27, 42, 46, 47, 49, 51, 52,
- 53, 54, 55, 57, 58, 59, 60, 62,
- 63, 64, 65, 66, 67, 68, 69, 70,
- 83, 86, 88, 90, 92, 94, 109, 110,
- 111, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 134, 137, 139, 141, 143, 145,
- 147, 149, 151, 153, 158, 160, 163, 166,
- 168, 170, 172, 174, 177, 179, 181, 183,
- 186, 188, 190, 192, 194, 196, 198, 200,
- 202, 204, 206, 208, 210, 212, 214, 216,
- 218, 220, 222, 224, 226, 228, 230, 232,
- 234, 236, 238, 240, 242, 244, 246, 248,
- 250, 252, 254, 256, 258, 260, 262, 264,
- 266, 267, 268, 269, 270, 271, 272, 273,
- 275, 277, 282, 287, 292, 297, 301, 305,
- 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 318, 319, 320, 321, 322,
- 323, 328, 335, 340, 344, 350, 353, 355,
- 361, 376, 378, 380, 382, 384, 389, 391,
- 394, 397, 399, 401, 403, 405, 408, 410,
- 412, 414, 416, 418, 420, 422, 424, 426,
- 428, 430, 432, 434, 436, 438, 440, 442,
- 444, 446, 448, 450, 452, 454, 456, 458,
- 460, 462, 464, 466, 468, 470, 472, 474,
- 476, 478, 480, 482, 484, 485, 486, 499,
- 502, 504, 506, 508, 510, 512, 514, 516,
- 518, 523, 525, 528, 531, 533, 535, 537,
- 539, 542, 544, 546, 548, 551, 553, 555,
- 557, 559, 561, 563, 565, 567, 569, 571,
- 573, 575, 577, 579, 581, 583, 585, 587,
- 590, 592, 594, 596, 598, 600, 602, 604,
- 606, 608, 610, 612, 614, 616, 618, 620,
- 622, 624, 626, 628, 630, 632, 634, 636,
- 638, 640, 641, 642, 643, 644, 645, 646,
- 656, 658, 660, 662, 664, 666, 668, 671,
- 674, 676, 678, 680, 683, 685, 687, 689,
- 691, 693, 695, 697, 699, 701, 703, 705,
- 707, 709, 711, 713, 715, 717, 719, 721,
- 723, 725, 727, 729, 731, 733, 735, 737,
- 739, 741, 743, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, 755, 756, 757,
- 758, 759, 760, 761, 762, 763, 770, 772,
- 774, 776, 778, 780, 782, 783, 784
- };
-
- static const char _lexer_trans_keys[] = {
- -28, -27, -25, -24, -23, -17, 10, 32,
- 34, 35, 37, 42, 64, 124, 9, 13,
- -72, -67, -66, -90, -28, -72, -108, 10,
- 13, 10, 13, -28, -27, -25, -24, -23,
- 10, 32, 34, 35, 37, 42, 64, 124,
- 9, 13, -127, -118, -112, -96, -121, -27,
- -24, -90, -82, -126, -102, -88, -83, -121,
- -97, -26, -100, -84, -27, 58, -92, -89,
- -25, -74, -79, 58, 10, 10, -28, -27,
- -25, -24, -23, 10, 32, 35, 37, 42,
- 64, 9, 13, -72, -67, 10, -90, 10,
- -28, 10, -72, 10, -108, 10, -28, -27,
- -25, -24, -23, 10, 32, 34, 35, 37,
- 42, 64, 124, 9, 13, -107, -74, -128,
- -125, -116, -116, -26, -103, -81, 58, 10,
- 10, -28, -27, -25, -24, -23, 10, 32,
- 35, 37, 42, 64, 9, 13, -72, -67,
- 10, -90, 10, -28, 10, -72, 10, -108,
- 10, -122, 10, -26, 10, -104, 10, -81,
- 10, -127, -118, -112, -96, 10, -121, 10,
- -27, -24, 10, -90, -82, 10, -126, 10,
- -102, 10, -88, 10, -83, 10, -121, -97,
- 10, -26, 10, -100, 10, -84, 10, -27,
- 10, 58, -92, 10, -89, 10, -25, 10,
- -74, 10, -79, 10, 10, 58, -24, 10,
- -125, 10, -67, 10, -116, 10, -26, 10,
- -103, 10, -76, 10, -26, 10, -103, 10,
- -81, 10, -107, 10, -74, 10, -128, 10,
- -116, 10, -126, 10, -93, 10, -23, 10,
- -70, 10, -68, 10, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, -126, -93, -23, -70, -68, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 13, 32, 64, 9, 10,
- 9, 10, 13, 32, 64, 11, 12, 10,
- 32, 64, 9, 13, 32, 124, 9, 13,
- 10, 32, 92, 124, 9, 13, 10, 92,
- 124, 10, 92, 10, 32, 92, 124, 9,
- 13, -28, -27, -25, -24, -23, 10, 32,
- 34, 35, 37, 42, 64, 124, 9, 13,
- -122, 10, -26, 10, -104, 10, -81, 10,
- -127, -118, -112, -96, 10, -121, 10, -27,
- -24, 10, -90, -82, 10, -126, 10, -102,
- 10, -88, 10, -83, 10, -121, -97, 10,
- -26, 10, -100, 10, -84, 10, 10, 58,
- -24, 10, -125, 10, -67, 10, -116, 10,
- -26, 10, -103, 10, -76, 10, -26, 10,
- -103, 10, -81, 10, -107, 10, -74, 10,
- -128, 10, -116, 10, -126, 10, -93, 10,
- -23, 10, -70, 10, -68, 10, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 10, -28, -27,
- -25, -24, -23, 10, 32, 35, 37, 42,
- 64, 9, 13, -72, -67, 10, -90, 10,
- -28, 10, -72, 10, -108, 10, -122, 10,
- -26, 10, -104, 10, -81, 10, -127, -118,
- -112, -96, 10, -121, 10, -27, -24, 10,
- -90, -82, 10, -126, 10, -102, 10, -88,
- 10, -83, 10, -121, -97, 10, -26, 10,
- -100, 10, -84, 10, -27, 10, 58, -92,
- 10, -89, 10, -25, 10, -74, 10, -79,
- 10, 10, 58, -24, 10, -125, 10, -67,
- 10, -116, 10, -26, 10, -103, 10, -76,
- 10, -26, 10, -103, 10, -81, 10, -107,
- 10, -74, 10, -128, -125, 10, -116, 10,
- -116, 10, -26, 10, -103, 10, -81, 10,
- -126, 10, -93, 10, -23, 10, -70, 10,
- -68, 10, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 32,
- -24, -125, -67, 58, 10, 10, -28, -27,
- -24, 10, 32, 35, 37, 64, 9, 13,
- -66, 10, -117, 10, -27, 10, -83, 10,
- -112, 10, 10, 58, -118, -96, 10, -121,
- -97, 10, -26, 10, -100, 10, -84, 10,
- -27, 10, 58, -92, 10, -89, 10, -25,
- 10, -74, 10, -79, 10, -24, 10, -125,
- 10, -67, 10, -76, 10, -26, 10, -103,
- 10, -81, 10, -125, 10, -116, 10, -26,
- 10, -103, 10, -81, 10, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, -116, -26, -103, -76, -26, -103, -81,
- -122, -26, -104, -81, -117, -27, -83, -112,
- 58, 10, 10, -27, 10, 32, 35, 124,
- 9, 13, -118, 10, -97, 10, -24, 10,
- -125, 10, -67, 10, 10, 58, -69, -65,
- 0
- };
-
- static const char _lexer_single_lengths[] = {
- 0, 14, 3, 1, 1, 1, 1, 2,
- 2, 13, 4, 1, 2, 2, 1, 1,
- 1, 1, 2, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 11,
- 3, 2, 2, 2, 2, 13, 1, 1,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 11, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 5, 2, 3, 3, 2,
- 2, 2, 2, 3, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 3, 5, 3, 2, 4, 3, 2, 4,
- 13, 2, 2, 2, 2, 5, 2, 3,
- 3, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 1, 1, 11, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 5, 2, 3, 3, 2, 2, 2, 2,
- 3, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 8,
- 2, 2, 2, 2, 2, 2, 3, 3,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 5, 2, 2,
- 2, 2, 2, 2, 1, 1, 0
- };
-
- static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 1, 1, 1, 1, 0, 0, 1,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0
- };
-
- static const short _lexer_index_offsets[] = {
- 0, 0, 16, 20, 22, 24, 26, 28,
- 31, 34, 49, 54, 56, 59, 62, 64,
- 66, 68, 70, 73, 75, 77, 79, 82,
- 84, 86, 88, 90, 92, 94, 96, 98,
- 111, 115, 118, 121, 124, 127, 142, 144,
- 146, 149, 151, 153, 155, 157, 159, 161,
- 163, 165, 178, 182, 185, 188, 191, 194,
- 197, 200, 203, 206, 212, 215, 219, 223,
- 226, 229, 232, 235, 239, 242, 245, 248,
- 252, 255, 258, 261, 264, 267, 270, 273,
- 276, 279, 282, 285, 288, 291, 294, 297,
- 300, 303, 306, 309, 312, 315, 318, 321,
- 324, 327, 330, 333, 336, 339, 342, 345,
- 348, 351, 354, 357, 360, 363, 366, 369,
- 372, 374, 376, 378, 380, 382, 384, 386,
- 389, 392, 397, 402, 407, 412, 416, 420,
- 423, 425, 427, 429, 431, 433, 435, 437,
- 439, 441, 443, 445, 447, 449, 451, 453,
- 455, 460, 467, 472, 476, 482, 486, 489,
- 495, 510, 513, 516, 519, 522, 528, 531,
- 535, 539, 542, 545, 548, 551, 555, 558,
- 561, 564, 567, 570, 573, 576, 579, 582,
- 585, 588, 591, 594, 597, 600, 603, 606,
- 609, 612, 615, 618, 621, 624, 627, 630,
- 633, 636, 639, 642, 645, 648, 651, 654,
- 657, 660, 663, 666, 669, 671, 673, 686,
- 690, 693, 696, 699, 702, 705, 708, 711,
- 714, 720, 723, 727, 731, 734, 737, 740,
- 743, 747, 750, 753, 756, 760, 763, 766,
- 769, 772, 775, 778, 781, 784, 787, 790,
- 793, 796, 799, 802, 805, 808, 811, 814,
- 818, 821, 824, 827, 830, 833, 836, 839,
- 842, 845, 848, 851, 854, 857, 860, 863,
- 866, 869, 872, 875, 878, 881, 884, 887,
- 890, 893, 895, 897, 899, 901, 903, 905,
- 915, 918, 921, 924, 927, 930, 933, 937,
- 941, 944, 947, 950, 954, 957, 960, 963,
- 966, 969, 972, 975, 978, 981, 984, 987,
- 990, 993, 996, 999, 1002, 1005, 1008, 1011,
- 1014, 1017, 1020, 1023, 1026, 1029, 1032, 1035,
- 1038, 1041, 1044, 1047, 1049, 1051, 1053, 1055,
- 1057, 1059, 1061, 1063, 1065, 1067, 1069, 1071,
- 1073, 1075, 1077, 1079, 1081, 1083, 1090, 1093,
- 1096, 1099, 1102, 1105, 1108, 1110, 1112
- };
-
- static const short _lexer_trans_targs[] = {
- 2, 10, 38, 40, 112, 348, 9, 9,
- 117, 127, 129, 143, 144, 147, 9, 0,
- 3, 330, 334, 0, 4, 0, 5, 0,
- 6, 0, 7, 0, 9, 128, 8, 9,
- 128, 8, 2, 10, 38, 40, 112, 9,
- 9, 117, 127, 129, 143, 144, 147, 9,
- 0, 11, 18, 323, 326, 0, 12, 0,
- 13, 16, 0, 14, 15, 0, 7, 0,
- 7, 0, 17, 0, 7, 0, 19, 273,
- 0, 20, 0, 21, 0, 22, 0, 23,
- 204, 0, 24, 0, 25, 0, 26, 0,
- 27, 0, 28, 0, 29, 0, 31, 30,
- 31, 30, 32, 157, 180, 182, 184, 31,
- 31, 9, 189, 203, 9, 31, 30, 33,
- 153, 31, 30, 34, 31, 30, 35, 31,
- 30, 36, 31, 30, 37, 31, 30, 2,
- 10, 38, 40, 112, 9, 9, 117, 127,
- 129, 143, 144, 147, 9, 0, 39, 0,
- 7, 0, 41, 42, 0, 4, 0, 43,
- 0, 44, 0, 45, 0, 46, 0, 47,
- 0, 49, 48, 49, 48, 50, 59, 88,
- 90, 92, 49, 49, 9, 97, 111, 9,
- 49, 48, 51, 55, 49, 48, 52, 49,
- 48, 53, 49, 48, 54, 49, 48, 37,
- 49, 48, 56, 49, 48, 57, 49, 48,
- 58, 49, 48, 37, 49, 48, 60, 67,
- 81, 84, 49, 48, 61, 49, 48, 62,
- 65, 49, 48, 63, 64, 49, 48, 37,
- 49, 48, 37, 49, 48, 66, 49, 48,
- 37, 49, 48, 68, 78, 49, 48, 69,
- 49, 48, 70, 49, 48, 71, 49, 48,
- 72, 49, 37, 48, 73, 49, 48, 74,
- 49, 48, 75, 49, 48, 76, 49, 48,
- 77, 49, 48, 49, 37, 48, 79, 49,
- 48, 80, 49, 48, 77, 49, 48, 82,
- 49, 48, 83, 49, 48, 63, 49, 48,
- 85, 49, 48, 86, 49, 48, 87, 49,
- 48, 71, 49, 48, 89, 49, 48, 37,
- 49, 48, 91, 49, 48, 52, 49, 48,
- 93, 49, 48, 94, 49, 48, 95, 49,
- 48, 96, 49, 48, 37, 49, 48, 49,
- 98, 48, 49, 99, 48, 49, 100, 48,
- 49, 101, 48, 49, 102, 48, 49, 103,
- 48, 49, 104, 48, 49, 105, 48, 49,
- 106, 48, 49, 107, 48, 49, 108, 48,
- 49, 109, 48, 49, 110, 48, 49, 9,
- 48, 49, 37, 48, 113, 0, 114, 0,
- 115, 0, 116, 0, 7, 0, 118, 0,
- 119, 0, 121, 120, 120, 121, 120, 120,
- 122, 122, 123, 122, 122, 122, 122, 123,
- 122, 122, 122, 122, 124, 122, 122, 122,
- 122, 125, 122, 122, 9, 126, 126, 0,
- 9, 126, 126, 0, 9, 128, 127, 9,
- 0, 130, 0, 131, 0, 132, 0, 133,
- 0, 134, 0, 135, 0, 136, 0, 137,
- 0, 138, 0, 139, 0, 140, 0, 141,
- 0, 142, 0, 350, 0, 7, 0, 0,
- 0, 0, 0, 145, 146, 9, 146, 146,
- 144, 145, 145, 9, 146, 144, 146, 0,
- 147, 148, 147, 0, 152, 151, 150, 148,
- 151, 149, 0, 150, 148, 149, 0, 150,
- 149, 152, 151, 150, 148, 151, 149, 2,
- 10, 38, 40, 112, 152, 152, 117, 127,
- 129, 143, 144, 147, 152, 0, 154, 31,
- 30, 155, 31, 30, 156, 31, 30, 37,
- 31, 30, 158, 165, 173, 176, 31, 30,
- 159, 31, 30, 160, 163, 31, 30, 161,
- 162, 31, 30, 37, 31, 30, 37, 31,
- 30, 164, 31, 30, 37, 31, 30, 166,
- 170, 31, 30, 167, 31, 30, 168, 31,
- 30, 169, 31, 30, 31, 37, 30, 171,
- 31, 30, 172, 31, 30, 169, 31, 30,
- 174, 31, 30, 175, 31, 30, 161, 31,
- 30, 177, 31, 30, 178, 31, 30, 179,
- 31, 30, 169, 31, 30, 181, 31, 30,
- 37, 31, 30, 183, 31, 30, 34, 31,
- 30, 185, 31, 30, 186, 31, 30, 187,
- 31, 30, 188, 31, 30, 37, 31, 30,
- 31, 190, 30, 31, 191, 30, 31, 192,
- 30, 31, 193, 30, 31, 194, 30, 31,
- 195, 30, 31, 196, 30, 31, 197, 30,
- 31, 198, 30, 31, 199, 30, 31, 200,
- 30, 31, 201, 30, 31, 202, 30, 31,
- 9, 30, 31, 37, 30, 206, 205, 206,
- 205, 207, 216, 245, 247, 253, 206, 206,
- 9, 258, 272, 9, 206, 205, 208, 212,
- 206, 205, 209, 206, 205, 210, 206, 205,
- 211, 206, 205, 37, 206, 205, 213, 206,
- 205, 214, 206, 205, 215, 206, 205, 37,
- 206, 205, 217, 224, 238, 241, 206, 205,
- 218, 206, 205, 219, 222, 206, 205, 220,
- 221, 206, 205, 37, 206, 205, 37, 206,
- 205, 223, 206, 205, 37, 206, 205, 225,
- 235, 206, 205, 226, 206, 205, 227, 206,
- 205, 228, 206, 205, 229, 206, 37, 205,
- 230, 206, 205, 231, 206, 205, 232, 206,
- 205, 233, 206, 205, 234, 206, 205, 206,
- 37, 205, 236, 206, 205, 237, 206, 205,
- 234, 206, 205, 239, 206, 205, 240, 206,
- 205, 220, 206, 205, 242, 206, 205, 243,
- 206, 205, 244, 206, 205, 228, 206, 205,
- 246, 206, 205, 37, 206, 205, 248, 249,
- 206, 205, 209, 206, 205, 250, 206, 205,
- 251, 206, 205, 252, 206, 205, 234, 206,
- 205, 254, 206, 205, 255, 206, 205, 256,
- 206, 205, 257, 206, 205, 37, 206, 205,
- 206, 259, 205, 206, 260, 205, 206, 261,
- 205, 206, 262, 205, 206, 263, 205, 206,
- 264, 205, 206, 265, 205, 206, 266, 205,
- 206, 267, 205, 206, 268, 205, 206, 269,
- 205, 206, 270, 205, 206, 271, 205, 206,
- 9, 205, 206, 37, 205, 274, 0, 275,
- 0, 276, 0, 277, 0, 279, 278, 279,
- 278, 280, 286, 304, 279, 279, 9, 309,
- 9, 279, 278, 281, 279, 278, 282, 279,
- 278, 283, 279, 278, 284, 279, 278, 285,
- 279, 278, 279, 37, 278, 287, 300, 279,
- 278, 288, 297, 279, 278, 289, 279, 278,
- 290, 279, 278, 291, 279, 278, 292, 279,
- 37, 278, 293, 279, 278, 294, 279, 278,
- 295, 279, 278, 296, 279, 278, 285, 279,
- 278, 298, 279, 278, 299, 279, 278, 285,
- 279, 278, 301, 279, 278, 302, 279, 278,
- 303, 279, 278, 291, 279, 278, 305, 279,
- 278, 306, 279, 278, 307, 279, 278, 308,
- 279, 278, 285, 279, 278, 279, 310, 278,
- 279, 311, 278, 279, 312, 278, 279, 313,
- 278, 279, 314, 278, 279, 315, 278, 279,
- 316, 278, 279, 317, 278, 279, 318, 278,
- 279, 319, 278, 279, 320, 278, 279, 321,
- 278, 279, 322, 278, 279, 9, 278, 324,
- 0, 325, 0, 14, 0, 327, 0, 328,
- 0, 329, 0, 22, 0, 331, 0, 332,
- 0, 333, 0, 7, 0, 335, 0, 336,
- 0, 337, 0, 338, 0, 339, 0, 341,
- 340, 341, 340, 342, 341, 341, 9, 9,
- 341, 340, 343, 341, 340, 344, 341, 340,
- 345, 341, 340, 346, 341, 340, 347, 341,
- 340, 341, 37, 340, 349, 0, 9, 0,
- 0, 0
- };
-
- static const unsigned char _lexer_trans_actions[] = {
- 29, 29, 29, 29, 29, 0, 54, 0,
- 5, 1, 0, 29, 1, 35, 0, 43,
- 0, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 149, 126, 57, 110,
- 23, 0, 29, 29, 29, 29, 29, 54,
- 0, 5, 1, 0, 29, 1, 35, 0,
- 43, 0, 0, 0, 0, 43, 0, 43,
- 0, 0, 43, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 84, 84, 84, 84, 84, 54,
- 0, 78, 33, 84, 78, 0, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 19, 54, 0, 63,
- 63, 63, 63, 63, 130, 31, 60, 57,
- 31, 63, 57, 66, 31, 43, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 84, 84, 84,
- 84, 84, 54, 0, 72, 33, 84, 72,
- 0, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 15,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 15, 54, 0, 0, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 15,
- 54, 0, 15, 54, 0, 0, 54, 0,
- 15, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 15, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 15, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 15,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 15, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 54, 15, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 139, 48, 9, 106, 11, 0,
- 134, 45, 45, 45, 3, 122, 33, 33,
- 33, 0, 122, 33, 33, 33, 0, 122,
- 33, 0, 33, 0, 102, 7, 7, 43,
- 54, 0, 0, 43, 114, 25, 0, 54,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 43,
- 43, 43, 43, 0, 27, 118, 27, 27,
- 51, 27, 0, 54, 0, 1, 0, 43,
- 0, 0, 0, 43, 54, 37, 37, 87,
- 37, 37, 43, 0, 39, 0, 43, 0,
- 0, 54, 0, 0, 39, 0, 0, 96,
- 96, 96, 96, 96, 54, 0, 93, 90,
- 41, 96, 90, 99, 0, 43, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 19,
- 54, 0, 0, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 0, 54, 0, 19, 54, 0, 19, 54,
- 0, 0, 54, 0, 19, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 19, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 19, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 19, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 19, 0, 54, 19, 0, 144, 57, 54,
- 0, 84, 84, 84, 84, 84, 54, 0,
- 75, 33, 84, 75, 0, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 17, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 17,
- 54, 0, 0, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 0, 54, 0, 17, 54, 0, 17, 54,
- 0, 0, 54, 0, 17, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 17, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 17, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 17, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 17, 0, 54, 17, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 84, 84, 84, 54, 0, 69, 33,
- 69, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 13, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 54, 0, 81, 81,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 21, 0, 0, 43, 0, 43,
- 0, 0
- };
-
- static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43
- };
-
- static const int lexer_start = 1;
- static const int lexer_first_final = 350;
- static const int lexer_error = 0;
-
- static const int lexer_en_main = 1;
-
-
- #line 258 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
-
- static VALUE
- unindent(VALUE con, int start_col)
- {
- VALUE re;
- // Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
- }
-
- static void
- store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
- {
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
- }
-
- static void
- store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
- {
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
- }
-
- static void
- store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
- {
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
- }
- static void
- store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
- {
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
- }
- static void
- raise_lexer_error(const char * at, int line)
- {
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
- }
-
- static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
- }
-
- static VALUE CLexer_alloc(VALUE klass)
- {
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
- }
-
- static VALUE CLexer_init(VALUE self, VALUE listener)
- {
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
- }
-
- static VALUE CLexer_scan(VALUE self, VALUE input)
- {
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
- #line 911 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
- {
- cs = lexer_start;
- }
-
- #line 425 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
-
- #line 918 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
- _resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += ((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
- _match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
- #line 83 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
- #line 89 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
- #line 93 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
- #line 98 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
- #line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
- #line 112 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
- #line 116 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
- #line 120 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
- #line 124 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
- #line 128 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
- #line 132 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
- #line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
- #line 143 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
- #line 148 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
- #line 153 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
- #line 158 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
- #line 162 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
- #line 168 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
- #line 175 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
- #line 179 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
- #line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
- #line 189 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
- #line 203 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1208 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
- }
- }
-
- _again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
- #line 207 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- // Allocate as a ruby string so that it gets cleaned up by GC
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; // terminate new string at first newline found
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
- #line 1271 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
- }
- }
- }
-
- _out: {}
- }
-
- #line 426 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/zh_tw.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- // Reset lexer by re-initializing the whole thing
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
- }
-
- void Init_gherkin_lexer_zh_tw()
- {
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Zh_tw", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
- }
-
-#line 1 "ragel/i18n/zh_tw.c.rl"
-#include <assert.h>
-#include <ruby.h>
-
-#if defined(_WIN32)
-#include <stddef.h>
-#endif
-
-#ifdef HAVE_RUBY_RE_H
-#include <ruby/re.h>
-#else
-#include <re.h>
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include <ruby/encoding.h>
-#define ENCODED_STR_NEW(ptr, len) \
- rb_enc_str_new(ptr, len, rb_utf8_encoding())
-#else
-#define ENCODED_STR_NEW(ptr, len) \
- rb_str_new(ptr, len)
-#endif
-
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(s) (RSTRING(s)->ptr)
-#endif
-
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(s) (RSTRING(s)->len)
-#endif
-
-#define DATA_GET(FROM, TYPE, NAME) \
- Data_Get_Struct(FROM, TYPE, NAME); \
- if (NAME == NULL) { \
- rb_raise(rb_eArgError, "NULL found for " # NAME " when it shouldn't be."); \
- }
-
-typedef struct lexer_state {
- int content_len;
- int line_number;
- int current_line;
- int start_col;
- size_t mark;
- size_t keyword_start;
- size_t keyword_end;
- size_t next_keyword_start;
- size_t content_start;
- size_t content_end;
- size_t docstring_content_type_start;
- size_t docstring_content_type_end;
- size_t query_start;
- size_t last_newline;
- size_t final_newline;
-} lexer_state;
-
-static VALUE mGherkin;
-static VALUE mGherkinLexer;
-static VALUE mCLexer;
-static VALUE cI18nLexer;
-static VALUE rb_eGherkinLexingError;
-
-#define LEN(AT, P) (P - data - lexer->AT)
-#define MARK(M, P) (lexer->M = (P) - data)
-#define PTR_TO(P) (data + lexer->P)
-
-#define STORE_KW_END_CON(EVENT) \
- store_multiline_kw_con(listener, # EVENT, \
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end - 1)), \
- PTR_TO(content_start), LEN(content_start, PTR_TO(content_end)), \
- lexer->current_line, lexer->start_col); \
- if (lexer->content_end != 0) { \
- p = PTR_TO(content_end - 1); \
- } \
- lexer->content_end = 0
-
-#define STORE_ATTR(ATTR) \
- store_attr(listener, # ATTR, \
- PTR_TO(content_start), LEN(content_start, p), \
- lexer->line_number)
-
-
-#line 254 "ragel/i18n/zh_tw.c.rl"
-
-
-/** Data **/
-
-#line 89 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
-static const char _lexer_actions[] = {
- 0, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1,
- 7, 1, 8, 1, 9, 1, 10, 1,
- 11, 1, 12, 1, 13, 1, 16, 1,
- 17, 1, 18, 1, 19, 1, 20, 1,
- 21, 1, 22, 1, 23, 2, 1, 18,
- 2, 4, 5, 2, 13, 0, 2, 14,
- 15, 2, 17, 0, 2, 17, 2, 2,
- 17, 16, 2, 17, 19, 2, 18, 6,
- 2, 18, 7, 2, 18, 8, 2, 18,
- 9, 2, 18, 10, 2, 18, 16, 2,
- 20, 21, 2, 22, 0, 2, 22, 2,
- 2, 22, 16, 2, 22, 19, 3, 3,
- 14, 15, 3, 5, 14, 15, 3, 11,
- 14, 15, 3, 12, 14, 15, 3, 13,
- 14, 15, 3, 14, 15, 18, 3, 17,
- 0, 11, 3, 17, 14, 15, 4, 1,
- 14, 15, 18, 4, 4, 5, 14, 15,
- 4, 17, 0, 14, 15, 5, 17, 0,
- 11, 14, 15
-};
-
-static const short _lexer_key_offsets[] = {
- 0, 0, 16, 19, 20, 21, 22, 23,
- 25, 27, 42, 46, 47, 49, 51, 52,
- 53, 54, 55, 57, 58, 59, 60, 62,
- 63, 64, 65, 66, 67, 68, 69, 70,
- 83, 86, 88, 90, 92, 94, 109, 110,
- 111, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 134, 137, 139, 141, 143, 145,
- 147, 149, 151, 153, 158, 160, 163, 166,
- 168, 170, 172, 174, 177, 179, 181, 183,
- 186, 188, 190, 192, 194, 196, 198, 200,
- 202, 204, 206, 208, 210, 212, 214, 216,
- 218, 220, 222, 224, 226, 228, 230, 232,
- 234, 236, 238, 240, 242, 244, 246, 248,
- 250, 252, 254, 256, 258, 260, 262, 264,
- 266, 267, 268, 269, 270, 271, 272, 273,
- 275, 277, 282, 287, 292, 297, 301, 305,
- 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 318, 319, 320, 321, 322,
- 323, 328, 335, 340, 344, 350, 353, 355,
- 361, 376, 378, 380, 382, 384, 389, 391,
- 394, 397, 399, 401, 403, 405, 408, 410,
- 412, 414, 416, 418, 420, 422, 424, 426,
- 428, 430, 432, 434, 436, 438, 440, 442,
- 444, 446, 448, 450, 452, 454, 456, 458,
- 460, 462, 464, 466, 468, 470, 472, 474,
- 476, 478, 480, 482, 484, 485, 486, 499,
- 502, 504, 506, 508, 510, 512, 514, 516,
- 518, 523, 525, 528, 531, 533, 535, 537,
- 539, 542, 544, 546, 548, 551, 553, 555,
- 557, 559, 561, 563, 565, 567, 569, 571,
- 573, 575, 577, 579, 581, 583, 585, 587,
- 590, 592, 594, 596, 598, 600, 602, 604,
- 606, 608, 610, 612, 614, 616, 618, 620,
- 622, 624, 626, 628, 630, 632, 634, 636,
- 638, 640, 641, 642, 643, 644, 645, 646,
- 656, 658, 660, 662, 664, 666, 668, 671,
- 674, 676, 678, 680, 683, 685, 687, 689,
- 691, 693, 695, 697, 699, 701, 703, 705,
- 707, 709, 711, 713, 715, 717, 719, 721,
- 723, 725, 727, 729, 731, 733, 735, 737,
- 739, 741, 743, 745, 746, 747, 748, 749,
- 750, 751, 752, 753, 754, 755, 756, 757,
- 758, 759, 760, 761, 762, 763, 770, 772,
- 774, 776, 778, 780, 782, 783, 784
-};
-
-static const char _lexer_trans_keys[] = {
- -28, -27, -25, -24, -23, -17, 10, 32,
- 34, 35, 37, 42, 64, 124, 9, 13,
- -72, -67, -66, -90, -28, -72, -108, 10,
- 13, 10, 13, -28, -27, -25, -24, -23,
- 10, 32, 34, 35, 37, 42, 64, 124,
- 9, 13, -127, -118, -112, -96, -121, -27,
- -24, -90, -82, -126, -102, -88, -83, -121,
- -97, -26, -100, -84, -27, 58, -92, -89,
- -25, -74, -79, 58, 10, 10, -28, -27,
- -25, -24, -23, 10, 32, 35, 37, 42,
- 64, 9, 13, -72, -67, 10, -90, 10,
- -28, 10, -72, 10, -108, 10, -28, -27,
- -25, -24, -23, 10, 32, 34, 35, 37,
- 42, 64, 124, 9, 13, -107, -74, -128,
- -125, -116, -116, -26, -103, -81, 58, 10,
- 10, -28, -27, -25, -24, -23, 10, 32,
- 35, 37, 42, 64, 9, 13, -72, -67,
- 10, -90, 10, -28, 10, -72, 10, -108,
- 10, -122, 10, -26, 10, -104, 10, -81,
- 10, -127, -118, -112, -96, 10, -121, 10,
- -27, -24, 10, -90, -82, 10, -126, 10,
- -102, 10, -88, 10, -83, 10, -121, -97,
- 10, -26, 10, -100, 10, -84, 10, -27,
- 10, 58, -92, 10, -89, 10, -25, 10,
- -74, 10, -79, 10, 10, 58, -24, 10,
- -125, 10, -67, 10, -116, 10, -26, 10,
- -103, 10, -76, 10, -26, 10, -103, 10,
- -81, 10, -107, 10, -74, 10, -128, 10,
- -116, 10, -126, 10, -93, 10, -23, 10,
- -70, 10, -68, 10, 10, 95, 10, 70,
- 10, 69, 10, 65, 10, 84, 10, 85,
- 10, 82, 10, 69, 10, 95, 10, 69,
- 10, 78, 10, 68, 10, 95, 10, 37,
- 10, 32, -126, -93, -23, -70, -68, 34,
- 34, 10, 13, 10, 13, 10, 32, 34,
- 9, 13, 10, 32, 34, 9, 13, 10,
- 32, 34, 9, 13, 10, 32, 34, 9,
- 13, 10, 32, 9, 13, 10, 32, 9,
- 13, 10, 13, 10, 95, 70, 69, 65,
- 84, 85, 82, 69, 95, 69, 78, 68,
- 95, 37, 32, 13, 32, 64, 9, 10,
- 9, 10, 13, 32, 64, 11, 12, 10,
- 32, 64, 9, 13, 32, 124, 9, 13,
- 10, 32, 92, 124, 9, 13, 10, 92,
- 124, 10, 92, 10, 32, 92, 124, 9,
- 13, -28, -27, -25, -24, -23, 10, 32,
- 34, 35, 37, 42, 64, 124, 9, 13,
- -122, 10, -26, 10, -104, 10, -81, 10,
- -127, -118, -112, -96, 10, -121, 10, -27,
- -24, 10, -90, -82, 10, -126, 10, -102,
- 10, -88, 10, -83, 10, -121, -97, 10,
- -26, 10, -100, 10, -84, 10, 10, 58,
- -24, 10, -125, 10, -67, 10, -116, 10,
- -26, 10, -103, 10, -76, 10, -26, 10,
- -103, 10, -81, 10, -107, 10, -74, 10,
- -128, 10, -116, 10, -126, 10, -93, 10,
- -23, 10, -70, 10, -68, 10, 10, 95,
- 10, 70, 10, 69, 10, 65, 10, 84,
- 10, 85, 10, 82, 10, 69, 10, 95,
- 10, 69, 10, 78, 10, 68, 10, 95,
- 10, 37, 10, 32, 10, 10, -28, -27,
- -25, -24, -23, 10, 32, 35, 37, 42,
- 64, 9, 13, -72, -67, 10, -90, 10,
- -28, 10, -72, 10, -108, 10, -122, 10,
- -26, 10, -104, 10, -81, 10, -127, -118,
- -112, -96, 10, -121, 10, -27, -24, 10,
- -90, -82, 10, -126, 10, -102, 10, -88,
- 10, -83, 10, -121, -97, 10, -26, 10,
- -100, 10, -84, 10, -27, 10, 58, -92,
- 10, -89, 10, -25, 10, -74, 10, -79,
- 10, 10, 58, -24, 10, -125, 10, -67,
- 10, -116, 10, -26, 10, -103, 10, -76,
- 10, -26, 10, -103, 10, -81, 10, -107,
- 10, -74, 10, -128, -125, 10, -116, 10,
- -116, 10, -26, 10, -103, 10, -81, 10,
- -126, 10, -93, 10, -23, 10, -70, 10,
- -68, 10, 10, 95, 10, 70, 10, 69,
- 10, 65, 10, 84, 10, 85, 10, 82,
- 10, 69, 10, 95, 10, 69, 10, 78,
- 10, 68, 10, 95, 10, 37, 10, 32,
- -24, -125, -67, 58, 10, 10, -28, -27,
- -24, 10, 32, 35, 37, 64, 9, 13,
- -66, 10, -117, 10, -27, 10, -83, 10,
- -112, 10, 10, 58, -118, -96, 10, -121,
- -97, 10, -26, 10, -100, 10, -84, 10,
- -27, 10, 58, -92, 10, -89, 10, -25,
- 10, -74, 10, -79, 10, -24, 10, -125,
- 10, -67, 10, -76, 10, -26, 10, -103,
- 10, -81, 10, -125, 10, -116, 10, -26,
- 10, -103, 10, -81, 10, 10, 95, 10,
- 70, 10, 69, 10, 65, 10, 84, 10,
- 85, 10, 82, 10, 69, 10, 95, 10,
- 69, 10, 78, 10, 68, 10, 95, 10,
- 37, -116, -26, -103, -76, -26, -103, -81,
- -122, -26, -104, -81, -117, -27, -83, -112,
- 58, 10, 10, -27, 10, 32, 35, 124,
- 9, 13, -118, 10, -97, 10, -24, 10,
- -125, 10, -67, 10, 10, 58, -69, -65,
- 0
-};
-
-static const char _lexer_single_lengths[] = {
- 0, 14, 3, 1, 1, 1, 1, 2,
- 2, 13, 4, 1, 2, 2, 1, 1,
- 1, 1, 2, 1, 1, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 1, 11,
- 3, 2, 2, 2, 2, 13, 1, 1,
- 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 11, 3, 2, 2, 2, 2, 2,
- 2, 2, 2, 5, 2, 3, 3, 2,
- 2, 2, 2, 3, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 2,
- 2, 3, 3, 3, 3, 2, 2, 2,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 3, 5, 3, 2, 4, 3, 2, 4,
- 13, 2, 2, 2, 2, 5, 2, 3,
- 3, 2, 2, 2, 2, 3, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 1, 1, 11, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 5, 2, 3, 3, 2, 2, 2, 2,
- 3, 2, 2, 2, 3, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 3,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 8,
- 2, 2, 2, 2, 2, 2, 3, 3,
- 2, 2, 2, 3, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 5, 2, 2,
- 2, 2, 2, 2, 1, 1, 0
-};
-
-static const char _lexer_range_lengths[] = {
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 1, 1, 1, 1, 0, 0, 1,
- 1, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0, 0
-};
-
-static const short _lexer_index_offsets[] = {
- 0, 0, 16, 20, 22, 24, 26, 28,
- 31, 34, 49, 54, 56, 59, 62, 64,
- 66, 68, 70, 73, 75, 77, 79, 82,
- 84, 86, 88, 90, 92, 94, 96, 98,
- 111, 115, 118, 121, 124, 127, 142, 144,
- 146, 149, 151, 153, 155, 157, 159, 161,
- 163, 165, 178, 182, 185, 188, 191, 194,
- 197, 200, 203, 206, 212, 215, 219, 223,
- 226, 229, 232, 235, 239, 242, 245, 248,
- 252, 255, 258, 261, 264, 267, 270, 273,
- 276, 279, 282, 285, 288, 291, 294, 297,
- 300, 303, 306, 309, 312, 315, 318, 321,
- 324, 327, 330, 333, 336, 339, 342, 345,
- 348, 351, 354, 357, 360, 363, 366, 369,
- 372, 374, 376, 378, 380, 382, 384, 386,
- 389, 392, 397, 402, 407, 412, 416, 420,
- 423, 425, 427, 429, 431, 433, 435, 437,
- 439, 441, 443, 445, 447, 449, 451, 453,
- 455, 460, 467, 472, 476, 482, 486, 489,
- 495, 510, 513, 516, 519, 522, 528, 531,
- 535, 539, 542, 545, 548, 551, 555, 558,
- 561, 564, 567, 570, 573, 576, 579, 582,
- 585, 588, 591, 594, 597, 600, 603, 606,
- 609, 612, 615, 618, 621, 624, 627, 630,
- 633, 636, 639, 642, 645, 648, 651, 654,
- 657, 660, 663, 666, 669, 671, 673, 686,
- 690, 693, 696, 699, 702, 705, 708, 711,
- 714, 720, 723, 727, 731, 734, 737, 740,
- 743, 747, 750, 753, 756, 760, 763, 766,
- 769, 772, 775, 778, 781, 784, 787, 790,
- 793, 796, 799, 802, 805, 808, 811, 814,
- 818, 821, 824, 827, 830, 833, 836, 839,
- 842, 845, 848, 851, 854, 857, 860, 863,
- 866, 869, 872, 875, 878, 881, 884, 887,
- 890, 893, 895, 897, 899, 901, 903, 905,
- 915, 918, 921, 924, 927, 930, 933, 937,
- 941, 944, 947, 950, 954, 957, 960, 963,
- 966, 969, 972, 975, 978, 981, 984, 987,
- 990, 993, 996, 999, 1002, 1005, 1008, 1011,
- 1014, 1017, 1020, 1023, 1026, 1029, 1032, 1035,
- 1038, 1041, 1044, 1047, 1049, 1051, 1053, 1055,
- 1057, 1059, 1061, 1063, 1065, 1067, 1069, 1071,
- 1073, 1075, 1077, 1079, 1081, 1083, 1090, 1093,
- 1096, 1099, 1102, 1105, 1108, 1110, 1112
-};
-
-static const short _lexer_trans_targs[] = {
- 2, 10, 38, 40, 112, 348, 9, 9,
- 117, 127, 129, 143, 144, 147, 9, 0,
- 3, 330, 334, 0, 4, 0, 5, 0,
- 6, 0, 7, 0, 9, 128, 8, 9,
- 128, 8, 2, 10, 38, 40, 112, 9,
- 9, 117, 127, 129, 143, 144, 147, 9,
- 0, 11, 18, 323, 326, 0, 12, 0,
- 13, 16, 0, 14, 15, 0, 7, 0,
- 7, 0, 17, 0, 7, 0, 19, 273,
- 0, 20, 0, 21, 0, 22, 0, 23,
- 204, 0, 24, 0, 25, 0, 26, 0,
- 27, 0, 28, 0, 29, 0, 31, 30,
- 31, 30, 32, 157, 180, 182, 184, 31,
- 31, 9, 189, 203, 9, 31, 30, 33,
- 153, 31, 30, 34, 31, 30, 35, 31,
- 30, 36, 31, 30, 37, 31, 30, 2,
- 10, 38, 40, 112, 9, 9, 117, 127,
- 129, 143, 144, 147, 9, 0, 39, 0,
- 7, 0, 41, 42, 0, 4, 0, 43,
- 0, 44, 0, 45, 0, 46, 0, 47,
- 0, 49, 48, 49, 48, 50, 59, 88,
- 90, 92, 49, 49, 9, 97, 111, 9,
- 49, 48, 51, 55, 49, 48, 52, 49,
- 48, 53, 49, 48, 54, 49, 48, 37,
- 49, 48, 56, 49, 48, 57, 49, 48,
- 58, 49, 48, 37, 49, 48, 60, 67,
- 81, 84, 49, 48, 61, 49, 48, 62,
- 65, 49, 48, 63, 64, 49, 48, 37,
- 49, 48, 37, 49, 48, 66, 49, 48,
- 37, 49, 48, 68, 78, 49, 48, 69,
- 49, 48, 70, 49, 48, 71, 49, 48,
- 72, 49, 37, 48, 73, 49, 48, 74,
- 49, 48, 75, 49, 48, 76, 49, 48,
- 77, 49, 48, 49, 37, 48, 79, 49,
- 48, 80, 49, 48, 77, 49, 48, 82,
- 49, 48, 83, 49, 48, 63, 49, 48,
- 85, 49, 48, 86, 49, 48, 87, 49,
- 48, 71, 49, 48, 89, 49, 48, 37,
- 49, 48, 91, 49, 48, 52, 49, 48,
- 93, 49, 48, 94, 49, 48, 95, 49,
- 48, 96, 49, 48, 37, 49, 48, 49,
- 98, 48, 49, 99, 48, 49, 100, 48,
- 49, 101, 48, 49, 102, 48, 49, 103,
- 48, 49, 104, 48, 49, 105, 48, 49,
- 106, 48, 49, 107, 48, 49, 108, 48,
- 49, 109, 48, 49, 110, 48, 49, 9,
- 48, 49, 37, 48, 113, 0, 114, 0,
- 115, 0, 116, 0, 7, 0, 118, 0,
- 119, 0, 121, 120, 120, 121, 120, 120,
- 122, 122, 123, 122, 122, 122, 122, 123,
- 122, 122, 122, 122, 124, 122, 122, 122,
- 122, 125, 122, 122, 9, 126, 126, 0,
- 9, 126, 126, 0, 9, 128, 127, 9,
- 0, 130, 0, 131, 0, 132, 0, 133,
- 0, 134, 0, 135, 0, 136, 0, 137,
- 0, 138, 0, 139, 0, 140, 0, 141,
- 0, 142, 0, 350, 0, 7, 0, 0,
- 0, 0, 0, 145, 146, 9, 146, 146,
- 144, 145, 145, 9, 146, 144, 146, 0,
- 147, 148, 147, 0, 152, 151, 150, 148,
- 151, 149, 0, 150, 148, 149, 0, 150,
- 149, 152, 151, 150, 148, 151, 149, 2,
- 10, 38, 40, 112, 152, 152, 117, 127,
- 129, 143, 144, 147, 152, 0, 154, 31,
- 30, 155, 31, 30, 156, 31, 30, 37,
- 31, 30, 158, 165, 173, 176, 31, 30,
- 159, 31, 30, 160, 163, 31, 30, 161,
- 162, 31, 30, 37, 31, 30, 37, 31,
- 30, 164, 31, 30, 37, 31, 30, 166,
- 170, 31, 30, 167, 31, 30, 168, 31,
- 30, 169, 31, 30, 31, 37, 30, 171,
- 31, 30, 172, 31, 30, 169, 31, 30,
- 174, 31, 30, 175, 31, 30, 161, 31,
- 30, 177, 31, 30, 178, 31, 30, 179,
- 31, 30, 169, 31, 30, 181, 31, 30,
- 37, 31, 30, 183, 31, 30, 34, 31,
- 30, 185, 31, 30, 186, 31, 30, 187,
- 31, 30, 188, 31, 30, 37, 31, 30,
- 31, 190, 30, 31, 191, 30, 31, 192,
- 30, 31, 193, 30, 31, 194, 30, 31,
- 195, 30, 31, 196, 30, 31, 197, 30,
- 31, 198, 30, 31, 199, 30, 31, 200,
- 30, 31, 201, 30, 31, 202, 30, 31,
- 9, 30, 31, 37, 30, 206, 205, 206,
- 205, 207, 216, 245, 247, 253, 206, 206,
- 9, 258, 272, 9, 206, 205, 208, 212,
- 206, 205, 209, 206, 205, 210, 206, 205,
- 211, 206, 205, 37, 206, 205, 213, 206,
- 205, 214, 206, 205, 215, 206, 205, 37,
- 206, 205, 217, 224, 238, 241, 206, 205,
- 218, 206, 205, 219, 222, 206, 205, 220,
- 221, 206, 205, 37, 206, 205, 37, 206,
- 205, 223, 206, 205, 37, 206, 205, 225,
- 235, 206, 205, 226, 206, 205, 227, 206,
- 205, 228, 206, 205, 229, 206, 37, 205,
- 230, 206, 205, 231, 206, 205, 232, 206,
- 205, 233, 206, 205, 234, 206, 205, 206,
- 37, 205, 236, 206, 205, 237, 206, 205,
- 234, 206, 205, 239, 206, 205, 240, 206,
- 205, 220, 206, 205, 242, 206, 205, 243,
- 206, 205, 244, 206, 205, 228, 206, 205,
- 246, 206, 205, 37, 206, 205, 248, 249,
- 206, 205, 209, 206, 205, 250, 206, 205,
- 251, 206, 205, 252, 206, 205, 234, 206,
- 205, 254, 206, 205, 255, 206, 205, 256,
- 206, 205, 257, 206, 205, 37, 206, 205,
- 206, 259, 205, 206, 260, 205, 206, 261,
- 205, 206, 262, 205, 206, 263, 205, 206,
- 264, 205, 206, 265, 205, 206, 266, 205,
- 206, 267, 205, 206, 268, 205, 206, 269,
- 205, 206, 270, 205, 206, 271, 205, 206,
- 9, 205, 206, 37, 205, 274, 0, 275,
- 0, 276, 0, 277, 0, 279, 278, 279,
- 278, 280, 286, 304, 279, 279, 9, 309,
- 9, 279, 278, 281, 279, 278, 282, 279,
- 278, 283, 279, 278, 284, 279, 278, 285,
- 279, 278, 279, 37, 278, 287, 300, 279,
- 278, 288, 297, 279, 278, 289, 279, 278,
- 290, 279, 278, 291, 279, 278, 292, 279,
- 37, 278, 293, 279, 278, 294, 279, 278,
- 295, 279, 278, 296, 279, 278, 285, 279,
- 278, 298, 279, 278, 299, 279, 278, 285,
- 279, 278, 301, 279, 278, 302, 279, 278,
- 303, 279, 278, 291, 279, 278, 305, 279,
- 278, 306, 279, 278, 307, 279, 278, 308,
- 279, 278, 285, 279, 278, 279, 310, 278,
- 279, 311, 278, 279, 312, 278, 279, 313,
- 278, 279, 314, 278, 279, 315, 278, 279,
- 316, 278, 279, 317, 278, 279, 318, 278,
- 279, 319, 278, 279, 320, 278, 279, 321,
- 278, 279, 322, 278, 279, 9, 278, 324,
- 0, 325, 0, 14, 0, 327, 0, 328,
- 0, 329, 0, 22, 0, 331, 0, 332,
- 0, 333, 0, 7, 0, 335, 0, 336,
- 0, 337, 0, 338, 0, 339, 0, 341,
- 340, 341, 340, 342, 341, 341, 9, 9,
- 341, 340, 343, 341, 340, 344, 341, 340,
- 345, 341, 340, 346, 341, 340, 347, 341,
- 340, 341, 37, 340, 349, 0, 9, 0,
- 0, 0
-};
-
-static const unsigned char _lexer_trans_actions[] = {
- 29, 29, 29, 29, 29, 0, 54, 0,
- 5, 1, 0, 29, 1, 35, 0, 43,
- 0, 0, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 149, 126, 57, 110,
- 23, 0, 29, 29, 29, 29, 29, 54,
- 0, 5, 1, 0, 29, 1, 35, 0,
- 43, 0, 0, 0, 0, 43, 0, 43,
- 0, 0, 43, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 144, 57,
- 54, 0, 84, 84, 84, 84, 84, 54,
- 0, 78, 33, 84, 78, 0, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 19, 54, 0, 63,
- 63, 63, 63, 63, 130, 31, 60, 57,
- 31, 63, 57, 66, 31, 43, 0, 43,
- 0, 43, 0, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 144, 57, 54, 0, 84, 84, 84,
- 84, 84, 54, 0, 72, 33, 84, 72,
- 0, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 15,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 15, 54, 0, 0, 0,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 0, 54, 0, 0, 0, 54, 0, 15,
- 54, 0, 15, 54, 0, 0, 54, 0,
- 15, 54, 0, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 15, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 54, 15, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 15,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 15, 54, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 15,
- 0, 54, 15, 0, 0, 43, 0, 43,
- 0, 43, 0, 43, 0, 43, 0, 43,
- 0, 43, 139, 48, 9, 106, 11, 0,
- 134, 45, 45, 45, 3, 122, 33, 33,
- 33, 0, 122, 33, 33, 33, 0, 122,
- 33, 0, 33, 0, 102, 7, 7, 43,
- 54, 0, 0, 43, 114, 25, 0, 54,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 43,
- 43, 43, 43, 0, 27, 118, 27, 27,
- 51, 27, 0, 54, 0, 1, 0, 43,
- 0, 0, 0, 43, 54, 37, 37, 87,
- 37, 37, 43, 0, 39, 0, 43, 0,
- 0, 54, 0, 0, 39, 0, 0, 96,
- 96, 96, 96, 96, 54, 0, 93, 90,
- 41, 96, 90, 99, 0, 43, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 19,
- 54, 0, 0, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 0, 54, 0, 19, 54, 0, 19, 54,
- 0, 0, 54, 0, 19, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 54, 19, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 19, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 19, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 19, 0, 54, 19, 0, 144, 57, 54,
- 0, 84, 84, 84, 84, 84, 54, 0,
- 75, 33, 84, 75, 0, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 17, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 17,
- 54, 0, 0, 0, 0, 0, 54, 0,
- 0, 54, 0, 0, 0, 54, 0, 0,
- 0, 54, 0, 17, 54, 0, 17, 54,
- 0, 0, 54, 0, 17, 54, 0, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 17, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 54,
- 17, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 17, 54, 0, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 17, 54, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 17, 0, 54, 17, 0, 0, 43, 0,
- 43, 0, 43, 0, 43, 144, 57, 54,
- 0, 84, 84, 84, 54, 0, 69, 33,
- 69, 0, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 54, 13, 0, 0, 0, 54,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 13, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 0, 54, 0, 0, 54, 0, 0,
- 54, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 13, 0, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 0,
- 43, 0, 43, 0, 43, 0, 43, 144,
- 57, 54, 0, 84, 54, 0, 81, 81,
- 0, 0, 0, 54, 0, 0, 54, 0,
- 0, 54, 0, 0, 54, 0, 0, 54,
- 0, 54, 21, 0, 0, 43, 0, 43,
- 0, 0
-};
-
-static const unsigned char _lexer_eof_actions[] = {
- 0, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43, 43,
- 43, 43, 43, 43, 43, 43, 43
-};
-
-static const int lexer_start = 1;
-static const int lexer_first_final = 350;
-static const int lexer_error = 0;
-
-static const int lexer_en_main = 1;
-
-
-#line 258 "ragel/i18n/zh_tw.c.rl"
-
-static VALUE
-unindent(VALUE con, int start_col)
-{
- VALUE re;
- /* Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters */
- char pat[32];
- snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
- re = rb_reg_regcomp(rb_str_new2(pat));
- rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
-
- return Qnil;
-
-}
-
-static void
-store_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line)
-{
- VALUE con = Qnil, kw = Qnil;
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
- rb_funcall(con, rb_intern("strip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 3, kw, con, INT2FIX(current_line));
-}
-
-static void
-store_multiline_kw_con(VALUE listener, const char * event_name,
- const char * keyword_at, size_t keyword_length,
- const char * at, size_t length,
- int current_line, int start_col)
-{
- VALUE split;
- VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
-
- kw = ENCODED_STR_NEW(keyword_at, keyword_length);
- con = ENCODED_STR_NEW(at, length);
-
- unindent(con, start_col);
-
- split = rb_str_split(con, "\n");
-
- name = rb_funcall(split, rb_intern("shift"), 0);
- desc = rb_ary_join(split, rb_str_new2( "\n" ));
-
- if( name == Qnil )
- {
- name = rb_str_new2("");
- }
- if( rb_funcall(desc, rb_intern("size"), 0) == 0)
- {
- desc = rb_str_new2("");
- }
- rb_funcall(name, rb_intern("strip!"), 0);
- rb_funcall(desc, rb_intern("rstrip!"), 0);
- rb_funcall(listener, rb_intern(event_name), 4, kw, name, desc, INT2FIX(current_line));
-}
-
-static void
-store_attr(VALUE listener, const char * attr_type,
- const char * at, size_t length,
- int line)
-{
- VALUE val = ENCODED_STR_NEW(at, length);
- rb_funcall(listener, rb_intern(attr_type), 2, val, INT2FIX(line));
-}
-static void
-store_docstring_content(VALUE listener,
- int start_col,
- const char *type_at, size_t type_length,
- const char *at, size_t length,
- int current_line)
-{
- VALUE re2;
- VALUE unescape_escaped_quotes;
- VALUE con = ENCODED_STR_NEW(at, length);
- VALUE con_type = ENCODED_STR_NEW(type_at, type_length);
-
- unindent(con, start_col);
-
- re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
- unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
- rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
- rb_funcall(con_type, rb_intern("strip!"), 0);
- rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
- rb_funcall(listener, rb_intern("doc_string"), 3, con_type, con, INT2FIX(current_line));
-}
-static void
-raise_lexer_error(const char * at, int line)
-{
- rb_raise(rb_eGherkinLexingError, "Lexing error on line %d: '%s'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.", line, at);
-}
-
-static void lexer_init(lexer_state *lexer) {
- lexer->content_start = 0;
- lexer->content_end = 0;
- lexer->content_len = 0;
- lexer->docstring_content_type_start = 0;
- lexer->docstring_content_type_end = 0;
- lexer->mark = 0;
- lexer->keyword_start = 0;
- lexer->keyword_end = 0;
- lexer->next_keyword_start = 0;
- lexer->line_number = 1;
- lexer->last_newline = 0;
- lexer->final_newline = 0;
- lexer->start_col = 0;
-}
-
-static VALUE CLexer_alloc(VALUE klass)
-{
- VALUE obj;
- lexer_state *lxr = ALLOC(lexer_state);
- lexer_init(lxr);
-
- obj = Data_Wrap_Struct(klass, NULL, -1, lxr);
-
- return obj;
-}
-
-static VALUE CLexer_init(VALUE self, VALUE listener)
-{
- lexer_state *lxr;
- rb_iv_set(self, "@listener", listener);
-
- lxr = NULL;
- DATA_GET(self, lexer_state, lxr);
- lexer_init(lxr);
-
- return self;
-}
-
-static VALUE CLexer_scan(VALUE self, VALUE input)
-{
- VALUE input_copy;
- char *data;
- size_t len;
- VALUE listener = rb_iv_get(self, "@listener");
-
- lexer_state *lexer;
- lexer = NULL;
- DATA_GET(self, lexer_state, lexer);
-
- input_copy = rb_str_dup(input);
-
- rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
- data = RSTRING_PTR(input_copy);
- len = RSTRING_LEN(input_copy);
-
- if (len == 0) {
- rb_raise(rb_eGherkinLexingError, "No content to lex.");
- } else {
-
- const char *p, *pe, *eof;
- int cs = 0;
-
- VALUE current_row = Qnil;
-
- p = data;
- pe = data + len;
- eof = pe;
-
- assert(*pe == '\0' && "pointer does not end on NULL");
-
-
-#line 911 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
- {
- cs = lexer_start;
- }
-
-#line 425 "ragel/i18n/zh_tw.c.rl"
-
-#line 918 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
- {
- int _klen;
- unsigned int _trans;
- const char *_acts;
- unsigned int _nacts;
- const char *_keys;
-
- if ( p == pe )
- goto _test_eof;
- if ( cs == 0 )
- goto _out;
-_resume:
- _keys = _lexer_trans_keys + _lexer_key_offsets[cs];
- _trans = _lexer_index_offsets[cs];
-
- _klen = _lexer_single_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + _klen - 1;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + ((_upper-_lower) >> 1);
- if ( (*p) < *_mid )
- _upper = _mid - 1;
- else if ( (*p) > *_mid )
- _lower = _mid + 1;
- else {
- _trans += (unsigned int)(_mid - _keys);
- goto _match;
- }
- }
- _keys += _klen;
- _trans += _klen;
- }
-
- _klen = _lexer_range_lengths[cs];
- if ( _klen > 0 ) {
- const char *_lower = _keys;
- const char *_mid;
- const char *_upper = _keys + (_klen<<1) - 2;
- while (1) {
- if ( _upper < _lower )
- break;
-
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
- if ( (*p) < _mid[0] )
- _upper = _mid - 2;
- else if ( (*p) > _mid[1] )
- _lower = _mid + 2;
- else {
- _trans += (unsigned int)((_mid - _keys)>>1);
- goto _match;
- }
- }
- _trans += _klen;
- }
-
-_match:
- cs = _lexer_trans_targs[_trans];
-
- if ( _lexer_trans_actions[_trans] == 0 )
- goto _again;
-
- _acts = _lexer_actions + _lexer_trans_actions[_trans];
- _nacts = (unsigned int) *_acts++;
- while ( _nacts-- > 0 )
- {
- switch ( *_acts++ )
- {
- case 0:
-#line 83 "ragel/i18n/zh_tw.c.rl"
- {
- MARK(content_start, p);
- lexer->current_line = lexer->line_number;
- lexer->start_col = lexer->content_start - lexer->last_newline - (lexer->keyword_end - lexer->keyword_start) + 2;
- }
- break;
- case 1:
-#line 89 "ragel/i18n/zh_tw.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 2:
-#line 93 "ragel/i18n/zh_tw.c.rl"
- {
- lexer->current_line = lexer->line_number;
- lexer->start_col = p - data - lexer->last_newline;
- }
- break;
- case 3:
-#line 98 "ragel/i18n/zh_tw.c.rl"
- {
- int len = LEN(content_start, PTR_TO(final_newline));
- int type_len = LEN(docstring_content_type_start, PTR_TO(docstring_content_type_end));
-
- if (len < 0) len = 0;
- if (type_len < 0) len = 0;
-
- store_docstring_content(listener, lexer->start_col, PTR_TO(docstring_content_type_start), type_len, PTR_TO(content_start), len, lexer->current_line);
- }
- break;
- case 4:
-#line 108 "ragel/i18n/zh_tw.c.rl"
- {
- MARK(docstring_content_type_start, p);
- }
- break;
- case 5:
-#line 112 "ragel/i18n/zh_tw.c.rl"
- {
- MARK(docstring_content_type_end, p);
- }
- break;
- case 6:
-#line 116 "ragel/i18n/zh_tw.c.rl"
- {
- STORE_KW_END_CON(feature);
- }
- break;
- case 7:
-#line 120 "ragel/i18n/zh_tw.c.rl"
- {
- STORE_KW_END_CON(background);
- }
- break;
- case 8:
-#line 124 "ragel/i18n/zh_tw.c.rl"
- {
- STORE_KW_END_CON(scenario);
- }
- break;
- case 9:
-#line 128 "ragel/i18n/zh_tw.c.rl"
- {
- STORE_KW_END_CON(scenario_outline);
- }
- break;
- case 10:
-#line 132 "ragel/i18n/zh_tw.c.rl"
- {
- STORE_KW_END_CON(examples);
- }
- break;
- case 11:
-#line 136 "ragel/i18n/zh_tw.c.rl"
- {
- store_kw_con(listener, "step",
- PTR_TO(keyword_start), LEN(keyword_start, PTR_TO(keyword_end)),
- PTR_TO(content_start), LEN(content_start, p),
- lexer->current_line);
- }
- break;
- case 12:
-#line 143 "ragel/i18n/zh_tw.c.rl"
- {
- STORE_ATTR(comment);
- lexer->mark = 0;
- }
- break;
- case 13:
-#line 148 "ragel/i18n/zh_tw.c.rl"
- {
- STORE_ATTR(tag);
- lexer->mark = 0;
- }
- break;
- case 14:
-#line 153 "ragel/i18n/zh_tw.c.rl"
- {
- lexer->line_number += 1;
- MARK(final_newline, p);
- }
- break;
- case 15:
-#line 158 "ragel/i18n/zh_tw.c.rl"
- {
- MARK(last_newline, p + 1);
- }
- break;
- case 16:
-#line 162 "ragel/i18n/zh_tw.c.rl"
- {
- if (lexer->mark == 0) {
- MARK(mark, p);
- }
- }
- break;
- case 17:
-#line 168 "ragel/i18n/zh_tw.c.rl"
- {
- MARK(keyword_end, p);
- MARK(keyword_start, PTR_TO(mark));
- MARK(content_start, p + 1);
- lexer->mark = 0;
- }
- break;
- case 18:
-#line 175 "ragel/i18n/zh_tw.c.rl"
- {
- MARK(content_end, p);
- }
- break;
- case 19:
-#line 179 "ragel/i18n/zh_tw.c.rl"
- {
- p = p - 1;
- lexer->current_line = lexer->line_number;
- current_row = rb_ary_new();
- }
- break;
- case 20:
-#line 185 "ragel/i18n/zh_tw.c.rl"
- {
- MARK(content_start, p);
- }
- break;
- case 21:
-#line 189 "ragel/i18n/zh_tw.c.rl"
- {
- VALUE re_pipe, re_newline, re_backslash;
- VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
- rb_funcall(con, rb_intern("strip!"), 0);
- re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
- re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
- re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
- rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
-
- rb_ary_push(current_row, con);
- }
- break;
- case 22:
-#line 203 "ragel/i18n/zh_tw.c.rl"
- {
- rb_funcall(listener, rb_intern("row"), 2, current_row, INT2FIX(lexer->current_line));
- }
- break;
- case 23:
-#line 207 "ragel/i18n/zh_tw.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1208 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
- }
- }
-
-_again:
- if ( cs == 0 )
- goto _out;
- if ( ++p != pe )
- goto _resume;
- _test_eof: {}
- if ( p == eof )
- {
- const char *__acts = _lexer_actions + _lexer_eof_actions[cs];
- unsigned int __nacts = (unsigned int) *__acts++;
- while ( __nacts-- > 0 ) {
- switch ( *__acts++ ) {
- case 23:
-#line 207 "ragel/i18n/zh_tw.c.rl"
- {
- int line;
- if (cs < lexer_first_final) {
- size_t count = 0;
- VALUE newstr_val;
- char *newstr;
- int newstr_count = 0;
- size_t len;
- const char *buff;
- if (lexer->last_newline != 0) {
- len = LEN(last_newline, eof);
- buff = PTR_TO(last_newline);
- } else {
- len = strlen(data);
- buff = data;
- }
-
- /* Allocate as a ruby string so that it gets cleaned up by GC */
- newstr_val = rb_str_new(buff, len);
- newstr = RSTRING_PTR(newstr_val);
-
-
- for (count = 0; count < len; count++) {
- if(buff[count] == 10) {
- newstr[newstr_count] = '\0'; /* terminate new string at first newline found */
- break;
- } else {
- if (buff[count] == '%') {
- newstr[newstr_count++] = buff[count];
- newstr[newstr_count] = buff[count];
- } else {
- newstr[newstr_count] = buff[count];
- }
- }
- newstr_count++;
- }
-
- line = lexer->line_number;
- lexer_init(lexer); /* Re-initialize so we can scan again with the same lexer */
- raise_lexer_error(newstr, line);
- } else {
- rb_funcall(listener, rb_intern("eof"), 0);
- }
- }
- break;
-#line 1271 "ext/gherkin_lexer_zh_tw/gherkin_lexer_zh_tw.c"
- }
- }
- }
-
- _out: {}
- }
-
-#line 426 "ragel/i18n/zh_tw.c.rl"
-
- assert(p <= pe && "data overflow after parsing execute");
- assert(lexer->content_start <= len && "content starts after data end");
- assert(lexer->mark < len && "mark is after data end");
-
- /* Reset lexer by re-initializing the whole thing */
- lexer_init(lexer);
-
- if (cs == lexer_error) {
- rb_raise(rb_eGherkinLexingError, "Invalid format, lexing fails.");
- } else {
- return Qtrue;
- }
- }
-}
-
-void Init_gherkin_lexer_zh_tw()
-{
- mGherkin = rb_define_module("Gherkin");
- mGherkinLexer = rb_define_module_under(mGherkin, "Lexer");
- rb_eGherkinLexingError = rb_const_get(mGherkinLexer, rb_intern("LexingError"));
-
- mCLexer = rb_define_module_under(mGherkin, "CLexer");
- cI18nLexer = rb_define_class_under(mCLexer, "Zh_tw", rb_cObject);
- rb_define_alloc_func(cI18nLexer, CLexer_alloc);
- rb_define_method(cI18nLexer, "initialize", CLexer_init, 1);
- rb_define_method(cI18nLexer, "scan", CLexer_scan, 1);
-}
-
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ruby-extras/ruby-gherkin.git
More information about the Pkg-ruby-extras-commits
mailing list