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

gherkin.lexer.i18n.EN Maven / Gradle / Ivy

There is a newer version: 2.12.2
Show newest version

// line 1 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.java.rl"
package gherkin.lexer.i18n;

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 implements Lexer {
  
// line 150 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.java.rl"


  private final Listener listener;

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

  
// line 26 "java/src/main/java/gherkin/lexer/i18n/EN.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,  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
	};
}

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,   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
	};
}

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,    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
	};
}

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,    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
	};
}

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,  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
	};
}

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,   15,   16,    2,    0,   17,    0,    2,    0,    3,
	    2,    4,    5,    6,    7,    8,    9,   10,   11,   12,   13,   14,
	   15,   15,   16,    2,    0,   18,    0,   19,    0,   21,   22,   20,
	   24,   25,   23,   28,   27,   29,   27,   26,   32,   31,   33,   31,
	   30,   32,   31,   34,   31,   30,   32,   31,   35,   31,   30,   37,
	   36,   36,    0,    3,   38,   38,    0,   40,   41,   39,    3,    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,   55,    0,   56,    0,   58,   59,   57,   61,   62,   60,
	    0,    0,    0,    0,   63,   64,   65,   64,   64,   67,   66,   63,
	    3,   68,    8,   68,    0,   69,   70,    0,   71,    0,   72,    0,
	   73,    0,   74,    0,   75,    0,   76,    0,   78,   77,   80,   79,
	   80,   81,   82,   83,   82,   84,   85,   86,   87,   88,   81,   79,
	   80,   89,   79,   80,   90,   79,   80,   91,   79,   80,   92,   79,
	   80,   93,   79,   80,   94,   79,   80,   95,   79,   80,   96,   79,
	   80,   97,   79,   80,   98,   79,   80,   99,   79,   80,  100,   79,
	   80,  101,   79,   80,  102,   79,   80,  103,   79,   80,  104,   79,
	   80,  105,   79,   80,  106,   79,   80,  107,   79,   80,  108,   79,
	   80,  109,   79,  111,  110,  112,  113,  114,  115,  116,  117,  118,
	  119,  120,  121,  122,  123,  123,  124,  110,    0,  125,  126,    0,
	  127,    0,  128,    0,  129,    0,  130,    0,  131,    0,  132,    0,
	  133,    0,  134,    0,  135,    0,  137,  136,  139,  138,  139,  140,
	  141,  142,  143,  141,  144,  145,  146,  147,  148,  149,  149,  140,
	  138,  139,  150,  138,  139,  151,  138,  139,  152,  138,  139,  153,
	  138,  139,  154,  138,  139,  155,  138,  139,  156,  138,  139,  157,
	  138,  139,  158,  138,  139,  159,  138,  139,  160,  138,  139,  161,
	  138,  139,  162,  138,  139,  163,  138,  139,  164,  138,  139,  165,
	  166,  138,  139,  167,  138,  139,  168,  138,  139,  169,  138,  139,
	  170,  138,  139,  171,  138,  139,  164,  138,  139,  172,  138,  139,
	  173,  138,  139,  174,  172,  138,  139,  175,  138,  139,  176,  138,
	  139,  177,  138,  139,  178,  138,  139,  179,  138,  139,  180,  138,
	  139,  181,  138,  139,  182,  138,  139,  183,  138,  139,  171,  138,
	  139,  184,  138,  139,  185,  138,  139,  186,  138,  139,  187,  138,
	  139,  188,  138,  139,  171,  138,  139,  189,  138,  139,  190,  138,
	  139,  191,  138,  139,  172,  138,  139,  192,  138,  139,  193,  138,
	  139,  194,  138,  139,  195,  138,  139,  196,  138,  139,  197,  138,
	  139,  198,  138,  139,  199,  164,  138,  139,  200,  201,  138,  139,
	  202,  138,  139,  203,  138,  139,  204,  138,  139,  205,  138,  139,
	  188,  138,  139,  206,  138,  139,  207,  138,  139,  208,  138,  139,
	  209,  138,  139,  210,  138,  139,  188,  138,  139,  190,  138,  211,
	  212,    0,  213,    0,  214,    0,  215,    0,  216,    0,  217,    0,
	  218,    0,  219,    0,  220,    0,  221,    0,   75,    0,  222,    0,
	  223,    0,  224,    0,  225,    0,  226,    0,  227,    0,  228,    0,
	  229,    0,  231,  230,  233,  232,  233,  234,  235,  236,  237,  238,
	  235,  234,  232,  233,  239,  232,  233,  240,  232,  233,  241,  232,
	  233,  242,  232,  233,  243,  232,  233,  244,  232,  233,  245,  232,
	  233,  246,  232,  233,  247,  232,  233,  248,  232,  233,  249,  232,
	  233,  250,  232,  233,  251,  232,  233,  252,  232,  233,  253,  232,
	  233,  254,  232,  233,  255,  232,  233,  256,  232,  233,  244,  232,
	  233,  257,  232,  233,  258,  232,  233,  259,  232,  233,  260,  232,
	  233,  261,  232,  233,  244,  232,  262,    0,  263,    0,  264,    0,
	  265,    0,  266,    0,   75,    0,  267,    0,  268,    0,  269,    0,
	  212,    0,  270,    0,  271,    0,  272,    0,  273,    0,  274,    0,
	  275,    0,  276,    0,  277,  278,  228,    0,  279,  280,    0,  281,
	    0,  282,    0,  283,    0,  284,    0,  285,    0,  286,    0,  287,
	    0,  289,  288,  291,  290,  291,  292,  293,  294,  295,  293,  296,
	  297,  298,  299,  300,  301,  301,  292,  290,  291,  302,  290,  291,
	  303,  290,  291,  304,  290,  291,  305,  290,  291,  306,  290,  291,
	  307,  290,  291,  308,  290,  291,  309,  290,  291,  310,  290,  291,
	  311,  290,  291,  312,  290,  291,  313,  290,  291,  314,  290,  291,
	  315,  290,  291,  316,  290,  291,  317,  318,  290,  291,  319,  290,
	  291,  320,  290,  291,  321,  290,  291,  322,  290,  291,  323,  290,
	  291,  316,  290,  291,  324,  290,  291,  325,  290,  291,  326,  324,
	  290,  291,  327,  290,  291,  328,  290,  291,  329,  290,  291,  330,
	  290,  291,  331,  290,  291,  332,  290,  291,  333,  290,  291,  334,
	  290,  291,  335,  290,  291,  323,  290,  291,  336,  290,  291,  337,
	  290,  291,  338,  290,  291,  339,  290,  291,  340,  290,  291,  323,
	  290,  291,  341,  290,  291,  342,  290,  291,  343,  290,  291,  324,
	  290,  291,  344,  290,  291,  345,  290,  291,  346,  290,  291,  347,
	  290,  291,  348,  290,  291,  349,  290,  291,  323,  290,  291,  342,
	  290,  350,    0,  351,    0,  352,    0,  353,    0,  354,    0,  285,
	    0,  356,  355,  358,  357,  358,  359,  360,  361,  362,  360,  363,
	  364,  365,  366,  367,  368,  368,  359,  357,  358,  369,  357,  358,
	  370,  357,  358,  371,  357,  358,  372,  357,  358,  373,  357,  358,
	  374,  357,  358,  375,  357,  358,  376,  357,  358,  377,  357,  358,
	  378,  357,  358,  379,  357,  358,  380,  357,  358,  381,  357,  358,
	  382,  357,  358,  383,  357,  358,  384,  385,  357,  358,  386,  357,
	  358,  387,  357,  358,  388,  357,  358,  389,  357,  358,  390,  357,
	  358,  383,  357,  358,  391,  357,  358,  392,  393,  357,  358,  394,
	  357,  358,  395,  357,  358,  396,  357,  358,  397,  357,  358,  398,
	  357,  358,  399,  357,  358,  400,  357,  358,  390,  357,  358,  401,
	  391,  357,  358,  402,  357,  358,  403,  357,  358,  404,  357,  358,
	  405,  357,  358,  406,  357,  358,  407,  357,  358,  408,  357,  358,
	  409,  357,  358,  400,  357,  358,  410,  357,  358,  411,  357,  358,
	  412,  357,  358,  413,  357,  358,  414,  357,  358,  390,  357,  358,
	  415,  357,  358,  416,  357,  358,  417,  357,  358,  391,  357,  358,
	  418,  357,  358,  419,  357,  358,  420,  357,  358,  421,  357,  358,
	  422,  357,  358,  423,  357,  358,  424,  357,  358,  425,  383,  357,
	  358,  426,  427,  357,  358,  428,  357,  358,  429,  357,  358,  430,
	  357,  358,  431,  357,  358,  414,  357,  358,  432,  357,  358,  433,
	  357,  358,  434,  357,  358,  435,  357,  358,  436,  357,  358,  414,
	  357,  358,  416,  357,  268,    0,  437,  438,  437,    0,  441,  440,
	  442,  443,  440,  439,    0,  445,  446,  444,    0,  445,  444,  441,
	  447,  445,  446,  447,  444,  441,  448,  449,  450,  451,  452,  453,
	  454,  455,  456,  457,  458,  459,  460,  460,  461,  448,    0,   80,
	  462,  463,   79,   80,  464,   79,   80,  465,   79,   80,  466,   79,
	   80,  467,   79,   80,  468,   79,   80,  469,   79,   80,  470,   79,
	   80,  108,   79,   80,  471,   79,   80,  472,   79,   80,  473,   79,
	   80,  474,   79,   80,  475,   79,   80,  476,   79,   80,  477,   79,
	   80,  478,   79,   80,  479,   79,   80,  470,   79,   80,  480,   79,
	   80,  481,   79,   80,  482,   79,   80,  483,   79,   80,  484,   79,
	   80,  485,   79,   80,  108,   79,   80,  486,   79,   80,  487,   79,
	   80,  488,   79,   80,  489,   79,   80,  490,   79,   80,  108,   79,
	   80,  491,   79,   80,  492,   79,   80,  493,   79,   80,  494,   79,
	   80,  495,   79,   80,  496,   79,   80,  497,   79,   80,  498,  109,
	  108,   79,   80,  499,  500,   79,   80,  501,   79,   80,  502,   79,
	   80,  503,   79,   80,  504,   79,   80,  490,   79,   80,  505,   79,
	   80,  506,   79,   80,  507,   79,   80,  508,   79,   80,  509,   79,
	   80,  490,   79,  212,    0,  510,    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,   69,  159,
	  195,  201,  205,  359,  360,    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,  419,   32,   33,    4,   16,
	   33,    4,   16,   35,   36,    4,   35,   34,   36,   38,  418,   39,
	   40,   41,   42,   43,   44,   45,   46,   45,   46,   46,    4,   47,
	   61,  366,  385,  392,  398,   48,   49,   50,   51,   52,   53,   54,
	   55,   56,   57,   58,   59,   60,    4,   62,   63,   64,   65,   66,
	   67,   68,    4,    4,    5,   15,   17,   31,   34,   37,   69,  159,
	  195,  201,  205,  359,  360,   70,  148,   71,   72,   73,   74,   75,
	   76,   77,   78,   79,   80,   81,   80,   81,   81,    4,   82,   96,
	   97,  105,  117,  123,  127,  147,   83,   84,   85,   86,   87,   88,
	   89,   90,   91,   92,   93,   94,   95,    4,   68,   98,  104,   99,
	  100,  101,  102,  103,   96,  106,  107,  108,  109,  110,  111,  112,
	  113,  114,  115,  116,  118,  119,  120,  121,  122,  124,  125,  126,
	  128,  129,  130,  131,  132,  133,  134,  135,  136,  141,  137,  138,
	  139,  140,  142,  143,  144,  145,  146,  149,   31,  150,  151,  152,
	  153,  154,  155,  156,  157,  158,  160,  161,  162,  163,  164,  165,
	  166,  167,  168,  169,  168,  169,  169,    4,  170,  177,  189,  171,
	  172,  173,  174,  175,  176,   68,  178,  179,  180,  181,  182,  183,
	  184,  185,  186,  187,  188,  190,  191,  192,  193,  194,  196,  197,
	  198,  199,  200,  202,  203,  204,  206,  207,  208,  209,  210,  211,
	  212,  213,  283,  214,  277,  215,  216,  217,  218,  219,  220,  221,
	  222,  223,  222,  223,  223,    4,  224,  238,  239,  247,  259,  265,
	  269,  276,  225,  226,  227,  228,  229,  230,  231,  232,  233,  234,
	  235,  236,  237,    4,   68,  240,  246,  241,  242,  243,  244,  245,
	  238,  248,  249,  250,  251,  252,  253,  254,  255,  256,  257,  258,
	  260,  261,  262,  263,  264,  266,  267,  268,  270,  271,  272,  273,
	  274,  275,  278,  279,  280,  281,  282,  284,  285,  284,  285,  285,
	    4,  286,  300,  301,  309,  328,  334,  338,  358,  287,  288,  289,
	  290,  291,  292,  293,  294,  295,  296,  297,  298,  299,    4,   68,
	  302,  308,  303,  304,  305,  306,  307,  300,  310,  318,  311,  312,
	  313,  314,  315,  316,  317,  319,  320,  321,  322,  323,  324,  325,
	  326,  327,  329,  330,  331,  332,  333,  335,  336,  337,  339,  340,
	  341,  342,  343,  344,  345,  346,  347,  352,  348,  349,  350,  351,
	  353,  354,  355,  356,  357,  360,  361,  362,  364,  365,  363,  361,
	  362,  363,  361,  364,  365,    5,   15,   17,   31,   34,   37,   69,
	  159,  195,  201,  205,  359,  360,  367,  375,  368,  369,  370,  371,
	  372,  373,  374,  376,  377,  378,  379,  380,  381,  382,  383,  384,
	  386,  387,  388,  389,  390,  391,  393,  394,  395,  396,  397,  399,
	  400,  401,  402,  403,  404,  405,  406,  407,  412,  408,  409,  410,
	  411,  413,  414,  415,  416,  417,    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,   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,   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,   13,   31,  130,   60,   57,   31,   63,   57,   63,   63,   63,
	   63,   63,   63,   63,   66,    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,    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,   57,  144,    0,   54,    0,   81,   84,   84,   84,    0,
	    0,    0,    0,    0,    0,   21,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    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,   57,  144,    0,   54,    0,
	   75,   33,   84,   84,   84,   84,   84,   84,   84,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   17,   17,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,   37,   37,   54,   37,   87,
	    0,    0,   39,    0,    0,   93,   90,   41,   96,   90,   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
	};
}

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
	};
}

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


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

static final int lexer_en_main = 1;


// line 159 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.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 611 "java/src/main/java/gherkin/lexer/i18n/EN.java"
	{
	cs = lexer_start;
	}

// line 185 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.java.rl"
    
// line 618 "java/src/main/java/gherkin/lexer/i18n/EN.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 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.java.rl"
	{
      contentStart = p;
      currentLine = lineNumber;
      if(keyword != null) {
        startCol = p - lastNewline - (keyword.length() + 1);
      }
    }
	break;
	case 1:
// line 24 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.java.rl"
	{
      currentLine = lineNumber;
      startCol = p - lastNewline;
    }
	break;
	case 2:
// line 29 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.java.rl"
	{
      contentStart = p;
    }
	break;
	case 3:
// line 33 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.java.rl"
	{
      docstringContentTypeStart = p;
    }
	break;
	case 4:
// line 37 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.java.rl"
	{
      docstringContentTypeEnd = p;
    }
	break;
	case 5:
// line 41 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.java.rl"
	{
      String con = unindent(startCol, substring(data, contentStart, nextKeywordStart-1).replaceFirst("(\\r?\\n)?([\\t ])*\\Z", "").replaceAll("\\\\\"\\\\\"\\\\\"", "\"\"\""));
      String conType = substring(data, docstringContentTypeStart, docstringContentTypeEnd).trim();
      listener.docString(conType, con, currentLine);
    }
	break;
	case 6:
// line 47 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.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 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.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 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.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 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.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 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.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 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.java.rl"
	{
      listener.step(keyword, substring(data, contentStart, p).trim(), currentLine);
    }
	break;
	case 12:
// line 86 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.java.rl"
	{
      listener.comment(substring(data, contentStart, p).trim(), lineNumber);
      keywordStart = -1;
    }
	break;
	case 13:
// line 91 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.java.rl"
	{
      listener.tag(substring(data, contentStart, p).trim(), currentLine);
      keywordStart = -1;
    }
	break;
	case 14:
// line 96 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.java.rl"
	{
      lineNumber++;
    }
	break;
	case 15:
// line 100 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.java.rl"
	{
      lastNewline = p + 1;
    }
	break;
	case 16:
// line 104 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.java.rl"
	{
      if(keywordStart == -1) keywordStart = p;
    }
	break;
	case 17:
// line 108 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.java.rl"
	{
      keyword = substring(data, keywordStart, p).replaceFirst(":$","");
      keywordStart = -1;
    }
	break;
	case 18:
// line 113 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.java.rl"
	{
      nextKeywordStart = p;
    }
	break;
	case 19:
// line 117 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.java.rl"
	{
      p = p - 1;
      currentRow = new ArrayList();
      currentLine = lineNumber;
    }
	break;
	case 20:
// line 123 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.java.rl"
	{
      contentStart = p;
    }
	break;
	case 21:
// line 127 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.java.rl"
	{
      String con = substring(data, contentStart, p).trim();
      currentRow.add(con
        .replaceAll("\\\\\\|", "|")
        .replaceAll("\\\\n", "\n")
        .replaceAll("\\\\\\\\", "\\\\")
      );
    }
	break;
	case 22:
// line 136 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.java.rl"
	{
      listener.row(currentRow, currentLine);
    }
	break;
	case 23:
// line 140 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.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 879 "java/src/main/java/gherkin/lexer/i18n/EN.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 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.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 911 "java/src/main/java/gherkin/lexer/i18n/EN.java"
		}
	}
	}

case 5:
	}
	break; }
	}

// line 186 "/Users/ahellesoy/github/gherkin/tasks/../ragel/i18n/en.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 - 2025 Weber Informatics LLC | Privacy Policy