Package gherkin.lexer

Source Code of gherkin.lexer.Pl

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


  private final Listener listener;

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

 
// line 26 "java/src/main/java/gherkin/lexer/Pl.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,   23,   24,   25,   47,   48,   49,   51,   53,   58,   63,
     68,   73,   77,   81,   83,   84,   85,   86,   87,   88,   89,   90,
     91,   92,   93,   94,   95,   96,   97,   98,   99101103108,
    115120122123124125126127128129130143,
    145147149151153155157159161163165167,
    169171173175177179181183205206207208,
    209210211212213214215217218219220221,
    222223224225226227228229230232233234,
    235236237238239240241242243244245246,
    247248249250251252253254255256257258,
    268270272274276278280282284286288290,
    292294296298300302304306308310312314,
    316318320322324326328330332334336338,
    340342344346348350352353354355356357,
    358359360361362363383385387389391393,
    395397399401403405407409411413416418,
    420422424426428430432434436438440442,
    444446448451453455457459461463465467,
    469471473475477479481483485487489491,
    493495497499501503505507509512514516,
    518520522524526528530532534536538540,
    542544546548550552554556558560563565,
    567569571573575577579581583585587589,
    592594596598600602604606608610612614,
    615616617618619620621622623624625626,
    627628629630631632633634654656658660,
    662664666668670672674676678680682684,
    687689691693695697699701703705707709,
    711713715717719722724726728730732734,
    736738740742744746748750752754756758,
    760762764766768770772774776778780782,
    784786788790792794796798801803805807,
    809811813815817819821823825827829831,
    833835837839840841842843844845846847,
    848849850851852854855856857858859860,
    861862863864865885887889891893895897,
    899901903905907909911913915918920922,
    924926928930932934936938940942944946,
    948950953955957959961963965967969971,
    973975977979981983985987989991993995,
    997999, 1001, 1003, 1005, 1007, 1009, 1011, 1014, 1016, 1018, 1020,
   1022, 1024, 1026, 1028, 1030, 1032, 1034, 1036, 1038, 1040, 1042, 1044,
   1046, 1048, 1050, 1052, 1054, 1056, 1058, 1060, 1062, 1065, 1067, 1069,
   1071, 1073, 1075, 1077, 1079, 1081, 1083, 1085, 1087, 1089, 1091, 1093,
   1095, 1097, 1099, 1101, 1102, 1103, 1104, 1105, 1109, 1115, 1118, 1120,
   1126, 1148, 1150, 1152, 1154, 1156, 1158, 1160, 1163, 1165, 1167, 1169,
   1171, 1173, 1175, 1177, 1179, 1181, 1183, 1185, 1187, 1189, 1191, 1193,
   1195, 1197, 1199, 1201, 1203, 1205, 1207, 1209, 1212, 1214, 1216, 1218,
   1220, 1222, 1224, 1226, 1228, 1230, 1232, 1234, 1236, 1238, 1240, 1242,
   1244, 1246, 1248, 1250, 1252, 1254, 1256, 1258, 1260, 1262, 1264, 1266,
   1268, 1270, 1272, 1274, 1276, 1278, 1280, 1282, 1284, 1286, 1288, 1290,
   1292, 1294, 1296, 1298, 1300, 1302, 1304
  };
}

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,   70,   71,   73,
     74,   75,   77,   79,   80,   83,   87,   90124,    9,   13,  -69,
    -65,   10,   32,   34,   35,   37,   42,   64,   65,   70,   71,   73,
     74,   75,   77,   79,   80,   83,   87,   90124,    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,
    108115101112101107116,   58,   10,   10,   10,   32,
     35,   37,   64,   65,   70,   80,   83,   87,   90,    9,   13,   10,
     95,   10,   70,   10,   69,   10,   65,   10,   84,   10,   85,   10,
     82,   10,   69,   10,   95,   10,   69,   10,   78,   10,   68,   10,
     95,   10,   37,   10115,   10112,   10101,   10107,   10,
    116,   10,   58,   10,   32,   34,   35,   37,   42,   64,   65,   70,
     71,   73,   74,   75,   77,   79,   80,   83,   87,   90124,    9,
     13117110107,   99106,   97100121101,  -59, -101,
    -68108105101105101,   97106,  -60, -123,   99114,
     97122111114116114122101,   98,   97,   32,   98,
    105122110101115111119122121107,  -59, -126,
     97100121,   58,   10,   10,   10,   32,   35,   65,   70,   80,
     87124,    9,   13,   10115,   10112,   10101,   10107,
     10116,   10,   58,   10117,   10110,   10107,   10,   99,
     10106,   10,   97,   10111,   10116,   10114,   10122,
     10101,   10,   98,   10,   97,   10,   32,   10,   98,   10105,
     10122,   10110,   10101,   10115,   10111,   10119,
    -59,   10, -126,   10,   10,   97,  -59,   10, -101,   10,   10,   99,
     10105,   10119,   10111,  -59,   10, -101,   10,  -60,   10,
   -121,   10,   99122101110,   97114105117115122,
     58,   10,   10,   10,   32,   35,   37,   42,   64,   65,   70,   71,
     73,   74,   75,   77,   79,   80,   83,   87,   90,    9,   13,   10,
     95,   10,   70,   10,   69,   10,   65,   10,   84,   10,   85,   10,
     82,   10,   69,   10,   95,   10,   69,   10,   78,   10,   68,   10,
     95,   10,   37,   10,   32,   10108115,   10101,   10112,
     10101,   10107,   10116,   10,   58,   10117,   10110,
     10107,   10,   99,   10106,   10,   97,   10100,   10121,
     10101,  -59,   10, -101,  -68,   10,   10108,   10105,   10,
    101,   10105,   10101,   10,   97,   10106,  -60,   10, -123,
     10,   10,   99,   10114,   10,   97,   10122,   10111,   10,
    116,   10114,   10122,   10101,   10,   98,   10,   97,   10,
     32,   10,   98,   10105,   10122,   10110,   10101,   10,
    115,   10111,   10119,   10,   99122,   10101,   10110,
     10,   97,   10114,   10105,   10117,   10115,   10122,
     10,   97,   10,   98,   10108,   10111,   10110,   10,   32,
     10115,   10,   99,   10101,   10110,   10,   97,   10114,
     10105,   10117,   10115,   10122,  -59,   10116, -126,
     10,   10,   97,  -59,   10, -101,   10,   10,   99,   10105,   10,
    119,   10111,  -59,   10, -101,   10,  -60,   10, -121,   10,   10,
     97,  -59,   10107, -126,   10,   10111,  -59,   10,  -68,   10,
     10101,   10110,   10105,  -59,   10, -126,   10,   10,   97,
     10100,   97,   98108111110,   32115,   99101110,
     97114105117115122,   97,   58,   10,   10,   10,   32,
     35,   37,   42,   64,   65,   70,   71,   73,   74,   75,   77,   79,
     80,   83,   87,   90,    9,   13,   10,   95,   10,   70,   10,   69,
     10,   65,   10,   84,   10,   85,   10,   82,   10,   69,   10,   95,
     10,   69,   10,   78,   10,   68,   10,   95,   10,   37,   10,   32,
     10108115,   10101,   10112,   10101,   10107,   10,
    116,   10,   58,   10117,   10110,   10107,   10,   99,   10,
    106,   10,   97,   10100,   10121,   10101,  -59,   10, -101,
    -68,   10,   10108,   10105,   10101,   10105,   10101,
     10,   97,   10106,  -60,   10, -123,   10,   10,   99,   10114,
     10,   97,   10122,   10111,   10116,   10114,   10122,
     10101,   10,   98,   10,   97,   10,   32,   10,   98,   10105,
     10122,   10110,   10101,   10115,   10111,   10119,
     10,   99,   10101,   10110,   10,   97,   10114,   10105,
     10117,   10115,   10122,  -59,   10116, -126,   10,   10,
     97,  -59,   10, -101,   10,   10,   99,   10105,   10119,   10,
    111,  -59,   10, -101,   10,  -60,   10, -121,   10,   10,   97,   10,
    107,  -59,   10, -126,   10,   10,   97,   10100,  -59116, -126,
     97,  -59, -101,   99105119111,  -59, -101,  -60, -121,   97,
    -59107, -126111,  -59,  -68101110105,   97,   58,   10,
     10,   10,   32,   35,   37,   42,   64,   65,   70,   71,   73,   74,
     75,   77,   79,   80,   83,   87,   90,    9,   13,   10,   95,   10,
     70,   10,   69,   10,   65,   10,   84,   10,   85,   10,   82,   10,
     69,   10,   95,   10,   69,   10,   78,   10,   68,   10,   95,   10,
     37,   10,   32,   10108115,   10101,   10112,   10101,
     10107,   10116,   10,   58,   10117,   10110,   10107,
     10,   99,   10106,   10,   97,   10100,   10121,   10101,
    -59,   10, -101,  -68,   10,   10108,   10105,   10101,   10,
    105,   10101,   10,   97,   10106,  -60,   10, -123,   10,   10,
     99,   10114,   10,   97,   10122,   10111,   10116,   10,
    114,   10122,   10101,   10,   98,   10,   97,   10,   32,   10,
     98,   10105,   10122,   10110,   10101,   10115,   10,
    111,   10119,   10,   99122,   10101,   10110,   10,   97,
     10114,   10105,   10117,   10115,   10122,   10,   97,
     10,   98,   10108,   10111,   10110,   10,   32,   10115,
     10,   99,   10101,   10110,   10,   97,   10114,   10105,
     10117,   10115,   10122,  -59,   10116, -126,   10,   10,
     97,  -59,   10, -101,   10,   10,   99,   10105,   10119,   10,
    111,  -59,   10, -101,   10,  -60,   10, -121,   10,   10,   97,   10,
    107,  -59,   10, -126,   10,   10,   97,   10100,  -59, -126,   97,
    100,   32124,    9,   13,   10,   32,   92124,    9,   13,   10,
     92124,   10,   92,   10,   32,   92124,    9,   13,   10,   32,
     34,   35,   37,   42,   64,   65,   70,   71,   73,   74,   75,   77,
     79,   80,   83,   87,   90124,    9,   13,   10117,   10110,
     10107,   10,   99,   10106,   10,   97,   10111114,   10,
    116,   10114,   10122,   10101,   10,   98,   10,   97,   10,
     32,   10,   98,   10105,   10122,   10110,   10101,   10,
    115,   10111,   10119,   10122,   10121,   10107,  -59,
     10, -126,   10,   10,   97,   10100,   10121,   10,   99122,
     10101,   10110,   10,   97,   10114,   10105,   10117,
     10115,   10122,   10,   97,   10,   98,   10108,   10111,
     10110,   10,   32,   10115,   10,   99,   10101,   10110,
     10,   97,   10114,   10105,   10117,   10115,   10122,
    -59,   10, -126,   10,   10,   97,  -59,   10, -101,   10,   10,   99,
     10105,   10119,   10111,  -59,   10, -101,   10,  -60,   10,
   -121,   10,   10,   97,  -59,   10, -126,   10,   10111,  -59,   10,
    -68,   10,   10101,   10110,   10105,    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,   21,    1,    1,   20,    1,    1,    2,    2,    3,    3,    3,
      3,    2,    2,    2,    1,    1,    1,    1,    1,    1,    1,    1,
      1,    1,    1,    1,    1,    1,    1,    1,    2,    2,    3,    5,
      3,    2,    1,    1,    1,    1,    1,    1,    1,    1,   11,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,   20,    1,    1,    1,    1,
      1,    1,    1,    1,    1,    1,    2,    1,    1,    1,    1,    1,
      1,    1,    1,    1,    1,    1,    1,    1,    2,    1,    1,    1,
      1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
      1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    8,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    1,    1,    1,    1,    1,    1,
      1,    1,    1,    1,    1,   18,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    3,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    3,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    3,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    3,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    3,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    1,
      1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
      1,    1,    1,    1,    1,    1,    1,   18,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    3,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    3,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    3,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    1,    1,    1,    1,    1,    1,    1,    1,    1,
      1,    1,    1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
      1,    1,    1,    1,   18,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    3,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    3,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    3,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    3,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    1,    1,    1,    1,    2,    4,    3,    2,    4,
     20,    2,    2,    2,    2,    2,    2,    3,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    3,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    0
  };
}

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

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,   23,   25,   27,   49,   51,   53,   56,   59,   64,   69,
     74,   79,   83,   87,   90,   92,   94,   96,   98100102104,
    106108110112114116118120122125128133,
    140145148150152154156158160162164177,
    180183186189192195198201204207210213,
    216219222225228231234237259261263265,
    267269271273275277279282284286288290,
    292294296298300302304306308311313315,
    317319321323325327329331333335337339,
    341343345347349351353355357359361363,
    373376379382385388391394397400403406,
    409412415418421424427430433436439442,
    445448451454457460463466469472475478,
    481484487490493496499501503505507509,
    511513515517519521541544547550553556,
    559562565568571574577580583586590593,
    596599602605608611614617620623626629,
    632635638642645648651654657660663666,
    669672675678681684687690693696699702,
    705708711714717720723726729733736739,
    742745748751754757760763766769772775,
    778781784787790793796799802805809812,
    815818821824827830833836839842845848,
    852855858861864867870873876879882885,
    887889891893895897899901903905907909,
    911913915917919921923925945948951954,
    957960963966969972975978981984987990,
    994997, 1000, 1003, 1006, 1009, 1012, 1015, 1018, 1021, 1024, 1027,
   1030, 1033, 1036, 1039, 1042, 1046, 1049, 1052, 1055, 1058, 1061, 1064,
   1067, 1070, 1073, 1076, 1079, 1082, 1085, 1088, 1091, 1094, 1097, 1100,
   1103, 1106, 1109, 1112, 1115, 1118, 1121, 1124, 1127, 1130, 1133, 1136,
   1139, 1142, 1145, 1148, 1151, 1154, 1157, 1160, 1164, 1167, 1170, 1173,
   1176, 1179, 1182, 1185, 1188, 1191, 1194, 1197, 1200, 1203, 1206, 1209,
   1212, 1215, 1218, 1221, 1223, 1225, 1227, 1229, 1231, 1233, 1235, 1237,
   1239, 1241, 1243, 1245, 1247, 1250, 1252, 1254, 1256, 1258, 1260, 1262,
   1264, 1266, 1268, 1270, 1272, 1292, 1295, 1298, 1301, 1304, 1307, 1310,
   1313, 1316, 1319, 1322, 1325, 1328, 1331, 1334, 1337, 1341, 1344, 1347,
   1350, 1353, 1356, 1359, 1362, 1365, 1368, 1371, 1374, 1377, 1380, 1383,
   1386, 1389, 1393, 1396, 1399, 1402, 1405, 1408, 1411, 1414, 1417, 1420,
   1423, 1426, 1429, 1432, 1435, 1438, 1441, 1444, 1447, 1450, 1453, 1456,
   1459, 1462, 1465, 1468, 1471, 1474, 1477, 1480, 1484, 1487, 1490, 1493,
   1496, 1499, 1502, 1505, 1508, 1511, 1514, 1517, 1520, 1523, 1526, 1529,
   1532, 1535, 1538, 1541, 1544, 1547, 1550, 1553, 1556, 1560, 1563, 1566,
   1569, 1572, 1575, 1578, 1581, 1584, 1587, 1590, 1593, 1596, 1599, 1602,
   1605, 1608, 1611, 1614, 1616, 1618, 1620, 1622, 1626, 1632, 1636, 1639,
   1645, 1667, 1670, 1673, 1676, 1679, 1682, 1685, 1689, 1692, 1695, 1698,
   1701, 1704, 1707, 1710, 1713, 1716, 1719, 1722, 1725, 1728, 1731, 1734,
   1737, 1740, 1743, 1746, 1749, 1752, 1755, 1758, 1762, 1765, 1768, 1771,
   1774, 1777, 1780, 1783, 1786, 1789, 1792, 1795, 1798, 1801, 1804, 1807,
   1810, 1813, 1816, 1819, 1822, 1825, 1828, 1831, 1834, 1837, 1840, 1843,
   1846, 1849, 1852, 1855, 1858, 1861, 1864, 1867, 1870, 1873, 1876, 1879,
   1882, 1885, 1888, 1891, 1894, 1897, 1900
  };
}

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,    7,
     12,   13,   14,   15,   16,   17,   18,   19,   20,    2,    0,   21,
      0,    2,    0,    3,    2,    4,    5,    6,    7,    8,    9,   10,
     11,    7,   12,   13,   14,   15,   16,   17,   18,   19,   20,    2,
      0,   22,    0,   23,    0,   25,   26,   24,   28,   29,   27,   32,
     31,   33,   31,   30,   36,   35,   37,   35,   34,   36,   35,   38,
     35,   34,   36,   35,   39,   35,   34,   41,   40,   40,    0,    3,
     42,   42,    0,   44,   45,   43,    3,    0,   46,    0,   47,    0,
     48,    0,   49,    0,   50,    0,   51,    0,   52,    0,   53,    0,
     54,    0,   55,    0,   56,    0,   57,    0,   58,    0,   59,    0,
     60,    0,   62,   63,   61,   65,   66,   64,    0,    0,    0,    0,
     67,   68,   69,   68,   68,   71,   70,   67,    3,   72,    8,   72,
      0,   73,   74,    0,   75,    0,   76,    0,   77,    0,   78,    0,
     79,    0,   80,    0,   82,   81,   84,   83,   84,   85,   86,   87,
     86,   88,   89,   90,   91,   92,   93,   85,   83,   84,   94,   83,
     84,   95,   83,   84,   96,   83,   84,   97,   83,   84,   98,   83,
     84,   99,   83,   84100,   83,   84101,   83,   84102,   83,
     84103,   83,   84104,   83,   84105,   83,   84106,   83,
     84107,   83,   84108,   83,   84109,   83,   84110,   83,
     84111,   83,   84112,   83,   84113,   83115114116,
    117118119120121122123119124125126127,
    128129130131132114,    0133,    0134,    0135,
      0136,    0137,    0,   79,    0138,    0,   75,    0139,
      0140,    0141142,    0143,    0,   75,    0141,    0,
    144,    0145,    0146,    0147,    0148,    0149,    0,
     75,    0150,    0151,    0,   75,    0152153,    0154,
      0155,    0156,    0157,    0158,    0159,    0160,
      0161,    0162,    0163,    0164,    0165,    0166,
      0167,    0137,    0168,    0169,    0170,    0171,
      0172,    0173,    0174,    0175,    0176,    0178,
    177180179180181182183184185186182181,
    179180187179180188179180189179180190,
    179180191179180192179180193179180194,
    179180195179180196179180197179180191,
    179180198179180199179180200179180201,
    179180202179180203179180204179180205,
    179180206179180207179180208179180209,
    179180210179180211179180212179180197,
    179213180179214180179180215179216180,
    179217180179180218179180219179180220,
    179180221179222180179223180179224180,
    179191180179225226,    0227,    0228,    0229,
      0230,    0231,    0232,    0233,    0234,    0235,
      0237236239238239240241242243241244,
    245246243247248249250251252253254240,
    238239255238239256238239257238239258,
    238239259238239260238239261238239262,
    238239263238239264238239265238239266,
    238239267238239268238239269238239270,
    271238239272238239273238239274238239,
    275238239276238239269238239277238239,
    278238239279238239280238239281238239,
    276238239282238239272238239283238284,
    239238285286239238239287238239272238,
    239285238239288238239289238239290238,
    239291238292239238293239238239272238,
    239294238239295238239272238239296238,
    239297238239298238239299238239300238,
    239301238239302238239303238239304238,
    239305238239306238239307238239308238,
    239309238239310238239281238239311312,
    238239313238239314238239315238239316,
    238239317238239318238239319238239276,
    238239320238239321238239322238239323,
    238239324238239325238239326238239327,
    238239328238239329238239330238239331,
    238239332238239333238239334238239281,
    238335239288238336239238239337238338,
    239238339239238239340238239341238239,
    342238239343238344239238345239238346,
    239238276239238239347238348239349238,
    350239238239351238352239238353239238,
    239354238239355238239281238356239238,
    357239238239358238239359238360,    0361,
      0362,    0363,    0364,    0365,    0366,    0367,
      0368,    0369,    0370,    0371,    0372,    0373,
      0374,    0375,    0376,    0377,    0379378381,
    380381382383384385383386387388385389,
    390391392393394395396382380381397380,
    381398380381399380381400380381401380,
    381402380381403380381404380381405380,
    381406380381407380381408380381409380,
    381410380381411380381412413380381414,
    380381415380381416380381417380381418,
    380381411380381419380381420380381421,
    380381422380381423380381418380381424,
    380381414380381425380426381380427428,
    381380381429380381414380381427380381,
    430380381431380381432380381433380434,
    381380435381380381414380381436380381,
    437380381414380381438380381439380381,
    440380381441380381442380381443380381,
    444380381445380381446380381447380381,
    448380381449380381450380381451380381,
    452380381423380381453380381454380381,
    455380381456380381457380381458380381,
    459380381460380381418380461381430380,
    462381380381463380464381380465381380,
    381466380381467380381468380381469380,
    470381380471381380472381380418381380,
    381473380381474380475381380476381380,
    381477380381478380479144,    0480,    0481,
      0482,    0483,    0484,    0485,    0486,    0487,
      0488,    0489,    0490,    0,   79,    0491,    0492,
    493,    0494,    0495,    0496,    0497,    0498,    0,
    499,    0500,    0501,    0502,    0504503506505,
    506507508509510508511512513510514515,
    516517518519520521507505506522505506,
    523505506524505506525505506526505506,
    527505506528505506529505506530505506,
    531505506532505506533505506534505506,
    535505506536505506537538505506539505,
    506540505506541505506542505506543505,
    506536505506544505506545505506546505,
    506547505506548505506543505506549505,
    506539505506550505551506505552553506,
    505506554505506539505506552505506555,
    505506556505506557505506558505559506,
    505560506505506539505506561505506562,
    505506539505506563505506564505506565,
    505506566505506567505506568505506569,
    505506570505506571505506572505506573,
    505506574505506575505506576505506577,
    505506548505506578579505506580505506,
    581505506582505506583505506584505506,
    585505506586505506543505506587505506,
    588505506589505506590505506591505506,
    592505506593505506594505506595505506,
    596505506597505506598505506599505506,
    600505506601505506548505602506555505,
    603506505506604505605506505606506505,
    506607505506608505506609505506610505,
    611506505612506505613506505543506505,
    506614505506615505616506505617506505,
    506618505506619505620,    0621,    0622,    0,
    623,    0624625624,    0628627629630627626,
      0632633631,    0632631628634632633634,
    631628635636637638639640641642643639,
    644645646647648649650651652635,    0,   84,
    653,   83,   84654,   83,   84655,   83,   84656,   83,   84,
    657,   83,   84112,   83,   84658659,   83,   84660,   83,
     84661,   83,   84662,   83,   84663,   83,   84664,   83,
     84665,   83,   84666,   83,   84667,   83,   84668,   83,
     84669,   83,   84670,   83,   84671,   83,   84672,   83,
     84673,   83,   84657,   83,   84674,   83,   84675,   83,
     84676,   83677,   84,   83678,   84,   83,   84679,   83,
     84680,   83,   84112,   83,   84681682,   83,   84683,
     83,   84684,   83,   84685,   83,   84686,   83,   84687,
     83,   84688,   83,   84689,   83,   84112,   83,   84690,
     83,   84691,   83,   84692,   83,   84693,   83,   84694,
     83,   84695,   83,   84696,   83,   84697,   83,   84698,
     83,   84699,   83,   84700,   83,   84701,   83,   84702,
     83,   84703,   83,   84704,   83,   84657,   83705,   84,
     83706,   84,   83,   84707,   83708,   84,   83709,   84,
     83,   84710,   83,   84711,   83,   84712,   83,   84713,
     83714,   84,   83715,   84,   83716,   84,   83112,   84,
     83,   84717,   83718,   84,   83719,   84,   83,   84720,
     83721,   84,   83722,   84,   83,   84723,   83,   84724,
     83,   84657,   83725,    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,   68,   74,
     76,   82,   84,   89,   92161398411535,    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,   30618,
     32,   33,    4,   16,   33,    4,   16,   35,   36,    4,   35,   34,
     36,   38,   39,   31,   40,   41,   42,   43,   44,   45,   46,   45,
     46,   46,    4,   47,   61541547571596609,   48,   49,
     50,   51,   52,   53,   54,   55,   56,   57,   58,   59,   60,    4,
     62,   63,   64,   65,   66,   67,    4,    4,    5,   15,   17,   31,
     34,   37,   68,   74,   76,   82,   84,   89,   92161398411,
    535,   69,   70,   71,   72,   73,   75,   77,   78,   79,   81,   80,
     83,   74,   85,   86,   87,   88,   90,   91,   93108,   94,   95,
     96,   97,   98,   99100101102103104105106107,
    109110111112113114115116117118119118,
    119119,    4120126132148121122123124125,
     67127128129130131133134135136137138,
    139140141142143144145146147149150151,
    152153154155156157158159160162287163,
    164165166167168169170171172173172173,
    173,    4174188189196202204210212217220,
    236261274175176177178179180181182183,
    184185186187,    4,   67190191188192193194,
    195197198199200201203205206207209208,
    211202213214215216218219221222223224,
    225226227228229230231232233234235237,
    245238239240241242243244246247248249,
    250251252253254255256257258259260262,
    263264265266267268269270271272273275,
    276283277278279280281282284285286212,
    288289290291292293294295296297298299,
    300301302303304305306307306307307,    4,
    308322323330336338344346351354370379,
    392309310311312313314315316317318319,
    320321,    4,   67324325322326327328329331,
    332333334335337339340341343342345336,
    347348349350352353355356357358359360,
    361362363364365366367368369371372373,
    374375376377378380381382383384385386,
    387388389390391393394395396397346399,
    400401402403404405406407408409410412,
    413531414415416417418419420421422423,
    424423424424,    4425439440447453455461,
    463468471487512525426427428429430431,
    432433434435436437438,    4,   67441442439,
    443444445446448449450451452454456457,
    458460459462453464465466467469470472,
    473474475476477478479480481482483484,
    485486488496489490491492493494495497,
    498499500501502503504505506507508509,
    510511513514515516517518519520521522,
    523524526527528529530463532533534,   84,
    535536537539540538536537538536539540,
      5,   15,   17,   31,   34,   37,   68,   74,   76,   82,   84,   89,
     92161398411535542543544545546548563,
    549550551552553554555556557558559560,
    561562564565566567568569570572580573,
    574575576577578579581582583584585586,
    587588589590591592593594595597598599,
    600601602603604605606607608610611612,
    613614615616617,    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,   29,   29,   29,   35,    0,    0,    0,
      7139,   48,    0102,    9,    5,   45134,   45,    0,   33,
    122,   33,   33,    0,   11106,    0,    0114,   25,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,   57149126,    0110,   23,    0,   27118,   27,   51,
      0,    0,    0,    0,    0,    0,    0,    0,    0,   57144,    0,
     54,    0,   69,   33,   84,   84,   84,   84,   84,   84,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   13,
      0,    0,    0,    0,    0,   13,   31130,   60,   57,   31,   63,
     57,   63,   63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
     66,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,   57144,    0,
     54,    0,   81,   84,   84,   84,   84,    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,    0,   57144,    0,   54,
      0,   75,   33,   84,   84,   84,   84,   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,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,   57144,    0,   54,    0,   78,
     33,   84,   84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
     84,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,   19,   19,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   57,
    144,    0,   54,    0,   72,   33,   84,   84,   84,   84,   84,   84,
     84,   84,   84,   84,   84,   84,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,   15,   15,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,   37,   37,   54,   37,   87,    0,    0,   39,    0,    0,
     93,   90,   41,   96,   90,   96,   96,   96,   96,   96,   96,   96,
     96,   96,   96,   96,   99,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0
  };
}

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


private static short[] init__lexer_eof_actions_0()
{
  return new short [] {
      0,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
     43,   43,   43,   43,   43,   43,   43
  };
}

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


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

static final int lexer_en_main = 1;


// line 159 "ragel/i18n/pl.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<String> currentRow = null;

   
// line 813 "java/src/main/java/gherkin/lexer/Pl.java"
  {
  cs = lexer_start;
  }

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

case 5:
  }
  break; }
  }

// line 186 "ragel/i18n/pl.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);
    }
  }
}
TOP

Related Classes of gherkin.lexer.Pl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.