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

gherkin.lexer.En_pirate Maven / Gradle / Ivy

There is a newer version: 2.12.2
Show newest version

// line 1 "ragel/i18n/en_pirate.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_pirate implements Lexer {
  
// line 150 "ragel/i18n/en_pirate.java.rl"


  private final Listener listener;

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

  
// line 26 "java/src/main/java/gherkin/lexer/En_pirate.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,  115,  116,  117,  118,  119,  120,  121,  122,  123,  124,
	  125,  126,  127,  139,  141,  143,  145,  147,  149,  151,  153,  155,
	  157,  159,  161,  163,  165,  167,  169,  171,  173,  175,  177,  179,
	  181,  183,  185,  187,  189,  207,  208,  209,  210,  211,  212,  213,
	  214,  215,  216,  217,  218,  219,  220,  221,  222,  223,  224,  225,
	  226,  227,  228,  229,  230,  231,  232,  233,  234,  235,  236,  237,
	  244,  246,  248,  250,  252,  254,  256,  258,  260,  262,  264,  266,
	  267,  268,  269,  270,  271,  272,  273,  274,  275,  276,  277,  278,
	  279,  280,  281,  296,  298,  300,  302,  304,  306,  308,  310,  312,
	  314,  316,  318,  320,  322,  324,  326,  330,  332,  334,  336,  338,
	  340,  342,  344,  346,  348,  350,  352,  354,  356,  358,  360,  362,
	  364,  366,  368,  370,  372,  374,  376,  378,  380,  382,  384,  386,
	  388,  390,  392,  394,  396,  398,  400,  402,  404,  406,  408,  410,
	  412,  414,  416,  418,  420,  422,  424,  426,  428,  430,  432,  434,
	  436,  438,  440,  442,  444,  446,  448,  450,  452,  454,  456,  458,
	  460,  462,  464,  466,  467,  468,  469,  470,  471,  472,  473,  474,
	  475,  476,  477,  478,  479,  480,  481,  482,  483,  484,  485,  486,
	  487,  488,  489,  490,  491,  492,  493,  494,  495,  496,  497,  498,
	  499,  512,  514,  516,  518,  520,  522,  524,  526,  528,  530,  532,
	  534,  536,  538,  540,  542,  546,  548,  550,  552,  554,  556,  558,
	  560,  562,  564,  566,  568,  570,  572,  574,  576,  578,  580,  582,
	  584,  586,  588,  590,  592,  594,  596,  598,  600,  602,  604,  606,
	  608,  610,  612,  614,  616,  618,  620,  622,  624,  626,  628,  630,
	  632,  634,  636,  638,  639,  640,  641,  642,  643,  644,  645,  646,
	  647,  648,  662,  664,  666,  668,  670,  672,  674,  676,  678,  680,
	  682,  684,  686,  688,  690,  692,  696,  698,  700,  702,  704,  706,
	  708,  710,  712,  714,  716,  718,  720,  722,  724,  726,  728,  730,
	  732,  734,  736,  738,  740,  742,  744,  746,  748,  750,  752,  754,
	  756,  758,  760,  762,  764,  766,  768,  770,  772,  774,  776,  778,
	  780,  782,  784,  786,  788,  790,  792,  794,  796,  798,  800,  802,
	  804,  806,  808,  810,  812,  814,  816,  818,  820,  824,  830,  833,
	  835,  841,  859,  861,  863,  865,  867,  869,  871,  873,  875,  877,
	  879,  881,  883,  885,  887,  889,  891,  893,  895,  897,  899,  901,
	  903,  905,  907,  909,  911,  913,  915,  917,  919,  921,  923,  925,
	  927,  929,  931,  933,  935,  937,  939,  941,  943,  945,  947,  949,
	  951,  953,  955,  957,  958,  959,  960,  961
	};
}

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,   68,   71,
	   72,   76,   83,   89,  124,    9,   13,  -69,  -65,   10,   32,   34,
	   35,   37,   42,   64,   65,   66,   68,   71,   72,   76,   83,   89,
	  124,    9,   13,   34,   34,   10,   13,   10,   13,   10,   32,   34,
	    9,   13,   10,   32,   34,    9,   13,   10,   32,   34,    9,   13,
	   10,   32,   34,    9,   13,   10,   32,    9,   13,   10,   32,    9,
	   13,   10,   13,   10,   95,   70,   69,   65,   84,   85,   82,   69,
	   95,   69,   78,   68,   95,   37,   32,   10,   13,   10,   13,   13,
	   32,   64,    9,   10,    9,   10,   13,   32,   64,   11,   12,   10,
	   32,   64,    9,   13,  104,  118,  121,  111,  121,   32,  109,   97,
	  116,  101,  121,   33,   58,   10,   10,   10,   32,   35,   37,   64,
	   65,   68,   72,   83,   89,    9,   13,   10,   95,   10,   70,   10,
	   69,   10,   65,   10,   84,   10,   85,   10,   82,   10,   69,   10,
	   95,   10,   69,   10,   78,   10,   68,   10,   95,   10,   37,   10,
	  104,   10,  111,   10,  121,   10,   32,   10,  109,   10,   97,   10,
	  116,   10,  101,   10,  121,   10,   33,   10,   58,   10,   32,   34,
	   35,   37,   42,   64,   65,   66,   68,   71,   72,   76,   83,   89,
	  124,    9,   13,  108,  105,  109,  101,  121,   33,  101,   97,  100,
	   32,  109,  101,  110,   32,  116,  101,  108,  108,   32,  110,  111,
	   32,  116,   97,  108,  101,  115,   58,   10,   10,   10,   32,   35,
	   65,  124,    9,   13,   10,  104,   10,  111,   10,  121,   10,   32,
	   10,  109,   10,   97,   10,  116,   10,  101,   10,  121,   10,   33,
	   10,   58,   97,  110,  103,  119,   97,  101,   97,  118,  101,   32,
	  116,  111,   58,   10,   10,   10,   32,   35,   37,   42,   64,   65,
	   66,   71,   72,   76,   83,   89,    9,   13,   10,   95,   10,   70,
	   10,   69,   10,   65,   10,   84,   10,   85,   10,   82,   10,   69,
	   10,   95,   10,   69,   10,   78,   10,   68,   10,   95,   10,   37,
	   10,   32,   10,  104,  118,  121,   10,  111,   10,  121,   10,   32,
	   10,  109,   10,   97,   10,  116,   10,  101,   10,  121,   10,   33,
	   10,   58,   10,   97,   10,  115,   10,  116,   10,   33,   10,  101,
	   10,  108,   10,  105,   10,  109,   10,  101,   10,  121,   10,   97,
	   10,  110,   10,  103,   10,  119,   10,   97,   10,  101,   10,   97,
	   10,  118,   10,  101,   10,   32,   10,  116,   10,  111,   10,  101,
	   10,  116,   10,   32,   10,  103,   10,  111,   10,   32,   10,   97,
	   10,  110,   10,  100,   10,   32,   10,  104,   10,   97,   10,  117,
	   10,  108,   10,  104,   10,  105,   10,  118,   10,  101,   10,  114,
	   10,   32,   10,  109,   10,  101,   10,   32,   10,  116,   10,  105,
	   10,  109,   10,   98,   10,  101,   10,  114,   10,  115,   10,  111,
	   10,   45,   10,  104,   10,  111,   10,   45,   10,  104,  101,  116,
	   32,  103,  111,   32,   97,  110,  100,   32,  104,   97,  117,  108,
	  104,  105,  118,  101,  114,   32,  109,  101,   32,  116,  105,  109,
	   98,  101,  114,  115,   58,   10,   10,   10,   32,   35,   37,   42,
	   64,   65,   66,   71,   72,   76,    9,   13,   10,   95,   10,   70,
	   10,   69,   10,   65,   10,   84,   10,   85,   10,   82,   10,   69,
	   10,   95,   10,   69,   10,   78,   10,   68,   10,   95,   10,   37,
	   10,   32,   10,  104,  118,  121,   10,  111,   10,  121,   10,   32,
	   10,  109,   10,   97,   10,  116,   10,  101,   10,  121,   10,   33,
	   10,   58,   10,   97,   10,  115,   10,  116,   10,   33,   10,  101,
	   10,  108,   10,  105,   10,  109,   10,  101,   10,  121,   10,   97,
	   10,  110,   10,  103,   10,  119,   10,   97,   10,  101,   10,   97,
	   10,  118,   10,  101,   10,   32,   10,  116,   10,  111,   10,  101,
	   10,  116,   10,   32,   10,  103,   10,  111,   10,   32,   10,   97,
	   10,  110,   10,  100,   10,   32,   10,  104,   10,   97,   10,  117,
	   10,  108,  111,   45,  104,  111,   45,  104,  111,   58,   10,   10,
	   10,   32,   35,   37,   42,   64,   65,   66,   71,   72,   76,   83,
	    9,   13,   10,   95,   10,   70,   10,   69,   10,   65,   10,   84,
	   10,   85,   10,   82,   10,   69,   10,   95,   10,   69,   10,   78,
	   10,   68,   10,   95,   10,   37,   10,   32,   10,  104,  118,  121,
	   10,  111,   10,  121,   10,   32,   10,  109,   10,   97,   10,  116,
	   10,  101,   10,  121,   10,   33,   10,   58,   10,   97,   10,  115,
	   10,  116,   10,   33,   10,  101,   10,  108,   10,  105,   10,  109,
	   10,  101,   10,  121,   10,   97,   10,  110,   10,  103,   10,  119,
	   10,   97,   10,  101,   10,   97,   10,  118,   10,  101,   10,   32,
	   10,  116,   10,  111,   10,  101,   10,  116,   10,   32,   10,  103,
	   10,  111,   10,   32,   10,   97,   10,  110,   10,  100,   10,   32,
	   10,  104,   10,   97,   10,  117,   10,  108,   10,  104,   10,  105,
	   10,  118,   10,  101,   10,  114,   10,   32,   10,  109,   10,  101,
	   10,   32,   10,  116,   10,  105,   10,  109,   10,   98,   10,  101,
	   10,  114,   10,  115,   32,  124,    9,   13,   10,   32,   92,  124,
	    9,   13,   10,   92,  124,   10,   92,   10,   32,   92,  124,    9,
	   13,   10,   32,   34,   35,   37,   42,   64,   65,   66,   68,   71,
	   72,   76,   83,   89,  124,    9,   13,   10,  101,   10,   97,   10,
	  100,   10,   32,   10,  109,   10,  101,   10,  110,   10,   32,   10,
	  116,   10,  101,   10,  108,   10,  108,   10,   32,   10,  110,   10,
	  111,   10,   32,   10,  116,   10,   97,   10,  108,   10,  101,   10,
	  115,   10,  101,   10,   97,   10,  118,   10,  101,   10,   32,   10,
	  116,   10,  111,   10,  104,   10,  105,   10,  118,   10,  101,   10,
	  114,   10,   32,   10,  109,   10,  101,   10,   32,   10,  116,   10,
	  105,   10,  109,   10,   98,   10,  101,   10,  114,   10,  111,   10,
	   45,   10,  104,   10,  111,   10,   45,   10,  104,   97,  115,  116,
	  101,    0
	};
}

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,    3,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	    1,    1,   10,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,   16,    1,    1,    1,    1,    1,    1,    1,
	    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    5,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    1,
	    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	    1,    1,   13,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    4,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	   11,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    4,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	    1,   12,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    4,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    4,    3,    2,
	    4,   16,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    1,    1,    1,    1,    0
	};
}

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,    1,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    1,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    1,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    1,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    1,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    1,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    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,  141,  143,  145,  147,  149,  151,  153,  155,  157,  159,
	  161,  163,  165,  177,  180,  183,  186,  189,  192,  195,  198,  201,
	  204,  207,  210,  213,  216,  219,  222,  225,  228,  231,  234,  237,
	  240,  243,  246,  249,  252,  270,  272,  274,  276,  278,  280,  282,
	  284,  286,  288,  290,  292,  294,  296,  298,  300,  302,  304,  306,
	  308,  310,  312,  314,  316,  318,  320,  322,  324,  326,  328,  330,
	  337,  340,  343,  346,  349,  352,  355,  358,  361,  364,  367,  370,
	  372,  374,  376,  378,  380,  382,  384,  386,  388,  390,  392,  394,
	  396,  398,  400,  415,  418,  421,  424,  427,  430,  433,  436,  439,
	  442,  445,  448,  451,  454,  457,  460,  465,  468,  471,  474,  477,
	  480,  483,  486,  489,  492,  495,  498,  501,  504,  507,  510,  513,
	  516,  519,  522,  525,  528,  531,  534,  537,  540,  543,  546,  549,
	  552,  555,  558,  561,  564,  567,  570,  573,  576,  579,  582,  585,
	  588,  591,  594,  597,  600,  603,  606,  609,  612,  615,  618,  621,
	  624,  627,  630,  633,  636,  639,  642,  645,  648,  651,  654,  657,
	  660,  663,  666,  669,  671,  673,  675,  677,  679,  681,  683,  685,
	  687,  689,  691,  693,  695,  697,  699,  701,  703,  705,  707,  709,
	  711,  713,  715,  717,  719,  721,  723,  725,  727,  729,  731,  733,
	  735,  748,  751,  754,  757,  760,  763,  766,  769,  772,  775,  778,
	  781,  784,  787,  790,  793,  798,  801,  804,  807,  810,  813,  816,
	  819,  822,  825,  828,  831,  834,  837,  840,  843,  846,  849,  852,
	  855,  858,  861,  864,  867,  870,  873,  876,  879,  882,  885,  888,
	  891,  894,  897,  900,  903,  906,  909,  912,  915,  918,  921,  924,
	  927,  930,  933,  936,  938,  940,  942,  944,  946,  948,  950,  952,
	  954,  956,  970,  973,  976,  979,  982,  985,  988,  991,  994,  997,
	 1000, 1003, 1006, 1009, 1012, 1015, 1020, 1023, 1026, 1029, 1032, 1035,
	 1038, 1041, 1044, 1047, 1050, 1053, 1056, 1059, 1062, 1065, 1068, 1071,
	 1074, 1077, 1080, 1083, 1086, 1089, 1092, 1095, 1098, 1101, 1104, 1107,
	 1110, 1113, 1116, 1119, 1122, 1125, 1128, 1131, 1134, 1137, 1140, 1143,
	 1146, 1149, 1152, 1155, 1158, 1161, 1164, 1167, 1170, 1173, 1176, 1179,
	 1182, 1185, 1188, 1191, 1194, 1197, 1200, 1203, 1206, 1210, 1216, 1220,
	 1223, 1229, 1247, 1250, 1253, 1256, 1259, 1262, 1265, 1268, 1271, 1274,
	 1277, 1280, 1283, 1286, 1289, 1292, 1295, 1298, 1301, 1304, 1307, 1310,
	 1313, 1316, 1319, 1322, 1325, 1328, 1331, 1334, 1337, 1340, 1343, 1346,
	 1349, 1352, 1355, 1358, 1361, 1364, 1367, 1370, 1373, 1376, 1379, 1382,
	 1385, 1388, 1391, 1394, 1396, 1398, 1400, 1402
	};
}

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

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

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


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

static final int lexer_en_main = 1;


// line 159 "ragel/i18n/en_pirate.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 650 "java/src/main/java/gherkin/lexer/En_pirate.java"
	{
	cs = lexer_start;
	}

// line 185 "ragel/i18n/en_pirate.java.rl"
    
// line 657 "java/src/main/java/gherkin/lexer/En_pirate.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_pirate.java.rl"
	{
      contentStart = p;
      currentLine = lineNumber;
      if(keyword != null) {
        startCol = p - lastNewline - (keyword.length() + 1);
      }
    }
	break;
	case 1:
// line 24 "ragel/i18n/en_pirate.java.rl"
	{
      currentLine = lineNumber;
      startCol = p - lastNewline;
    }
	break;
	case 2:
// line 29 "ragel/i18n/en_pirate.java.rl"
	{
      contentStart = p;
    }
	break;
	case 3:
// line 33 "ragel/i18n/en_pirate.java.rl"
	{
      docstringContentTypeStart = p;
    }
	break;
	case 4:
// line 37 "ragel/i18n/en_pirate.java.rl"
	{
      docstringContentTypeEnd = p;
    }
	break;
	case 5:
// line 41 "ragel/i18n/en_pirate.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_pirate.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_pirate.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_pirate.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_pirate.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_pirate.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_pirate.java.rl"
	{
      listener.step(keyword, substring(data, contentStart, p).trim(), currentLine);
    }
	break;
	case 12:
// line 86 "ragel/i18n/en_pirate.java.rl"
	{
      listener.comment(substring(data, contentStart, p).trim(), lineNumber);
      keywordStart = -1;
    }
	break;
	case 13:
// line 91 "ragel/i18n/en_pirate.java.rl"
	{
      listener.tag(substring(data, contentStart, p).trim(), currentLine);
      keywordStart = -1;
    }
	break;
	case 14:
// line 96 "ragel/i18n/en_pirate.java.rl"
	{
      lineNumber++;
    }
	break;
	case 15:
// line 100 "ragel/i18n/en_pirate.java.rl"
	{
      lastNewline = p + 1;
    }
	break;
	case 16:
// line 104 "ragel/i18n/en_pirate.java.rl"
	{
      if(keywordStart == -1) keywordStart = p;
    }
	break;
	case 17:
// line 108 "ragel/i18n/en_pirate.java.rl"
	{
      keyword = substring(data, keywordStart, p).replaceFirst(":$","");
      keywordStart = -1;
    }
	break;
	case 18:
// line 113 "ragel/i18n/en_pirate.java.rl"
	{
      nextKeywordStart = p;
    }
	break;
	case 19:
// line 117 "ragel/i18n/en_pirate.java.rl"
	{
      p = p - 1;
      currentRow = new ArrayList();
      currentLine = lineNumber;
    }
	break;
	case 20:
// line 123 "ragel/i18n/en_pirate.java.rl"
	{
      contentStart = p;
    }
	break;
	case 21:
// line 127 "ragel/i18n/en_pirate.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_pirate.java.rl"
	{
      listener.row(currentRow, currentLine);
    }
	break;
	case 23:
// line 140 "ragel/i18n/en_pirate.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 918 "java/src/main/java/gherkin/lexer/En_pirate.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_pirate.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 950 "java/src/main/java/gherkin/lexer/En_pirate.java"
		}
	}
	}

case 5:
	}
	break; }
	}

// line 186 "ragel/i18n/en_pirate.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