Package gherkin.lexer

Source Code of gherkin.lexer.Fi

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


  private final Listener listener;

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

 
// line 26 "java/src/main/java/gherkin/lexer/Fi.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,   17,   18,   19,   35,   36,   37,   39,   41,   46,   51,
     56,   61,   65,   69,   71,   72,   73,   74,   75,   76,   77,   78,
     79,   80,   81,   82,   83,   84,   85,   86,   87,   89,   91,   96,
    103108109110111112113114115116118119,
    120121122123124125126127128129130131,
    132133134135144146148150152154156158,
    160162164166168170172174176178180182,
    184186188190192208209211212213215216,
    217218219220221228230232234236238240,
    242244246248250251252266268270272274,
    276278280282284286288290292294296298,
    300302304306308310312315317319321323,
    325327329331333335337339341343345347,
    350352354356359361363365367369371373,
    374375376377378379380394396398400402,
    404406408410412414416418420422424426,
    428430432434436438440443445447449451,
    453455457459461463465467469471473475,
    477479480481482483484485499501503505,
    507509511513515517519521523525527529,
    531533535537539541543545548550552554,
    556558560562564566568570572574576578,
    580582584586588591593595597599603609,
    612614620636638641643645648650652654,
    657659661663665667669671
  };
}

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,   74,   75,   77,   78,
     79,   84124,    9,   13,  -69,  -65,   10,   32,   34,   35,   37,
     42,   64,   74,   75,   77,   78,   79,   84124,    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,
     97117110117116116105105108109101116,
    101116,   97,   97105110,   97105115117117115,
     58,   10,   10,   10,   32,   35,   37,   64,   79,   84,    9,   13,
     10,   95,   10,   70,   10,   69,   10,   65,   10,   84,   10,   85,
     10,   82,   10,   69,   10,   95,   10,   69,   10,   78,   10,   68,
     10,   95,   10,   37,   10109,   10105,   10110,   10,   97,
     10105,   10115,   10117,   10117,   10115,   10,   58,
     10,   32,   34,   35,   37,   42,   64,   74,   75,   77,   78,   79,
     84124,    9,   13,   97112117,   97117107115115,
    101116,   58,   10,   10,   10,   32,   35,   79124,    9,   13,
     10109,   10105,   10110,   10,   97,   10105,   10115,
     10117,   10117,   10115,   10,   58,   58,   97,   10,   10,
     10,   32,   35,   37,   42,   64,   74,   75,   77,   78,   79,   84,
      9,   13,   10,   95,   10,   70,   10,   69,   10,   65,   10,   84,
     10,   85,   10,   82,   10,   69,   10,   95,   10,   69,   10,   78,
     10,   68,   10,   95,   10,   37,   10,   32,   10,   97,   10117,
     10110,   10117,   10116,   10116,   10105,   10105,
     10108109,   10101,   10116,   10101,   10116,   10,
     97,   10,   97,   10105,   10110,   10,   97,   10105,   10,
    115,   10117,   10117,   10115,   10,   58,   10,   97,   10,
    112117,   10,   97,   10117,   10115,   10,   58,   97,   10,
    105,   10104,   10105,   10111,   10115,   10116,   10,
     97105104105111,   58,   10,   10,   10,   32,   35,   37,
     42,   64,   74,   75,   77,   78,   79,   84,    9,   13,   10,   95,
     10,   70,   10,   69,   10,   65,   10,   84,   10,   85,   10,   82,
     10,   69,   10,   95,   10,   69,   10,   78,   10,   68,   10,   95,
     10,   37,   10,   32,   10,   97,   10117,   10110,   10117,
     10116,   10116,   10105,   10105,   10108109,   10,
    101,   10116,   10101,   10116,   10,   97,   10,   97,   10,
    105,   10110,   10,   97,   10105,   10115,   10117,   10,
    117,   10115,   10,   58,   10,   97,   10112,   10,   97115,
    116,   97,   58,   10,   10,   10,   32,   35,   37,   42,   64,   74,
     75,   77,   78,   79,   84,    9,   13,   10,   95,   10,   70,   10,
     69,   10,   65,   10,   84,   10,   85,   10,   82,   10,   69,   10,
     95,   10,   69,   10,   78,   10,   68,   10,   95,   10,   37,   10,
     32,   10,   97,   10117,   10110,   10117,   10116,   10,
    116,   10105,   10105,   10108109,   10101,   10116,
     10101,   10116,   10,   97,   10,   97,   10105,   10110,
     10,   97,   10105,   10115,   10117,   10117,   10115,
     10,   58,   10,   97,   10112,   10,   97,   10117,   10115,
     10,   58,   97,   10105,   10104,   10105,   10111,   32,
    124,    9,   13,   10,   32,   92124,    9,   13,   10,   92124,
     10,   92,   10,   32,   92124,    9,   13,   10,   32,   34,   35,
     37,   42,   64,   74,   75,   77,   78,   79,   84124,    9,   13,
     10,   97,   10112117,   10,   97,   10117,   10107115,
     10115,   10101,   10116,   10,   58,   97,   10105,   10,
    104,   10105,   10111,   10115,   10116,   10,   97,    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,   15,    1,    1,   14,    1,    1,    2,    2,    3,    3,    3,
      3,    2,    2,    2,    1,    1,    1,    1,    1,    1,    1,    1,
      1,    1,    1,    1,    1,    1,    1,    1,    2,    2,    3,    5,
      3,    1,    1,    1,    1,    1,    1,    1,    1,    2,    1,    1,
      1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
      1,    1,    1,    7,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,   14,    1,    2,    1,    1,    2,    1,    1,
      1,    1,    1,    1,    5,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    1,    1,   12,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    3,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    3,
      2,    2,    2,    3,    2,    2,    2,    2,    2,    2,    2,    1,
      1,    1,    1,    1,    1,    1,   12,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    3,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    1,    1,    1,    1,    1,    1,   12,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    3,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    3,    2,    2,    2,    2,    2,    4,    3,
      2,    4,   14,    2,    3,    2,    2,    3,    2,    2,    2,    3,
      2,    2,    2,    2,    2,    2,    2,    0
  };
}

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


private static byte[] init__lexer_range_lengths_0()
{
  return new byte [] {
      0,    1,    0,    0,    1,    0,    0,    0,    0,    1,    1,    1,
      1,    1,    1,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    1,    1,
      1,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    1,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    1,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    1,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    1,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    1,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    1,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    1,    1,    0,
      0,    1,    1,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0
  };
}

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,   17,   19,   21,   37,   39,   41,   44,   47,   52,   57,
     62,   67,   71,   75,   78,   80,   82,   84,   86,   88,   90,   92,
     94,   96,   98100102104106108110113116121,
    128133135137139141143145147149152154,
    156158160162164166168170172174176178,
    180182184186195198201204207210213216,
    219222225228231234237240243246249252,
    255258261264267283285288290292295297,
    299301303305307314317320323326329332,
    335338341344347349351365368371374377,
    380383386389392395398401404407410413,
    416419422425428431434438441444447450,
    453456459462465468471474477480483486,
    490493496499503506509512515518521524,
    526528530532534536538552555558561564,
    567570573576579582585588591594597600,
    603606609612615618621625628631634637,
    640643646649652655658661664667670673,
    676679681683685687689691705708711714,
    717720723726729732735738741744747750,
    753756759762765768771774778781784787,
    790793796799802805808811814817820823,
    826829832835838842845848851854858864,
    868871877893896900903906910913916919,
    923926929932935938941944
  };
}

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,    2,    0,   16,    0,    2,    0,    3,    2,    4,
      5,    6,    7,    8,    9,   10,   11,   12,   13,   14,   15,    2,
      0,   17,    0,   18,    0,   20,   21,   19,   23,   24,   22,   27,
     26,   28,   26,   25,   31,   30,   32,   30,   29,   31,   30,   33,
     30,   29,   31,   30,   34,   30,   29,   36,   35,   35,    0,    3,
     37,   37,    0,   39,   40,   38,    3,    0,   41,    0,   42,    0,
     43,    0,   44,    0,   45,    0,   46,    0,   47,    0,   48,    0,
     49,    0,   50,    0,   51,    0,   52,    0,   53,    0,   54,    0,
     55,    0,   57,   58,   56,   60,   61,   59,    0,    0,    0,    0,
     62,   63,   64,   63,   63,   66,   65,   62,    3,   67,    8,   67,
      0,   68,    0,   69,    0,   68,    0,   70,    0,   71,    0,   72,
      0,   73,    0,   69,    0,   74,   75,    0,   76,    0,   77,    0,
     78,    0,   79,    0,   80,    0,   69,    0,   81,    0,   82,    0,
     83,    0,   84,    0,   85,    0,   86,    0,   87,    0,   88,    0,
     89,    0,   91,   90,   93,   92,   93,   94,   95,   96,   95,   97,
     98,   94,   92,   93,   99,   92,   93100,   92,   93101,   92,
     93102,   92,   93103,   92,   93104,   92,   93105,   92,
     93106,   92,   93107,   92,   93108,   92,   93109,   92,
     93110,   92,   93111,   92,   93112,   92,   93113,   92,
     93114,   92,   93115,   92,   93116,   92,   93117,   92,
     93118,   92,   93119,   92,   93120,   92,   93121,   92,
     93122,   92124123125126127128129130131,
    132133134135136123,    0137,    0138139,    0,
    140,    0141,    0142143,    0144,    0145,    0146,
      0147,    0149148151150151152153154153,
    152150151155150151156150151157150151,
    158150151159150151160150151161150151,
    162150151163150151164150165166,    0168,
    167170169170171172173174172175176177,
    178179180171169170181169170182169170,
    183169170184169170185169170186169170,
    187169170188169170189169170190169170,
    191169170192169170193169170194169170,
    195169170196169170197169170196169170,
    198169170199169170200169170201169170,
    197169170202203169170204169170205169,
    170206169170207169170208169170197169,
    170209169170210169170211169170212169,
    170213169170214169170215169170216169,
    170195169170217169170218219169170220,
    169170221169170222169170195223169170,
    224169170225169170226169170216169170,
    227169170228169170216169229,    0230,    0,
    231,    0232,    0233,    0235234237236237238,
    239240241239242243244245246247238236,
    237248236237249236237250236237251236,
    237252236237253236237254236237255236,
    237256236237257236237258236237259236,
    237260236237261236237262236237263236,
    237264236237263236237265236237266236,
    237267236237268236237264236237269270,
    236237271236237272236237273236237274,
    236237275236237264236237276236237277,
    236237278236237279236237280236237281,
    236237282236237283236237262236237284,
    236237285236237281236286,    0287,    0288,
      0289,    0291290293292293294295296297,
    295298299300301302303294292293304292,
    293305292293306292293307292293308292,
    293309292293310292293311292293312292,
    293313292293314292293315292293316292,
    293317292293318292293319292293320292,
    293319292293321292293322292293323292,
    293324292293320292293325326292293327,
    292293328292293329292293330292293331,
    292293320292293332292293333292293334,
    292293335292293336292293337292293338,
    292293339292293318292293340292293341,
    292293342292293343292293344292293318,
    345292293346292293347292293348292293,
    339292349350349,    0353352354355352351,
      0357358356,    0357356353359357358359,
    356353360361362363364365366367368369,
    370371372360,    0,   93373,   92,   93374375,   92,
     93376,   92,   93377,   92,   93378379,   92,   93380,
     92,   93381,   92,   93121,   92,   93122382,   92,   93,
    383,   92,   93384,   92,   93385,   92,   93121,   92,   93,
    386,   92,   93387,   92,   93121,   92388,    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,   38,   40,
     43,   45,   89273,    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,   30295,   32,   33,    4,   16,   33,
      4,   16,   35,   36,    4,   35,   34,   36,   31,   39,   41,   42,
     37,   44,   46,   52,   47,   48,   49,   50,   51,   53,   54,   55,
     56,   57,   58,   59,   60,   61,   62,   63,   62,   63,   63,    4,
     64,   78279,   65,   66,   67,   68,   69,   70,   71,   72,   73,
     74,   75,   76,   77,    4,   79,   80,   81,   82,   83,   84,   85,
     86,   87,   88,    4,    4,    5,   15,   17,   31,   34,   37,   38,
     40,   43,   45,   89273,   90,   91217,   92,   93,   94111,
     95,   96,   97,   98,   99100,   99100100,    4101102,
    103104105106107108109110,   88112167113,
    114113114114,    4115129130131133136138,
    154116117118119120121122123124125126,
    127128,    4,   88129132134135130137139145,
    140141142143144146147148149150151152,
    153155156164157158159160161162163165,
    166168169170171172173174173174174,    4,
    175189190191193196198214176177178179,
    180181182183184185186187188,    4,   88189,
    192194195190197199205200201202203204,
    206207208209210211212213215216218219,
    220221222223222223223,    4224238239240,
    242245247263225226227228229230231232,
    233234235236237,    4,   88238241243244239,
    246248254249250251252253255256257258,
    259260261262264265266267268269270271,
    272273274275277278276274275276274277,
    278,    5,   15,   17,   31,   34,   37,   38,   40,   43,   45,   89,
    273280281292282283284287285286288289,
    290291293294,    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,   35,    0,    0,    0,    7139,   48,    0102,
      9,    5,   45134,   45,    0,   33122,   33,   33,    0,   11,
    106,    0,    0114,   25,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,   57149126,    0,
    110,   23,    0,   27118,   27,   51,    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,   69,
     33,   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,   13,   31130,   60,   57,   31,   63,   57,   63,   63,
     63,   63,   63,   63,   66,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,   57144,    0,   54,    0,   81,   84,    0,
      0,    0,    0,    0,    0,    0,    0,    0,   21,    0,    0,   57,
    144,    0,   54,    0,   75,   33,   84,   84,   84,   84,   84,   84,
     84,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,   17,   17,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,   57144,    0,   54,    0,   78,
     33,   84,   84,   84,   84,   84,   84,   84,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,   19,   19,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,   57144,    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,   37,   37,   54,   37,   87,    0,    0,   39,    0,
      0,   93,   90,   41,   96,   90,   96,   96,   96,   96,   96,   96,
     99,    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
  };
}

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


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

static final int lexer_en_main = 1;


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

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

case 5:
  }
  break; }
  }

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

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.