All Downloads are FREE. Search and download functionalities are using the official Maven repository.

gherkin.lexer.En_au Maven / Gradle / Ivy

The newest version!

// line 1 "ragel/i18n/en_au.java.rl"
package gherkin.lexer;

import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.ArrayList;
import java.util.regex.Pattern;
import gherkin.lexer.Lexer;
import gherkin.lexer.Listener;
import gherkin.lexer.LexingError;

public class En_au implements Lexer {
  
// line 150 "ragel/i18n/en_au.java.rl"


  private final Listener listener;

  public En_au(Listener listener) {
    this.listener = listener;
  }

  
// line 26 "java/src/main/java/gherkin/lexer/En_au.java"
private static byte[] init__lexer_actions_0()
{
	return new byte [] {
	    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,    2,   18,
	    2,    3,    4,    2,   13,    0,    2,   14,   15,    2,   17,    0,
	    2,   17,    1,    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,    1,
	    2,   22,   16,    2,   22,   19,    3,    4,   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,    2,   14,   15,   18,    4,    3,    4,   14,   15,
	    4,   17,    0,   14,   15,    5,   17,    0,   11,   14,   15
	};
}

private static final byte _lexer_actions[] = init__lexer_actions_0();


private static short[] init__lexer_key_offsets_0()
{
	return new short [] {
	    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
	};
}

private static final short _lexer_key_offsets[] = init__lexer_key_offsets_0();


private static byte[] init__lexer_trans_keys_0()
{
	return new byte [] {
	  -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
	};
}

private static final byte _lexer_trans_keys[] = init__lexer_trans_keys_0();


private static byte[] init__lexer_single_lengths_0()
{
	return new byte [] {
	    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
	};
}

private static final byte _lexer_single_lengths[] = init__lexer_single_lengths_0();


private static byte[] init__lexer_range_lengths_0()
{
	return new byte [] {
	    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
	};
}

private static final byte _lexer_range_lengths[] = init__lexer_range_lengths_0();


private static short[] init__lexer_index_offsets_0()
{
	return new short [] {
	    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
	};
}

private static final short _lexer_index_offsets[] = init__lexer_index_offsets_0();


private static short[] init__lexer_indicies_0()
{
	return new short [] {
	    1,    3,    2,    4,    5,    6,    7,    8,    9,   10,   11,   12,
	   13,   14,   15,   16,   17,    2,    0,   18,    0,    2,    0,    3,
	    2,    4,    5,    6,    7,    8,    9,   10,   11,   12,   13,   14,
	   15,   16,   17,    2,    0,   19,    0,   20,    0,   22,   23,   21,
	   25,   26,   24,   29,   28,   30,   28,   27,   33,   32,   34,   32,
	   31,   33,   32,   35,   32,   31,   33,   32,   36,   32,   31,   38,
	   37,   37,    0,    3,   39,   39,    0,   41,   42,   40,    3,    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,   59,   60,   58,   62,   63,   61,
	    0,    0,    0,    0,   64,   65,   66,   65,   65,   68,   67,   64,
	    3,   69,    8,   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,   84,    0,   86,
	   85,   88,   87,   88,   89,   90,   91,   92,   90,   93,   94,   95,
	   96,   97,   98,   99,  100,   89,   87,   88,  101,   87,   88,  102,
	   87,   88,  103,   87,   88,  104,   87,   88,  105,   87,   88,  106,
	   87,   88,  107,   87,   88,  108,   87,   88,  109,   87,   88,  110,
	   87,   88,  111,   87,   88,  112,   87,   88,  113,   87,   88,  114,
	   87,   88,  115,   87,  117,  116,  118,  119,  120,  121,  122,  123,
	  124,  125,  126,  127,  128,  129,  130,  131,  116,    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,  148,    0,  149,    0,  150,    0,
	  151,    0,  152,    0,  153,    0,  154,    0,  155,    0,  156,    0,
	  157,    0,  158,    0,  159,    0,  160,    0,  161,    0,  162,    0,
	  163,    0,  164,    0,  165,    0,  166,    0,  167,    0,  168,    0,
	  169,    0,  170,    0,  171,    0,  172,    0,  173,    0,  175,  174,
	  177,  176,  177,  178,  179,  180,  181,  179,  182,  183,  184,  185,
	  186,  187,  188,  178,  176,  177,  189,  176,  177,  190,  176,  177,
	  191,  176,  177,  192,  176,  177,  193,  176,  177,  194,  176,  177,
	  195,  176,  177,  196,  176,  177,  197,  176,  177,  198,  176,  177,
	  199,  176,  177,  200,  176,  177,  201,  176,  177,  202,  176,  177,
	  203,  176,  177,  204,  176,  177,  205,  176,  177,  206,  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,  177,  203,  176,  177,
	  218,  176,  177,  219,  176,  177,  220,  176,  177,  221,  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,  232,  176,  177,  233,  176,  177,
	  234,  176,  177,  235,  176,  177,  236,  176,  177,  237,  176,  177,
	  238,  176,  177,  239,  176,  177,  240,  176,  177,  241,  176,  177,
	  242,  176,  177,  243,  176,  177,  244,  176,  177,  245,  176,  177,
	  246,  176,  177,  247,  176,  177,  248,  176,  177,  249,  176,  177,
	  250,  176,  177,  251,  176,  177,  252,  176,  177,  253,  176,  177,
	  254,  176,  177,  255,  176,  177,  256,  176,  177,  257,  176,  177,
	  258,  176,  177,  259,  176,  177,  260,  176,  177,  261,  176,  177,
	  262,  176,  177,  263,  176,  177,  264,  176,  177,  265,  176,  177,
	  266,  176,  177,  267,  176,  177,  268,  176,  177,  269,  176,  177,
	  270,  176,  177,  250,  176,  177,  271,  176,  177,  272,  176,  177,
	  273,  176,  177,  274,  176,  177,  275,  176,  177,  276,  176,  177,
	  277,  176,  177,  278,  176,  177,  279,  176,  177,  217,  176,  177,
	  280,  176,  177,  281,  176,  177,  282,  176,  177,  283,  176,  177,
	  284,  176,  177,  285,  176,  177,  286,  176,  177,  287,  176,  177,
	  288,  176,  177,  289,  176,  177,  290,  176,  177,  291,  176,  177,
	  292,  176,  177,  216,  176,  177,  293,  176,  177,  294,  176,  177,
	  295,  176,  177,  296,  176,  177,  297,  176,  177,  298,  176,  177,
	  299,  176,  177,  250,  176,  177,  300,  301,  176,  177,  302,  176,
	  177,  303,  176,  177,  304,  176,  177,  250,  176,  177,  305,  176,
	  177,  306,  176,  177,  307,  176,  177,  308,  176,  177,  309,  176,
	  177,  250,  176,  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,  164,    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,  344,  343,  344,
	  345,  346,  347,  346,  348,  349,  350,  351,  352,  345,  343,  344,
	  353,  343,  344,  354,  343,  344,  355,  343,  344,  356,  343,  344,
	  357,  343,  344,  358,  343,  344,  359,  343,  344,  360,  343,  344,
	  361,  343,  344,  362,  343,  344,  363,  343,  344,  364,  343,  344,
	  365,  343,  344,  366,  343,  344,  367,  343,  344,  368,  343,  344,
	  369,  343,  344,  370,  343,  344,  371,  343,  344,  372,  343,  344,
	  373,  343,  344,  374,  343,  344,  375,  343,  344,  376,  343,  344,
	  377,  343,  344,  378,  343,  344,  379,  343,  344,  380,  343,  344,
	  381,  343,  344,  382,  343,  344,  383,  343,  344,  384,  343,  344,
	  385,  343,  344,  386,  343,  344,  387,  343,  344,  388,  343,  344,
	  380,  343,  344,  389,  343,  344,  390,  343,  344,  391,  343,  344,
	  392,  343,  344,  393,  343,  344,  394,  343,  344,  395,  343,  344,
	  396,  343,  344,  397,  343,  344,  380,  343,  344,  398,  343,  344,
	  399,  343,  344,  400,  343,  344,  401,  343,  344,  402,  343,  344,
	  403,  343,  344,  404,  343,  344,  405,  343,  344,  406,  343,  344,
	  407,  343,  344,  408,  343,  344,  409,  343,  344,  410,  343,  344,
	  379,  343,  344,  411,  343,  344,  412,  343,  344,  413,  343,  344,
	  414,  343,  344,  415,  343,  344,  416,  343,  344,  417,  343,  344,
	  418,  343,  344,  419,  343,  344,  420,  343,  344,  380,  343,  421,
	    0,  422,    0,  423,    0,  424,    0,  425,    0,  426,    0,  427,
	    0,  428,    0,  429,    0,  430,    0,  431,    0,  432,    0,  433,
	    0,  434,    0,  435,    0,  436,    0,  438,  437,  440,  439,  440,
	  441,  442,  443,  444,  442,  445,  446,  447,  448,  449,  450,  441,
	  439,  440,  451,  439,  440,  452,  439,  440,  453,  439,  440,  454,
	  439,  440,  455,  439,  440,  456,  439,  440,  457,  439,  440,  458,
	  439,  440,  459,  439,  440,  460,  439,  440,  461,  439,  440,  462,
	  439,  440,  463,  439,  440,  464,  439,  440,  465,  439,  440,  466,
	  439,  440,  467,  439,  440,  468,  439,  440,  469,  439,  440,  470,
	  439,  440,  471,  439,  440,  472,  439,  440,  473,  439,  440,  474,
	  439,  440,  475,  439,  440,  476,  439,  440,  477,  439,  440,  478,
	  439,  440,  479,  439,  440,  465,  439,  440,  480,  439,  440,  481,
	  439,  440,  482,  439,  440,  483,  439,  440,  484,  439,  440,  485,
	  439,  440,  486,  439,  440,  487,  439,  440,  488,  439,  440,  489,
	  439,  440,  490,  439,  440,  491,  439,  440,  492,  439,  440,  493,
	  439,  440,  494,  439,  440,  495,  439,  440,  496,  439,  440,  497,
	  439,  440,  498,  439,  440,  499,  439,  440,  500,  439,  440,  501,
	  439,  440,  502,  439,  440,  503,  439,  440,  504,  439,  440,  505,
	  439,  440,  506,  439,  440,  507,  439,  440,  508,  439,  440,  509,
	  439,  440,  510,  439,  440,  511,  439,  440,  512,  439,  440,  513,
	  439,  440,  514,  439,  440,  515,  439,  440,  516,  439,  440,  517,
	  439,  440,  518,  439,  440,  519,  439,  440,  520,  439,  440,  521,
	  439,  440,  522,  439,  440,  523,  439,  440,  524,  439,  440,  525,
	  439,  440,  526,  439,  440,  527,  439,  440,  528,  439,  440,  529,
	  439,  440,  530,  439,  440,  531,  439,  440,  532,  439,  440,  512,
	  439,  440,  533,  439,  440,  534,  439,  440,  535,  439,  440,  536,
	  439,  440,  537,  439,  440,  538,  439,  440,  539,  439,  440,  540,
	  439,  440,  541,  439,  440,  479,  439,  440,  542,  439,  440,  543,
	  439,  440,  544,  439,  440,  545,  439,  440,  546,  439,  440,  547,
	  439,  440,  548,  439,  440,  512,  439,  440,  549,  550,  439,  440,
	  551,  439,  440,  552,  439,  440,  553,  439,  440,  512,  439,  440,
	  554,  439,  440,  555,  439,  440,  556,  439,  440,  557,  439,  440,
	  558,  439,  440,  512,  439,  559,    0,  560,    0,  561,    0,  562,
	    0,  563,    0,  564,    0,  565,    0,  164,    0,  566,  567,  568,
	    0,  569,    0,  570,    0,  571,    0,  164,    0,  572,    0,  573,
	    0,  574,    0,  575,    0,  576,    0,  164,    0,  577,    0,  578,
	    0,  579,    0,  580,    0,  581,    0,  582,    0,  583,    0,  584,
	    0,  585,    0,  586,    0,  587,    0,  589,  588,  591,  590,  591,
	  592,  593,  594,  593,  592,  590,  591,  595,  590,  591,  596,  590,
	  591,  597,  590,  591,  598,  590,  591,  599,  590,  591,  600,  590,
	  591,  601,  590,  591,  602,  590,  591,  603,  590,  591,  604,  590,
	  591,  605,  590,  606,  607,  606,    0,  610,  609,  611,  612,  609,
	  608,    0,  614,  615,  613,    0,  614,  613,  610,  616,  614,  615,
	  616,  613,  610,  617,  618,  619,  620,  621,  622,  623,  624,  625,
	  626,  627,  628,  629,  630,  631,  617,    0,   88,  632,   87,   88,
	  633,   87,   88,  634,   87,   88,  635,   87,   88,  636,   87,   88,
	  637,   87,   88,  638,   87,   88,  639,   87,   88,  640,   87,   88,
	  641,   87,   88,  642,   87,   88,  643,   87,   88,  644,   87,   88,
	  645,   87,   88,  115,   87,   88,  646,   87,   88,  647,   87,   88,
	  648,   87,   88,  649,   87,   88,  650,   87,   88,  651,   87,   88,
	  652,   87,   88,  653,   87,   88,  654,   87,   88,  655,   87,   88,
	  656,   87,   88,  657,   87,   88,  658,   87,   88,  659,   87,   88,
	  660,   87,   88,  661,   87,   88,  662,   87,   88,  663,   87,   88,
	  664,   87,   88,  665,   87,   88,  666,   87,   88,  667,   87,   88,
	  668,   87,   88,  669,   87,   88,  670,   87,   88,  671,   87,   88,
	  672,   87,   88,  673,   87,   88,  674,   87,   88,  675,   87,   88,
	  676,   87,   88,  677,   87,   88,  678,   87,   88,  679,   87,   88,
	  680,   87,   88,  681,   87,   88,  682,   87,   88,  683,   87,   88,
	  684,   87,   88,  685,   87,   88,  645,   87,   88,  686,   87,   88,
	  687,   87,   88,  688,   87,   88,  689,   87,   88,  690,   87,   88,
	  691,   87,   88,  692,   87,   88,  693,   87,   88,  694,   87,   88,
	  695,   87,   88,  696,   87,   88,  697,   87,   88,  698,   87,   88,
	  699,   87,   88,  700,   87,   88,  701,   87,   88,  702,   87,   88,
	  703,   87,   88,  704,   87,   88,  705,   87,   88,  678,   87,   88,
	  706,   87,   88,  707,   87,   88,  708,   87,   88,  709,   87,   88,
	  710,   87,   88,  711,   87,   88,  712,   87,   88,  713,   87,   88,
	  714,   87,   88,  645,   87,   88,  715,   87,   88,  716,   87,   88,
	  717,   87,   88,  718,   87,   88,  719,   87,   88,  720,   87,   88,
	  721,   87,   88,  722,   87,   88,  723,   87,   88,  724,   87,   88,
	  725,   87,   88,  726,   87,   88,  727,   87,   88,  644,   87,   88,
	  728,   87,   88,  729,   87,   88,  730,   87,   88,  731,   87,   88,
	  732,   87,   88,  733,   87,   88,  734,   87,   88,  678,   87,   88,
	  735,  736,   87,   88,  737,   87,   88,  738,   87,   88,  739,   87,
	   88,  678,   87,   88,  740,   87,   88,  741,   87,   88,  742,   87,
	   88,  743,   87,   88,  744,   87,   88,  678,   87,  745,    0
	};
}

private static final short _lexer_indicies[] = init__lexer_indicies_0();


private static short[] init__lexer_trans_targs_0()
{
	return new short [] {
	    0,    2,    4,    4,    5,   15,   17,   31,   34,   37,   71,  104,
	  243,  264,  350,  482,  490,  526,    3,    6,    7,    8,    9,    8,
	    8,    9,    8,   10,   10,   10,   11,   10,   10,   10,   11,   12,
	   13,   14,    4,   14,   15,    4,   16,   18,   19,   20,   21,   22,
	   23,   24,   25,   26,   27,   28,   29,   30,  652,   32,   33,    4,
	   16,   33,    4,   16,   35,   36,    4,   35,   34,   36,   38,   39,
	   40,   41,   42,   43,   44,   45,   46,   47,   48,   49,   50,   51,
	   52,   53,   54,   53,   54,   54,    4,   55,   69,  532,  547,  580,
	  588,  609,  619,  633,  641,   56,   57,   58,   59,   60,   61,   62,
	   63,   64,   65,   66,   67,   68,    4,   70,    4,    4,    5,   15,
	   17,   31,   34,   37,   71,  104,  243,  264,  350,  482,  490,  526,
	   72,   73,   74,   75,   76,   77,   78,   79,   80,   81,   82,   83,
	   84,   85,   86,   87,   88,   89,   90,   91,   92,   93,   94,   95,
	   96,   97,   98,   99,  100,  101,  102,  103,   31,  105,  106,  107,
	  108,  109,  110,  111,  112,  113,  114,  115,  114,  115,  115,    4,
	  116,  130,  131,  146,  179,  200,  210,  224,  232,  117,  118,  119,
	  120,  121,  122,  123,  124,  125,  126,  127,  128,  129,    4,   70,
	  132,  133,  134,  135,  136,  137,  138,  139,  140,  141,  142,  143,
	  144,  145,  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,  130,  180,
	  181,  182,  183,  184,  185,  186,  187,  188,  189,  190,  191,  192,
	  193,  194,  195,  196,  197,  198,  199,  201,  202,  203,  204,  205,
	  206,  207,  208,  209,  211,  212,  213,  214,  215,  216,  217,  218,
	  219,  220,  221,  222,  223,  225,  226,  227,  228,  229,  230,  231,
	  233,  237,  234,  235,  236,  238,  239,  240,  241,  242,  244,  245,
	  246,  247,  248,  249,  250,  251,  252,  253,  254,  255,  256,  257,
	  258,  259,  260,  261,  262,  263,  265,  266,  267,  268,  269,  270,
	  271,  272,  273,  274,  275,  276,  277,  276,  277,  277,    4,  278,
	  292,  307,  315,  325,  339,  279,  280,  281,  282,  283,  284,  285,
	  286,  287,  288,  289,  290,  291,    4,  293,  294,  295,  296,  297,
	  298,  299,  300,  301,  302,  303,  304,  305,  306,   70,  308,  309,
	  310,  311,  312,  313,  314,  316,  317,  318,  319,  320,  321,  322,
	  323,  324,  326,  327,  328,  329,  330,  331,  332,  333,  334,  335,
	  336,  337,  338,  340,  341,  342,  343,  344,  345,  346,  347,  348,
	  349,  351,  352,  353,  354,  355,  356,  357,  358,  359,  360,  361,
	  362,  363,  364,  365,  366,  367,  368,  367,  368,  368,    4,  369,
	  383,  384,  399,  432,  453,  463,  471,  370,  371,  372,  373,  374,
	  375,  376,  377,  378,  379,  380,  381,  382,    4,   70,  385,  386,
	  387,  388,  389,  390,  391,  392,  393,  394,  395,  396,  397,  398,
	  400,  401,  402,  403,  404,  405,  406,  407,  408,  409,  410,  411,
	  412,  413,  414,  415,  416,  417,  418,  419,  420,  421,  422,  423,
	  424,  425,  426,  427,  428,  429,  430,  431,  383,  433,  434,  435,
	  436,  437,  438,  439,  440,  441,  442,  443,  444,  445,  446,  447,
	  448,  449,  450,  451,  452,  454,  455,  456,  457,  458,  459,  460,
	  461,  462,  464,  465,  466,  467,  468,  469,  470,  472,  476,  473,
	  474,  475,  477,  478,  479,  480,  481,  483,  484,  485,  486,  487,
	  488,  489,  491,  495,  501,  492,  493,  494,  496,  497,  498,  499,
	  500,  502,  503,  504,  505,  506,  507,  508,  509,  510,  511,  512,
	  513,  514,  513,  514,  514,    4,  515,  516,  517,  518,  519,  520,
	  521,  522,  523,  524,  525,   70,  526,  527,  528,  530,  531,  529,
	  527,  528,  529,  527,  530,  531,    5,   15,   17,   31,   34,   37,
	   71,  104,  243,  264,  350,  482,  490,  526,  533,  534,  535,  536,
	  537,  538,  539,  540,  541,  542,  543,  544,  545,  546,  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,  573,
	  574,  575,  576,  577,  578,  579,   69,  581,  582,  583,  584,  585,
	  586,  587,  589,  590,  591,  592,  593,  594,  595,  596,  597,  598,
	  599,  600,  601,  602,  603,  604,  605,  606,  607,  608,  610,  611,
	  612,  613,  614,  615,  616,  617,  618,  620,  621,  622,  623,  624,
	  625,  626,  627,  628,  629,  630,  631,  632,  634,  635,  636,  637,
	  638,  639,  640,  642,  646,  643,  644,  645,  647,  648,  649,  650,
	  651,    0
	};
}

private static final short _lexer_trans_targs[] = init__lexer_trans_targs_0();


private static short[] init__lexer_trans_actions_0()
{
	return new short [] {
	   43,    0,    0,   54,    3,    1,    0,   29,    1,   29,   29,   29,
	   29,   29,   29,   29,   29,   35,    0,    0,    0,    7,  139,   48,
	    0,  102,    9,    5,   45,  134,   45,    0,   33,  122,   33,   33,
	    0,   11,  106,    0,    0,  114,   25,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   57,  149,
	  126,    0,  110,   23,    0,   27,  118,   27,   51,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,   57,  144,    0,   54,    0,   75,   33,   84,   84,   84,   84,
	   84,   84,   84,   84,   84,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,   17,   17,   31,  130,   60,   57,
	   31,   63,   57,   63,   63,   63,   63,   63,   63,   63,   63,   66,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,   57,  144,    0,   54,    0,   72,
	   33,   84,   84,   84,   84,   84,   84,   84,   84,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   15,   15,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,   57,  144,    0,   54,    0,   69,   33,
	   84,   84,   84,   84,   84,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,   13,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,   13,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,   57,  144,    0,   54,    0,   78,   33,
	   84,   84,   84,   84,   84,   84,   84,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,   19,   19,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	   57,  144,    0,   54,    0,   81,   84,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,   21,    0,    0,   37,   37,   54,   37,
	   87,    0,    0,   39,    0,    0,   93,   90,   41,   96,   90,   96,
	   96,   96,   96,   96,   96,   96,   96,   99,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0
	};
}

private static final short _lexer_trans_actions[] = init__lexer_trans_actions_0();


private static short[] init__lexer_eof_actions_0()
{
	return new short [] {
	    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
	};
}

private static final short _lexer_eof_actions[] = init__lexer_eof_actions_0();


static final int lexer_start = 1;
static final int lexer_first_final = 652;

static final int lexer_en_main = 1;


// line 159 "ragel/i18n/en_au.java.rl"

  public void scan(String source)  {
    String input = source + "\n%_FEATURE_END_%";
    byte[] data = null;
    try {
      data = input.getBytes("UTF-8");
    } catch(UnsupportedEncodingException e) {
      throw new RuntimeException(e);
    }
    int cs, p = 0, pe = data.length;
    int eof = pe;

    int lineNumber = 1;
    int lastNewline = 0;

    int contentStart = -1;
    int currentLine = -1;
    int docstringContentTypeStart = -1;
    int docstringContentTypeEnd = -1;
    int startCol = -1;
    int nextKeywordStart = -1;
    int keywordStart = -1;
    String keyword = null;
    List currentRow = null;

    
// line 834 "java/src/main/java/gherkin/lexer/En_au.java"
	{
	cs = lexer_start;
	}

// line 185 "ragel/i18n/en_au.java.rl"
    
// line 841 "java/src/main/java/gherkin/lexer/En_au.java"
	{
	int _klen;
	int _trans = 0;
	int _acts;
	int _nacts;
	int _keys;
	int _goto_targ = 0;

	_goto: while (true) {
	switch ( _goto_targ ) {
	case 0:
	if ( p == pe ) {
		_goto_targ = 4;
		continue _goto;
	}
	if ( cs == 0 ) {
		_goto_targ = 5;
		continue _goto;
	}
case 1:
	_match: do {
	_keys = _lexer_key_offsets[cs];
	_trans = _lexer_index_offsets[cs];
	_klen = _lexer_single_lengths[cs];
	if ( _klen > 0 ) {
		int _lower = _keys;
		int _mid;
		int _upper = _keys + _klen - 1;
		while (true) {
			if ( _upper < _lower )
				break;

			_mid = _lower + ((_upper-_lower) >> 1);
			if ( data[p] < _lexer_trans_keys[_mid] )
				_upper = _mid - 1;
			else if ( data[p] > _lexer_trans_keys[_mid] )
				_lower = _mid + 1;
			else {
				_trans += (_mid - _keys);
				break _match;
			}
		}
		_keys += _klen;
		_trans += _klen;
	}

	_klen = _lexer_range_lengths[cs];
	if ( _klen > 0 ) {
		int _lower = _keys;
		int _mid;
		int _upper = _keys + (_klen<<1) - 2;
		while (true) {
			if ( _upper < _lower )
				break;

			_mid = _lower + (((_upper-_lower) >> 1) & ~1);
			if ( data[p] < _lexer_trans_keys[_mid] )
				_upper = _mid - 2;
			else if ( data[p] > _lexer_trans_keys[_mid+1] )
				_lower = _mid + 2;
			else {
				_trans += ((_mid - _keys)>>1);
				break _match;
			}
		}
		_trans += _klen;
	}
	} while (false);

	_trans = _lexer_indicies[_trans];
	cs = _lexer_trans_targs[_trans];

	if ( _lexer_trans_actions[_trans] != 0 ) {
		_acts = _lexer_trans_actions[_trans];
		_nacts = (int) _lexer_actions[_acts++];
		while ( _nacts-- > 0 )
	{
			switch ( _lexer_actions[_acts++] )
			{
	case 0:
// line 16 "ragel/i18n/en_au.java.rl"
	{
      contentStart = p;
      currentLine = lineNumber;
      if(keyword != null) {
        startCol = p - lastNewline - (keyword.length() + 1);
      }
    }
	break;
	case 1:
// line 24 "ragel/i18n/en_au.java.rl"
	{
      currentLine = lineNumber;
      startCol = p - lastNewline;
    }
	break;
	case 2:
// line 29 "ragel/i18n/en_au.java.rl"
	{
      contentStart = p;
    }
	break;
	case 3:
// line 33 "ragel/i18n/en_au.java.rl"
	{
      docstringContentTypeStart = p;
    }
	break;
	case 4:
// line 37 "ragel/i18n/en_au.java.rl"
	{
      docstringContentTypeEnd = p;
    }
	break;
	case 5:
// line 41 "ragel/i18n/en_au.java.rl"
	{
      String con = unindent(startCol, substring(data, contentStart, nextKeywordStart-1).replaceFirst("(\\r?\\n)?([\\t ])*\\Z", "").replace("\\\"\\\"\\\"", "\"\"\""));
      String conType = substring(data, docstringContentTypeStart, docstringContentTypeEnd).trim();
      listener.docString(conType, con, currentLine);
    }
	break;
	case 6:
// line 47 "ragel/i18n/en_au.java.rl"
	{
      String[] nameDescription = nameAndUnindentedDescription(startCol, keywordContent(data, p, eof, nextKeywordStart, contentStart));
      listener.feature(keyword, nameDescription[0], nameDescription[1], currentLine);
      if(nextKeywordStart != -1) p = nextKeywordStart - 1;
      nextKeywordStart = -1;
    }
	break;
	case 7:
// line 54 "ragel/i18n/en_au.java.rl"
	{
      String[] nameDescription = nameAndUnindentedDescription(startCol, keywordContent(data, p, eof, nextKeywordStart, contentStart));
      listener.background(keyword, nameDescription[0], nameDescription[1], currentLine);
      if(nextKeywordStart != -1) p = nextKeywordStart - 1;
      nextKeywordStart = -1;
    }
	break;
	case 8:
// line 61 "ragel/i18n/en_au.java.rl"
	{
      String[] nameDescription = nameAndUnindentedDescription(startCol, keywordContent(data, p, eof, nextKeywordStart, contentStart));
      listener.scenario(keyword, nameDescription[0], nameDescription[1], currentLine);
      if(nextKeywordStart != -1) p = nextKeywordStart - 1;
      nextKeywordStart = -1;
    }
	break;
	case 9:
// line 68 "ragel/i18n/en_au.java.rl"
	{
      String[] nameDescription = nameAndUnindentedDescription(startCol, keywordContent(data, p, eof, nextKeywordStart, contentStart));
      listener.scenarioOutline(keyword, nameDescription[0], nameDescription[1], currentLine);
      if(nextKeywordStart != -1) p = nextKeywordStart - 1;
      nextKeywordStart = -1;
    }
	break;
	case 10:
// line 75 "ragel/i18n/en_au.java.rl"
	{
      String[] nameDescription = nameAndUnindentedDescription(startCol, keywordContent(data, p, eof, nextKeywordStart, contentStart));
      listener.examples(keyword, nameDescription[0], nameDescription[1], currentLine);
      if(nextKeywordStart != -1) p = nextKeywordStart - 1;
      nextKeywordStart = -1;
    }
	break;
	case 11:
// line 82 "ragel/i18n/en_au.java.rl"
	{
      listener.step(keyword, substring(data, contentStart, p).trim(), currentLine);
    }
	break;
	case 12:
// line 86 "ragel/i18n/en_au.java.rl"
	{
      listener.comment(substring(data, contentStart, p).trim(), lineNumber);
      keywordStart = -1;
    }
	break;
	case 13:
// line 91 "ragel/i18n/en_au.java.rl"
	{
      listener.tag(substring(data, contentStart, p).trim(), currentLine);
      keywordStart = -1;
    }
	break;
	case 14:
// line 96 "ragel/i18n/en_au.java.rl"
	{
      lineNumber++;
    }
	break;
	case 15:
// line 100 "ragel/i18n/en_au.java.rl"
	{
      lastNewline = p + 1;
    }
	break;
	case 16:
// line 104 "ragel/i18n/en_au.java.rl"
	{
      if(keywordStart == -1) keywordStart = p;
    }
	break;
	case 17:
// line 108 "ragel/i18n/en_au.java.rl"
	{
      keyword = substring(data, keywordStart, p).replaceFirst(":$","");
      keywordStart = -1;
    }
	break;
	case 18:
// line 113 "ragel/i18n/en_au.java.rl"
	{
      nextKeywordStart = p;
    }
	break;
	case 19:
// line 117 "ragel/i18n/en_au.java.rl"
	{
      p = p - 1;
      currentRow = new ArrayList();
      currentLine = lineNumber;
    }
	break;
	case 20:
// line 123 "ragel/i18n/en_au.java.rl"
	{
      contentStart = p;
    }
	break;
	case 21:
// line 127 "ragel/i18n/en_au.java.rl"
	{
      String con = substring(data, contentStart, p).trim();
      currentRow.add(con
        .replace("\\|", "|")
        .replace("\\n", "\n")
        .replace("\\\\", "\\")
      );
    }
	break;
	case 22:
// line 136 "ragel/i18n/en_au.java.rl"
	{
      listener.row(currentRow, currentLine);
    }
	break;
	case 23:
// line 140 "ragel/i18n/en_au.java.rl"
	{
      if(cs < lexer_first_final) {
        String content = currentLineContent(data, lastNewline);
        throw new LexingError("Lexing error on line " + lineNumber + ": '" + content + "'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.");
      } else {
        listener.eof();
      }
    }
	break;
// line 1102 "java/src/main/java/gherkin/lexer/En_au.java"
			}
		}
	}

case 2:
	if ( cs == 0 ) {
		_goto_targ = 5;
		continue _goto;
	}
	if ( ++p != pe ) {
		_goto_targ = 1;
		continue _goto;
	}
case 4:
	if ( p == eof )
	{
	int __acts = _lexer_eof_actions[cs];
	int __nacts = (int) _lexer_actions[__acts++];
	while ( __nacts-- > 0 ) {
		switch ( _lexer_actions[__acts++] ) {
	case 23:
// line 140 "ragel/i18n/en_au.java.rl"
	{
      if(cs < lexer_first_final) {
        String content = currentLineContent(data, lastNewline);
        throw new LexingError("Lexing error on line " + lineNumber + ": '" + content + "'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.");
      } else {
        listener.eof();
      }
    }
	break;
// line 1134 "java/src/main/java/gherkin/lexer/En_au.java"
		}
	}
	}

case 5:
	}
	break; }
	}

// line 186 "ragel/i18n/en_au.java.rl"
  }

  private String keywordContent(byte[] data, int p, int eof, int nextKeywordStart, int contentStart) {
    int endPoint = (nextKeywordStart == -1 || (p == eof)) ? p : nextKeywordStart;
    return substring(data, contentStart, endPoint);
  }

  private String[] nameAndUnindentedDescription(int startCol, String text) {
    String[] lines = text.split("\n");
    String name = lines.length > 0 ? lines[0].trim() : "";
    StringBuffer description = new StringBuffer();
    for(int i = 1; i < lines.length; i++) {
      description.append(lines[i]);
      description.append("\n");
    }
    return new String[]{name, unindent(startCol+2, description.toString()).replaceAll("\\s+$", "")};
  }

  private String unindent(int startCol, String text) {
    return Pattern.compile("^[\t ]{0," + startCol + "}", Pattern.MULTILINE).matcher(text).replaceAll("");
  }

  private String currentLineContent(byte[] data, int lastNewline) {
    return substring(data, lastNewline, data.length).trim();
  }

  private String substring(byte[] data, int start, int end) {
    try {
      return new String(data, start, end-start, "utf-8");
    } catch(java.io.UnsupportedEncodingException e) {
      throw new RuntimeException("Internal error", e);
    }
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy