c_lexer 2.6.2.0.1 → 2.6.2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/ext/lexer/lexer.c CHANGED
@@ -10314,6 +10314,7 @@ static VALUE lexer_initialize(VALUE self, VALUE version)
10314
10314
  Lexer* lexer = GET_LEXER(self);
10315
10315
 
10316
10316
  lexer->version = NUM2INT(version);
10317
+ rb_iv_set(self, "@context", Qnil);
10317
10318
 
10318
10319
  return lexer_reset(0, NULL, self);
10319
10320
  }
@@ -10571,7 +10572,7 @@ static VALUE lexer_advance(VALUE self)
10571
10572
  command_state = (cs == lex_en_expr_value || cs == lex_en_line_begin);
10572
10573
 
10573
10574
 
10574
- #line 10575 "ext/lexer/lexer.c"
10575
+ #line 10576 "ext/lexer/lexer.c"
10575
10576
  {
10576
10577
  int _slen;
10577
10578
  int _trans;
@@ -10587,7 +10588,7 @@ _resume:
10587
10588
  #line 1 "NONE"
10588
10589
  {ts = p;}
10589
10590
  break;
10590
- #line 10591 "ext/lexer/lexer.c"
10591
+ #line 10592 "ext/lexer/lexer.c"
10591
10592
  }
10592
10593
 
10593
10594
  _keys = _lex_trans_keys + (cs<<1);
@@ -10606,18 +10607,18 @@ _eof_trans:
10606
10607
 
10607
10608
  switch ( _lex_trans_actions[_trans] ) {
10608
10609
  case 28:
10609
- #line 1003 "ext/lexer/lexer.rl"
10610
+ #line 1006 "ext/lexer/lexer.rl"
10610
10611
  { lexer->newline_s = p; }
10611
10612
  break;
10612
10613
  case 109:
10613
- #line 1268 "ext/lexer/lexer.rl"
10614
+ #line 1271 "ext/lexer/lexer.rl"
10614
10615
  {
10615
10616
  lexer->escape_s = p;
10616
10617
  lexer->escape = Qnil;
10617
10618
  }
10618
10619
  break;
10619
10620
  case 29:
10620
- #line 1273 "ext/lexer/lexer.rl"
10621
+ #line 1276 "ext/lexer/lexer.rl"
10621
10622
  {
10622
10623
  if (lexer->herebody_s) {
10623
10624
  p = lexer->herebody_s;
@@ -10626,83 +10627,83 @@ _eof_trans:
10626
10627
  }
10627
10628
  break;
10628
10629
  case 59:
10629
- #line 1538 "ext/lexer/lexer.rl"
10630
+ #line 1541 "ext/lexer/lexer.rl"
10630
10631
  { sharp_s = p - 1; }
10631
10632
  break;
10632
10633
  case 63:
10633
- #line 1539 "ext/lexer/lexer.rl"
10634
+ #line 1542 "ext/lexer/lexer.rl"
10634
10635
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
10635
10636
  break;
10636
10637
  case 293:
10637
- #line 1557 "ext/lexer/lexer.rl"
10638
+ #line 1560 "ext/lexer/lexer.rl"
10638
10639
  { tm = p; }
10639
10640
  break;
10640
10641
  case 36:
10641
- #line 1760 "ext/lexer/lexer.rl"
10642
+ #line 1763 "ext/lexer/lexer.rl"
10642
10643
  { tm = p; }
10643
10644
  break;
10644
10645
  case 38:
10645
- #line 1771 "ext/lexer/lexer.rl"
10646
+ #line 1774 "ext/lexer/lexer.rl"
10646
10647
  { tm = p; }
10647
10648
  break;
10648
10649
  case 40:
10649
- #line 1788 "ext/lexer/lexer.rl"
10650
+ #line 1791 "ext/lexer/lexer.rl"
10650
10651
  { tm = p; }
10651
10652
  break;
10652
10653
  case 69:
10653
- #line 1919 "ext/lexer/lexer.rl"
10654
+ #line 1922 "ext/lexer/lexer.rl"
10654
10655
  { heredoc_e = p; }
10655
10656
  break;
10656
10657
  case 335:
10657
- #line 2014 "ext/lexer/lexer.rl"
10658
+ #line 2017 "ext/lexer/lexer.rl"
10658
10659
  { lexer->escape = Qnil; }
10659
10660
  break;
10660
10661
  case 364:
10661
- #line 2071 "ext/lexer/lexer.rl"
10662
+ #line 2074 "ext/lexer/lexer.rl"
10662
10663
  { tm = p; }
10663
10664
  break;
10664
10665
  case 291:
10665
- #line 2110 "ext/lexer/lexer.rl"
10666
+ #line 2113 "ext/lexer/lexer.rl"
10666
10667
  { ident_tok = tok(lexer, ts, te); ident_ts = ts; ident_te = te; }
10667
10668
  break;
10668
10669
  case 458:
10669
- #line 2257 "ext/lexer/lexer.rl"
10670
+ #line 2260 "ext/lexer/lexer.rl"
10670
10671
  { num_base = 16; num_digits_s = p; }
10671
10672
  break;
10672
10673
  case 450:
10673
- #line 2258 "ext/lexer/lexer.rl"
10674
+ #line 2261 "ext/lexer/lexer.rl"
10674
10675
  { num_base = 10; num_digits_s = p; }
10675
10676
  break;
10676
10677
  case 454:
10677
- #line 2259 "ext/lexer/lexer.rl"
10678
+ #line 2262 "ext/lexer/lexer.rl"
10678
10679
  { num_base = 8; num_digits_s = p; }
10679
10680
  break;
10680
10681
  case 446:
10681
- #line 2260 "ext/lexer/lexer.rl"
10682
+ #line 2263 "ext/lexer/lexer.rl"
10682
10683
  { num_base = 2; num_digits_s = p; }
10683
10684
  break;
10684
10685
  case 465:
10685
- #line 2261 "ext/lexer/lexer.rl"
10686
+ #line 2264 "ext/lexer/lexer.rl"
10686
10687
  { num_base = 10; num_digits_s = ts; }
10687
10688
  break;
10688
10689
  case 422:
10689
- #line 2262 "ext/lexer/lexer.rl"
10690
+ #line 2265 "ext/lexer/lexer.rl"
10690
10691
  { num_base = 8; num_digits_s = ts; }
10691
10692
  break;
10692
10693
  case 438:
10693
- #line 2263 "ext/lexer/lexer.rl"
10694
+ #line 2266 "ext/lexer/lexer.rl"
10694
10695
  { num_suffix_s = p; }
10695
10696
  break;
10696
10697
  case 431:
10697
- #line 2330 "ext/lexer/lexer.rl"
10698
+ #line 2333 "ext/lexer/lexer.rl"
10698
10699
  { num_suffix_s = p; }
10699
10700
  break;
10700
10701
  case 428:
10701
- #line 2331 "ext/lexer/lexer.rl"
10702
+ #line 2334 "ext/lexer/lexer.rl"
10702
10703
  { num_suffix_s = p; }
10703
10704
  break;
10704
10705
  case 86:
10705
- #line 2490 "ext/lexer/lexer.rl"
10706
+ #line 2493 "ext/lexer/lexer.rl"
10706
10707
  { tm = p; }
10707
10708
  break;
10708
10709
  case 7:
@@ -10710,7 +10711,7 @@ _eof_trans:
10710
10711
  {te = p+1;}
10711
10712
  break;
10712
10713
  case 106:
10713
- #line 1433 "ext/lexer/lexer.rl"
10714
+ #line 1436 "ext/lexer/lexer.rl"
10714
10715
  {te = p+1;{
10715
10716
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
10716
10717
  literal_flush_string(current_literal);
@@ -10729,7 +10730,7 @@ _eof_trans:
10729
10730
  }}
10730
10731
  break;
10731
10732
  case 5:
10732
- #line 1387 "ext/lexer/lexer.rl"
10733
+ #line 1390 "ext/lexer/lexer.rl"
10733
10734
  {te = p+1;{
10734
10735
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
10735
10736
  literal_flush_string(current_literal);
@@ -10751,7 +10752,7 @@ _eof_trans:
10751
10752
  }}
10752
10753
  break;
10753
10754
  case 102:
10754
- #line 1336 "ext/lexer/lexer.rl"
10755
+ #line 1339 "ext/lexer/lexer.rl"
10755
10756
  {te = p+1;{
10756
10757
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
10757
10758
  long str_s = current_literal->str_s;
@@ -10797,7 +10798,7 @@ _eof_trans:
10797
10798
  }}
10798
10799
  break;
10799
10800
  case 101:
10800
- #line 1280 "ext/lexer/lexer.rl"
10801
+ #line 1283 "ext/lexer/lexer.rl"
10801
10802
  {te = p+1;{
10802
10803
  VALUE string = tok(lexer, ts, te);
10803
10804
  VALUE lookahead = Qnil;
@@ -10826,7 +10827,7 @@ _eof_trans:
10826
10827
  }}
10827
10828
  break;
10828
10829
  case 107:
10829
- #line 1387 "ext/lexer/lexer.rl"
10830
+ #line 1390 "ext/lexer/lexer.rl"
10830
10831
  {te = p;p--;{
10831
10832
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
10832
10833
  literal_flush_string(current_literal);
@@ -10848,14 +10849,14 @@ _eof_trans:
10848
10849
  }}
10849
10850
  break;
10850
10851
  case 104:
10851
- #line 1380 "ext/lexer/lexer.rl"
10852
+ #line 1383 "ext/lexer/lexer.rl"
10852
10853
  {te = p;p--;{
10853
10854
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
10854
10855
  literal_extend_space(current_literal, ts, te);
10855
10856
  }}
10856
10857
  break;
10857
10858
  case 105:
10858
- #line 1280 "ext/lexer/lexer.rl"
10859
+ #line 1283 "ext/lexer/lexer.rl"
10859
10860
  {te = p;p--;{
10860
10861
  VALUE string = tok(lexer, ts, te);
10861
10862
  VALUE lookahead = Qnil;
@@ -10884,7 +10885,7 @@ _eof_trans:
10884
10885
  }}
10885
10886
  break;
10886
10887
  case 6:
10887
- #line 1307 "ext/lexer/lexer.rl"
10888
+ #line 1310 "ext/lexer/lexer.rl"
10888
10889
  {{p = ((te))-1;}{
10889
10890
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
10890
10891
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -10915,7 +10916,7 @@ _eof_trans:
10915
10916
  }}
10916
10917
  break;
10917
10918
  case 4:
10918
- #line 1280 "ext/lexer/lexer.rl"
10919
+ #line 1283 "ext/lexer/lexer.rl"
10919
10920
  {{p = ((te))-1;}{
10920
10921
  VALUE string = tok(lexer, ts, te);
10921
10922
  VALUE lookahead = Qnil;
@@ -10944,7 +10945,7 @@ _eof_trans:
10944
10945
  }}
10945
10946
  break;
10946
10947
  case 134:
10947
- #line 1433 "ext/lexer/lexer.rl"
10948
+ #line 1436 "ext/lexer/lexer.rl"
10948
10949
  {te = p+1;{
10949
10950
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
10950
10951
  literal_flush_string(current_literal);
@@ -10963,7 +10964,7 @@ _eof_trans:
10963
10964
  }}
10964
10965
  break;
10965
10966
  case 10:
10966
- #line 1387 "ext/lexer/lexer.rl"
10967
+ #line 1390 "ext/lexer/lexer.rl"
10967
10968
  {te = p+1;{
10968
10969
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
10969
10970
  literal_flush_string(current_literal);
@@ -10985,7 +10986,7 @@ _eof_trans:
10985
10986
  }}
10986
10987
  break;
10987
10988
  case 131:
10988
- #line 1336 "ext/lexer/lexer.rl"
10989
+ #line 1339 "ext/lexer/lexer.rl"
10989
10990
  {te = p+1;{
10990
10991
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
10991
10992
  long str_s = current_literal->str_s;
@@ -11031,7 +11032,7 @@ _eof_trans:
11031
11032
  }}
11032
11033
  break;
11033
11034
  case 130:
11034
- #line 1280 "ext/lexer/lexer.rl"
11035
+ #line 1283 "ext/lexer/lexer.rl"
11035
11036
  {te = p+1;{
11036
11037
  VALUE string = tok(lexer, ts, te);
11037
11038
  VALUE lookahead = Qnil;
@@ -11060,7 +11061,7 @@ _eof_trans:
11060
11061
  }}
11061
11062
  break;
11062
11063
  case 135:
11063
- #line 1387 "ext/lexer/lexer.rl"
11064
+ #line 1390 "ext/lexer/lexer.rl"
11064
11065
  {te = p;p--;{
11065
11066
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11066
11067
  literal_flush_string(current_literal);
@@ -11082,7 +11083,7 @@ _eof_trans:
11082
11083
  }}
11083
11084
  break;
11084
11085
  case 133:
11085
- #line 1280 "ext/lexer/lexer.rl"
11086
+ #line 1283 "ext/lexer/lexer.rl"
11086
11087
  {te = p;p--;{
11087
11088
  VALUE string = tok(lexer, ts, te);
11088
11089
  VALUE lookahead = Qnil;
@@ -11111,7 +11112,7 @@ _eof_trans:
11111
11112
  }}
11112
11113
  break;
11113
11114
  case 11:
11114
- #line 1307 "ext/lexer/lexer.rl"
11115
+ #line 1310 "ext/lexer/lexer.rl"
11115
11116
  {{p = ((te))-1;}{
11116
11117
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11117
11118
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -11142,7 +11143,7 @@ _eof_trans:
11142
11143
  }}
11143
11144
  break;
11144
11145
  case 9:
11145
- #line 1280 "ext/lexer/lexer.rl"
11146
+ #line 1283 "ext/lexer/lexer.rl"
11146
11147
  {{p = ((te))-1;}{
11147
11148
  VALUE string = tok(lexer, ts, te);
11148
11149
  VALUE lookahead = Qnil;
@@ -11171,7 +11172,7 @@ _eof_trans:
11171
11172
  }}
11172
11173
  break;
11173
11174
  case 158:
11174
- #line 1336 "ext/lexer/lexer.rl"
11175
+ #line 1339 "ext/lexer/lexer.rl"
11175
11176
  {te = p+1;{
11176
11177
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11177
11178
  long str_s = current_literal->str_s;
@@ -11217,7 +11218,7 @@ _eof_trans:
11217
11218
  }}
11218
11219
  break;
11219
11220
  case 157:
11220
- #line 1280 "ext/lexer/lexer.rl"
11221
+ #line 1283 "ext/lexer/lexer.rl"
11221
11222
  {te = p+1;{
11222
11223
  VALUE string = tok(lexer, ts, te);
11223
11224
  VALUE lookahead = Qnil;
@@ -11246,14 +11247,14 @@ _eof_trans:
11246
11247
  }}
11247
11248
  break;
11248
11249
  case 160:
11249
- #line 1380 "ext/lexer/lexer.rl"
11250
+ #line 1383 "ext/lexer/lexer.rl"
11250
11251
  {te = p;p--;{
11251
11252
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11252
11253
  literal_extend_space(current_literal, ts, te);
11253
11254
  }}
11254
11255
  break;
11255
11256
  case 161:
11256
- #line 1280 "ext/lexer/lexer.rl"
11257
+ #line 1283 "ext/lexer/lexer.rl"
11257
11258
  {te = p;p--;{
11258
11259
  VALUE string = tok(lexer, ts, te);
11259
11260
  VALUE lookahead = Qnil;
@@ -11282,7 +11283,7 @@ _eof_trans:
11282
11283
  }}
11283
11284
  break;
11284
11285
  case 164:
11285
- #line 1336 "ext/lexer/lexer.rl"
11286
+ #line 1339 "ext/lexer/lexer.rl"
11286
11287
  {te = p+1;{
11287
11288
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11288
11289
  long str_s = current_literal->str_s;
@@ -11328,7 +11329,7 @@ _eof_trans:
11328
11329
  }}
11329
11330
  break;
11330
11331
  case 163:
11331
- #line 1280 "ext/lexer/lexer.rl"
11332
+ #line 1283 "ext/lexer/lexer.rl"
11332
11333
  {te = p+1;{
11333
11334
  VALUE string = tok(lexer, ts, te);
11334
11335
  VALUE lookahead = Qnil;
@@ -11357,7 +11358,7 @@ _eof_trans:
11357
11358
  }}
11358
11359
  break;
11359
11360
  case 166:
11360
- #line 1280 "ext/lexer/lexer.rl"
11361
+ #line 1283 "ext/lexer/lexer.rl"
11361
11362
  {te = p;p--;{
11362
11363
  VALUE string = tok(lexer, ts, te);
11363
11364
  VALUE lookahead = Qnil;
@@ -11386,7 +11387,7 @@ _eof_trans:
11386
11387
  }}
11387
11388
  break;
11388
11389
  case 173:
11389
- #line 1433 "ext/lexer/lexer.rl"
11390
+ #line 1436 "ext/lexer/lexer.rl"
11390
11391
  {te = p+1;{
11391
11392
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11392
11393
  literal_flush_string(current_literal);
@@ -11405,7 +11406,7 @@ _eof_trans:
11405
11406
  }}
11406
11407
  break;
11407
11408
  case 13:
11408
- #line 1387 "ext/lexer/lexer.rl"
11409
+ #line 1390 "ext/lexer/lexer.rl"
11409
11410
  {te = p+1;{
11410
11411
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11411
11412
  literal_flush_string(current_literal);
@@ -11427,7 +11428,7 @@ _eof_trans:
11427
11428
  }}
11428
11429
  break;
11429
11430
  case 170:
11430
- #line 1336 "ext/lexer/lexer.rl"
11431
+ #line 1339 "ext/lexer/lexer.rl"
11431
11432
  {te = p+1;{
11432
11433
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11433
11434
  long str_s = current_literal->str_s;
@@ -11473,7 +11474,7 @@ _eof_trans:
11473
11474
  }}
11474
11475
  break;
11475
11476
  case 169:
11476
- #line 1280 "ext/lexer/lexer.rl"
11477
+ #line 1283 "ext/lexer/lexer.rl"
11477
11478
  {te = p+1;{
11478
11479
  VALUE string = tok(lexer, ts, te);
11479
11480
  VALUE lookahead = Qnil;
@@ -11502,7 +11503,7 @@ _eof_trans:
11502
11503
  }}
11503
11504
  break;
11504
11505
  case 174:
11505
- #line 1387 "ext/lexer/lexer.rl"
11506
+ #line 1390 "ext/lexer/lexer.rl"
11506
11507
  {te = p;p--;{
11507
11508
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11508
11509
  literal_flush_string(current_literal);
@@ -11524,7 +11525,7 @@ _eof_trans:
11524
11525
  }}
11525
11526
  break;
11526
11527
  case 172:
11527
- #line 1280 "ext/lexer/lexer.rl"
11528
+ #line 1283 "ext/lexer/lexer.rl"
11528
11529
  {te = p;p--;{
11529
11530
  VALUE string = tok(lexer, ts, te);
11530
11531
  VALUE lookahead = Qnil;
@@ -11553,7 +11554,7 @@ _eof_trans:
11553
11554
  }}
11554
11555
  break;
11555
11556
  case 12:
11556
- #line 1280 "ext/lexer/lexer.rl"
11557
+ #line 1283 "ext/lexer/lexer.rl"
11557
11558
  {{p = ((te))-1;}{
11558
11559
  VALUE string = tok(lexer, ts, te);
11559
11560
  VALUE lookahead = Qnil;
@@ -11582,7 +11583,7 @@ _eof_trans:
11582
11583
  }}
11583
11584
  break;
11584
11585
  case 176:
11585
- #line 1336 "ext/lexer/lexer.rl"
11586
+ #line 1339 "ext/lexer/lexer.rl"
11586
11587
  {te = p+1;{
11587
11588
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11588
11589
  long str_s = current_literal->str_s;
@@ -11628,7 +11629,7 @@ _eof_trans:
11628
11629
  }}
11629
11630
  break;
11630
11631
  case 175:
11631
- #line 1280 "ext/lexer/lexer.rl"
11632
+ #line 1283 "ext/lexer/lexer.rl"
11632
11633
  {te = p+1;{
11633
11634
  VALUE string = tok(lexer, ts, te);
11634
11635
  VALUE lookahead = Qnil;
@@ -11657,7 +11658,7 @@ _eof_trans:
11657
11658
  }}
11658
11659
  break;
11659
11660
  case 183:
11660
- #line 1433 "ext/lexer/lexer.rl"
11661
+ #line 1436 "ext/lexer/lexer.rl"
11661
11662
  {te = p+1;{
11662
11663
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11663
11664
  literal_flush_string(current_literal);
@@ -11676,7 +11677,7 @@ _eof_trans:
11676
11677
  }}
11677
11678
  break;
11678
11679
  case 15:
11679
- #line 1387 "ext/lexer/lexer.rl"
11680
+ #line 1390 "ext/lexer/lexer.rl"
11680
11681
  {te = p+1;{
11681
11682
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11682
11683
  literal_flush_string(current_literal);
@@ -11698,7 +11699,7 @@ _eof_trans:
11698
11699
  }}
11699
11700
  break;
11700
11701
  case 179:
11701
- #line 1336 "ext/lexer/lexer.rl"
11702
+ #line 1339 "ext/lexer/lexer.rl"
11702
11703
  {te = p+1;{
11703
11704
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11704
11705
  long str_s = current_literal->str_s;
@@ -11744,7 +11745,7 @@ _eof_trans:
11744
11745
  }}
11745
11746
  break;
11746
11747
  case 178:
11747
- #line 1280 "ext/lexer/lexer.rl"
11748
+ #line 1283 "ext/lexer/lexer.rl"
11748
11749
  {te = p+1;{
11749
11750
  VALUE string = tok(lexer, ts, te);
11750
11751
  VALUE lookahead = Qnil;
@@ -11773,7 +11774,7 @@ _eof_trans:
11773
11774
  }}
11774
11775
  break;
11775
11776
  case 184:
11776
- #line 1387 "ext/lexer/lexer.rl"
11777
+ #line 1390 "ext/lexer/lexer.rl"
11777
11778
  {te = p;p--;{
11778
11779
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11779
11780
  literal_flush_string(current_literal);
@@ -11795,14 +11796,14 @@ _eof_trans:
11795
11796
  }}
11796
11797
  break;
11797
11798
  case 181:
11798
- #line 1380 "ext/lexer/lexer.rl"
11799
+ #line 1383 "ext/lexer/lexer.rl"
11799
11800
  {te = p;p--;{
11800
11801
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11801
11802
  literal_extend_space(current_literal, ts, te);
11802
11803
  }}
11803
11804
  break;
11804
11805
  case 182:
11805
- #line 1280 "ext/lexer/lexer.rl"
11806
+ #line 1283 "ext/lexer/lexer.rl"
11806
11807
  {te = p;p--;{
11807
11808
  VALUE string = tok(lexer, ts, te);
11808
11809
  VALUE lookahead = Qnil;
@@ -11831,7 +11832,7 @@ _eof_trans:
11831
11832
  }}
11832
11833
  break;
11833
11834
  case 14:
11834
- #line 1280 "ext/lexer/lexer.rl"
11835
+ #line 1283 "ext/lexer/lexer.rl"
11835
11836
  {{p = ((te))-1;}{
11836
11837
  VALUE string = tok(lexer, ts, te);
11837
11838
  VALUE lookahead = Qnil;
@@ -11860,7 +11861,7 @@ _eof_trans:
11860
11861
  }}
11861
11862
  break;
11862
11863
  case 186:
11863
- #line 1336 "ext/lexer/lexer.rl"
11864
+ #line 1339 "ext/lexer/lexer.rl"
11864
11865
  {te = p+1;{
11865
11866
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11866
11867
  long str_s = current_literal->str_s;
@@ -11906,7 +11907,7 @@ _eof_trans:
11906
11907
  }}
11907
11908
  break;
11908
11909
  case 185:
11909
- #line 1280 "ext/lexer/lexer.rl"
11910
+ #line 1283 "ext/lexer/lexer.rl"
11910
11911
  {te = p+1;{
11911
11912
  VALUE string = tok(lexer, ts, te);
11912
11913
  VALUE lookahead = Qnil;
@@ -11935,14 +11936,14 @@ _eof_trans:
11935
11936
  }}
11936
11937
  break;
11937
11938
  case 188:
11938
- #line 1380 "ext/lexer/lexer.rl"
11939
+ #line 1383 "ext/lexer/lexer.rl"
11939
11940
  {te = p;p--;{
11940
11941
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11941
11942
  literal_extend_space(current_literal, ts, te);
11942
11943
  }}
11943
11944
  break;
11944
11945
  case 189:
11945
- #line 1525 "ext/lexer/lexer.rl"
11946
+ #line 1528 "ext/lexer/lexer.rl"
11946
11947
  {te = p+1;{
11947
11948
  emit_token(lexer, tREGEXP_OPT, tok(lexer, ts, te - 1), ts, te - 1);
11948
11949
  p--;
@@ -11950,7 +11951,7 @@ _eof_trans:
11950
11951
  }}
11951
11952
  break;
11952
11953
  case 190:
11953
- #line 1509 "ext/lexer/lexer.rl"
11954
+ #line 1512 "ext/lexer/lexer.rl"
11954
11955
  {te = p;p--;{
11955
11956
  VALUE unknown_options = find_unknown_options(tok(lexer, ts, te));
11956
11957
 
@@ -11967,7 +11968,7 @@ _eof_trans:
11967
11968
  }}
11968
11969
  break;
11969
11970
  case 16:
11970
- #line 1606 "ext/lexer/lexer.rl"
11971
+ #line 1609 "ext/lexer/lexer.rl"
11971
11972
  {te = p+1;{
11972
11973
  VALUE str = tok(lexer, ts, te);
11973
11974
 
@@ -11984,7 +11985,7 @@ _eof_trans:
11984
11985
  }}
11985
11986
  break;
11986
11987
  case 191:
11987
- #line 1606 "ext/lexer/lexer.rl"
11988
+ #line 1609 "ext/lexer/lexer.rl"
11988
11989
  {te = p;p--;{
11989
11990
  VALUE str = tok(lexer, ts, te);
11990
11991
 
@@ -12001,7 +12002,7 @@ _eof_trans:
12001
12002
  }}
12002
12003
  break;
12003
12004
  case 193:
12004
- #line 1621 "ext/lexer/lexer.rl"
12005
+ #line 1624 "ext/lexer/lexer.rl"
12005
12006
  {te = p;p--;{
12006
12007
  VALUE str = tok(lexer, ts, te);
12007
12008
 
@@ -12016,7 +12017,7 @@ _eof_trans:
12016
12017
  }}
12017
12018
  break;
12018
12019
  case 192:
12019
- #line 1634 "ext/lexer/lexer.rl"
12020
+ #line 1637 "ext/lexer/lexer.rl"
12020
12021
  {te = p;p--;{
12021
12022
  VALUE str = tok(lexer, ts, te);
12022
12023
 
@@ -12031,16 +12032,16 @@ _eof_trans:
12031
12032
  }}
12032
12033
  break;
12033
12034
  case 214:
12034
- #line 1650 "ext/lexer/lexer.rl"
12035
+ #line 1653 "ext/lexer/lexer.rl"
12035
12036
  {te = p+1;{ emit_table_KEYWORDS_BEGIN(lexer, tok(lexer, ts, te), ts, te);
12036
12037
  cs = 440; {p++; goto _out; } }}
12037
12038
  break;
12038
12039
  case 200:
12039
- #line 1655 "ext/lexer/lexer.rl"
12040
+ #line 1658 "ext/lexer/lexer.rl"
12040
12041
  {te = p+1;{ emit(tIDENTIFIER); cs = 440; {p++; goto _out; } }}
12041
12042
  break;
12042
12043
  case 18:
12043
- #line 1657 "ext/lexer/lexer.rl"
12044
+ #line 1660 "ext/lexer/lexer.rl"
12044
12045
  {te = p+1;{ p = ts - 1; cs = 769; {
12045
12046
  /* grow the state stack as needed */
12046
12047
  if (lexer->cs_stack_top == lexer->cs_stack_size) {
@@ -12053,16 +12054,16 @@ _eof_trans:
12053
12054
  {stack[top++] = cs; cs = 322;goto _again;}} }}
12054
12055
  break;
12055
12056
  case 197:
12056
- #line 1662 "ext/lexer/lexer.rl"
12057
+ #line 1665 "ext/lexer/lexer.rl"
12057
12058
  {te = p+1;{ emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12058
12059
  cs = 440; {p++; goto _out; } }}
12059
12060
  break;
12060
12061
  case 209:
12061
- #line 1665 "ext/lexer/lexer.rl"
12062
+ #line 1668 "ext/lexer/lexer.rl"
12062
12063
  {te = p+1;{ p--; p--; {cs = 769;goto _again;} }}
12063
12064
  break;
12064
12065
  case 20:
12065
- #line 1670 "ext/lexer/lexer.rl"
12066
+ #line 1673 "ext/lexer/lexer.rl"
12066
12067
  {te = p+1;{
12067
12068
  if (lexer->version == 23) {
12068
12069
  VALUE type = rb_str_substr(lexer->source, ts, te - ts - 1);
@@ -12078,28 +12079,28 @@ _eof_trans:
12078
12079
  }}
12079
12080
  break;
12080
12081
  case 196:
12081
- #line 1686 "ext/lexer/lexer.rl"
12082
+ #line 1689 "ext/lexer/lexer.rl"
12082
12083
  {te = p+1;{ p--; {cs = 769;goto _again;} }}
12083
12084
  break;
12084
12085
  case 195:
12085
- #line 1022 "ext/lexer/lexer.rl"
12086
+ #line 1025 "ext/lexer/lexer.rl"
12086
12087
  {te = p+1;{ p--; {p++; goto _out; } }}
12087
12088
  break;
12088
12089
  case 213:
12089
- #line 1650 "ext/lexer/lexer.rl"
12090
+ #line 1653 "ext/lexer/lexer.rl"
12090
12091
  {te = p;p--;{ emit_table_KEYWORDS_BEGIN(lexer, tok(lexer, ts, te), ts, te);
12091
12092
  cs = 440; {p++; goto _out; } }}
12092
12093
  break;
12093
12094
  case 210:
12094
- #line 1653 "ext/lexer/lexer.rl"
12095
+ #line 1656 "ext/lexer/lexer.rl"
12095
12096
  {te = p;p--;{ emit(tCONSTANT); cs = 440; {p++; goto _out; } }}
12096
12097
  break;
12097
12098
  case 212:
12098
- #line 1655 "ext/lexer/lexer.rl"
12099
+ #line 1658 "ext/lexer/lexer.rl"
12099
12100
  {te = p;p--;{ emit(tIDENTIFIER); cs = 440; {p++; goto _out; } }}
12100
12101
  break;
12101
12102
  case 207:
12102
- #line 1657 "ext/lexer/lexer.rl"
12103
+ #line 1660 "ext/lexer/lexer.rl"
12103
12104
  {te = p;p--;{ p = ts - 1; cs = 769; {
12104
12105
  /* grow the state stack as needed */
12105
12106
  if (lexer->cs_stack_top == lexer->cs_stack_size) {
@@ -12112,29 +12113,29 @@ _eof_trans:
12112
12113
  {stack[top++] = cs; cs = 322;goto _again;}} }}
12113
12114
  break;
12114
12115
  case 203:
12115
- #line 1662 "ext/lexer/lexer.rl"
12116
+ #line 1665 "ext/lexer/lexer.rl"
12116
12117
  {te = p;p--;{ emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12117
12118
  cs = 440; {p++; goto _out; } }}
12118
12119
  break;
12119
12120
  case 208:
12120
- #line 1667 "ext/lexer/lexer.rl"
12121
+ #line 1670 "ext/lexer/lexer.rl"
12121
12122
  {te = p;p--;{ p--; {cs = 537;goto _again;} }}
12122
12123
  break;
12123
12124
  case 201:
12124
- #line 1684 "ext/lexer/lexer.rl"
12125
+ #line 1687 "ext/lexer/lexer.rl"
12125
12126
  {te = p;p--;}
12126
12127
  break;
12127
12128
  case 206:
12128
- #line 1686 "ext/lexer/lexer.rl"
12129
+ #line 1689 "ext/lexer/lexer.rl"
12129
12130
  {te = p;p--;{ p--; {cs = 769;goto _again;} }}
12130
12131
  break;
12131
12132
  case 19:
12132
- #line 1662 "ext/lexer/lexer.rl"
12133
+ #line 1665 "ext/lexer/lexer.rl"
12133
12134
  {{p = ((te))-1;}{ emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12134
12135
  cs = 440; {p++; goto _out; } }}
12135
12136
  break;
12136
12137
  case 17:
12137
- #line 1686 "ext/lexer/lexer.rl"
12138
+ #line 1689 "ext/lexer/lexer.rl"
12138
12139
  {{p = ((te))-1;}{ p--; {cs = 769;goto _again;} }}
12139
12140
  break;
12140
12141
  case 199:
@@ -12154,72 +12155,72 @@ _eof_trans:
12154
12155
  }
12155
12156
  break;
12156
12157
  case 22:
12157
- #line 1692 "ext/lexer/lexer.rl"
12158
+ #line 1695 "ext/lexer/lexer.rl"
12158
12159
  {te = p+1;{
12159
12160
  emit_token(lexer, tLABEL, tok(lexer, ts, te - 2), ts, te - 1);
12160
12161
  p--; cs = 754; {p++; goto _out; }
12161
12162
  }}
12162
12163
  break;
12163
12164
  case 216:
12164
- #line 1699 "ext/lexer/lexer.rl"
12165
+ #line 1702 "ext/lexer/lexer.rl"
12165
12166
  {te = p+1;{ p--; {cs = 769;goto _again;} }}
12166
12167
  break;
12167
12168
  case 215:
12168
- #line 1022 "ext/lexer/lexer.rl"
12169
+ #line 1025 "ext/lexer/lexer.rl"
12169
12170
  {te = p+1;{ p--; {p++; goto _out; } }}
12170
12171
  break;
12171
12172
  case 218:
12172
- #line 1697 "ext/lexer/lexer.rl"
12173
+ #line 1700 "ext/lexer/lexer.rl"
12173
12174
  {te = p;p--;}
12174
12175
  break;
12175
12176
  case 217:
12176
- #line 1699 "ext/lexer/lexer.rl"
12177
+ #line 1702 "ext/lexer/lexer.rl"
12177
12178
  {te = p;p--;{ p--; {cs = 769;goto _again;} }}
12178
12179
  break;
12179
12180
  case 21:
12180
- #line 1699 "ext/lexer/lexer.rl"
12181
+ #line 1702 "ext/lexer/lexer.rl"
12181
12182
  {{p = ((te))-1;}{ p--; {cs = 769;goto _again;} }}
12182
12183
  break;
12183
12184
  case 224:
12184
- #line 1716 "ext/lexer/lexer.rl"
12185
+ #line 1719 "ext/lexer/lexer.rl"
12185
12186
  {te = p+1;{ emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12186
12187
  cs = 468; {p++; goto _out; } }}
12187
12188
  break;
12188
12189
  case 223:
12189
- #line 1722 "ext/lexer/lexer.rl"
12190
+ #line 1725 "ext/lexer/lexer.rl"
12190
12191
  {te = p+1;{ p--; {cs = 769;goto _again;} }}
12191
12192
  break;
12192
12193
  case 222:
12193
- #line 1022 "ext/lexer/lexer.rl"
12194
+ #line 1025 "ext/lexer/lexer.rl"
12194
12195
  {te = p+1;{ p--; {p++; goto _out; } }}
12195
12196
  break;
12196
12197
  case 234:
12197
- #line 1705 "ext/lexer/lexer.rl"
12198
+ #line 1708 "ext/lexer/lexer.rl"
12198
12199
  {te = p;p--;{ emit(tCONSTANT); cs = (arg_or_cmdarg(command_state)); {p++; goto _out; } }}
12199
12200
  break;
12200
12201
  case 225:
12201
- #line 1707 "ext/lexer/lexer.rl"
12202
+ #line 1710 "ext/lexer/lexer.rl"
12202
12203
  {te = p;p--;{ emit(tIDENTIFIER); cs = (arg_or_cmdarg(command_state)); {p++; goto _out; } }}
12203
12204
  break;
12204
12205
  case 230:
12205
- #line 1716 "ext/lexer/lexer.rl"
12206
+ #line 1719 "ext/lexer/lexer.rl"
12206
12207
  {te = p;p--;{ emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12207
12208
  cs = 468; {p++; goto _out; } }}
12208
12209
  break;
12209
12210
  case 228:
12210
- #line 1719 "ext/lexer/lexer.rl"
12211
+ #line 1722 "ext/lexer/lexer.rl"
12211
12212
  {te = p;p--;}
12212
12213
  break;
12213
12214
  case 233:
12214
- #line 1722 "ext/lexer/lexer.rl"
12215
+ #line 1725 "ext/lexer/lexer.rl"
12215
12216
  {te = p;p--;{ p--; {cs = 769;goto _again;} }}
12216
12217
  break;
12217
12218
  case 257:
12218
- #line 1756 "ext/lexer/lexer.rl"
12219
+ #line 1759 "ext/lexer/lexer.rl"
12219
12220
  {te = p+1;{ p = ts - 1; {cs = 769;goto _again;} }}
12220
12221
  break;
12221
12222
  case 240:
12222
- #line 1761 "ext/lexer/lexer.rl"
12223
+ #line 1764 "ext/lexer/lexer.rl"
12223
12224
  {te = p+1;{
12224
12225
  if (NUM2INT(rb_ary_entry(lexer->source_pts, tm)) == '/') {
12225
12226
  diagnostic(lexer, warning, ambiguous_literal, Qnil,
@@ -12231,38 +12232,38 @@ _eof_trans:
12231
12232
  }}
12232
12233
  break;
12233
12234
  case 246:
12234
- #line 1782 "ext/lexer/lexer.rl"
12235
+ #line 1785 "ext/lexer/lexer.rl"
12235
12236
  {te = p+1;{ p--; p--; {cs = 537;goto _again;} }}
12236
12237
  break;
12237
12238
  case 24:
12238
- #line 1786 "ext/lexer/lexer.rl"
12239
+ #line 1789 "ext/lexer/lexer.rl"
12239
12240
  {te = p+1;{ p = ts - 1; {cs = 537;goto _again;} }}
12240
12241
  break;
12241
12242
  case 248:
12242
- #line 1788 "ext/lexer/lexer.rl"
12243
+ #line 1791 "ext/lexer/lexer.rl"
12243
12244
  {te = p+1;{ p = tm - 1; {cs = 769;goto _again;} }}
12244
12245
  break;
12245
12246
  case 39:
12246
- #line 1795 "ext/lexer/lexer.rl"
12247
+ #line 1798 "ext/lexer/lexer.rl"
12247
12248
  {te = p+1;{
12248
12249
  p = ts - 1;
12249
12250
  {cs = 769;goto _again;}
12250
12251
  }}
12251
12252
  break;
12252
12253
  case 235:
12253
- #line 1806 "ext/lexer/lexer.rl"
12254
+ #line 1809 "ext/lexer/lexer.rl"
12254
12255
  {te = p+1;{ p--; {cs = 537;goto _again;} }}
12255
12256
  break;
12256
12257
  case 236:
12257
- #line 1022 "ext/lexer/lexer.rl"
12258
+ #line 1025 "ext/lexer/lexer.rl"
12258
12259
  {te = p+1;{ p--; {p++; goto _out; } }}
12259
12260
  break;
12260
12261
  case 247:
12261
- #line 1758 "ext/lexer/lexer.rl"
12262
+ #line 1761 "ext/lexer/lexer.rl"
12262
12263
  {te = p;p--;{ p--; {cs = 537;goto _again;} }}
12263
12264
  break;
12264
12265
  case 243:
12265
- #line 1771 "ext/lexer/lexer.rl"
12266
+ #line 1774 "ext/lexer/lexer.rl"
12266
12267
  {te = p;p--;{
12267
12268
  VALUE hash = rb_hash_new();
12268
12269
  VALUE str = tok(lexer, tm, te);
@@ -12275,30 +12276,30 @@ _eof_trans:
12275
12276
  }}
12276
12277
  break;
12277
12278
  case 245:
12278
- #line 1784 "ext/lexer/lexer.rl"
12279
+ #line 1787 "ext/lexer/lexer.rl"
12279
12280
  {te = p;p--;{ p--; {cs = 537;goto _again;} }}
12280
12281
  break;
12281
12282
  case 239:
12282
- #line 1795 "ext/lexer/lexer.rl"
12283
+ #line 1798 "ext/lexer/lexer.rl"
12283
12284
  {te = p;p--;{
12284
12285
  p = ts - 1;
12285
12286
  {cs = 769;goto _again;}
12286
12287
  }}
12287
12288
  break;
12288
12289
  case 238:
12289
- #line 1800 "ext/lexer/lexer.rl"
12290
+ #line 1803 "ext/lexer/lexer.rl"
12290
12291
  {te = p;p--;}
12291
12292
  break;
12292
12293
  case 256:
12293
- #line 1806 "ext/lexer/lexer.rl"
12294
+ #line 1809 "ext/lexer/lexer.rl"
12294
12295
  {te = p;p--;{ p--; {cs = 537;goto _again;} }}
12295
12296
  break;
12296
12297
  case 25:
12297
- #line 1800 "ext/lexer/lexer.rl"
12298
+ #line 1803 "ext/lexer/lexer.rl"
12298
12299
  {{p = ((te))-1;}}
12299
12300
  break;
12300
12301
  case 41:
12301
- #line 1806 "ext/lexer/lexer.rl"
12302
+ #line 1809 "ext/lexer/lexer.rl"
12302
12303
  {{p = ((te))-1;}{ p--; {cs = 537;goto _again;} }}
12303
12304
  break;
12304
12305
  case 23:
@@ -12340,21 +12341,21 @@ _eof_trans:
12340
12341
  }
12341
12342
  break;
12342
12343
  case 43:
12343
- #line 1835 "ext/lexer/lexer.rl"
12344
+ #line 1838 "ext/lexer/lexer.rl"
12344
12345
  {te = p+1;{ p = ts - 1;
12345
12346
  {cs = 468;goto _again;} }}
12346
12347
  break;
12347
12348
  case 261:
12348
- #line 1022 "ext/lexer/lexer.rl"
12349
+ #line 1025 "ext/lexer/lexer.rl"
12349
12350
  {te = p+1;{ p--; {p++; goto _out; } }}
12350
12351
  break;
12351
12352
  case 262:
12352
- #line 1835 "ext/lexer/lexer.rl"
12353
+ #line 1838 "ext/lexer/lexer.rl"
12353
12354
  {te = p;p--;{ p = ts - 1;
12354
12355
  {cs = 468;goto _again;} }}
12355
12356
  break;
12356
12357
  case 44:
12357
- #line 1835 "ext/lexer/lexer.rl"
12358
+ #line 1838 "ext/lexer/lexer.rl"
12358
12359
  {{p = ((te))-1;}{ p = ts - 1;
12359
12360
  {cs = 468;goto _again;} }}
12360
12361
  break;
@@ -12379,43 +12380,43 @@ _eof_trans:
12379
12380
  }
12380
12381
  break;
12381
12382
  case 272:
12382
- #line 1853 "ext/lexer/lexer.rl"
12383
+ #line 1856 "ext/lexer/lexer.rl"
12383
12384
  {te = p+1;{ emit_do(lexer, 1, ts, te); cs = 761; {p++; goto _out; } }}
12384
12385
  break;
12385
12386
  case 265:
12386
- #line 1858 "ext/lexer/lexer.rl"
12387
+ #line 1861 "ext/lexer/lexer.rl"
12387
12388
  {te = p+1;{ p--; {cs = 769;goto _again;} }}
12388
12389
  break;
12389
12390
  case 266:
12390
- #line 1022 "ext/lexer/lexer.rl"
12391
+ #line 1025 "ext/lexer/lexer.rl"
12391
12392
  {te = p+1;{ p--; {p++; goto _out; } }}
12392
12393
  break;
12393
12394
  case 267:
12394
- #line 1855 "ext/lexer/lexer.rl"
12395
+ #line 1858 "ext/lexer/lexer.rl"
12395
12396
  {te = p;p--;}
12396
12397
  break;
12397
12398
  case 270:
12398
- #line 1858 "ext/lexer/lexer.rl"
12399
+ #line 1861 "ext/lexer/lexer.rl"
12399
12400
  {te = p;p--;{ p--; {cs = 769;goto _again;} }}
12400
12401
  break;
12401
12402
  case 276:
12402
- #line 1874 "ext/lexer/lexer.rl"
12403
+ #line 1877 "ext/lexer/lexer.rl"
12403
12404
  {te = p+1;{ p--; {cs = 537;goto _again;} }}
12404
12405
  break;
12405
12406
  case 275:
12406
- #line 1022 "ext/lexer/lexer.rl"
12407
+ #line 1025 "ext/lexer/lexer.rl"
12407
12408
  {te = p+1;{ p--; {p++; goto _out; } }}
12408
12409
  break;
12409
12410
  case 284:
12410
- #line 1868 "ext/lexer/lexer.rl"
12411
+ #line 1871 "ext/lexer/lexer.rl"
12411
12412
  {te = p;p--;{ p = ts - 1; {cs = 537;goto _again;} }}
12412
12413
  break;
12413
12414
  case 278:
12414
- #line 1870 "ext/lexer/lexer.rl"
12415
+ #line 1873 "ext/lexer/lexer.rl"
12415
12416
  {te = p;p--;}
12416
12417
  break;
12417
12418
  case 282:
12418
- #line 1874 "ext/lexer/lexer.rl"
12419
+ #line 1877 "ext/lexer/lexer.rl"
12419
12420
  {te = p;p--;{ p--; {cs = 537;goto _again;} }}
12420
12421
  break;
12421
12422
  case 277:
@@ -12432,21 +12433,21 @@ _eof_trans:
12432
12433
  }
12433
12434
  break;
12434
12435
  case 56:
12435
- #line 1880 "ext/lexer/lexer.rl"
12436
+ #line 1883 "ext/lexer/lexer.rl"
12436
12437
  {te = p+1;{
12437
12438
  emit_token(lexer, tUNARY_NUM, tok(lexer, ts, ts + 1), ts, ts + 1);
12438
12439
  p--; cs = 769; {p++; goto _out; }
12439
12440
  }}
12440
12441
  break;
12441
12442
  case 315:
12442
- #line 1887 "ext/lexer/lexer.rl"
12443
+ #line 1890 "ext/lexer/lexer.rl"
12443
12444
  {te = p+1;{
12444
12445
  VALUE delimiter = rb_str_substr(lexer->source, ts, 1);
12445
12446
  p--; {cs = (push_literal(lexer, delimiter, delimiter, ts, 0, 0, 0, 0)); goto _again;}
12446
12447
  }}
12447
12448
  break;
12448
12449
  case 309:
12449
- #line 1892 "ext/lexer/lexer.rl"
12450
+ #line 1895 "ext/lexer/lexer.rl"
12450
12451
  {te = p+1;{
12451
12452
  VALUE type = rb_str_substr(lexer->source, ts, 1);
12452
12453
  VALUE delimiter = rb_str_substr(lexer->source, te - 1, 1);
@@ -12457,7 +12458,7 @@ _eof_trans:
12457
12458
  }}
12458
12459
  break;
12459
12460
  case 54:
12460
- #line 1901 "ext/lexer/lexer.rl"
12461
+ #line 1904 "ext/lexer/lexer.rl"
12461
12462
  {te = p+1;{
12462
12463
  VALUE type = rb_str_substr(lexer->source, ts, te - ts - 1);
12463
12464
  VALUE delimiter = rb_str_substr(lexer->source, te - 1, 1);
@@ -12468,7 +12469,7 @@ _eof_trans:
12468
12469
  }}
12469
12470
  break;
12470
12471
  case 328:
12471
- #line 1983 "ext/lexer/lexer.rl"
12472
+ #line 1986 "ext/lexer/lexer.rl"
12472
12473
  {te = p+1;{
12473
12474
  p--; p--;
12474
12475
  emit_token(lexer, tSYMBEG, tok(lexer, ts, ts + 1), ts, ts + 1);
@@ -12476,7 +12477,7 @@ _eof_trans:
12476
12477
  }}
12477
12478
  break;
12478
12479
  case 316:
12479
- #line 1989 "ext/lexer/lexer.rl"
12480
+ #line 1992 "ext/lexer/lexer.rl"
12480
12481
  {te = p+1;{ /* ' */
12481
12482
  VALUE type = tok(lexer, ts, te);
12482
12483
  VALUE delimiter = tok(lexer, te - 1, te);
@@ -12484,21 +12485,21 @@ _eof_trans:
12484
12485
  }}
12485
12486
  break;
12486
12487
  case 327:
12487
- #line 1996 "ext/lexer/lexer.rl"
12488
+ #line 1999 "ext/lexer/lexer.rl"
12488
12489
  {te = p+1;{
12489
12490
  emit_token(lexer, tSYMBOL, tok(lexer, ts + 1, ts + 2), ts, te);
12490
12491
  cs = 769; {p++; goto _out; }
12491
12492
  }}
12492
12493
  break;
12493
12494
  case 68:
12494
- #line 2008 "ext/lexer/lexer.rl"
12495
+ #line 2011 "ext/lexer/lexer.rl"
12495
12496
  {te = p+1;{
12496
12497
  emit_token(lexer, tSYMBOL, tok(lexer, ts + 1, te), ts, te);
12497
12498
  cs = 769; {p++; goto _out; }
12498
12499
  }}
12499
12500
  break;
12500
12501
  case 332:
12501
- #line 2028 "ext/lexer/lexer.rl"
12502
+ #line 2031 "ext/lexer/lexer.rl"
12502
12503
  {te = p+1;{
12503
12504
  VALUE escape = escape_char(rb_str_subseq(lexer->source, ts + 1, 1));
12504
12505
  VALUE hash = rb_hash_new();
@@ -12511,19 +12512,19 @@ _eof_trans:
12511
12512
  }}
12512
12513
  break;
12513
12514
  case 331:
12514
- #line 2039 "ext/lexer/lexer.rl"
12515
+ #line 2042 "ext/lexer/lexer.rl"
12515
12516
  {te = p+1;{
12516
12517
  diagnostic(lexer, fatal, incomplete_escape, Qnil,
12517
12518
  range(lexer, ts, ts + 1), empty_array);
12518
12519
  }}
12519
12520
  break;
12520
12521
  case 317:
12521
- #line 2068 "ext/lexer/lexer.rl"
12522
+ #line 2071 "ext/lexer/lexer.rl"
12522
12523
  {te = p+1;{ emit_table_PUNCTUATION_BEGIN(lexer, tok(lexer, ts, te), ts, te);
12523
12524
  {p++; goto _out; } }}
12524
12525
  break;
12525
12526
  case 51:
12526
- #line 2082 "ext/lexer/lexer.rl"
12527
+ #line 2085 "ext/lexer/lexer.rl"
12527
12528
  {te = p+1;{
12528
12529
  p--;
12529
12530
 
@@ -12548,7 +12549,7 @@ _eof_trans:
12548
12549
  }}
12549
12550
  break;
12550
12551
  case 48:
12551
- #line 2112 "ext/lexer/lexer.rl"
12552
+ #line 2115 "ext/lexer/lexer.rl"
12552
12553
  {te = p+1;{
12553
12554
  emit_token(lexer, tIDENTIFIER, ident_tok, ident_ts, ident_te);
12554
12555
  p = ident_te - 1;
@@ -12563,7 +12564,7 @@ _eof_trans:
12563
12564
  }}
12564
12565
  break;
12565
12566
  case 303:
12566
- #line 2127 "ext/lexer/lexer.rl"
12567
+ #line 2130 "ext/lexer/lexer.rl"
12567
12568
  {te = p+1;{
12568
12569
  p = ts - 1;
12569
12570
  lexer->cs_before_block_comment = lexer->cs;
@@ -12571,26 +12572,26 @@ _eof_trans:
12571
12572
  }}
12572
12573
  break;
12573
12574
  case 55:
12574
- #line 2137 "ext/lexer/lexer.rl"
12575
+ #line 2140 "ext/lexer/lexer.rl"
12575
12576
  {te = p+1;{ p = ts - 1; {cs = 769;goto _again;} }}
12576
12577
  break;
12577
12578
  case 287:
12578
- #line 1022 "ext/lexer/lexer.rl"
12579
+ #line 1025 "ext/lexer/lexer.rl"
12579
12580
  {te = p+1;{ p--; {p++; goto _out; } }}
12580
12581
  break;
12581
12582
  case 314:
12582
- #line 1880 "ext/lexer/lexer.rl"
12583
+ #line 1883 "ext/lexer/lexer.rl"
12583
12584
  {te = p;p--;{
12584
12585
  emit_token(lexer, tUNARY_NUM, tok(lexer, ts, ts + 1), ts, ts + 1);
12585
12586
  p--; cs = 769; {p++; goto _out; }
12586
12587
  }}
12587
12588
  break;
12588
12589
  case 313:
12589
- #line 1885 "ext/lexer/lexer.rl"
12590
+ #line 1888 "ext/lexer/lexer.rl"
12590
12591
  {te = p;p--;{ emit(tSTAR); {p++; goto _out; } }}
12591
12592
  break;
12592
12593
  case 310:
12593
- #line 1901 "ext/lexer/lexer.rl"
12594
+ #line 1904 "ext/lexer/lexer.rl"
12594
12595
  {te = p;p--;{
12595
12596
  VALUE type = rb_str_substr(lexer->source, ts, te - ts - 1);
12596
12597
  VALUE delimiter = rb_str_substr(lexer->source, te - 1, 1);
@@ -12601,37 +12602,37 @@ _eof_trans:
12601
12602
  }}
12602
12603
  break;
12603
12604
  case 308:
12604
- #line 1910 "ext/lexer/lexer.rl"
12605
+ #line 1913 "ext/lexer/lexer.rl"
12605
12606
  {te = p;p--;{
12606
12607
  diagnostic(lexer, fatal, string_eof, Qnil,
12607
12608
  range(lexer, ts, ts + 1), empty_array);
12608
12609
  }}
12609
12610
  break;
12610
12611
  case 318:
12611
- #line 2008 "ext/lexer/lexer.rl"
12612
+ #line 2011 "ext/lexer/lexer.rl"
12612
12613
  {te = p;p--;{
12613
12614
  emit_token(lexer, tSYMBOL, tok(lexer, ts + 1, te), ts, te);
12614
12615
  cs = 769; {p++; goto _out; }
12615
12616
  }}
12616
12617
  break;
12617
12618
  case 330:
12618
- #line 2039 "ext/lexer/lexer.rl"
12619
+ #line 2042 "ext/lexer/lexer.rl"
12619
12620
  {te = p;p--;{
12620
12621
  diagnostic(lexer, fatal, incomplete_escape, Qnil,
12621
12622
  range(lexer, ts, ts + 1), empty_array);
12622
12623
  }}
12623
12624
  break;
12624
12625
  case 336:
12625
- #line 2044 "ext/lexer/lexer.rl"
12626
+ #line 2047 "ext/lexer/lexer.rl"
12626
12627
  {te = p;p--;{ p = ts - 1; {cs = 769;goto _again;} }}
12627
12628
  break;
12628
12629
  case 311:
12629
- #line 2068 "ext/lexer/lexer.rl"
12630
+ #line 2071 "ext/lexer/lexer.rl"
12630
12631
  {te = p;p--;{ emit_table_PUNCTUATION_BEGIN(lexer, tok(lexer, ts, te), ts, te);
12631
12632
  {p++; goto _out; } }}
12632
12633
  break;
12633
12634
  case 290:
12634
- #line 1594 "ext/lexer/lexer.rl"
12635
+ #line 1597 "ext/lexer/lexer.rl"
12635
12636
  {te = p;p--;{
12636
12637
  VALUE str = tok(lexer, ts, te);
12637
12638
  emit(tIDENTIFIER);
@@ -12644,11 +12645,11 @@ _eof_trans:
12644
12645
  }}
12645
12646
  break;
12646
12647
  case 300:
12647
- #line 2125 "ext/lexer/lexer.rl"
12648
+ #line 2128 "ext/lexer/lexer.rl"
12648
12649
  {te = p;p--;}
12649
12650
  break;
12650
12651
  case 302:
12651
- #line 2127 "ext/lexer/lexer.rl"
12652
+ #line 2130 "ext/lexer/lexer.rl"
12652
12653
  {te = p;p--;{
12653
12654
  p = ts - 1;
12654
12655
  lexer->cs_before_block_comment = lexer->cs;
@@ -12656,18 +12657,18 @@ _eof_trans:
12656
12657
  }}
12657
12658
  break;
12658
12659
  case 305:
12659
- #line 2137 "ext/lexer/lexer.rl"
12660
+ #line 2140 "ext/lexer/lexer.rl"
12660
12661
  {te = p;p--;{ p = ts - 1; {cs = 769;goto _again;} }}
12661
12662
  break;
12662
12663
  case 53:
12663
- #line 1910 "ext/lexer/lexer.rl"
12664
+ #line 1913 "ext/lexer/lexer.rl"
12664
12665
  {{p = ((te))-1;}{
12665
12666
  diagnostic(lexer, fatal, string_eof, Qnil,
12666
12667
  range(lexer, ts, ts + 1), empty_array);
12667
12668
  }}
12668
12669
  break;
12669
12670
  case 71:
12670
- #line 2015 "ext/lexer/lexer.rl"
12671
+ #line 2018 "ext/lexer/lexer.rl"
12671
12672
  {{p = ((te))-1;}{
12672
12673
  VALUE value = lexer->escape;
12673
12674
  if (value == Qnil)
@@ -12682,7 +12683,7 @@ _eof_trans:
12682
12683
  }}
12683
12684
  break;
12684
12685
  case 47:
12685
- #line 1594 "ext/lexer/lexer.rl"
12686
+ #line 1597 "ext/lexer/lexer.rl"
12686
12687
  {{p = ((te))-1;}{
12687
12688
  VALUE str = tok(lexer, ts, te);
12688
12689
  emit(tIDENTIFIER);
@@ -12695,11 +12696,11 @@ _eof_trans:
12695
12696
  }}
12696
12697
  break;
12697
12698
  case 52:
12698
- #line 2125 "ext/lexer/lexer.rl"
12699
+ #line 2128 "ext/lexer/lexer.rl"
12699
12700
  {{p = ((te))-1;}}
12700
12701
  break;
12701
12702
  case 67:
12702
- #line 2137 "ext/lexer/lexer.rl"
12703
+ #line 2140 "ext/lexer/lexer.rl"
12703
12704
  {{p = ((te))-1;}{ p = ts - 1; {cs = 769;goto _again;} }}
12704
12705
  break;
12705
12706
  case 50:
@@ -12748,54 +12749,54 @@ _eof_trans:
12748
12749
  }
12749
12750
  break;
12750
12751
  case 366:
12751
- #line 2153 "ext/lexer/lexer.rl"
12752
+ #line 2156 "ext/lexer/lexer.rl"
12752
12753
  {te = p+1;{ p--; {cs = 537;goto _again;} }}
12753
12754
  break;
12754
12755
  case 367:
12755
- #line 1022 "ext/lexer/lexer.rl"
12756
+ #line 1025 "ext/lexer/lexer.rl"
12756
12757
  {te = p+1;{ p--; {p++; goto _out; } }}
12757
12758
  break;
12758
12759
  case 368:
12759
- #line 2143 "ext/lexer/lexer.rl"
12760
+ #line 2146 "ext/lexer/lexer.rl"
12760
12761
  {te = p;p--;}
12761
12762
  break;
12762
12763
  case 372:
12763
- #line 2153 "ext/lexer/lexer.rl"
12764
+ #line 2156 "ext/lexer/lexer.rl"
12764
12765
  {te = p;p--;{ p--; {cs = 537;goto _again;} }}
12765
12766
  break;
12766
12767
  case 74:
12767
- #line 2159 "ext/lexer/lexer.rl"
12768
+ #line 2162 "ext/lexer/lexer.rl"
12768
12769
  {te = p+1;{ p = ts - 1; {cs = 769;goto _again;} }}
12769
12770
  break;
12770
12771
  case 376:
12771
- #line 2161 "ext/lexer/lexer.rl"
12772
+ #line 2164 "ext/lexer/lexer.rl"
12772
12773
  {te = p+1;{ /* ' */
12773
12774
  VALUE type = tok(lexer, ts, te);
12774
12775
  {cs = (push_literal(lexer, type, type, ts, 0, 0, 0, 0)); goto _again;}
12775
12776
  }}
12776
12777
  break;
12777
12778
  case 375:
12778
- #line 2170 "ext/lexer/lexer.rl"
12779
+ #line 2173 "ext/lexer/lexer.rl"
12779
12780
  {te = p+1;{ p--; {cs = 537;goto _again;} }}
12780
12781
  break;
12781
12782
  case 374:
12782
- #line 1022 "ext/lexer/lexer.rl"
12783
+ #line 1025 "ext/lexer/lexer.rl"
12783
12784
  {te = p+1;{ p--; {p++; goto _out; } }}
12784
12785
  break;
12785
12786
  case 378:
12786
- #line 2166 "ext/lexer/lexer.rl"
12787
+ #line 2169 "ext/lexer/lexer.rl"
12787
12788
  {te = p;p--;}
12788
12789
  break;
12789
12790
  case 377:
12790
- #line 2170 "ext/lexer/lexer.rl"
12791
+ #line 2173 "ext/lexer/lexer.rl"
12791
12792
  {te = p;p--;{ p--; {cs = 537;goto _again;} }}
12792
12793
  break;
12793
12794
  case 73:
12794
- #line 2170 "ext/lexer/lexer.rl"
12795
+ #line 2173 "ext/lexer/lexer.rl"
12795
12796
  {{p = ((te))-1;}{ p--; {cs = 537;goto _again;} }}
12796
12797
  break;
12797
12798
  case 412:
12798
- #line 2176 "ext/lexer/lexer.rl"
12799
+ #line 2179 "ext/lexer/lexer.rl"
12799
12800
  {te = p+1;{
12800
12801
  emit_token(lexer, tLAMBDA, tok(lexer, ts, ts + 2), ts, ts + 2);
12801
12802
  rb_ary_push(lexer->lambda_stack, INT2NUM(lexer->paren_nest));
@@ -12803,13 +12804,13 @@ _eof_trans:
12803
12804
  }}
12804
12805
  break;
12805
12806
  case 84:
12806
- #line 2209 "ext/lexer/lexer.rl"
12807
+ #line 2212 "ext/lexer/lexer.rl"
12807
12808
  {te = p+1;{ emit_token(lexer, kCLASS, rb_str_new2("class"), ts, ts + 5);
12808
12809
  emit_token(lexer, tLSHFT, rb_str_new2("<<"), te - 2, te);
12809
12810
  cs = 761; {p++; goto _out; } }}
12810
12811
  break;
12811
12812
  case 386:
12812
- #line 2346 "ext/lexer/lexer.rl"
12813
+ #line 2349 "ext/lexer/lexer.rl"
12813
12814
  {te = p+1;{ /* ' */
12814
12815
  VALUE type = tok(lexer, ts, te);
12815
12816
  VALUE delimiter = tok(lexer, te - 1, te);
@@ -12817,7 +12818,7 @@ _eof_trans:
12817
12818
  }}
12818
12819
  break;
12819
12820
  case 76:
12820
- #line 2361 "ext/lexer/lexer.rl"
12821
+ #line 2364 "ext/lexer/lexer.rl"
12821
12822
  {te = p+1;{ p = ts - 1; {
12822
12823
  /* grow the state stack as needed */
12823
12824
  if (lexer->cs_stack_top == lexer->cs_stack_size) {
@@ -12830,26 +12831,26 @@ _eof_trans:
12830
12831
  {stack[top++] = cs; cs = 322;goto _again;}} }}
12831
12832
  break;
12832
12833
  case 408:
12833
- #line 2370 "ext/lexer/lexer.rl"
12834
+ #line 2373 "ext/lexer/lexer.rl"
12834
12835
  {te = p+1;{ emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12835
12836
  cs = 447; {p++; goto _out; } }}
12836
12837
  break;
12837
12838
  case 470:
12838
- #line 2385 "ext/lexer/lexer.rl"
12839
+ #line 2388 "ext/lexer/lexer.rl"
12839
12840
  {te = p+1;{
12840
12841
  emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12841
12842
  {cs = 761;goto _again;}
12842
12843
  }}
12843
12844
  break;
12844
12845
  case 401:
12845
- #line 2391 "ext/lexer/lexer.rl"
12846
+ #line 2394 "ext/lexer/lexer.rl"
12846
12847
  {te = p+1;{
12847
12848
  emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12848
12849
  cs = 761; {p++; goto _out; }
12849
12850
  }}
12850
12851
  break;
12851
12852
  case 393:
12852
- #line 2434 "ext/lexer/lexer.rl"
12853
+ #line 2437 "ext/lexer/lexer.rl"
12853
12854
  {te = p+1;{
12854
12855
  emit(tRBRACK);
12855
12856
 
@@ -12871,25 +12872,25 @@ _eof_trans:
12871
12872
  }}
12872
12873
  break;
12873
12874
  case 406:
12874
- #line 2455 "ext/lexer/lexer.rl"
12875
+ #line 2458 "ext/lexer/lexer.rl"
12875
12876
  {te = p+1;{ emit_token(lexer, tOP_ASGN, tok(lexer, ts, te - 1), ts, te);
12876
12877
  cs = 537; {p++; goto _out; } }}
12877
12878
  break;
12878
12879
  case 391:
12879
- #line 2458 "ext/lexer/lexer.rl"
12880
+ #line 2461 "ext/lexer/lexer.rl"
12880
12881
  {te = p+1;{ emit(tEH); cs = 761; {p++; goto _out; } }}
12881
12882
  break;
12882
12883
  case 388:
12883
- #line 2463 "ext/lexer/lexer.rl"
12884
+ #line 2466 "ext/lexer/lexer.rl"
12884
12885
  {te = p+1;{ emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12885
12886
  cs = 537; {p++; goto _out; } }}
12886
12887
  break;
12887
12888
  case 390:
12888
- #line 2470 "ext/lexer/lexer.rl"
12889
+ #line 2473 "ext/lexer/lexer.rl"
12889
12890
  {te = p+1;{ emit(tSEMI); cs = 761; {p++; goto _out; } }}
12890
12891
  break;
12891
12892
  case 475:
12892
- #line 2472 "ext/lexer/lexer.rl"
12893
+ #line 2475 "ext/lexer/lexer.rl"
12893
12894
  {te = p+1;{
12894
12895
  diagnostic(lexer, severity_error, bare_backslash, Qnil,
12895
12896
  range(lexer, ts, ts + 1), empty_array);
@@ -12897,7 +12898,7 @@ _eof_trans:
12897
12898
  }}
12898
12899
  break;
12899
12900
  case 385:
12900
- #line 2479 "ext/lexer/lexer.rl"
12901
+ #line 2482 "ext/lexer/lexer.rl"
12901
12902
  {te = p+1;{
12902
12903
  VALUE hash = rb_hash_new();
12903
12904
  VALUE str = rb_str_inspect(tok(lexer, ts, te));
@@ -12906,38 +12907,38 @@ _eof_trans:
12906
12907
  }}
12907
12908
  break;
12908
12909
  case 384:
12909
- #line 1022 "ext/lexer/lexer.rl"
12910
+ #line 1025 "ext/lexer/lexer.rl"
12910
12911
  {te = p+1;{ p--; {p++; goto _out; } }}
12911
12912
  break;
12912
12913
  case 485:
12913
- #line 2205 "ext/lexer/lexer.rl"
12914
+ #line 2208 "ext/lexer/lexer.rl"
12914
12915
  {te = p;p--;{ emit_table_KEYWORDS(lexer, tok(lexer, ts, te), ts, te);
12915
12916
  cs = 327; {p++; goto _out; } }}
12916
12917
  break;
12917
12918
  case 483:
12918
- #line 2209 "ext/lexer/lexer.rl"
12919
+ #line 2212 "ext/lexer/lexer.rl"
12919
12920
  {te = p;p--;{ emit_token(lexer, kCLASS, rb_str_new2("class"), ts, ts + 5);
12920
12921
  emit_token(lexer, tLSHFT, rb_str_new2("<<"), te - 2, te);
12921
12922
  cs = 761; {p++; goto _out; } }}
12922
12923
  break;
12923
12924
  case 482:
12924
- #line 2218 "ext/lexer/lexer.rl"
12925
+ #line 2221 "ext/lexer/lexer.rl"
12925
12926
  {te = p;p--;{ emit_table_KEYWORDS(lexer, tok(lexer, ts, te), ts, te);
12926
12927
  cs = 761; {p++; goto _out; } }}
12927
12928
  break;
12928
12929
  case 416:
12929
- #line 2296 "ext/lexer/lexer.rl"
12930
+ #line 2299 "ext/lexer/lexer.rl"
12930
12931
  {te = p;p--;{
12931
12932
  diagnostic(lexer, severity_error, no_dot_digit_literal, Qnil,
12932
12933
  range(lexer, ts, te), empty_array);
12933
12934
  }}
12934
12935
  break;
12935
12936
  case 472:
12936
- #line 2352 "ext/lexer/lexer.rl"
12937
+ #line 2355 "ext/lexer/lexer.rl"
12937
12938
  {te = p;p--;{ emit(tCONSTANT); cs = (arg_or_cmdarg(command_state)); {p++; goto _out; } }}
12938
12939
  break;
12939
12940
  case 405:
12940
- #line 2361 "ext/lexer/lexer.rl"
12941
+ #line 2364 "ext/lexer/lexer.rl"
12941
12942
  {te = p;p--;{ p = ts - 1; {
12942
12943
  /* grow the state stack as needed */
12943
12944
  if (lexer->cs_stack_top == lexer->cs_stack_size) {
@@ -12950,12 +12951,12 @@ _eof_trans:
12950
12951
  {stack[top++] = cs; cs = 322;goto _again;}} }}
12951
12952
  break;
12952
12953
  case 413:
12953
- #line 2370 "ext/lexer/lexer.rl"
12954
+ #line 2373 "ext/lexer/lexer.rl"
12954
12955
  {te = p;p--;{ emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12955
12956
  cs = 447; {p++; goto _out; } }}
12956
12957
  break;
12957
12958
  case 477:
12958
- #line 1594 "ext/lexer/lexer.rl"
12959
+ #line 1597 "ext/lexer/lexer.rl"
12959
12960
  {te = p;p--;{
12960
12961
  VALUE str = tok(lexer, ts, te);
12961
12962
  emit(tIDENTIFIER);
@@ -12968,35 +12969,35 @@ _eof_trans:
12968
12969
  }}
12969
12970
  break;
12970
12971
  case 411:
12971
- #line 2385 "ext/lexer/lexer.rl"
12972
+ #line 2388 "ext/lexer/lexer.rl"
12972
12973
  {te = p;p--;{
12973
12974
  emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12974
12975
  {cs = 761;goto _again;}
12975
12976
  }}
12976
12977
  break;
12977
12978
  case 407:
12978
- #line 2391 "ext/lexer/lexer.rl"
12979
+ #line 2394 "ext/lexer/lexer.rl"
12979
12980
  {te = p;p--;{
12980
12981
  emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12981
12982
  cs = 761; {p++; goto _out; }
12982
12983
  }}
12983
12984
  break;
12984
12985
  case 400:
12985
- #line 2397 "ext/lexer/lexer.rl"
12986
+ #line 2400 "ext/lexer/lexer.rl"
12986
12987
  {te = p;p--;{ emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12987
12988
  cs = 537; {p++; goto _out; } }}
12988
12989
  break;
12989
12990
  case 415:
12990
- #line 2463 "ext/lexer/lexer.rl"
12991
+ #line 2466 "ext/lexer/lexer.rl"
12991
12992
  {te = p;p--;{ emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12992
12993
  cs = 537; {p++; goto _out; } }}
12993
12994
  break;
12994
12995
  case 398:
12995
- #line 2466 "ext/lexer/lexer.rl"
12996
+ #line 2469 "ext/lexer/lexer.rl"
12996
12997
  {te = p;p--;}
12997
12998
  break;
12998
12999
  case 404:
12999
- #line 2479 "ext/lexer/lexer.rl"
13000
+ #line 2482 "ext/lexer/lexer.rl"
13000
13001
  {te = p;p--;{
13001
13002
  VALUE hash = rb_hash_new();
13002
13003
  VALUE str = rb_str_inspect(tok(lexer, ts, te));
@@ -13005,7 +13006,7 @@ _eof_trans:
13005
13006
  }}
13006
13007
  break;
13007
13008
  case 82:
13008
- #line 2264 "ext/lexer/lexer.rl"
13009
+ #line 2267 "ext/lexer/lexer.rl"
13009
13010
  {{p = ((te))-1;}{
13010
13011
  int invalid_idx;
13011
13012
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -13038,14 +13039,14 @@ _eof_trans:
13038
13039
  }}
13039
13040
  break;
13040
13041
  case 77:
13041
- #line 2296 "ext/lexer/lexer.rl"
13042
+ #line 2299 "ext/lexer/lexer.rl"
13042
13043
  {{p = ((te))-1;}{
13043
13044
  diagnostic(lexer, severity_error, no_dot_digit_literal, Qnil,
13044
13045
  range(lexer, ts, te), empty_array);
13045
13046
  }}
13046
13047
  break;
13047
13048
  case 81:
13048
- #line 2333 "ext/lexer/lexer.rl"
13049
+ #line 2336 "ext/lexer/lexer.rl"
13049
13050
  {{p = ((te))-1;}{
13050
13051
  VALUE digits = tok(lexer, ts, num_suffix_s);
13051
13052
 
@@ -13060,7 +13061,7 @@ _eof_trans:
13060
13061
  }}
13061
13062
  break;
13062
13063
  case 75:
13063
- #line 2479 "ext/lexer/lexer.rl"
13064
+ #line 2482 "ext/lexer/lexer.rl"
13064
13065
  {{p = ((te))-1;}{
13065
13066
  VALUE hash = rb_hash_new();
13066
13067
  VALUE str = rb_str_inspect(tok(lexer, ts, te));
@@ -13261,39 +13262,39 @@ _eof_trans:
13261
13262
  }
13262
13263
  break;
13263
13264
  case 88:
13264
- #line 2490 "ext/lexer/lexer.rl"
13265
+ #line 2493 "ext/lexer/lexer.rl"
13265
13266
  {te = p+1;{ p = tm - 1; {cs = 769;goto _again;} }}
13266
13267
  break;
13267
13268
  case 490:
13268
- #line 2492 "ext/lexer/lexer.rl"
13269
+ #line 2495 "ext/lexer/lexer.rl"
13269
13270
  {te = p+1;{
13270
13271
  emit_token(lexer, tNL, Qnil, lexer->newline_s, lexer->newline_s + 1);
13271
13272
  p--; cs = 183; {p++; goto _out; }
13272
13273
  }}
13273
13274
  break;
13274
13275
  case 491:
13275
- #line 2492 "ext/lexer/lexer.rl"
13276
+ #line 2495 "ext/lexer/lexer.rl"
13276
13277
  {te = p;p--;{
13277
13278
  emit_token(lexer, tNL, Qnil, lexer->newline_s, lexer->newline_s + 1);
13278
13279
  p--; cs = 183; {p++; goto _out; }
13279
13280
  }}
13280
13281
  break;
13281
13282
  case 85:
13282
- #line 2492 "ext/lexer/lexer.rl"
13283
+ #line 2495 "ext/lexer/lexer.rl"
13283
13284
  {{p = ((te))-1;}{
13284
13285
  emit_token(lexer, tNL, Qnil, lexer->newline_s, lexer->newline_s + 1);
13285
13286
  p--; cs = 183; {p++; goto _out; }
13286
13287
  }}
13287
13288
  break;
13288
13289
  case 494:
13289
- #line 2499 "ext/lexer/lexer.rl"
13290
+ #line 2502 "ext/lexer/lexer.rl"
13290
13291
  {te = p;p--;{
13291
13292
  emit_comment(lexer, lexer->eq_begin_s, te);
13292
13293
  {cs = (lexer->cs_before_block_comment); goto _again;}
13293
13294
  }}
13294
13295
  break;
13295
13296
  case 493:
13296
- #line 2506 "ext/lexer/lexer.rl"
13297
+ #line 2509 "ext/lexer/lexer.rl"
13297
13298
  {te = p;p--;{
13298
13299
  diagnostic(lexer, fatal, embedded_document, Qnil,
13299
13300
  range(lexer, lexer->eq_begin_s, lexer->eq_begin_s + 6),
@@ -13301,53 +13302,53 @@ _eof_trans:
13301
13302
  }}
13302
13303
  break;
13303
13304
  case 99:
13304
- #line 2516 "ext/lexer/lexer.rl"
13305
+ #line 2519 "ext/lexer/lexer.rl"
13305
13306
  {te = p+1;{
13306
13307
  lexer->eq_begin_s = ts;
13307
13308
  {cs = 951;goto _again;}
13308
13309
  }}
13309
13310
  break;
13310
13311
  case 2:
13311
- #line 2521 "ext/lexer/lexer.rl"
13312
+ #line 2524 "ext/lexer/lexer.rl"
13312
13313
  {te = p+1;{ p = pe - 3; }}
13313
13314
  break;
13314
13315
  case 91:
13315
- #line 2523 "ext/lexer/lexer.rl"
13316
+ #line 2526 "ext/lexer/lexer.rl"
13316
13317
  {te = p+1;{ p--; {cs = 761;goto _again;} }}
13317
13318
  break;
13318
13319
  case 92:
13319
- #line 1022 "ext/lexer/lexer.rl"
13320
+ #line 1025 "ext/lexer/lexer.rl"
13320
13321
  {te = p+1;{ p--; {p++; goto _out; } }}
13321
13322
  break;
13322
13323
  case 93:
13323
- #line 2514 "ext/lexer/lexer.rl"
13324
+ #line 2517 "ext/lexer/lexer.rl"
13324
13325
  {te = p;p--;}
13325
13326
  break;
13326
13327
  case 98:
13327
- #line 2516 "ext/lexer/lexer.rl"
13328
+ #line 2519 "ext/lexer/lexer.rl"
13328
13329
  {te = p;p--;{
13329
13330
  lexer->eq_begin_s = ts;
13330
13331
  {cs = 951;goto _again;}
13331
13332
  }}
13332
13333
  break;
13333
13334
  case 97:
13334
- #line 2523 "ext/lexer/lexer.rl"
13335
+ #line 2526 "ext/lexer/lexer.rl"
13335
13336
  {te = p;p--;{ p--; {cs = 761;goto _again;} }}
13336
13337
  break;
13337
13338
  case 1:
13338
- #line 2523 "ext/lexer/lexer.rl"
13339
+ #line 2526 "ext/lexer/lexer.rl"
13339
13340
  {{p = ((te))-1;}{ p--; {cs = 761;goto _again;} }}
13340
13341
  break;
13341
13342
  case 66:
13342
- #line 1003 "ext/lexer/lexer.rl"
13343
+ #line 1006 "ext/lexer/lexer.rl"
13343
13344
  { lexer->newline_s = p; }
13344
- #line 1539 "ext/lexer/lexer.rl"
13345
+ #line 1542 "ext/lexer/lexer.rl"
13345
13346
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
13346
13347
  break;
13347
13348
  case 103:
13348
- #line 1003 "ext/lexer/lexer.rl"
13349
+ #line 1006 "ext/lexer/lexer.rl"
13349
13350
  { lexer->newline_s = p; }
13350
- #line 1336 "ext/lexer/lexer.rl"
13351
+ #line 1339 "ext/lexer/lexer.rl"
13351
13352
  {te = p+1;{
13352
13353
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
13353
13354
  long str_s = current_literal->str_s;
@@ -13393,9 +13394,9 @@ _eof_trans:
13393
13394
  }}
13394
13395
  break;
13395
13396
  case 132:
13396
- #line 1003 "ext/lexer/lexer.rl"
13397
+ #line 1006 "ext/lexer/lexer.rl"
13397
13398
  { lexer->newline_s = p; }
13398
- #line 1336 "ext/lexer/lexer.rl"
13399
+ #line 1339 "ext/lexer/lexer.rl"
13399
13400
  {te = p+1;{
13400
13401
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
13401
13402
  long str_s = current_literal->str_s;
@@ -13441,9 +13442,9 @@ _eof_trans:
13441
13442
  }}
13442
13443
  break;
13443
13444
  case 159:
13444
- #line 1003 "ext/lexer/lexer.rl"
13445
+ #line 1006 "ext/lexer/lexer.rl"
13445
13446
  { lexer->newline_s = p; }
13446
- #line 1336 "ext/lexer/lexer.rl"
13447
+ #line 1339 "ext/lexer/lexer.rl"
13447
13448
  {te = p+1;{
13448
13449
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
13449
13450
  long str_s = current_literal->str_s;
@@ -13489,9 +13490,9 @@ _eof_trans:
13489
13490
  }}
13490
13491
  break;
13491
13492
  case 165:
13492
- #line 1003 "ext/lexer/lexer.rl"
13493
+ #line 1006 "ext/lexer/lexer.rl"
13493
13494
  { lexer->newline_s = p; }
13494
- #line 1336 "ext/lexer/lexer.rl"
13495
+ #line 1339 "ext/lexer/lexer.rl"
13495
13496
  {te = p+1;{
13496
13497
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
13497
13498
  long str_s = current_literal->str_s;
@@ -13537,9 +13538,9 @@ _eof_trans:
13537
13538
  }}
13538
13539
  break;
13539
13540
  case 171:
13540
- #line 1003 "ext/lexer/lexer.rl"
13541
+ #line 1006 "ext/lexer/lexer.rl"
13541
13542
  { lexer->newline_s = p; }
13542
- #line 1336 "ext/lexer/lexer.rl"
13543
+ #line 1339 "ext/lexer/lexer.rl"
13543
13544
  {te = p+1;{
13544
13545
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
13545
13546
  long str_s = current_literal->str_s;
@@ -13585,9 +13586,9 @@ _eof_trans:
13585
13586
  }}
13586
13587
  break;
13587
13588
  case 177:
13588
- #line 1003 "ext/lexer/lexer.rl"
13589
+ #line 1006 "ext/lexer/lexer.rl"
13589
13590
  { lexer->newline_s = p; }
13590
- #line 1336 "ext/lexer/lexer.rl"
13591
+ #line 1339 "ext/lexer/lexer.rl"
13591
13592
  {te = p+1;{
13592
13593
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
13593
13594
  long str_s = current_literal->str_s;
@@ -13633,9 +13634,9 @@ _eof_trans:
13633
13634
  }}
13634
13635
  break;
13635
13636
  case 180:
13636
- #line 1003 "ext/lexer/lexer.rl"
13637
+ #line 1006 "ext/lexer/lexer.rl"
13637
13638
  { lexer->newline_s = p; }
13638
- #line 1336 "ext/lexer/lexer.rl"
13639
+ #line 1339 "ext/lexer/lexer.rl"
13639
13640
  {te = p+1;{
13640
13641
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
13641
13642
  long str_s = current_literal->str_s;
@@ -13681,9 +13682,9 @@ _eof_trans:
13681
13682
  }}
13682
13683
  break;
13683
13684
  case 187:
13684
- #line 1003 "ext/lexer/lexer.rl"
13685
+ #line 1006 "ext/lexer/lexer.rl"
13685
13686
  { lexer->newline_s = p; }
13686
- #line 1336 "ext/lexer/lexer.rl"
13687
+ #line 1339 "ext/lexer/lexer.rl"
13687
13688
  {te = p+1;{
13688
13689
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
13689
13690
  long str_s = current_literal->str_s;
@@ -13729,30 +13730,30 @@ _eof_trans:
13729
13730
  }}
13730
13731
  break;
13731
13732
  case 258:
13732
- #line 1003 "ext/lexer/lexer.rl"
13733
+ #line 1006 "ext/lexer/lexer.rl"
13733
13734
  { lexer->newline_s = p; }
13734
- #line 1756 "ext/lexer/lexer.rl"
13735
+ #line 1759 "ext/lexer/lexer.rl"
13735
13736
  {te = p+1;{ p = ts - 1; {cs = 769;goto _again;} }}
13736
13737
  break;
13737
13738
  case 249:
13738
- #line 1003 "ext/lexer/lexer.rl"
13739
+ #line 1006 "ext/lexer/lexer.rl"
13739
13740
  { lexer->newline_s = p; }
13740
- #line 1788 "ext/lexer/lexer.rl"
13741
+ #line 1791 "ext/lexer/lexer.rl"
13741
13742
  {te = p+1;{ p = tm - 1; {cs = 769;goto _again;} }}
13742
13743
  break;
13743
13744
  case 241:
13744
- #line 1003 "ext/lexer/lexer.rl"
13745
+ #line 1006 "ext/lexer/lexer.rl"
13745
13746
  { lexer->newline_s = p; }
13746
- #line 1795 "ext/lexer/lexer.rl"
13747
+ #line 1798 "ext/lexer/lexer.rl"
13747
13748
  {te = p+1;{
13748
13749
  p = ts - 1;
13749
13750
  {cs = 769;goto _again;}
13750
13751
  }}
13751
13752
  break;
13752
13753
  case 333:
13753
- #line 1003 "ext/lexer/lexer.rl"
13754
+ #line 1006 "ext/lexer/lexer.rl"
13754
13755
  { lexer->newline_s = p; }
13755
- #line 2028 "ext/lexer/lexer.rl"
13756
+ #line 2031 "ext/lexer/lexer.rl"
13756
13757
  {te = p+1;{
13757
13758
  VALUE escape = escape_char(rb_str_subseq(lexer->source, ts + 1, 1));
13758
13759
  VALUE hash = rb_hash_new();
@@ -13765,9 +13766,9 @@ _eof_trans:
13765
13766
  }}
13766
13767
  break;
13767
13768
  case 304:
13768
- #line 1003 "ext/lexer/lexer.rl"
13769
+ #line 1006 "ext/lexer/lexer.rl"
13769
13770
  { lexer->newline_s = p; }
13770
- #line 2127 "ext/lexer/lexer.rl"
13771
+ #line 2130 "ext/lexer/lexer.rl"
13771
13772
  {te = p+1;{
13772
13773
  p = ts - 1;
13773
13774
  lexer->cs_before_block_comment = lexer->cs;
@@ -13775,39 +13776,39 @@ _eof_trans:
13775
13776
  }}
13776
13777
  break;
13777
13778
  case 495:
13778
- #line 1003 "ext/lexer/lexer.rl"
13779
+ #line 1006 "ext/lexer/lexer.rl"
13779
13780
  { lexer->newline_s = p; }
13780
- #line 2499 "ext/lexer/lexer.rl"
13781
+ #line 2502 "ext/lexer/lexer.rl"
13781
13782
  {te = p+1;{
13782
13783
  emit_comment(lexer, lexer->eq_begin_s, te);
13783
13784
  {cs = (lexer->cs_before_block_comment); goto _again;}
13784
13785
  }}
13785
13786
  break;
13786
13787
  case 492:
13787
- #line 1003 "ext/lexer/lexer.rl"
13788
+ #line 1006 "ext/lexer/lexer.rl"
13788
13789
  { lexer->newline_s = p; }
13789
- #line 2504 "ext/lexer/lexer.rl"
13790
+ #line 2507 "ext/lexer/lexer.rl"
13790
13791
  {te = p+1;}
13791
13792
  break;
13792
13793
  case 100:
13793
- #line 1003 "ext/lexer/lexer.rl"
13794
+ #line 1006 "ext/lexer/lexer.rl"
13794
13795
  { lexer->newline_s = p; }
13795
- #line 2516 "ext/lexer/lexer.rl"
13796
+ #line 2519 "ext/lexer/lexer.rl"
13796
13797
  {te = p+1;{
13797
13798
  lexer->eq_begin_s = ts;
13798
13799
  {cs = 951;goto _again;}
13799
13800
  }}
13800
13801
  break;
13801
13802
  case 3:
13802
- #line 1003 "ext/lexer/lexer.rl"
13803
+ #line 1006 "ext/lexer/lexer.rl"
13803
13804
  { lexer->newline_s = p; }
13804
- #line 2521 "ext/lexer/lexer.rl"
13805
+ #line 2524 "ext/lexer/lexer.rl"
13805
13806
  {te = p+1;{ p = pe - 3; }}
13806
13807
  break;
13807
13808
  case 442:
13808
- #line 1078 "ext/lexer/lexer.rl"
13809
+ #line 1081 "ext/lexer/lexer.rl"
13809
13810
  { num_xfrm = emit_rational; numeric_s = ts; }
13810
- #line 2264 "ext/lexer/lexer.rl"
13811
+ #line 2267 "ext/lexer/lexer.rl"
13811
13812
  {te = p;p--;{
13812
13813
  int invalid_idx;
13813
13814
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -13840,9 +13841,9 @@ _eof_trans:
13840
13841
  }}
13841
13842
  break;
13842
13843
  case 440:
13843
- #line 1079 "ext/lexer/lexer.rl"
13844
+ #line 1082 "ext/lexer/lexer.rl"
13844
13845
  { num_xfrm = emit_complex; numeric_s = ts; }
13845
- #line 2264 "ext/lexer/lexer.rl"
13846
+ #line 2267 "ext/lexer/lexer.rl"
13846
13847
  {te = p;p--;{
13847
13848
  int invalid_idx;
13848
13849
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -13875,9 +13876,9 @@ _eof_trans:
13875
13876
  }}
13876
13877
  break;
13877
13878
  case 444:
13878
- #line 1080 "ext/lexer/lexer.rl"
13879
+ #line 1083 "ext/lexer/lexer.rl"
13879
13880
  { num_xfrm = emit_complex_rational; numeric_s = ts; }
13880
- #line 2264 "ext/lexer/lexer.rl"
13881
+ #line 2267 "ext/lexer/lexer.rl"
13881
13882
  {te = p;p--;{
13882
13883
  int invalid_idx;
13883
13884
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -13910,9 +13911,9 @@ _eof_trans:
13910
13911
  }}
13911
13912
  break;
13912
13913
  case 441:
13913
- #line 1081 "ext/lexer/lexer.rl"
13914
+ #line 1084 "ext/lexer/lexer.rl"
13914
13915
  { num_xfrm = emit_int_followed_by_if; numeric_s = ts; p -= 2; }
13915
- #line 2264 "ext/lexer/lexer.rl"
13916
+ #line 2267 "ext/lexer/lexer.rl"
13916
13917
  {te = p;p--;{
13917
13918
  int invalid_idx;
13918
13919
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -13945,9 +13946,9 @@ _eof_trans:
13945
13946
  }}
13946
13947
  break;
13947
13948
  case 443:
13948
- #line 1082 "ext/lexer/lexer.rl"
13949
+ #line 1085 "ext/lexer/lexer.rl"
13949
13950
  { num_xfrm = emit_int_followed_by_rescue; numeric_s = ts; p -= 6; }
13950
- #line 2264 "ext/lexer/lexer.rl"
13951
+ #line 2267 "ext/lexer/lexer.rl"
13951
13952
  {te = p;p--;{
13952
13953
  int invalid_idx;
13953
13954
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -13980,9 +13981,9 @@ _eof_trans:
13980
13981
  }}
13981
13982
  break;
13982
13983
  case 432:
13983
- #line 1086 "ext/lexer/lexer.rl"
13984
+ #line 1089 "ext/lexer/lexer.rl"
13984
13985
  { num_xfrm = emit_complex_float; numeric_s = ts; }
13985
- #line 2333 "ext/lexer/lexer.rl"
13986
+ #line 2336 "ext/lexer/lexer.rl"
13986
13987
  {te = p;p--;{
13987
13988
  VALUE digits = tok(lexer, ts, num_suffix_s);
13988
13989
 
@@ -13997,9 +13998,9 @@ _eof_trans:
13997
13998
  }}
13998
13999
  break;
13999
14000
  case 433:
14000
- #line 1087 "ext/lexer/lexer.rl"
14001
+ #line 1090 "ext/lexer/lexer.rl"
14001
14002
  { num_xfrm = emit_float_followed_by_if; numeric_s = ts; p -= 2; }
14002
- #line 2333 "ext/lexer/lexer.rl"
14003
+ #line 2336 "ext/lexer/lexer.rl"
14003
14004
  {te = p;p--;{
14004
14005
  VALUE digits = tok(lexer, ts, num_suffix_s);
14005
14006
 
@@ -14014,9 +14015,9 @@ _eof_trans:
14014
14015
  }}
14015
14016
  break;
14016
14017
  case 434:
14017
- #line 1091 "ext/lexer/lexer.rl"
14018
+ #line 1094 "ext/lexer/lexer.rl"
14018
14019
  { num_xfrm = emit_rational; numeric_s = ts; }
14019
- #line 2333 "ext/lexer/lexer.rl"
14020
+ #line 2336 "ext/lexer/lexer.rl"
14020
14021
  {te = p;p--;{
14021
14022
  VALUE digits = tok(lexer, ts, num_suffix_s);
14022
14023
 
@@ -14031,9 +14032,9 @@ _eof_trans:
14031
14032
  }}
14032
14033
  break;
14033
14034
  case 436:
14034
- #line 1092 "ext/lexer/lexer.rl"
14035
+ #line 1095 "ext/lexer/lexer.rl"
14035
14036
  { num_xfrm = emit_complex_rational; numeric_s = ts; }
14036
- #line 2333 "ext/lexer/lexer.rl"
14037
+ #line 2336 "ext/lexer/lexer.rl"
14037
14038
  {te = p;p--;{
14038
14039
  VALUE digits = tok(lexer, ts, num_suffix_s);
14039
14040
 
@@ -14048,9 +14049,9 @@ _eof_trans:
14048
14049
  }}
14049
14050
  break;
14050
14051
  case 435:
14051
- #line 1093 "ext/lexer/lexer.rl"
14052
+ #line 1096 "ext/lexer/lexer.rl"
14052
14053
  { num_xfrm = emit_float_followed_by_rescue; numeric_s = ts; p -= 6; }
14053
- #line 2333 "ext/lexer/lexer.rl"
14054
+ #line 2336 "ext/lexer/lexer.rl"
14054
14055
  {te = p;p--;{
14055
14056
  VALUE digits = tok(lexer, ts, num_suffix_s);
14056
14057
 
@@ -14065,7 +14066,7 @@ _eof_trans:
14065
14066
  }}
14066
14067
  break;
14067
14068
  case 126:
14068
- #line 1097 "ext/lexer/lexer.rl"
14069
+ #line 1100 "ext/lexer/lexer.rl"
14069
14070
  {
14070
14071
  lexer->escape = rb_str_new2("");
14071
14072
 
@@ -14120,7 +14121,7 @@ _eof_trans:
14120
14121
  }
14121
14122
  }
14122
14123
  }
14123
- #line 1307 "ext/lexer/lexer.rl"
14124
+ #line 1310 "ext/lexer/lexer.rl"
14124
14125
  {te = p;p--;{
14125
14126
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
14126
14127
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -14151,7 +14152,7 @@ _eof_trans:
14151
14152
  }}
14152
14153
  break;
14153
14154
  case 153:
14154
- #line 1097 "ext/lexer/lexer.rl"
14155
+ #line 1100 "ext/lexer/lexer.rl"
14155
14156
  {
14156
14157
  lexer->escape = rb_str_new2("");
14157
14158
 
@@ -14206,7 +14207,7 @@ _eof_trans:
14206
14207
  }
14207
14208
  }
14208
14209
  }
14209
- #line 1307 "ext/lexer/lexer.rl"
14210
+ #line 1310 "ext/lexer/lexer.rl"
14210
14211
  {te = p;p--;{
14211
14212
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
14212
14213
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -14237,7 +14238,7 @@ _eof_trans:
14237
14238
  }}
14238
14239
  break;
14239
14240
  case 354:
14240
- #line 1097 "ext/lexer/lexer.rl"
14241
+ #line 1100 "ext/lexer/lexer.rl"
14241
14242
  {
14242
14243
  lexer->escape = rb_str_new2("");
14243
14244
 
@@ -14292,7 +14293,7 @@ _eof_trans:
14292
14293
  }
14293
14294
  }
14294
14295
  }
14295
- #line 2015 "ext/lexer/lexer.rl"
14296
+ #line 2018 "ext/lexer/lexer.rl"
14296
14297
  {te = p;p--;{
14297
14298
  VALUE value = lexer->escape;
14298
14299
  if (value == Qnil)
@@ -14307,7 +14308,7 @@ _eof_trans:
14307
14308
  }}
14308
14309
  break;
14309
14310
  case 110:
14310
- #line 1152 "ext/lexer/lexer.rl"
14311
+ #line 1155 "ext/lexer/lexer.rl"
14311
14312
  {
14312
14313
  char c = NUM2INT(rb_ary_entry(lexer->source_pts, p - 1));
14313
14314
  lexer->escape = unescape_char(c);
@@ -14318,7 +14319,7 @@ _eof_trans:
14318
14319
  force_encoding(codepoint, lexer->encoding);
14319
14320
  }
14320
14321
  }
14321
- #line 1307 "ext/lexer/lexer.rl"
14322
+ #line 1310 "ext/lexer/lexer.rl"
14322
14323
  {te = p;p--;{
14323
14324
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
14324
14325
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -14349,7 +14350,7 @@ _eof_trans:
14349
14350
  }}
14350
14351
  break;
14351
14352
  case 137:
14352
- #line 1152 "ext/lexer/lexer.rl"
14353
+ #line 1155 "ext/lexer/lexer.rl"
14353
14354
  {
14354
14355
  char c = NUM2INT(rb_ary_entry(lexer->source_pts, p - 1));
14355
14356
  lexer->escape = unescape_char(c);
@@ -14360,7 +14361,7 @@ _eof_trans:
14360
14361
  force_encoding(codepoint, lexer->encoding);
14361
14362
  }
14362
14363
  }
14363
- #line 1307 "ext/lexer/lexer.rl"
14364
+ #line 1310 "ext/lexer/lexer.rl"
14364
14365
  {te = p;p--;{
14365
14366
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
14366
14367
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -14391,7 +14392,7 @@ _eof_trans:
14391
14392
  }}
14392
14393
  break;
14393
14394
  case 338:
14394
- #line 1152 "ext/lexer/lexer.rl"
14395
+ #line 1155 "ext/lexer/lexer.rl"
14395
14396
  {
14396
14397
  char c = NUM2INT(rb_ary_entry(lexer->source_pts, p - 1));
14397
14398
  lexer->escape = unescape_char(c);
@@ -14402,7 +14403,7 @@ _eof_trans:
14402
14403
  force_encoding(codepoint, lexer->encoding);
14403
14404
  }
14404
14405
  }
14405
- #line 2015 "ext/lexer/lexer.rl"
14406
+ #line 2018 "ext/lexer/lexer.rl"
14406
14407
  {te = p;p--;{
14407
14408
  VALUE value = lexer->escape;
14408
14409
  if (value == Qnil)
@@ -14417,12 +14418,12 @@ _eof_trans:
14417
14418
  }}
14418
14419
  break;
14419
14420
  case 113:
14420
- #line 1163 "ext/lexer/lexer.rl"
14421
+ #line 1166 "ext/lexer/lexer.rl"
14421
14422
  {
14422
14423
  diagnostic(lexer, fatal, invalid_escape, Qnil, range(lexer, ts, te),
14423
14424
  empty_array);
14424
14425
  }
14425
- #line 1307 "ext/lexer/lexer.rl"
14426
+ #line 1310 "ext/lexer/lexer.rl"
14426
14427
  {te = p;p--;{
14427
14428
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
14428
14429
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -14453,12 +14454,12 @@ _eof_trans:
14453
14454
  }}
14454
14455
  break;
14455
14456
  case 140:
14456
- #line 1163 "ext/lexer/lexer.rl"
14457
+ #line 1166 "ext/lexer/lexer.rl"
14457
14458
  {
14458
14459
  diagnostic(lexer, fatal, invalid_escape, Qnil, range(lexer, ts, te),
14459
14460
  empty_array);
14460
14461
  }
14461
- #line 1307 "ext/lexer/lexer.rl"
14462
+ #line 1310 "ext/lexer/lexer.rl"
14462
14463
  {te = p;p--;{
14463
14464
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
14464
14465
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -14489,12 +14490,12 @@ _eof_trans:
14489
14490
  }}
14490
14491
  break;
14491
14492
  case 341:
14492
- #line 1163 "ext/lexer/lexer.rl"
14493
+ #line 1166 "ext/lexer/lexer.rl"
14493
14494
  {
14494
14495
  diagnostic(lexer, fatal, invalid_escape, Qnil, range(lexer, ts, te),
14495
14496
  empty_array);
14496
14497
  }
14497
- #line 2015 "ext/lexer/lexer.rl"
14498
+ #line 2018 "ext/lexer/lexer.rl"
14498
14499
  {te = p;p--;{
14499
14500
  VALUE value = lexer->escape;
14500
14501
  if (value == Qnil)
@@ -14509,9 +14510,9 @@ _eof_trans:
14509
14510
  }}
14510
14511
  break;
14511
14512
  case 115:
14512
- #line 1187 "ext/lexer/lexer.rl"
14513
+ #line 1190 "ext/lexer/lexer.rl"
14513
14514
  { lexer->escape = rb_str_new2("\x7f"); }
14514
- #line 1307 "ext/lexer/lexer.rl"
14515
+ #line 1310 "ext/lexer/lexer.rl"
14515
14516
  {te = p;p--;{
14516
14517
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
14517
14518
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -14542,9 +14543,9 @@ _eof_trans:
14542
14543
  }}
14543
14544
  break;
14544
14545
  case 142:
14545
- #line 1187 "ext/lexer/lexer.rl"
14546
+ #line 1190 "ext/lexer/lexer.rl"
14546
14547
  { lexer->escape = rb_str_new2("\x7f"); }
14547
- #line 1307 "ext/lexer/lexer.rl"
14548
+ #line 1310 "ext/lexer/lexer.rl"
14548
14549
  {te = p;p--;{
14549
14550
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
14550
14551
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -14575,9 +14576,9 @@ _eof_trans:
14575
14576
  }}
14576
14577
  break;
14577
14578
  case 343:
14578
- #line 1187 "ext/lexer/lexer.rl"
14579
+ #line 1190 "ext/lexer/lexer.rl"
14579
14580
  { lexer->escape = rb_str_new2("\x7f"); }
14580
- #line 2015 "ext/lexer/lexer.rl"
14581
+ #line 2018 "ext/lexer/lexer.rl"
14581
14582
  {te = p;p--;{
14582
14583
  VALUE value = lexer->escape;
14583
14584
  if (value == Qnil)
@@ -14592,7 +14593,7 @@ _eof_trans:
14592
14593
  }}
14593
14594
  break;
14594
14595
  case 112:
14595
- #line 1192 "ext/lexer/lexer.rl"
14596
+ #line 1195 "ext/lexer/lexer.rl"
14596
14597
  {
14597
14598
  VALUE token = tok(lexer, lexer->escape_s, p);
14598
14599
  char c = NUM2INT(rb_str_to_inum(token, 8, 0));
@@ -14600,7 +14601,7 @@ _eof_trans:
14600
14601
  lexer->escape = rb_str_new(&c, 1);
14601
14602
  force_encoding(lexer->escape, lexer->encoding);
14602
14603
  }
14603
- #line 1307 "ext/lexer/lexer.rl"
14604
+ #line 1310 "ext/lexer/lexer.rl"
14604
14605
  {te = p;p--;{
14605
14606
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
14606
14607
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -14631,7 +14632,7 @@ _eof_trans:
14631
14632
  }}
14632
14633
  break;
14633
14634
  case 139:
14634
- #line 1192 "ext/lexer/lexer.rl"
14635
+ #line 1195 "ext/lexer/lexer.rl"
14635
14636
  {
14636
14637
  VALUE token = tok(lexer, lexer->escape_s, p);
14637
14638
  char c = NUM2INT(rb_str_to_inum(token, 8, 0));
@@ -14639,7 +14640,7 @@ _eof_trans:
14639
14640
  lexer->escape = rb_str_new(&c, 1);
14640
14641
  force_encoding(lexer->escape, lexer->encoding);
14641
14642
  }
14642
- #line 1307 "ext/lexer/lexer.rl"
14643
+ #line 1310 "ext/lexer/lexer.rl"
14643
14644
  {te = p;p--;{
14644
14645
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
14645
14646
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -14670,7 +14671,7 @@ _eof_trans:
14670
14671
  }}
14671
14672
  break;
14672
14673
  case 340:
14673
- #line 1192 "ext/lexer/lexer.rl"
14674
+ #line 1195 "ext/lexer/lexer.rl"
14674
14675
  {
14675
14676
  VALUE token = tok(lexer, lexer->escape_s, p);
14676
14677
  char c = NUM2INT(rb_str_to_inum(token, 8, 0));
@@ -14678,7 +14679,7 @@ _eof_trans:
14678
14679
  lexer->escape = rb_str_new(&c, 1);
14679
14680
  force_encoding(lexer->escape, lexer->encoding);
14680
14681
  }
14681
- #line 2015 "ext/lexer/lexer.rl"
14682
+ #line 2018 "ext/lexer/lexer.rl"
14682
14683
  {te = p;p--;{
14683
14684
  VALUE value = lexer->escape;
14684
14685
  if (value == Qnil)
@@ -14693,14 +14694,14 @@ _eof_trans:
14693
14694
  }}
14694
14695
  break;
14695
14696
  case 129:
14696
- #line 1200 "ext/lexer/lexer.rl"
14697
+ #line 1203 "ext/lexer/lexer.rl"
14697
14698
  {
14698
14699
  VALUE token = tok(lexer, lexer->escape_s + 1, p);
14699
14700
  char c = NUM2INT(rb_str_to_inum(token, 16, 0));
14700
14701
  lexer->escape = rb_str_new(&c, 1);
14701
14702
  force_encoding(lexer->escape, lexer->encoding);
14702
14703
  }
14703
- #line 1307 "ext/lexer/lexer.rl"
14704
+ #line 1310 "ext/lexer/lexer.rl"
14704
14705
  {te = p;p--;{
14705
14706
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
14706
14707
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -14731,14 +14732,14 @@ _eof_trans:
14731
14732
  }}
14732
14733
  break;
14733
14734
  case 156:
14734
- #line 1200 "ext/lexer/lexer.rl"
14735
+ #line 1203 "ext/lexer/lexer.rl"
14735
14736
  {
14736
14737
  VALUE token = tok(lexer, lexer->escape_s + 1, p);
14737
14738
  char c = NUM2INT(rb_str_to_inum(token, 16, 0));
14738
14739
  lexer->escape = rb_str_new(&c, 1);
14739
14740
  force_encoding(lexer->escape, lexer->encoding);
14740
14741
  }
14741
- #line 1307 "ext/lexer/lexer.rl"
14742
+ #line 1310 "ext/lexer/lexer.rl"
14742
14743
  {te = p;p--;{
14743
14744
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
14744
14745
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -14769,14 +14770,14 @@ _eof_trans:
14769
14770
  }}
14770
14771
  break;
14771
14772
  case 357:
14772
- #line 1200 "ext/lexer/lexer.rl"
14773
+ #line 1203 "ext/lexer/lexer.rl"
14773
14774
  {
14774
14775
  VALUE token = tok(lexer, lexer->escape_s + 1, p);
14775
14776
  char c = NUM2INT(rb_str_to_inum(token, 16, 0));
14776
14777
  lexer->escape = rb_str_new(&c, 1);
14777
14778
  force_encoding(lexer->escape, lexer->encoding);
14778
14779
  }
14779
- #line 2015 "ext/lexer/lexer.rl"
14780
+ #line 2018 "ext/lexer/lexer.rl"
14780
14781
  {te = p;p--;{
14781
14782
  VALUE value = lexer->escape;
14782
14783
  if (value == Qnil)
@@ -14791,12 +14792,12 @@ _eof_trans:
14791
14792
  }}
14792
14793
  break;
14793
14794
  case 128:
14794
- #line 1208 "ext/lexer/lexer.rl"
14795
+ #line 1211 "ext/lexer/lexer.rl"
14795
14796
  {
14796
14797
  diagnostic(lexer, fatal, invalid_hex_escape, Qnil,
14797
14798
  range(lexer, lexer->escape_s - 1, p + 2), empty_array);
14798
14799
  }
14799
- #line 1307 "ext/lexer/lexer.rl"
14800
+ #line 1310 "ext/lexer/lexer.rl"
14800
14801
  {te = p;p--;{
14801
14802
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
14802
14803
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -14827,12 +14828,12 @@ _eof_trans:
14827
14828
  }}
14828
14829
  break;
14829
14830
  case 155:
14830
- #line 1208 "ext/lexer/lexer.rl"
14831
+ #line 1211 "ext/lexer/lexer.rl"
14831
14832
  {
14832
14833
  diagnostic(lexer, fatal, invalid_hex_escape, Qnil,
14833
14834
  range(lexer, lexer->escape_s - 1, p + 2), empty_array);
14834
14835
  }
14835
- #line 1307 "ext/lexer/lexer.rl"
14836
+ #line 1310 "ext/lexer/lexer.rl"
14836
14837
  {te = p;p--;{
14837
14838
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
14838
14839
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -14863,12 +14864,12 @@ _eof_trans:
14863
14864
  }}
14864
14865
  break;
14865
14866
  case 356:
14866
- #line 1208 "ext/lexer/lexer.rl"
14867
+ #line 1211 "ext/lexer/lexer.rl"
14867
14868
  {
14868
14869
  diagnostic(lexer, fatal, invalid_hex_escape, Qnil,
14869
14870
  range(lexer, lexer->escape_s - 1, p + 2), empty_array);
14870
14871
  }
14871
- #line 2015 "ext/lexer/lexer.rl"
14872
+ #line 2018 "ext/lexer/lexer.rl"
14872
14873
  {te = p;p--;{
14873
14874
  VALUE value = lexer->escape;
14874
14875
  if (value == Qnil)
@@ -14883,13 +14884,13 @@ _eof_trans:
14883
14884
  }}
14884
14885
  break;
14885
14886
  case 123:
14886
- #line 1213 "ext/lexer/lexer.rl"
14887
+ #line 1216 "ext/lexer/lexer.rl"
14887
14888
  {
14888
14889
  VALUE token = tok(lexer, lexer->escape_s + 1, p);
14889
14890
  int i = NUM2INT(rb_str_to_inum(token, 16, 0));
14890
14891
  lexer->escape = rb_enc_uint_chr(i, rb_to_encoding(utf8_encoding));
14891
14892
  }
14892
- #line 1307 "ext/lexer/lexer.rl"
14893
+ #line 1310 "ext/lexer/lexer.rl"
14893
14894
  {te = p;p--;{
14894
14895
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
14895
14896
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -14920,13 +14921,13 @@ _eof_trans:
14920
14921
  }}
14921
14922
  break;
14922
14923
  case 150:
14923
- #line 1213 "ext/lexer/lexer.rl"
14924
+ #line 1216 "ext/lexer/lexer.rl"
14924
14925
  {
14925
14926
  VALUE token = tok(lexer, lexer->escape_s + 1, p);
14926
14927
  int i = NUM2INT(rb_str_to_inum(token, 16, 0));
14927
14928
  lexer->escape = rb_enc_uint_chr(i, rb_to_encoding(utf8_encoding));
14928
14929
  }
14929
- #line 1307 "ext/lexer/lexer.rl"
14930
+ #line 1310 "ext/lexer/lexer.rl"
14930
14931
  {te = p;p--;{
14931
14932
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
14932
14933
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -14957,13 +14958,13 @@ _eof_trans:
14957
14958
  }}
14958
14959
  break;
14959
14960
  case 351:
14960
- #line 1213 "ext/lexer/lexer.rl"
14961
+ #line 1216 "ext/lexer/lexer.rl"
14961
14962
  {
14962
14963
  VALUE token = tok(lexer, lexer->escape_s + 1, p);
14963
14964
  int i = NUM2INT(rb_str_to_inum(token, 16, 0));
14964
14965
  lexer->escape = rb_enc_uint_chr(i, rb_to_encoding(utf8_encoding));
14965
14966
  }
14966
- #line 2015 "ext/lexer/lexer.rl"
14967
+ #line 2018 "ext/lexer/lexer.rl"
14967
14968
  {te = p;p--;{
14968
14969
  VALUE value = lexer->escape;
14969
14970
  if (value == Qnil)
@@ -14978,12 +14979,12 @@ _eof_trans:
14978
14979
  }}
14979
14980
  break;
14980
14981
  case 122:
14981
- #line 1219 "ext/lexer/lexer.rl"
14982
+ #line 1222 "ext/lexer/lexer.rl"
14982
14983
  {
14983
14984
  diagnostic(lexer, fatal, invalid_unicode_escape, Qnil,
14984
14985
  range(lexer, lexer->escape_s - 1, p), empty_array);
14985
14986
  }
14986
- #line 1307 "ext/lexer/lexer.rl"
14987
+ #line 1310 "ext/lexer/lexer.rl"
14987
14988
  {te = p;p--;{
14988
14989
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
14989
14990
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -15014,12 +15015,12 @@ _eof_trans:
15014
15015
  }}
15015
15016
  break;
15016
15017
  case 149:
15017
- #line 1219 "ext/lexer/lexer.rl"
15018
+ #line 1222 "ext/lexer/lexer.rl"
15018
15019
  {
15019
15020
  diagnostic(lexer, fatal, invalid_unicode_escape, Qnil,
15020
15021
  range(lexer, lexer->escape_s - 1, p), empty_array);
15021
15022
  }
15022
- #line 1307 "ext/lexer/lexer.rl"
15023
+ #line 1310 "ext/lexer/lexer.rl"
15023
15024
  {te = p;p--;{
15024
15025
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
15025
15026
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -15050,12 +15051,12 @@ _eof_trans:
15050
15051
  }}
15051
15052
  break;
15052
15053
  case 350:
15053
- #line 1219 "ext/lexer/lexer.rl"
15054
+ #line 1222 "ext/lexer/lexer.rl"
15054
15055
  {
15055
15056
  diagnostic(lexer, fatal, invalid_unicode_escape, Qnil,
15056
15057
  range(lexer, lexer->escape_s - 1, p), empty_array);
15057
15058
  }
15058
- #line 2015 "ext/lexer/lexer.rl"
15059
+ #line 2018 "ext/lexer/lexer.rl"
15059
15060
  {te = p;p--;{
15060
15061
  VALUE value = lexer->escape;
15061
15062
  if (value == Qnil)
@@ -15070,12 +15071,12 @@ _eof_trans:
15070
15071
  }}
15071
15072
  break;
15072
15073
  case 127:
15073
- #line 1224 "ext/lexer/lexer.rl"
15074
+ #line 1227 "ext/lexer/lexer.rl"
15074
15075
  {
15075
15076
  diagnostic(lexer, fatal, invalid_unicode_escape, Qnil,
15076
15077
  range(lexer, lexer->escape_s - 1, p), empty_array);
15077
15078
  }
15078
- #line 1307 "ext/lexer/lexer.rl"
15079
+ #line 1310 "ext/lexer/lexer.rl"
15079
15080
  {te = p;p--;{
15080
15081
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
15081
15082
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -15106,12 +15107,12 @@ _eof_trans:
15106
15107
  }}
15107
15108
  break;
15108
15109
  case 154:
15109
- #line 1224 "ext/lexer/lexer.rl"
15110
+ #line 1227 "ext/lexer/lexer.rl"
15110
15111
  {
15111
15112
  diagnostic(lexer, fatal, invalid_unicode_escape, Qnil,
15112
15113
  range(lexer, lexer->escape_s - 1, p), empty_array);
15113
15114
  }
15114
- #line 1307 "ext/lexer/lexer.rl"
15115
+ #line 1310 "ext/lexer/lexer.rl"
15115
15116
  {te = p;p--;{
15116
15117
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
15117
15118
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -15142,12 +15143,12 @@ _eof_trans:
15142
15143
  }}
15143
15144
  break;
15144
15145
  case 355:
15145
- #line 1224 "ext/lexer/lexer.rl"
15146
+ #line 1227 "ext/lexer/lexer.rl"
15146
15147
  {
15147
15148
  diagnostic(lexer, fatal, invalid_unicode_escape, Qnil,
15148
15149
  range(lexer, lexer->escape_s - 1, p), empty_array);
15149
15150
  }
15150
- #line 2015 "ext/lexer/lexer.rl"
15151
+ #line 2018 "ext/lexer/lexer.rl"
15151
15152
  {te = p;p--;{
15152
15153
  VALUE value = lexer->escape;
15153
15154
  if (value == Qnil)
@@ -15162,12 +15163,12 @@ _eof_trans:
15162
15163
  }}
15163
15164
  break;
15164
15165
  case 124:
15165
- #line 1238 "ext/lexer/lexer.rl"
15166
+ #line 1241 "ext/lexer/lexer.rl"
15166
15167
  {
15167
15168
  diagnostic(lexer, fatal, invalid_unicode_escape, Qnil,
15168
15169
  range(lexer, p - 1, p), empty_array);
15169
15170
  }
15170
- #line 1307 "ext/lexer/lexer.rl"
15171
+ #line 1310 "ext/lexer/lexer.rl"
15171
15172
  {te = p;p--;{
15172
15173
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
15173
15174
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -15198,12 +15199,12 @@ _eof_trans:
15198
15199
  }}
15199
15200
  break;
15200
15201
  case 151:
15201
- #line 1238 "ext/lexer/lexer.rl"
15202
+ #line 1241 "ext/lexer/lexer.rl"
15202
15203
  {
15203
15204
  diagnostic(lexer, fatal, invalid_unicode_escape, Qnil,
15204
15205
  range(lexer, p - 1, p), empty_array);
15205
15206
  }
15206
- #line 1307 "ext/lexer/lexer.rl"
15207
+ #line 1310 "ext/lexer/lexer.rl"
15207
15208
  {te = p;p--;{
15208
15209
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
15209
15210
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -15234,12 +15235,12 @@ _eof_trans:
15234
15235
  }}
15235
15236
  break;
15236
15237
  case 352:
15237
- #line 1238 "ext/lexer/lexer.rl"
15238
+ #line 1241 "ext/lexer/lexer.rl"
15238
15239
  {
15239
15240
  diagnostic(lexer, fatal, invalid_unicode_escape, Qnil,
15240
15241
  range(lexer, p - 1, p), empty_array);
15241
15242
  }
15242
- #line 2015 "ext/lexer/lexer.rl"
15243
+ #line 2018 "ext/lexer/lexer.rl"
15243
15244
  {te = p;p--;{
15244
15245
  VALUE value = lexer->escape;
15245
15246
  if (value == Qnil)
@@ -15254,12 +15255,12 @@ _eof_trans:
15254
15255
  }}
15255
15256
  break;
15256
15257
  case 111:
15257
- #line 1262 "ext/lexer/lexer.rl"
15258
+ #line 1265 "ext/lexer/lexer.rl"
15258
15259
  {
15259
15260
  diagnostic(lexer, fatal, escape_eof, Qnil, range(lexer, p - 1, p),
15260
15261
  empty_array);
15261
15262
  }
15262
- #line 1307 "ext/lexer/lexer.rl"
15263
+ #line 1310 "ext/lexer/lexer.rl"
15263
15264
  {te = p;p--;{
15264
15265
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
15265
15266
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -15290,12 +15291,12 @@ _eof_trans:
15290
15291
  }}
15291
15292
  break;
15292
15293
  case 138:
15293
- #line 1262 "ext/lexer/lexer.rl"
15294
+ #line 1265 "ext/lexer/lexer.rl"
15294
15295
  {
15295
15296
  diagnostic(lexer, fatal, escape_eof, Qnil, range(lexer, p - 1, p),
15296
15297
  empty_array);
15297
15298
  }
15298
- #line 1307 "ext/lexer/lexer.rl"
15299
+ #line 1310 "ext/lexer/lexer.rl"
15299
15300
  {te = p;p--;{
15300
15301
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
15301
15302
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -15326,12 +15327,12 @@ _eof_trans:
15326
15327
  }}
15327
15328
  break;
15328
15329
  case 339:
15329
- #line 1262 "ext/lexer/lexer.rl"
15330
+ #line 1265 "ext/lexer/lexer.rl"
15330
15331
  {
15331
15332
  diagnostic(lexer, fatal, escape_eof, Qnil, range(lexer, p - 1, p),
15332
15333
  empty_array);
15333
15334
  }
15334
- #line 2015 "ext/lexer/lexer.rl"
15335
+ #line 2018 "ext/lexer/lexer.rl"
15335
15336
  {te = p;p--;{
15336
15337
  VALUE value = lexer->escape;
15337
15338
  if (value == Qnil)
@@ -15346,12 +15347,12 @@ _eof_trans:
15346
15347
  }}
15347
15348
  break;
15348
15349
  case 162:
15349
- #line 1268 "ext/lexer/lexer.rl"
15350
+ #line 1271 "ext/lexer/lexer.rl"
15350
15351
  {
15351
15352
  lexer->escape_s = p;
15352
15353
  lexer->escape = Qnil;
15353
15354
  }
15354
- #line 1307 "ext/lexer/lexer.rl"
15355
+ #line 1310 "ext/lexer/lexer.rl"
15355
15356
  {te = p+1;{
15356
15357
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
15357
15358
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -15382,12 +15383,12 @@ _eof_trans:
15382
15383
  }}
15383
15384
  break;
15384
15385
  case 167:
15385
- #line 1268 "ext/lexer/lexer.rl"
15386
+ #line 1271 "ext/lexer/lexer.rl"
15386
15387
  {
15387
15388
  lexer->escape_s = p;
15388
15389
  lexer->escape = Qnil;
15389
15390
  }
15390
- #line 1307 "ext/lexer/lexer.rl"
15391
+ #line 1310 "ext/lexer/lexer.rl"
15391
15392
  {te = p+1;{
15392
15393
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
15393
15394
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -15418,174 +15419,174 @@ _eof_trans:
15418
15419
  }}
15419
15420
  break;
15420
15421
  case 57:
15421
- #line 1273 "ext/lexer/lexer.rl"
15422
+ #line 1276 "ext/lexer/lexer.rl"
15422
15423
  {
15423
15424
  if (lexer->herebody_s) {
15424
15425
  p = lexer->herebody_s;
15425
15426
  lexer->herebody_s = 0;
15426
15427
  }
15427
15428
  }
15428
- #line 1003 "ext/lexer/lexer.rl"
15429
+ #line 1006 "ext/lexer/lexer.rl"
15429
15430
  { lexer->newline_s = p; }
15430
15431
  break;
15431
15432
  case 30:
15432
- #line 1273 "ext/lexer/lexer.rl"
15433
+ #line 1276 "ext/lexer/lexer.rl"
15433
15434
  {
15434
15435
  if (lexer->herebody_s) {
15435
15436
  p = lexer->herebody_s;
15436
15437
  lexer->herebody_s = 0;
15437
15438
  }
15438
15439
  }
15439
- #line 1760 "ext/lexer/lexer.rl"
15440
+ #line 1763 "ext/lexer/lexer.rl"
15440
15441
  { tm = p; }
15441
15442
  break;
15442
15443
  case 32:
15443
- #line 1273 "ext/lexer/lexer.rl"
15444
+ #line 1276 "ext/lexer/lexer.rl"
15444
15445
  {
15445
15446
  if (lexer->herebody_s) {
15446
15447
  p = lexer->herebody_s;
15447
15448
  lexer->herebody_s = 0;
15448
15449
  }
15449
15450
  }
15450
- #line 1771 "ext/lexer/lexer.rl"
15451
+ #line 1774 "ext/lexer/lexer.rl"
15451
15452
  { tm = p; }
15452
15453
  break;
15453
15454
  case 34:
15454
- #line 1273 "ext/lexer/lexer.rl"
15455
+ #line 1276 "ext/lexer/lexer.rl"
15455
15456
  {
15456
15457
  if (lexer->herebody_s) {
15457
15458
  p = lexer->herebody_s;
15458
15459
  lexer->herebody_s = 0;
15459
15460
  }
15460
15461
  }
15461
- #line 1788 "ext/lexer/lexer.rl"
15462
+ #line 1791 "ext/lexer/lexer.rl"
15462
15463
  { tm = p; }
15463
15464
  break;
15464
15465
  case 202:
15465
- #line 1273 "ext/lexer/lexer.rl"
15466
+ #line 1276 "ext/lexer/lexer.rl"
15466
15467
  {
15467
15468
  if (lexer->herebody_s) {
15468
15469
  p = lexer->herebody_s;
15469
15470
  lexer->herebody_s = 0;
15470
15471
  }
15471
15472
  }
15472
- #line 1684 "ext/lexer/lexer.rl"
15473
+ #line 1687 "ext/lexer/lexer.rl"
15473
15474
  {te = p;p--;}
15474
15475
  break;
15475
15476
  case 221:
15476
- #line 1273 "ext/lexer/lexer.rl"
15477
+ #line 1276 "ext/lexer/lexer.rl"
15477
15478
  {
15478
15479
  if (lexer->herebody_s) {
15479
15480
  p = lexer->herebody_s;
15480
15481
  lexer->herebody_s = 0;
15481
15482
  }
15482
15483
  }
15483
- #line 1697 "ext/lexer/lexer.rl"
15484
+ #line 1700 "ext/lexer/lexer.rl"
15484
15485
  {te = p;p--;}
15485
15486
  break;
15486
15487
  case 229:
15487
- #line 1273 "ext/lexer/lexer.rl"
15488
+ #line 1276 "ext/lexer/lexer.rl"
15488
15489
  {
15489
15490
  if (lexer->herebody_s) {
15490
15491
  p = lexer->herebody_s;
15491
15492
  lexer->herebody_s = 0;
15492
15493
  }
15493
15494
  }
15494
- #line 1719 "ext/lexer/lexer.rl"
15495
+ #line 1722 "ext/lexer/lexer.rl"
15495
15496
  {te = p;p--;}
15496
15497
  break;
15497
15498
  case 33:
15498
- #line 1273 "ext/lexer/lexer.rl"
15499
+ #line 1276 "ext/lexer/lexer.rl"
15499
15500
  {
15500
15501
  if (lexer->herebody_s) {
15501
15502
  p = lexer->herebody_s;
15502
15503
  lexer->herebody_s = 0;
15503
15504
  }
15504
15505
  }
15505
- #line 1795 "ext/lexer/lexer.rl"
15506
+ #line 1798 "ext/lexer/lexer.rl"
15506
15507
  {te = p+1;{
15507
15508
  p = ts - 1;
15508
15509
  {cs = 769;goto _again;}
15509
15510
  }}
15510
15511
  break;
15511
15512
  case 260:
15512
- #line 1273 "ext/lexer/lexer.rl"
15513
+ #line 1276 "ext/lexer/lexer.rl"
15513
15514
  {
15514
15515
  if (lexer->herebody_s) {
15515
15516
  p = lexer->herebody_s;
15516
15517
  lexer->herebody_s = 0;
15517
15518
  }
15518
15519
  }
15519
- #line 1800 "ext/lexer/lexer.rl"
15520
+ #line 1803 "ext/lexer/lexer.rl"
15520
15521
  {te = p;p--;}
15521
15522
  break;
15522
15523
  case 252:
15523
- #line 1273 "ext/lexer/lexer.rl"
15524
+ #line 1276 "ext/lexer/lexer.rl"
15524
15525
  {
15525
15526
  if (lexer->herebody_s) {
15526
15527
  p = lexer->herebody_s;
15527
15528
  lexer->herebody_s = 0;
15528
15529
  }
15529
15530
  }
15530
- #line 1804 "ext/lexer/lexer.rl"
15531
+ #line 1807 "ext/lexer/lexer.rl"
15531
15532
  {te = p;p--;{ p--; {cs = 769;goto _again;} }}
15532
15533
  break;
15533
15534
  case 271:
15534
- #line 1273 "ext/lexer/lexer.rl"
15535
+ #line 1276 "ext/lexer/lexer.rl"
15535
15536
  {
15536
15537
  if (lexer->herebody_s) {
15537
15538
  p = lexer->herebody_s;
15538
15539
  lexer->herebody_s = 0;
15539
15540
  }
15540
15541
  }
15541
- #line 1855 "ext/lexer/lexer.rl"
15542
+ #line 1858 "ext/lexer/lexer.rl"
15542
15543
  {te = p;p--;}
15543
15544
  break;
15544
15545
  case 283:
15545
- #line 1273 "ext/lexer/lexer.rl"
15546
+ #line 1276 "ext/lexer/lexer.rl"
15546
15547
  {
15547
15548
  if (lexer->herebody_s) {
15548
15549
  p = lexer->herebody_s;
15549
15550
  lexer->herebody_s = 0;
15550
15551
  }
15551
15552
  }
15552
- #line 1870 "ext/lexer/lexer.rl"
15553
+ #line 1873 "ext/lexer/lexer.rl"
15553
15554
  {te = p;p--;}
15554
15555
  break;
15555
15556
  case 279:
15556
- #line 1273 "ext/lexer/lexer.rl"
15557
+ #line 1276 "ext/lexer/lexer.rl"
15557
15558
  {
15558
15559
  if (lexer->herebody_s) {
15559
15560
  p = lexer->herebody_s;
15560
15561
  lexer->herebody_s = 0;
15561
15562
  }
15562
15563
  }
15563
- #line 1872 "ext/lexer/lexer.rl"
15564
+ #line 1875 "ext/lexer/lexer.rl"
15564
15565
  {te = p;p--;{ p--; {cs = 769;goto _again;} }}
15565
15566
  break;
15566
15567
  case 58:
15567
- #line 1273 "ext/lexer/lexer.rl"
15568
+ #line 1276 "ext/lexer/lexer.rl"
15568
15569
  {
15569
15570
  if (lexer->herebody_s) {
15570
15571
  p = lexer->herebody_s;
15571
15572
  lexer->herebody_s = 0;
15572
15573
  }
15573
15574
  }
15574
- #line 1880 "ext/lexer/lexer.rl"
15575
+ #line 1883 "ext/lexer/lexer.rl"
15575
15576
  {te = p+1;{
15576
15577
  emit_token(lexer, tUNARY_NUM, tok(lexer, ts, ts + 1), ts, ts + 1);
15577
15578
  p--; cs = 769; {p++; goto _out; }
15578
15579
  }}
15579
15580
  break;
15580
15581
  case 49:
15581
- #line 1273 "ext/lexer/lexer.rl"
15582
+ #line 1276 "ext/lexer/lexer.rl"
15582
15583
  {
15583
15584
  if (lexer->herebody_s) {
15584
15585
  p = lexer->herebody_s;
15585
15586
  lexer->herebody_s = 0;
15586
15587
  }
15587
15588
  }
15588
- #line 2112 "ext/lexer/lexer.rl"
15589
+ #line 2115 "ext/lexer/lexer.rl"
15589
15590
  {te = p+1;{
15590
15591
  emit_token(lexer, tIDENTIFIER, ident_tok, ident_ts, ident_te);
15591
15592
  p = ident_te - 1;
@@ -15600,36 +15601,36 @@ _eof_trans:
15600
15601
  }}
15601
15602
  break;
15602
15603
  case 301:
15603
- #line 1273 "ext/lexer/lexer.rl"
15604
+ #line 1276 "ext/lexer/lexer.rl"
15604
15605
  {
15605
15606
  if (lexer->herebody_s) {
15606
15607
  p = lexer->herebody_s;
15607
15608
  lexer->herebody_s = 0;
15608
15609
  }
15609
15610
  }
15610
- #line 2125 "ext/lexer/lexer.rl"
15611
+ #line 2128 "ext/lexer/lexer.rl"
15611
15612
  {te = p;p--;}
15612
15613
  break;
15613
15614
  case 373:
15614
- #line 1273 "ext/lexer/lexer.rl"
15615
+ #line 1276 "ext/lexer/lexer.rl"
15615
15616
  {
15616
15617
  if (lexer->herebody_s) {
15617
15618
  p = lexer->herebody_s;
15618
15619
  lexer->herebody_s = 0;
15619
15620
  }
15620
15621
  }
15621
- #line 2143 "ext/lexer/lexer.rl"
15622
+ #line 2146 "ext/lexer/lexer.rl"
15622
15623
  {te = p;p--;}
15623
15624
  break;
15624
15625
  case 369:
15625
- #line 1273 "ext/lexer/lexer.rl"
15626
+ #line 1276 "ext/lexer/lexer.rl"
15626
15627
  {
15627
15628
  if (lexer->herebody_s) {
15628
15629
  p = lexer->herebody_s;
15629
15630
  lexer->herebody_s = 0;
15630
15631
  }
15631
15632
  }
15632
- #line 2145 "ext/lexer/lexer.rl"
15633
+ #line 2148 "ext/lexer/lexer.rl"
15633
15634
  {te = p;p--;{
15634
15635
  if (lexer->in_kwarg) {
15635
15636
  p--; {cs = 769;goto _again;}
@@ -15639,76 +15640,76 @@ _eof_trans:
15639
15640
  }}
15640
15641
  break;
15641
15642
  case 382:
15642
- #line 1273 "ext/lexer/lexer.rl"
15643
+ #line 1276 "ext/lexer/lexer.rl"
15643
15644
  {
15644
15645
  if (lexer->herebody_s) {
15645
15646
  p = lexer->herebody_s;
15646
15647
  lexer->herebody_s = 0;
15647
15648
  }
15648
15649
  }
15649
- #line 2166 "ext/lexer/lexer.rl"
15650
+ #line 2169 "ext/lexer/lexer.rl"
15650
15651
  {te = p;p--;}
15651
15652
  break;
15652
15653
  case 379:
15653
- #line 1273 "ext/lexer/lexer.rl"
15654
+ #line 1276 "ext/lexer/lexer.rl"
15654
15655
  {
15655
15656
  if (lexer->herebody_s) {
15656
15657
  p = lexer->herebody_s;
15657
15658
  lexer->herebody_s = 0;
15658
15659
  }
15659
15660
  }
15660
- #line 2168 "ext/lexer/lexer.rl"
15661
+ #line 2171 "ext/lexer/lexer.rl"
15661
15662
  {te = p;p--;{ {cs = 183;goto _again;} }}
15662
15663
  break;
15663
15664
  case 418:
15664
- #line 1273 "ext/lexer/lexer.rl"
15665
+ #line 1276 "ext/lexer/lexer.rl"
15665
15666
  {
15666
15667
  if (lexer->herebody_s) {
15667
15668
  p = lexer->herebody_s;
15668
15669
  lexer->herebody_s = 0;
15669
15670
  }
15670
15671
  }
15671
- #line 2364 "ext/lexer/lexer.rl"
15672
+ #line 2367 "ext/lexer/lexer.rl"
15672
15673
  {te = p;p--;{ emit_token(lexer, tDOT, tok(lexer, ts, ts + 1), ts, ts + 1);
15673
15674
  emit_token(lexer, tCOLON, tok(lexer, ts + 1, ts + 2), ts + 1, ts + 2);
15674
15675
  p = p - (te - ts) + 2;
15675
15676
  cs = 447; {p++; goto _out; } }}
15676
15677
  break;
15677
15678
  case 476:
15678
- #line 1273 "ext/lexer/lexer.rl"
15679
+ #line 1276 "ext/lexer/lexer.rl"
15679
15680
  {
15680
15681
  if (lexer->herebody_s) {
15681
15682
  p = lexer->herebody_s;
15682
15683
  lexer->herebody_s = 0;
15683
15684
  }
15684
15685
  }
15685
- #line 2466 "ext/lexer/lexer.rl"
15686
+ #line 2469 "ext/lexer/lexer.rl"
15686
15687
  {te = p;p--;}
15687
15688
  break;
15688
15689
  case 399:
15689
- #line 1273 "ext/lexer/lexer.rl"
15690
+ #line 1276 "ext/lexer/lexer.rl"
15690
15691
  {
15691
15692
  if (lexer->herebody_s) {
15692
15693
  p = lexer->herebody_s;
15693
15694
  lexer->herebody_s = 0;
15694
15695
  }
15695
15696
  }
15696
- #line 2468 "ext/lexer/lexer.rl"
15697
+ #line 2471 "ext/lexer/lexer.rl"
15697
15698
  {te = p;p--;{ {cs = 948;goto _again;} }}
15698
15699
  break;
15699
15700
  case 94:
15700
- #line 1273 "ext/lexer/lexer.rl"
15701
+ #line 1276 "ext/lexer/lexer.rl"
15701
15702
  {
15702
15703
  if (lexer->herebody_s) {
15703
15704
  p = lexer->herebody_s;
15704
15705
  lexer->herebody_s = 0;
15705
15706
  }
15706
15707
  }
15707
- #line 2514 "ext/lexer/lexer.rl"
15708
+ #line 2517 "ext/lexer/lexer.rl"
15708
15709
  {te = p;p--;}
15709
15710
  break;
15710
15711
  case 251:
15711
- #line 1400 "ext/lexer/lexer.rl"
15712
+ #line 1403 "ext/lexer/lexer.rl"
15712
15713
  {
15713
15714
  stack_state_push(&lexer->cond, 0);
15714
15715
  stack_state_push(&lexer->cmdarg, 0);
@@ -15718,7 +15719,7 @@ _eof_trans:
15718
15719
  literal_start_interp_brace(current_literal);
15719
15720
  }
15720
15721
  }
15721
- #line 1745 "ext/lexer/lexer.rl"
15722
+ #line 1748 "ext/lexer/lexer.rl"
15722
15723
  {te = p;p--;{
15723
15724
  VALUE val = array_last(lexer->lambda_stack);
15724
15725
  if (val != Qnil && NUM2INT(val) == lexer->paren_nest) {
@@ -15731,7 +15732,7 @@ _eof_trans:
15731
15732
  }}
15732
15733
  break;
15733
15734
  case 273:
15734
- #line 1400 "ext/lexer/lexer.rl"
15735
+ #line 1403 "ext/lexer/lexer.rl"
15735
15736
  {
15736
15737
  stack_state_push(&lexer->cond, 0);
15737
15738
  stack_state_push(&lexer->cmdarg, 0);
@@ -15741,7 +15742,7 @@ _eof_trans:
15741
15742
  literal_start_interp_brace(current_literal);
15742
15743
  }
15743
15744
  }
15744
- #line 1842 "ext/lexer/lexer.rl"
15745
+ #line 1845 "ext/lexer/lexer.rl"
15745
15746
  {te = p;p--;{
15746
15747
  VALUE val = array_last(lexer->lambda_stack);
15747
15748
  if (val != Qnil && NUM2INT(val) == lexer->paren_nest) {
@@ -15754,7 +15755,7 @@ _eof_trans:
15754
15755
  }}
15755
15756
  break;
15756
15757
  case 365:
15757
- #line 1400 "ext/lexer/lexer.rl"
15758
+ #line 1403 "ext/lexer/lexer.rl"
15758
15759
  {
15759
15760
  stack_state_push(&lexer->cond, 0);
15760
15761
  stack_state_push(&lexer->cmdarg, 0);
@@ -15764,7 +15765,7 @@ _eof_trans:
15764
15765
  literal_start_interp_brace(current_literal);
15765
15766
  }
15766
15767
  }
15767
- #line 2046 "ext/lexer/lexer.rl"
15768
+ #line 2049 "ext/lexer/lexer.rl"
15768
15769
  {te = p;p--;{
15769
15770
  VALUE val = array_last(lexer->lambda_stack);
15770
15771
  if (val != Qnil && NUM2INT(val) == lexer->paren_nest) {
@@ -15777,7 +15778,7 @@ _eof_trans:
15777
15778
  }}
15778
15779
  break;
15779
15780
  case 488:
15780
- #line 1400 "ext/lexer/lexer.rl"
15781
+ #line 1403 "ext/lexer/lexer.rl"
15781
15782
  {
15782
15783
  stack_state_push(&lexer->cond, 0);
15783
15784
  stack_state_push(&lexer->cmdarg, 0);
@@ -15787,7 +15788,7 @@ _eof_trans:
15787
15788
  literal_start_interp_brace(current_literal);
15788
15789
  }
15789
15790
  }
15790
- #line 2182 "ext/lexer/lexer.rl"
15791
+ #line 2185 "ext/lexer/lexer.rl"
15791
15792
  {te = p;p--;{
15792
15793
  VALUE val = array_last(lexer->lambda_stack);
15793
15794
  if (val != Qnil && NUM2INT(val) == lexer->paren_nest) {
@@ -15800,7 +15801,7 @@ _eof_trans:
15800
15801
  }}
15801
15802
  break;
15802
15803
  case 489:
15803
- #line 1410 "ext/lexer/lexer.rl"
15804
+ #line 1413 "ext/lexer/lexer.rl"
15804
15805
  {
15805
15806
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
15806
15807
  if (current_literal != NULL) {
@@ -15823,7 +15824,7 @@ _eof_trans:
15823
15824
  }
15824
15825
  }
15825
15826
  }
15826
- #line 2400 "ext/lexer/lexer.rl"
15827
+ #line 2403 "ext/lexer/lexer.rl"
15827
15828
  {te = p;p--;{
15828
15829
  emit(tRCURLY);
15829
15830
 
@@ -15845,94 +15846,94 @@ _eof_trans:
15845
15846
  }}
15846
15847
  break;
15847
15848
  case 60:
15848
- #line 1538 "ext/lexer/lexer.rl"
15849
+ #line 1541 "ext/lexer/lexer.rl"
15849
15850
  { sharp_s = p - 1; }
15850
- #line 1539 "ext/lexer/lexer.rl"
15851
+ #line 1542 "ext/lexer/lexer.rl"
15851
15852
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15852
15853
  break;
15853
15854
  case 64:
15854
- #line 1539 "ext/lexer/lexer.rl"
15855
+ #line 1542 "ext/lexer/lexer.rl"
15855
15856
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15856
- #line 1003 "ext/lexer/lexer.rl"
15857
+ #line 1006 "ext/lexer/lexer.rl"
15857
15858
  { lexer->newline_s = p; }
15858
15859
  break;
15859
15860
  case 205:
15860
- #line 1539 "ext/lexer/lexer.rl"
15861
+ #line 1542 "ext/lexer/lexer.rl"
15861
15862
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15862
- #line 1684 "ext/lexer/lexer.rl"
15863
+ #line 1687 "ext/lexer/lexer.rl"
15863
15864
  {te = p;p--;}
15864
15865
  break;
15865
15866
  case 220:
15866
- #line 1539 "ext/lexer/lexer.rl"
15867
+ #line 1542 "ext/lexer/lexer.rl"
15867
15868
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15868
- #line 1697 "ext/lexer/lexer.rl"
15869
+ #line 1700 "ext/lexer/lexer.rl"
15869
15870
  {te = p;p--;}
15870
15871
  break;
15871
15872
  case 232:
15872
- #line 1539 "ext/lexer/lexer.rl"
15873
+ #line 1542 "ext/lexer/lexer.rl"
15873
15874
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15874
- #line 1719 "ext/lexer/lexer.rl"
15875
+ #line 1722 "ext/lexer/lexer.rl"
15875
15876
  {te = p;p--;}
15876
15877
  break;
15877
15878
  case 254:
15878
- #line 1539 "ext/lexer/lexer.rl"
15879
+ #line 1542 "ext/lexer/lexer.rl"
15879
15880
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15880
- #line 1802 "ext/lexer/lexer.rl"
15881
+ #line 1805 "ext/lexer/lexer.rl"
15881
15882
  {te = p;p--;{ {cs = 769;goto _again;} }}
15882
15883
  break;
15883
15884
  case 269:
15884
- #line 1539 "ext/lexer/lexer.rl"
15885
+ #line 1542 "ext/lexer/lexer.rl"
15885
15886
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15886
- #line 1855 "ext/lexer/lexer.rl"
15887
+ #line 1858 "ext/lexer/lexer.rl"
15887
15888
  {te = p;p--;}
15888
15889
  break;
15889
15890
  case 281:
15890
- #line 1539 "ext/lexer/lexer.rl"
15891
+ #line 1542 "ext/lexer/lexer.rl"
15891
15892
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15892
- #line 1870 "ext/lexer/lexer.rl"
15893
+ #line 1873 "ext/lexer/lexer.rl"
15893
15894
  {te = p;p--;}
15894
15895
  break;
15895
15896
  case 307:
15896
- #line 1539 "ext/lexer/lexer.rl"
15897
+ #line 1542 "ext/lexer/lexer.rl"
15897
15898
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15898
- #line 2125 "ext/lexer/lexer.rl"
15899
+ #line 2128 "ext/lexer/lexer.rl"
15899
15900
  {te = p;p--;}
15900
15901
  break;
15901
15902
  case 371:
15902
- #line 1539 "ext/lexer/lexer.rl"
15903
+ #line 1542 "ext/lexer/lexer.rl"
15903
15904
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15904
- #line 2143 "ext/lexer/lexer.rl"
15905
+ #line 2146 "ext/lexer/lexer.rl"
15905
15906
  {te = p;p--;}
15906
15907
  break;
15907
15908
  case 381:
15908
- #line 1539 "ext/lexer/lexer.rl"
15909
+ #line 1542 "ext/lexer/lexer.rl"
15909
15910
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15910
- #line 2166 "ext/lexer/lexer.rl"
15911
+ #line 2169 "ext/lexer/lexer.rl"
15911
15912
  {te = p;p--;}
15912
15913
  break;
15913
15914
  case 403:
15914
- #line 1539 "ext/lexer/lexer.rl"
15915
+ #line 1542 "ext/lexer/lexer.rl"
15915
15916
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15916
- #line 2466 "ext/lexer/lexer.rl"
15917
+ #line 2469 "ext/lexer/lexer.rl"
15917
15918
  {te = p;p--;}
15918
15919
  break;
15919
15920
  case 96:
15920
- #line 1539 "ext/lexer/lexer.rl"
15921
+ #line 1542 "ext/lexer/lexer.rl"
15921
15922
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15922
- #line 2514 "ext/lexer/lexer.rl"
15923
+ #line 2517 "ext/lexer/lexer.rl"
15923
15924
  {te = p;p--;}
15924
15925
  break;
15925
15926
  case 226:
15926
- #line 1557 "ext/lexer/lexer.rl"
15927
+ #line 1560 "ext/lexer/lexer.rl"
15927
15928
  { tm = p; }
15928
- #line 1710 "ext/lexer/lexer.rl"
15929
+ #line 1713 "ext/lexer/lexer.rl"
15929
15930
  {te = p;p--;{ emit_token(lexer, tFID, tok(lexer, ts, tm), ts, tm);
15930
15931
  cs = (arg_or_cmdarg(command_state)); p = tm - 1; {p++; goto _out; } }}
15931
15932
  break;
15932
15933
  case 319:
15933
- #line 1557 "ext/lexer/lexer.rl"
15934
+ #line 1560 "ext/lexer/lexer.rl"
15934
15935
  { tm = p; }
15935
- #line 2001 "ext/lexer/lexer.rl"
15936
+ #line 2004 "ext/lexer/lexer.rl"
15936
15937
  {te = p;p--;{
15937
15938
  emit_token(lexer, tSYMBOL, tok(lexer, ts + 1, tm), ts, tm);
15938
15939
  p = tm - 1;
@@ -15940,13 +15941,13 @@ _eof_trans:
15940
15941
  }}
15941
15942
  break;
15942
15943
  case 292:
15943
- #line 1557 "ext/lexer/lexer.rl"
15944
+ #line 1560 "ext/lexer/lexer.rl"
15944
15945
  { tm = p; }
15945
- #line 2105 "ext/lexer/lexer.rl"
15946
+ #line 2108 "ext/lexer/lexer.rl"
15946
15947
  {te = p;p--;{ p = ts - 1; {cs = 769;goto _again;} }}
15947
15948
  break;
15948
15949
  case 396:
15949
- #line 1557 "ext/lexer/lexer.rl"
15950
+ #line 1560 "ext/lexer/lexer.rl"
15950
15951
  { tm = p; }
15951
15952
  #line 1 "NONE"
15952
15953
  { switch( act ) {
@@ -16140,16 +16141,16 @@ _eof_trans:
16140
16141
  }
16141
16142
  break;
16142
16143
  case 227:
16143
- #line 1558 "ext/lexer/lexer.rl"
16144
+ #line 1561 "ext/lexer/lexer.rl"
16144
16145
  { tm = p - 2; }
16145
- #line 1710 "ext/lexer/lexer.rl"
16146
+ #line 1713 "ext/lexer/lexer.rl"
16146
16147
  {te = p;p--;{ emit_token(lexer, tFID, tok(lexer, ts, tm), ts, tm);
16147
16148
  cs = (arg_or_cmdarg(command_state)); p = tm - 1; {p++; goto _out; } }}
16148
16149
  break;
16149
16150
  case 320:
16150
- #line 1558 "ext/lexer/lexer.rl"
16151
+ #line 1561 "ext/lexer/lexer.rl"
16151
16152
  { tm = p - 2; }
16152
- #line 2001 "ext/lexer/lexer.rl"
16153
+ #line 2004 "ext/lexer/lexer.rl"
16153
16154
  {te = p;p--;{
16154
16155
  emit_token(lexer, tSYMBOL, tok(lexer, ts + 1, tm), ts, tm);
16155
16156
  p = tm - 1;
@@ -16157,15 +16158,15 @@ _eof_trans:
16157
16158
  }}
16158
16159
  break;
16159
16160
  case 294:
16160
- #line 1558 "ext/lexer/lexer.rl"
16161
+ #line 1561 "ext/lexer/lexer.rl"
16161
16162
  { tm = p - 2; }
16162
- #line 2105 "ext/lexer/lexer.rl"
16163
+ #line 2108 "ext/lexer/lexer.rl"
16163
16164
  {te = p;p--;{ p = ts - 1; {cs = 769;goto _again;} }}
16164
16165
  break;
16165
16166
  case 397:
16166
- #line 1558 "ext/lexer/lexer.rl"
16167
+ #line 1561 "ext/lexer/lexer.rl"
16167
16168
  { tm = p - 2; }
16168
- #line 2375 "ext/lexer/lexer.rl"
16169
+ #line 2378 "ext/lexer/lexer.rl"
16169
16170
  {te = p;p--;{
16170
16171
  if (tm == te) {
16171
16172
  emit(tFID);
@@ -16177,9 +16178,9 @@ _eof_trans:
16177
16178
  }}
16178
16179
  break;
16179
16180
  case 321:
16180
- #line 1563 "ext/lexer/lexer.rl"
16181
+ #line 1566 "ext/lexer/lexer.rl"
16181
16182
  { tm = p; }
16182
- #line 2001 "ext/lexer/lexer.rl"
16183
+ #line 2004 "ext/lexer/lexer.rl"
16183
16184
  {te = p;p--;{
16184
16185
  emit_token(lexer, tSYMBOL, tok(lexer, ts + 1, tm), ts, tm);
16185
16186
  p = tm - 1;
@@ -16187,15 +16188,15 @@ _eof_trans:
16187
16188
  }}
16188
16189
  break;
16189
16190
  case 295:
16190
- #line 1563 "ext/lexer/lexer.rl"
16191
+ #line 1566 "ext/lexer/lexer.rl"
16191
16192
  { tm = p; }
16192
- #line 2105 "ext/lexer/lexer.rl"
16193
+ #line 2108 "ext/lexer/lexer.rl"
16193
16194
  {te = p;p--;{ p = ts - 1; {cs = 769;goto _again;} }}
16194
16195
  break;
16195
16196
  case 322:
16196
- #line 1564 "ext/lexer/lexer.rl"
16197
+ #line 1567 "ext/lexer/lexer.rl"
16197
16198
  { tm = p - 2; }
16198
- #line 2001 "ext/lexer/lexer.rl"
16199
+ #line 2004 "ext/lexer/lexer.rl"
16199
16200
  {te = p;p--;{
16200
16201
  emit_token(lexer, tSYMBOL, tok(lexer, ts + 1, tm), ts, tm);
16201
16202
  p = tm - 1;
@@ -16203,15 +16204,15 @@ _eof_trans:
16203
16204
  }}
16204
16205
  break;
16205
16206
  case 296:
16206
- #line 1564 "ext/lexer/lexer.rl"
16207
+ #line 1567 "ext/lexer/lexer.rl"
16207
16208
  { tm = p - 2; }
16208
- #line 2105 "ext/lexer/lexer.rl"
16209
+ #line 2108 "ext/lexer/lexer.rl"
16209
16210
  {te = p;p--;{ p = ts - 1; {cs = 769;goto _again;} }}
16210
16211
  break;
16211
16212
  case 326:
16212
- #line 1565 "ext/lexer/lexer.rl"
16213
+ #line 1568 "ext/lexer/lexer.rl"
16213
16214
  { tm = p - 2; }
16214
- #line 2001 "ext/lexer/lexer.rl"
16215
+ #line 2004 "ext/lexer/lexer.rl"
16215
16216
  {te = p;p--;{
16216
16217
  emit_token(lexer, tSYMBOL, tok(lexer, ts + 1, tm), ts, tm);
16217
16218
  p = tm - 1;
@@ -16219,15 +16220,15 @@ _eof_trans:
16219
16220
  }}
16220
16221
  break;
16221
16222
  case 299:
16222
- #line 1565 "ext/lexer/lexer.rl"
16223
+ #line 1568 "ext/lexer/lexer.rl"
16223
16224
  { tm = p - 2; }
16224
- #line 2105 "ext/lexer/lexer.rl"
16225
+ #line 2108 "ext/lexer/lexer.rl"
16225
16226
  {te = p;p--;{ p = ts - 1; {cs = 769;goto _again;} }}
16226
16227
  break;
16227
16228
  case 325:
16228
- #line 1566 "ext/lexer/lexer.rl"
16229
+ #line 1569 "ext/lexer/lexer.rl"
16229
16230
  { tm = p - 2; }
16230
- #line 2001 "ext/lexer/lexer.rl"
16231
+ #line 2004 "ext/lexer/lexer.rl"
16231
16232
  {te = p;p--;{
16232
16233
  emit_token(lexer, tSYMBOL, tok(lexer, ts + 1, tm), ts, tm);
16233
16234
  p = tm - 1;
@@ -16235,7 +16236,7 @@ _eof_trans:
16235
16236
  }}
16236
16237
  break;
16237
16238
  case 298:
16238
- #line 1566 "ext/lexer/lexer.rl"
16239
+ #line 1569 "ext/lexer/lexer.rl"
16239
16240
  { tm = p - 2; }
16240
16241
  #line 1 "NONE"
16241
16242
  { switch( act ) {
@@ -16282,9 +16283,9 @@ _eof_trans:
16282
16283
  }
16283
16284
  break;
16284
16285
  case 323:
16285
- #line 1567 "ext/lexer/lexer.rl"
16286
+ #line 1570 "ext/lexer/lexer.rl"
16286
16287
  { tm = p - 3; }
16287
- #line 2001 "ext/lexer/lexer.rl"
16288
+ #line 2004 "ext/lexer/lexer.rl"
16288
16289
  {te = p;p--;{
16289
16290
  emit_token(lexer, tSYMBOL, tok(lexer, ts + 1, tm), ts, tm);
16290
16291
  p = tm - 1;
@@ -16292,15 +16293,15 @@ _eof_trans:
16292
16293
  }}
16293
16294
  break;
16294
16295
  case 297:
16295
- #line 1567 "ext/lexer/lexer.rl"
16296
+ #line 1570 "ext/lexer/lexer.rl"
16296
16297
  { tm = p - 3; }
16297
- #line 2105 "ext/lexer/lexer.rl"
16298
+ #line 2108 "ext/lexer/lexer.rl"
16298
16299
  {te = p;p--;{ p = ts - 1; {cs = 769;goto _again;} }}
16299
16300
  break;
16300
16301
  case 324:
16301
- #line 1572 "ext/lexer/lexer.rl"
16302
+ #line 1575 "ext/lexer/lexer.rl"
16302
16303
  { tm = p - 2; }
16303
- #line 2001 "ext/lexer/lexer.rl"
16304
+ #line 2004 "ext/lexer/lexer.rl"
16304
16305
  {te = p;p--;{
16305
16306
  emit_token(lexer, tSYMBOL, tok(lexer, ts + 1, tm), ts, tm);
16306
16307
  p = tm - 1;
@@ -16308,9 +16309,9 @@ _eof_trans:
16308
16309
  }}
16309
16310
  break;
16310
16311
  case 471:
16311
- #line 1576 "ext/lexer/lexer.rl"
16312
+ #line 1579 "ext/lexer/lexer.rl"
16312
16313
  { tm = p - 2; }
16313
- #line 2354 "ext/lexer/lexer.rl"
16314
+ #line 2357 "ext/lexer/lexer.rl"
16314
16315
  {te = p;p--;{
16315
16316
  emit_token(lexer, tCONSTANT, tok(lexer, ts, tm), ts, tm);
16316
16317
  p = tm - 1;
@@ -16318,46 +16319,46 @@ _eof_trans:
16318
16319
  }}
16319
16320
  break;
16320
16321
  case 250:
16321
- #line 1579 "ext/lexer/lexer.rl"
16322
+ #line 1582 "ext/lexer/lexer.rl"
16322
16323
  {
16323
16324
  stack_state_push(&lexer->cond, 0);
16324
16325
  stack_state_push(&lexer->cmdarg, 0);
16325
16326
  }
16326
- #line 1740 "ext/lexer/lexer.rl"
16327
+ #line 1743 "ext/lexer/lexer.rl"
16327
16328
  {te = p;p--;{
16328
16329
  emit_token(lexer, tLBRACK, rb_str_new2("["), te - 1, te);
16329
16330
  cs = 537; {p++; goto _out; }
16330
16331
  }}
16331
16332
  break;
16332
16333
  case 358:
16333
- #line 1579 "ext/lexer/lexer.rl"
16334
+ #line 1582 "ext/lexer/lexer.rl"
16334
16335
  {
16335
16336
  stack_state_push(&lexer->cond, 0);
16336
16337
  stack_state_push(&lexer->cmdarg, 0);
16337
16338
  }
16338
- #line 2057 "ext/lexer/lexer.rl"
16339
+ #line 2060 "ext/lexer/lexer.rl"
16339
16340
  {te = p;p--;{
16340
16341
  emit_token(lexer, tLBRACK, tok(lexer, ts, te), ts, te);
16341
16342
  {p++; goto _out; }
16342
16343
  }}
16343
16344
  break;
16344
16345
  case 474:
16345
- #line 1579 "ext/lexer/lexer.rl"
16346
+ #line 1582 "ext/lexer/lexer.rl"
16346
16347
  {
16347
16348
  stack_state_push(&lexer->cond, 0);
16348
16349
  stack_state_push(&lexer->cmdarg, 0);
16349
16350
  }
16350
- #line 2460 "ext/lexer/lexer.rl"
16351
+ #line 2463 "ext/lexer/lexer.rl"
16351
16352
  {te = p;p--;{ emit(tLBRACK2); cs = 537; {p++; goto _out; } }}
16352
16353
  break;
16353
16354
  case 242:
16354
- #line 1584 "ext/lexer/lexer.rl"
16355
+ #line 1587 "ext/lexer/lexer.rl"
16355
16356
  {
16356
16357
  stack_state_push(&lexer->cond, 0);
16357
16358
  stack_state_push(&lexer->cmdarg, 0);
16358
16359
  lexer->paren_nest += 1;
16359
16360
  }
16360
- #line 1728 "ext/lexer/lexer.rl"
16361
+ #line 1731 "ext/lexer/lexer.rl"
16361
16362
  {te = p;p--;{
16362
16363
  if (lexer->version == 18) {
16363
16364
  emit_token(lexer, tLPAREN2, rb_str_new2("("), te - 1, te);
@@ -16369,23 +16370,23 @@ _eof_trans:
16369
16370
  }}
16370
16371
  break;
16371
16372
  case 255:
16372
- #line 1584 "ext/lexer/lexer.rl"
16373
+ #line 1587 "ext/lexer/lexer.rl"
16373
16374
  {
16374
16375
  stack_state_push(&lexer->cond, 0);
16375
16376
  stack_state_push(&lexer->cmdarg, 0);
16376
16377
  lexer->paren_nest += 1;
16377
16378
  }
16378
- #line 1738 "ext/lexer/lexer.rl"
16379
+ #line 1741 "ext/lexer/lexer.rl"
16379
16380
  {te = p;p--;{ emit(tLPAREN2); cs = 537; {p++; goto _out; } }}
16380
16381
  break;
16381
16382
  case 263:
16382
- #line 1584 "ext/lexer/lexer.rl"
16383
+ #line 1587 "ext/lexer/lexer.rl"
16383
16384
  {
16384
16385
  stack_state_push(&lexer->cond, 0);
16385
16386
  stack_state_push(&lexer->cmdarg, 0);
16386
16387
  lexer->paren_nest += 1;
16387
16388
  }
16388
- #line 1813 "ext/lexer/lexer.rl"
16389
+ #line 1816 "ext/lexer/lexer.rl"
16389
16390
  {te = p;p--;{
16390
16391
  emit_token(lexer, tLPAREN_ARG, rb_str_new2("("), te - 1, te);
16391
16392
  if (lexer->version == 18) {
@@ -16396,35 +16397,35 @@ _eof_trans:
16396
16397
  }}
16397
16398
  break;
16398
16399
  case 312:
16399
- #line 1584 "ext/lexer/lexer.rl"
16400
+ #line 1587 "ext/lexer/lexer.rl"
16400
16401
  {
16401
16402
  stack_state_push(&lexer->cond, 0);
16402
16403
  stack_state_push(&lexer->cmdarg, 0);
16403
16404
  lexer->paren_nest += 1;
16404
16405
  }
16405
- #line 2062 "ext/lexer/lexer.rl"
16406
+ #line 2065 "ext/lexer/lexer.rl"
16406
16407
  {te = p;p--;{
16407
16408
  emit_token(lexer, tLPAREN, tok(lexer, ts, te), ts, te);
16408
16409
  {p++; goto _out; }
16409
16410
  }}
16410
16411
  break;
16411
16412
  case 409:
16412
- #line 1584 "ext/lexer/lexer.rl"
16413
+ #line 1587 "ext/lexer/lexer.rl"
16413
16414
  {
16414
16415
  stack_state_push(&lexer->cond, 0);
16415
16416
  stack_state_push(&lexer->cmdarg, 0);
16416
16417
  lexer->paren_nest += 1;
16417
16418
  }
16418
- #line 2397 "ext/lexer/lexer.rl"
16419
+ #line 2400 "ext/lexer/lexer.rl"
16419
16420
  {te = p;p--;{ emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
16420
16421
  cs = 537; {p++; goto _out; } }}
16421
16422
  break;
16422
16423
  case 410:
16423
- #line 1590 "ext/lexer/lexer.rl"
16424
+ #line 1593 "ext/lexer/lexer.rl"
16424
16425
  {
16425
16426
  lexer->paren_nest -= 1;
16426
16427
  }
16427
- #line 2420 "ext/lexer/lexer.rl"
16428
+ #line 2423 "ext/lexer/lexer.rl"
16428
16429
  {te = p;p--;{
16429
16430
  emit(tRPAREN);
16430
16431
 
@@ -16440,15 +16441,15 @@ _eof_trans:
16440
16441
  }}
16441
16442
  break;
16442
16443
  case 70:
16443
- #line 1919 "ext/lexer/lexer.rl"
16444
+ #line 1922 "ext/lexer/lexer.rl"
16444
16445
  { heredoc_e = p; }
16445
- #line 1003 "ext/lexer/lexer.rl"
16446
+ #line 1006 "ext/lexer/lexer.rl"
16446
16447
  { lexer->newline_s = p; }
16447
16448
  break;
16448
16449
  case 329:
16449
- #line 1920 "ext/lexer/lexer.rl"
16450
+ #line 1923 "ext/lexer/lexer.rl"
16450
16451
  { if (!lexer->herebody_s) lexer->herebody_s = p; }
16451
- #line 1920 "ext/lexer/lexer.rl"
16452
+ #line 1923 "ext/lexer/lexer.rl"
16452
16453
  {te = p;p--;{
16453
16454
 
16454
16455
  VALUE heredoc = tok(lexer, ts, heredoc_e);
@@ -16513,9 +16514,9 @@ _eof_trans:
16513
16514
  }}
16514
16515
  break;
16515
16516
  case 334:
16516
- #line 2014 "ext/lexer/lexer.rl"
16517
+ #line 2017 "ext/lexer/lexer.rl"
16517
16518
  { lexer->escape = Qnil; }
16518
- #line 2015 "ext/lexer/lexer.rl"
16519
+ #line 2018 "ext/lexer/lexer.rl"
16519
16520
  {te = p;p--;{
16520
16521
  VALUE value = lexer->escape;
16521
16522
  if (value == Qnil)
@@ -16530,9 +16531,9 @@ _eof_trans:
16530
16531
  }}
16531
16532
  break;
16532
16533
  case 361:
16533
- #line 2071 "ext/lexer/lexer.rl"
16534
+ #line 2074 "ext/lexer/lexer.rl"
16534
16535
  { tm = p; }
16535
- #line 2071 "ext/lexer/lexer.rl"
16536
+ #line 2074 "ext/lexer/lexer.rl"
16536
16537
  {te = p;p--;{
16537
16538
  emit_token(lexer, kRESCUE, tok(lexer, ts, tm), ts, tm);
16538
16539
  p = tm - 1;
@@ -16540,285 +16541,285 @@ _eof_trans:
16540
16541
  }}
16541
16542
  break;
16542
16543
  case 459:
16543
- #line 2257 "ext/lexer/lexer.rl"
16544
+ #line 2260 "ext/lexer/lexer.rl"
16544
16545
  { num_base = 16; num_digits_s = p; }
16545
- #line 2263 "ext/lexer/lexer.rl"
16546
+ #line 2266 "ext/lexer/lexer.rl"
16546
16547
  { num_suffix_s = p; }
16547
16548
  break;
16548
16549
  case 451:
16549
- #line 2258 "ext/lexer/lexer.rl"
16550
+ #line 2261 "ext/lexer/lexer.rl"
16550
16551
  { num_base = 10; num_digits_s = p; }
16551
- #line 2263 "ext/lexer/lexer.rl"
16552
+ #line 2266 "ext/lexer/lexer.rl"
16552
16553
  { num_suffix_s = p; }
16553
16554
  break;
16554
16555
  case 455:
16555
- #line 2259 "ext/lexer/lexer.rl"
16556
+ #line 2262 "ext/lexer/lexer.rl"
16556
16557
  { num_base = 8; num_digits_s = p; }
16557
- #line 2263 "ext/lexer/lexer.rl"
16558
+ #line 2266 "ext/lexer/lexer.rl"
16558
16559
  { num_suffix_s = p; }
16559
16560
  break;
16560
16561
  case 447:
16561
- #line 2260 "ext/lexer/lexer.rl"
16562
- { num_base = 2; num_digits_s = p; }
16563
16562
  #line 2263 "ext/lexer/lexer.rl"
16563
+ { num_base = 2; num_digits_s = p; }
16564
+ #line 2266 "ext/lexer/lexer.rl"
16564
16565
  { num_suffix_s = p; }
16565
16566
  break;
16566
16567
  case 466:
16567
- #line 2261 "ext/lexer/lexer.rl"
16568
+ #line 2264 "ext/lexer/lexer.rl"
16568
16569
  { num_base = 10; num_digits_s = ts; }
16569
- #line 2263 "ext/lexer/lexer.rl"
16570
+ #line 2266 "ext/lexer/lexer.rl"
16570
16571
  { num_suffix_s = p; }
16571
16572
  break;
16572
16573
  case 424:
16573
- #line 2262 "ext/lexer/lexer.rl"
16574
+ #line 2265 "ext/lexer/lexer.rl"
16574
16575
  { num_base = 8; num_digits_s = ts; }
16575
- #line 2263 "ext/lexer/lexer.rl"
16576
+ #line 2266 "ext/lexer/lexer.rl"
16576
16577
  { num_suffix_s = p; }
16577
16578
  break;
16578
16579
  case 468:
16579
- #line 2263 "ext/lexer/lexer.rl"
16580
+ #line 2266 "ext/lexer/lexer.rl"
16580
16581
  { num_suffix_s = p; }
16581
- #line 1077 "ext/lexer/lexer.rl"
16582
+ #line 1080 "ext/lexer/lexer.rl"
16582
16583
  { num_xfrm = emit_int; numeric_s = ts; }
16583
16584
  break;
16584
16585
  case 87:
16585
- #line 2490 "ext/lexer/lexer.rl"
16586
+ #line 2493 "ext/lexer/lexer.rl"
16586
16587
  { tm = p; }
16587
- #line 2490 "ext/lexer/lexer.rl"
16588
+ #line 2493 "ext/lexer/lexer.rl"
16588
16589
  {te = p+1;{ p = tm - 1; {cs = 769;goto _again;} }}
16589
16590
  break;
16590
16591
  case 8:
16591
16592
  #line 1 "NONE"
16592
16593
  {te = p+1;}
16593
- #line 1003 "ext/lexer/lexer.rl"
16594
+ #line 1006 "ext/lexer/lexer.rl"
16594
16595
  { lexer->newline_s = p; }
16595
16596
  break;
16596
16597
  case 439:
16597
16598
  #line 1 "NONE"
16598
16599
  {te = p+1;}
16599
- #line 2263 "ext/lexer/lexer.rl"
16600
+ #line 2266 "ext/lexer/lexer.rl"
16600
16601
  { num_suffix_s = p; }
16601
16602
  break;
16602
16603
  case 429:
16603
16604
  #line 1 "NONE"
16604
16605
  {te = p+1;}
16605
- #line 2331 "ext/lexer/lexer.rl"
16606
+ #line 2334 "ext/lexer/lexer.rl"
16606
16607
  { num_suffix_s = p; }
16607
16608
  break;
16608
16609
  case 211:
16609
16610
  #line 1 "NONE"
16610
16611
  {te = p+1;}
16611
- #line 1650 "ext/lexer/lexer.rl"
16612
+ #line 1653 "ext/lexer/lexer.rl"
16612
16613
  {act = 39;}
16613
16614
  break;
16614
16615
  case 198:
16615
16616
  #line 1 "NONE"
16616
16617
  {te = p+1;}
16617
- #line 1653 "ext/lexer/lexer.rl"
16618
+ #line 1656 "ext/lexer/lexer.rl"
16618
16619
  {act = 40;}
16619
16620
  break;
16620
16621
  case 194:
16621
16622
  #line 1 "NONE"
16622
16623
  {te = p+1;}
16623
- #line 1655 "ext/lexer/lexer.rl"
16624
+ #line 1658 "ext/lexer/lexer.rl"
16624
16625
  {act = 41;}
16625
16626
  break;
16626
16627
  case 26:
16627
16628
  #line 1 "NONE"
16628
16629
  {te = p+1;}
16629
- #line 1761 "ext/lexer/lexer.rl"
16630
+ #line 1764 "ext/lexer/lexer.rl"
16630
16631
  {act = 67;}
16631
16632
  break;
16632
16633
  case 244:
16633
16634
  #line 1 "NONE"
16634
16635
  {te = p+1;}
16635
- #line 1771 "ext/lexer/lexer.rl"
16636
+ #line 1774 "ext/lexer/lexer.rl"
16636
16637
  {act = 68;}
16637
16638
  break;
16638
16639
  case 27:
16639
16640
  #line 1 "NONE"
16640
16641
  {te = p+1;}
16641
- #line 1795 "ext/lexer/lexer.rl"
16642
+ #line 1798 "ext/lexer/lexer.rl"
16642
16643
  {act = 73;}
16643
16644
  break;
16644
16645
  case 237:
16645
16646
  #line 1 "NONE"
16646
16647
  {te = p+1;}
16647
- #line 1800 "ext/lexer/lexer.rl"
16648
+ #line 1803 "ext/lexer/lexer.rl"
16648
16649
  {act = 74;}
16649
16650
  break;
16650
16651
  case 264:
16651
16652
  #line 1 "NONE"
16652
16653
  {te = p+1;}
16653
- #line 1823 "ext/lexer/lexer.rl"
16654
+ #line 1826 "ext/lexer/lexer.rl"
16654
16655
  {act = 80;}
16655
16656
  break;
16656
16657
  case 45:
16657
16658
  #line 1 "NONE"
16658
16659
  {te = p+1;}
16659
- #line 1835 "ext/lexer/lexer.rl"
16660
+ #line 1838 "ext/lexer/lexer.rl"
16660
16661
  {act = 81;}
16661
16662
  break;
16662
16663
  case 285:
16663
16664
  #line 1 "NONE"
16664
16665
  {te = p+1;}
16665
- #line 1865 "ext/lexer/lexer.rl"
16666
+ #line 1868 "ext/lexer/lexer.rl"
16666
16667
  {act = 88;}
16667
16668
  break;
16668
16669
  case 274:
16669
16670
  #line 1 "NONE"
16670
16671
  {te = p+1;}
16671
- #line 1868 "ext/lexer/lexer.rl"
16672
+ #line 1871 "ext/lexer/lexer.rl"
16672
16673
  {act = 89;}
16673
16674
  break;
16674
16675
  case 288:
16675
16676
  #line 1 "NONE"
16676
16677
  {te = p+1;}
16677
- #line 2068 "ext/lexer/lexer.rl"
16678
+ #line 2071 "ext/lexer/lexer.rl"
16678
16679
  {act = 113;}
16679
16680
  break;
16680
16681
  case 360:
16681
16682
  #line 1 "NONE"
16682
16683
  {te = p+1;}
16683
- #line 2071 "ext/lexer/lexer.rl"
16684
+ #line 2074 "ext/lexer/lexer.rl"
16684
16685
  {act = 114;}
16685
16686
  break;
16686
16687
  case 359:
16687
16688
  #line 1 "NONE"
16688
16689
  {te = p+1;}
16689
- #line 2078 "ext/lexer/lexer.rl"
16690
+ #line 2081 "ext/lexer/lexer.rl"
16690
16691
  {act = 115;}
16691
16692
  break;
16692
16693
  case 72:
16693
16694
  #line 1 "NONE"
16694
16695
  {te = p+1;}
16695
- #line 2105 "ext/lexer/lexer.rl"
16696
+ #line 2108 "ext/lexer/lexer.rl"
16696
16697
  {act = 117;}
16697
16698
  break;
16698
16699
  case 286:
16699
16700
  #line 1 "NONE"
16700
16701
  {te = p+1;}
16701
- #line 1594 "ext/lexer/lexer.rl"
16702
+ #line 1597 "ext/lexer/lexer.rl"
16702
16703
  {act = 118;}
16703
16704
  break;
16704
16705
  case 289:
16705
16706
  #line 1 "NONE"
16706
16707
  {te = p+1;}
16707
- #line 2137 "ext/lexer/lexer.rl"
16708
+ #line 2140 "ext/lexer/lexer.rl"
16708
16709
  {act = 122;}
16709
16710
  break;
16710
16711
  case 484:
16711
16712
  #line 1 "NONE"
16712
16713
  {te = p+1;}
16713
- #line 2193 "ext/lexer/lexer.rl"
16714
+ #line 2196 "ext/lexer/lexer.rl"
16714
16715
  {act = 136;}
16715
16716
  break;
16716
16717
  case 479:
16717
16718
  #line 1 "NONE"
16718
16719
  {te = p+1;}
16719
- #line 2205 "ext/lexer/lexer.rl"
16720
+ #line 2208 "ext/lexer/lexer.rl"
16720
16721
  {act = 137;}
16721
16722
  break;
16722
16723
  case 487:
16723
16724
  #line 1 "NONE"
16724
16725
  {te = p+1;}
16725
- #line 2214 "ext/lexer/lexer.rl"
16726
+ #line 2217 "ext/lexer/lexer.rl"
16726
16727
  {act = 139;}
16727
16728
  break;
16728
16729
  case 480:
16729
16730
  #line 1 "NONE"
16730
16731
  {te = p+1;}
16731
- #line 2218 "ext/lexer/lexer.rl"
16732
+ #line 2221 "ext/lexer/lexer.rl"
16732
16733
  {act = 140;}
16733
16734
  break;
16734
16735
  case 481:
16735
16736
  #line 1 "NONE"
16736
16737
  {te = p+1;}
16737
- #line 2222 "ext/lexer/lexer.rl"
16738
+ #line 2225 "ext/lexer/lexer.rl"
16738
16739
  {act = 141;}
16739
16740
  break;
16740
16741
  case 486:
16741
16742
  #line 1 "NONE"
16742
16743
  {te = p+1;}
16743
- #line 2226 "ext/lexer/lexer.rl"
16744
+ #line 2229 "ext/lexer/lexer.rl"
16744
16745
  {act = 142;}
16745
16746
  break;
16746
16747
  case 478:
16747
16748
  #line 1 "NONE"
16748
16749
  {te = p+1;}
16749
- #line 2237 "ext/lexer/lexer.rl"
16750
+ #line 2240 "ext/lexer/lexer.rl"
16750
16751
  {act = 143;}
16751
16752
  break;
16752
16753
  case 473:
16753
16754
  #line 1 "NONE"
16754
16755
  {te = p+1;}
16755
- #line 2254 "ext/lexer/lexer.rl"
16756
+ #line 2257 "ext/lexer/lexer.rl"
16756
16757
  {act = 144;}
16757
16758
  break;
16758
16759
  case 389:
16759
16760
  #line 1 "NONE"
16760
16761
  {te = p+1;}
16761
- #line 2264 "ext/lexer/lexer.rl"
16762
+ #line 2267 "ext/lexer/lexer.rl"
16762
16763
  {act = 145;}
16763
16764
  break;
16764
16765
  case 427:
16765
16766
  #line 1 "NONE"
16766
16767
  {te = p+1;}
16767
- #line 2316 "ext/lexer/lexer.rl"
16768
+ #line 2319 "ext/lexer/lexer.rl"
16768
16769
  {act = 148;}
16769
16770
  break;
16770
16771
  case 80:
16771
16772
  #line 1 "NONE"
16772
16773
  {te = p+1;}
16773
- #line 2333 "ext/lexer/lexer.rl"
16774
+ #line 2336 "ext/lexer/lexer.rl"
16774
16775
  {act = 149;}
16775
16776
  break;
16776
16777
  case 392:
16777
16778
  #line 1 "NONE"
16778
16779
  {te = p+1;}
16779
- #line 2352 "ext/lexer/lexer.rl"
16780
+ #line 2355 "ext/lexer/lexer.rl"
16780
16781
  {act = 151;}
16781
16782
  break;
16782
16783
  case 417:
16783
16784
  #line 1 "NONE"
16784
16785
  {te = p+1;}
16785
- #line 2364 "ext/lexer/lexer.rl"
16786
+ #line 2367 "ext/lexer/lexer.rl"
16786
16787
  {act = 154;}
16787
16788
  break;
16788
16789
  case 414:
16789
16790
  #line 1 "NONE"
16790
16791
  {te = p+1;}
16791
- #line 2370 "ext/lexer/lexer.rl"
16792
+ #line 2373 "ext/lexer/lexer.rl"
16792
16793
  {act = 155;}
16793
16794
  break;
16794
16795
  case 383:
16795
16796
  #line 1 "NONE"
16796
16797
  {te = p+1;}
16797
- #line 1594 "ext/lexer/lexer.rl"
16798
+ #line 1597 "ext/lexer/lexer.rl"
16798
16799
  {act = 156;}
16799
16800
  break;
16800
16801
  case 395:
16801
16802
  #line 1 "NONE"
16802
16803
  {te = p+1;}
16803
- #line 2375 "ext/lexer/lexer.rl"
16804
+ #line 2378 "ext/lexer/lexer.rl"
16804
16805
  {act = 157;}
16805
16806
  break;
16806
16807
  case 387:
16807
16808
  #line 1 "NONE"
16808
16809
  {te = p+1;}
16809
- #line 2391 "ext/lexer/lexer.rl"
16810
+ #line 2394 "ext/lexer/lexer.rl"
16810
16811
  {act = 159;}
16811
16812
  break;
16812
16813
  case 394:
16813
16814
  #line 1 "NONE"
16814
16815
  {te = p+1;}
16815
- #line 2397 "ext/lexer/lexer.rl"
16816
+ #line 2400 "ext/lexer/lexer.rl"
16816
16817
  {act = 160;}
16817
16818
  break;
16818
16819
  case 168:
16819
- #line 1003 "ext/lexer/lexer.rl"
16820
+ #line 1006 "ext/lexer/lexer.rl"
16820
16821
  { lexer->newline_s = p; }
16821
- #line 1336 "ext/lexer/lexer.rl"
16822
+ #line 1339 "ext/lexer/lexer.rl"
16822
16823
  {te = p+1;{
16823
16824
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
16824
16825
  long str_s = current_literal->str_s;
@@ -16862,14 +16863,14 @@ _eof_trans:
16862
16863
  literal_flush_string(current_literal);
16863
16864
  }
16864
16865
  }}
16865
- #line 1268 "ext/lexer/lexer.rl"
16866
+ #line 1271 "ext/lexer/lexer.rl"
16866
16867
  {
16867
16868
  lexer->escape_s = p;
16868
16869
  lexer->escape = Qnil;
16869
16870
  }
16870
16871
  break;
16871
16872
  case 116:
16872
- #line 1152 "ext/lexer/lexer.rl"
16873
+ #line 1155 "ext/lexer/lexer.rl"
16873
16874
  {
16874
16875
  char c = NUM2INT(rb_ary_entry(lexer->source_pts, p - 1));
16875
16876
  lexer->escape = unescape_char(c);
@@ -16880,13 +16881,13 @@ _eof_trans:
16880
16881
  force_encoding(codepoint, lexer->encoding);
16881
16882
  }
16882
16883
  }
16883
- #line 1168 "ext/lexer/lexer.rl"
16884
+ #line 1171 "ext/lexer/lexer.rl"
16884
16885
  {
16885
16886
  char c = *RSTRING_PTR(lexer->escape) & 0x9f;
16886
16887
  lexer->escape = rb_str_new(&c, 1);
16887
16888
  force_encoding(lexer->escape, lexer->encoding);
16888
16889
  }
16889
- #line 1307 "ext/lexer/lexer.rl"
16890
+ #line 1310 "ext/lexer/lexer.rl"
16890
16891
  {te = p;p--;{
16891
16892
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
16892
16893
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -16917,7 +16918,7 @@ _eof_trans:
16917
16918
  }}
16918
16919
  break;
16919
16920
  case 143:
16920
- #line 1152 "ext/lexer/lexer.rl"
16921
+ #line 1155 "ext/lexer/lexer.rl"
16921
16922
  {
16922
16923
  char c = NUM2INT(rb_ary_entry(lexer->source_pts, p - 1));
16923
16924
  lexer->escape = unescape_char(c);
@@ -16928,13 +16929,13 @@ _eof_trans:
16928
16929
  force_encoding(codepoint, lexer->encoding);
16929
16930
  }
16930
16931
  }
16931
- #line 1168 "ext/lexer/lexer.rl"
16932
+ #line 1171 "ext/lexer/lexer.rl"
16932
16933
  {
16933
16934
  char c = *RSTRING_PTR(lexer->escape) & 0x9f;
16934
16935
  lexer->escape = rb_str_new(&c, 1);
16935
16936
  force_encoding(lexer->escape, lexer->encoding);
16936
16937
  }
16937
- #line 1307 "ext/lexer/lexer.rl"
16938
+ #line 1310 "ext/lexer/lexer.rl"
16938
16939
  {te = p;p--;{
16939
16940
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
16940
16941
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -16965,7 +16966,7 @@ _eof_trans:
16965
16966
  }}
16966
16967
  break;
16967
16968
  case 344:
16968
- #line 1152 "ext/lexer/lexer.rl"
16969
+ #line 1155 "ext/lexer/lexer.rl"
16969
16970
  {
16970
16971
  char c = NUM2INT(rb_ary_entry(lexer->source_pts, p - 1));
16971
16972
  lexer->escape = unescape_char(c);
@@ -16976,13 +16977,13 @@ _eof_trans:
16976
16977
  force_encoding(codepoint, lexer->encoding);
16977
16978
  }
16978
16979
  }
16979
- #line 1168 "ext/lexer/lexer.rl"
16980
+ #line 1171 "ext/lexer/lexer.rl"
16980
16981
  {
16981
16982
  char c = *RSTRING_PTR(lexer->escape) & 0x9f;
16982
16983
  lexer->escape = rb_str_new(&c, 1);
16983
16984
  force_encoding(lexer->escape, lexer->encoding);
16984
16985
  }
16985
- #line 2015 "ext/lexer/lexer.rl"
16986
+ #line 2018 "ext/lexer/lexer.rl"
16986
16987
  {te = p;p--;{
16987
16988
  VALUE value = lexer->escape;
16988
16989
  if (value == Qnil)
@@ -16997,7 +16998,7 @@ _eof_trans:
16997
16998
  }}
16998
16999
  break;
16999
17000
  case 121:
17000
- #line 1152 "ext/lexer/lexer.rl"
17001
+ #line 1155 "ext/lexer/lexer.rl"
17001
17002
  {
17002
17003
  char c = NUM2INT(rb_ary_entry(lexer->source_pts, p - 1));
17003
17004
  lexer->escape = unescape_char(c);
@@ -17008,13 +17009,13 @@ _eof_trans:
17008
17009
  force_encoding(codepoint, lexer->encoding);
17009
17010
  }
17010
17011
  }
17011
- #line 1174 "ext/lexer/lexer.rl"
17012
+ #line 1177 "ext/lexer/lexer.rl"
17012
17013
  {
17013
17014
  char c = *RSTRING_PTR(lexer->escape) | 0x80;
17014
17015
  lexer->escape = rb_str_new(&c, 1);
17015
17016
  force_encoding(lexer->escape, lexer->encoding);
17016
17017
  }
17017
- #line 1307 "ext/lexer/lexer.rl"
17018
+ #line 1310 "ext/lexer/lexer.rl"
17018
17019
  {te = p;p--;{
17019
17020
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
17020
17021
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -17045,7 +17046,7 @@ _eof_trans:
17045
17046
  }}
17046
17047
  break;
17047
17048
  case 148:
17048
- #line 1152 "ext/lexer/lexer.rl"
17049
+ #line 1155 "ext/lexer/lexer.rl"
17049
17050
  {
17050
17051
  char c = NUM2INT(rb_ary_entry(lexer->source_pts, p - 1));
17051
17052
  lexer->escape = unescape_char(c);
@@ -17056,13 +17057,13 @@ _eof_trans:
17056
17057
  force_encoding(codepoint, lexer->encoding);
17057
17058
  }
17058
17059
  }
17059
- #line 1174 "ext/lexer/lexer.rl"
17060
+ #line 1177 "ext/lexer/lexer.rl"
17060
17061
  {
17061
17062
  char c = *RSTRING_PTR(lexer->escape) | 0x80;
17062
17063
  lexer->escape = rb_str_new(&c, 1);
17063
17064
  force_encoding(lexer->escape, lexer->encoding);
17064
17065
  }
17065
- #line 1307 "ext/lexer/lexer.rl"
17066
+ #line 1310 "ext/lexer/lexer.rl"
17066
17067
  {te = p;p--;{
17067
17068
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
17068
17069
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -17093,7 +17094,7 @@ _eof_trans:
17093
17094
  }}
17094
17095
  break;
17095
17096
  case 349:
17096
- #line 1152 "ext/lexer/lexer.rl"
17097
+ #line 1155 "ext/lexer/lexer.rl"
17097
17098
  {
17098
17099
  char c = NUM2INT(rb_ary_entry(lexer->source_pts, p - 1));
17099
17100
  lexer->escape = unescape_char(c);
@@ -17104,13 +17105,13 @@ _eof_trans:
17104
17105
  force_encoding(codepoint, lexer->encoding);
17105
17106
  }
17106
17107
  }
17107
- #line 1174 "ext/lexer/lexer.rl"
17108
+ #line 1177 "ext/lexer/lexer.rl"
17108
17109
  {
17109
17110
  char c = *RSTRING_PTR(lexer->escape) | 0x80;
17110
17111
  lexer->escape = rb_str_new(&c, 1);
17111
17112
  force_encoding(lexer->escape, lexer->encoding);
17112
17113
  }
17113
- #line 2015 "ext/lexer/lexer.rl"
17114
+ #line 2018 "ext/lexer/lexer.rl"
17114
17115
  {te = p;p--;{
17115
17116
  VALUE value = lexer->escape;
17116
17117
  if (value == Qnil)
@@ -17125,15 +17126,15 @@ _eof_trans:
17125
17126
  }}
17126
17127
  break;
17127
17128
  case 120:
17128
- #line 1182 "ext/lexer/lexer.rl"
17129
+ #line 1185 "ext/lexer/lexer.rl"
17129
17130
  { lexer->escape = rb_str_substr(lexer->source, p - 1, 1); }
17130
- #line 1174 "ext/lexer/lexer.rl"
17131
+ #line 1177 "ext/lexer/lexer.rl"
17131
17132
  {
17132
17133
  char c = *RSTRING_PTR(lexer->escape) | 0x80;
17133
17134
  lexer->escape = rb_str_new(&c, 1);
17134
17135
  force_encoding(lexer->escape, lexer->encoding);
17135
17136
  }
17136
- #line 1307 "ext/lexer/lexer.rl"
17137
+ #line 1310 "ext/lexer/lexer.rl"
17137
17138
  {te = p;p--;{
17138
17139
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
17139
17140
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -17164,15 +17165,15 @@ _eof_trans:
17164
17165
  }}
17165
17166
  break;
17166
17167
  case 147:
17167
- #line 1182 "ext/lexer/lexer.rl"
17168
+ #line 1185 "ext/lexer/lexer.rl"
17168
17169
  { lexer->escape = rb_str_substr(lexer->source, p - 1, 1); }
17169
- #line 1174 "ext/lexer/lexer.rl"
17170
+ #line 1177 "ext/lexer/lexer.rl"
17170
17171
  {
17171
17172
  char c = *RSTRING_PTR(lexer->escape) | 0x80;
17172
17173
  lexer->escape = rb_str_new(&c, 1);
17173
17174
  force_encoding(lexer->escape, lexer->encoding);
17174
17175
  }
17175
- #line 1307 "ext/lexer/lexer.rl"
17176
+ #line 1310 "ext/lexer/lexer.rl"
17176
17177
  {te = p;p--;{
17177
17178
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
17178
17179
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -17203,15 +17204,15 @@ _eof_trans:
17203
17204
  }}
17204
17205
  break;
17205
17206
  case 348:
17206
- #line 1182 "ext/lexer/lexer.rl"
17207
+ #line 1185 "ext/lexer/lexer.rl"
17207
17208
  { lexer->escape = rb_str_substr(lexer->source, p - 1, 1); }
17208
- #line 1174 "ext/lexer/lexer.rl"
17209
+ #line 1177 "ext/lexer/lexer.rl"
17209
17210
  {
17210
17211
  char c = *RSTRING_PTR(lexer->escape) | 0x80;
17211
17212
  lexer->escape = rb_str_new(&c, 1);
17212
17213
  force_encoding(lexer->escape, lexer->encoding);
17213
17214
  }
17214
- #line 2015 "ext/lexer/lexer.rl"
17215
+ #line 2018 "ext/lexer/lexer.rl"
17215
17216
  {te = p;p--;{
17216
17217
  VALUE value = lexer->escape;
17217
17218
  if (value == Qnil)
@@ -17226,15 +17227,15 @@ _eof_trans:
17226
17227
  }}
17227
17228
  break;
17228
17229
  case 118:
17229
- #line 1187 "ext/lexer/lexer.rl"
17230
+ #line 1190 "ext/lexer/lexer.rl"
17230
17231
  { lexer->escape = rb_str_new2("\x7f"); }
17231
- #line 1174 "ext/lexer/lexer.rl"
17232
+ #line 1177 "ext/lexer/lexer.rl"
17232
17233
  {
17233
17234
  char c = *RSTRING_PTR(lexer->escape) | 0x80;
17234
17235
  lexer->escape = rb_str_new(&c, 1);
17235
17236
  force_encoding(lexer->escape, lexer->encoding);
17236
17237
  }
17237
- #line 1307 "ext/lexer/lexer.rl"
17238
+ #line 1310 "ext/lexer/lexer.rl"
17238
17239
  {te = p;p--;{
17239
17240
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
17240
17241
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -17265,15 +17266,15 @@ _eof_trans:
17265
17266
  }}
17266
17267
  break;
17267
17268
  case 145:
17268
- #line 1187 "ext/lexer/lexer.rl"
17269
+ #line 1190 "ext/lexer/lexer.rl"
17269
17270
  { lexer->escape = rb_str_new2("\x7f"); }
17270
- #line 1174 "ext/lexer/lexer.rl"
17271
+ #line 1177 "ext/lexer/lexer.rl"
17271
17272
  {
17272
17273
  char c = *RSTRING_PTR(lexer->escape) | 0x80;
17273
17274
  lexer->escape = rb_str_new(&c, 1);
17274
17275
  force_encoding(lexer->escape, lexer->encoding);
17275
17276
  }
17276
- #line 1307 "ext/lexer/lexer.rl"
17277
+ #line 1310 "ext/lexer/lexer.rl"
17277
17278
  {te = p;p--;{
17278
17279
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
17279
17280
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -17304,15 +17305,15 @@ _eof_trans:
17304
17305
  }}
17305
17306
  break;
17306
17307
  case 346:
17307
- #line 1187 "ext/lexer/lexer.rl"
17308
+ #line 1190 "ext/lexer/lexer.rl"
17308
17309
  { lexer->escape = rb_str_new2("\x7f"); }
17309
- #line 1174 "ext/lexer/lexer.rl"
17310
+ #line 1177 "ext/lexer/lexer.rl"
17310
17311
  {
17311
17312
  char c = *RSTRING_PTR(lexer->escape) | 0x80;
17312
17313
  lexer->escape = rb_str_new(&c, 1);
17313
17314
  force_encoding(lexer->escape, lexer->encoding);
17314
17315
  }
17315
- #line 2015 "ext/lexer/lexer.rl"
17316
+ #line 2018 "ext/lexer/lexer.rl"
17316
17317
  {te = p;p--;{
17317
17318
  VALUE value = lexer->escape;
17318
17319
  if (value == Qnil)
@@ -17327,15 +17328,15 @@ _eof_trans:
17327
17328
  }}
17328
17329
  break;
17329
17330
  case 114:
17330
- #line 1188 "ext/lexer/lexer.rl"
17331
+ #line 1191 "ext/lexer/lexer.rl"
17331
17332
  { lexer->escape = rb_str_substr(lexer->source, p - 1, 1); }
17332
- #line 1168 "ext/lexer/lexer.rl"
17333
+ #line 1171 "ext/lexer/lexer.rl"
17333
17334
  {
17334
17335
  char c = *RSTRING_PTR(lexer->escape) & 0x9f;
17335
17336
  lexer->escape = rb_str_new(&c, 1);
17336
17337
  force_encoding(lexer->escape, lexer->encoding);
17337
17338
  }
17338
- #line 1307 "ext/lexer/lexer.rl"
17339
+ #line 1310 "ext/lexer/lexer.rl"
17339
17340
  {te = p;p--;{
17340
17341
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
17341
17342
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -17366,15 +17367,15 @@ _eof_trans:
17366
17367
  }}
17367
17368
  break;
17368
17369
  case 141:
17369
- #line 1188 "ext/lexer/lexer.rl"
17370
+ #line 1191 "ext/lexer/lexer.rl"
17370
17371
  { lexer->escape = rb_str_substr(lexer->source, p - 1, 1); }
17371
- #line 1168 "ext/lexer/lexer.rl"
17372
+ #line 1171 "ext/lexer/lexer.rl"
17372
17373
  {
17373
17374
  char c = *RSTRING_PTR(lexer->escape) & 0x9f;
17374
17375
  lexer->escape = rb_str_new(&c, 1);
17375
17376
  force_encoding(lexer->escape, lexer->encoding);
17376
17377
  }
17377
- #line 1307 "ext/lexer/lexer.rl"
17378
+ #line 1310 "ext/lexer/lexer.rl"
17378
17379
  {te = p;p--;{
17379
17380
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
17380
17381
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -17405,15 +17406,15 @@ _eof_trans:
17405
17406
  }}
17406
17407
  break;
17407
17408
  case 342:
17408
- #line 1188 "ext/lexer/lexer.rl"
17409
+ #line 1191 "ext/lexer/lexer.rl"
17409
17410
  { lexer->escape = rb_str_substr(lexer->source, p - 1, 1); }
17410
- #line 1168 "ext/lexer/lexer.rl"
17411
+ #line 1171 "ext/lexer/lexer.rl"
17411
17412
  {
17412
17413
  char c = *RSTRING_PTR(lexer->escape) & 0x9f;
17413
17414
  lexer->escape = rb_str_new(&c, 1);
17414
17415
  force_encoding(lexer->escape, lexer->encoding);
17415
17416
  }
17416
- #line 2015 "ext/lexer/lexer.rl"
17417
+ #line 2018 "ext/lexer/lexer.rl"
17417
17418
  {te = p;p--;{
17418
17419
  VALUE value = lexer->escape;
17419
17420
  if (value == Qnil)
@@ -17428,17 +17429,17 @@ _eof_trans:
17428
17429
  }}
17429
17430
  break;
17430
17431
  case 125:
17431
- #line 1224 "ext/lexer/lexer.rl"
17432
+ #line 1227 "ext/lexer/lexer.rl"
17432
17433
  {
17433
17434
  diagnostic(lexer, fatal, invalid_unicode_escape, Qnil,
17434
17435
  range(lexer, lexer->escape_s - 1, p), empty_array);
17435
17436
  }
17436
- #line 1238 "ext/lexer/lexer.rl"
17437
+ #line 1241 "ext/lexer/lexer.rl"
17437
17438
  {
17438
17439
  diagnostic(lexer, fatal, invalid_unicode_escape, Qnil,
17439
17440
  range(lexer, p - 1, p), empty_array);
17440
17441
  }
17441
- #line 1307 "ext/lexer/lexer.rl"
17442
+ #line 1310 "ext/lexer/lexer.rl"
17442
17443
  {te = p;p--;{
17443
17444
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
17444
17445
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -17469,17 +17470,17 @@ _eof_trans:
17469
17470
  }}
17470
17471
  break;
17471
17472
  case 152:
17472
- #line 1224 "ext/lexer/lexer.rl"
17473
+ #line 1227 "ext/lexer/lexer.rl"
17473
17474
  {
17474
17475
  diagnostic(lexer, fatal, invalid_unicode_escape, Qnil,
17475
17476
  range(lexer, lexer->escape_s - 1, p), empty_array);
17476
17477
  }
17477
- #line 1238 "ext/lexer/lexer.rl"
17478
+ #line 1241 "ext/lexer/lexer.rl"
17478
17479
  {
17479
17480
  diagnostic(lexer, fatal, invalid_unicode_escape, Qnil,
17480
17481
  range(lexer, p - 1, p), empty_array);
17481
17482
  }
17482
- #line 1307 "ext/lexer/lexer.rl"
17483
+ #line 1310 "ext/lexer/lexer.rl"
17483
17484
  {te = p;p--;{
17484
17485
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
17485
17486
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -17510,17 +17511,17 @@ _eof_trans:
17510
17511
  }}
17511
17512
  break;
17512
17513
  case 353:
17513
- #line 1224 "ext/lexer/lexer.rl"
17514
+ #line 1227 "ext/lexer/lexer.rl"
17514
17515
  {
17515
17516
  diagnostic(lexer, fatal, invalid_unicode_escape, Qnil,
17516
17517
  range(lexer, lexer->escape_s - 1, p), empty_array);
17517
17518
  }
17518
- #line 1238 "ext/lexer/lexer.rl"
17519
+ #line 1241 "ext/lexer/lexer.rl"
17519
17520
  {
17520
17521
  diagnostic(lexer, fatal, invalid_unicode_escape, Qnil,
17521
17522
  range(lexer, p - 1, p), empty_array);
17522
17523
  }
17523
- #line 2015 "ext/lexer/lexer.rl"
17524
+ #line 2018 "ext/lexer/lexer.rl"
17524
17525
  {te = p;p--;{
17525
17526
  VALUE value = lexer->escape;
17526
17527
  if (value == Qnil)
@@ -17535,17 +17536,17 @@ _eof_trans:
17535
17536
  }}
17536
17537
  break;
17537
17538
  case 108:
17538
- #line 1268 "ext/lexer/lexer.rl"
17539
+ #line 1271 "ext/lexer/lexer.rl"
17539
17540
  {
17540
17541
  lexer->escape_s = p;
17541
17542
  lexer->escape = Qnil;
17542
17543
  }
17543
- #line 1262 "ext/lexer/lexer.rl"
17544
+ #line 1265 "ext/lexer/lexer.rl"
17544
17545
  {
17545
17546
  diagnostic(lexer, fatal, escape_eof, Qnil, range(lexer, p - 1, p),
17546
17547
  empty_array);
17547
17548
  }
17548
- #line 1307 "ext/lexer/lexer.rl"
17549
+ #line 1310 "ext/lexer/lexer.rl"
17549
17550
  {te = p;p--;{
17550
17551
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
17551
17552
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -17576,17 +17577,17 @@ _eof_trans:
17576
17577
  }}
17577
17578
  break;
17578
17579
  case 136:
17579
- #line 1268 "ext/lexer/lexer.rl"
17580
+ #line 1271 "ext/lexer/lexer.rl"
17580
17581
  {
17581
17582
  lexer->escape_s = p;
17582
17583
  lexer->escape = Qnil;
17583
17584
  }
17584
- #line 1262 "ext/lexer/lexer.rl"
17585
+ #line 1265 "ext/lexer/lexer.rl"
17585
17586
  {
17586
17587
  diagnostic(lexer, fatal, escape_eof, Qnil, range(lexer, p - 1, p),
17587
17588
  empty_array);
17588
17589
  }
17589
- #line 1307 "ext/lexer/lexer.rl"
17590
+ #line 1310 "ext/lexer/lexer.rl"
17590
17591
  {te = p;p--;{
17591
17592
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
17592
17593
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -17617,17 +17618,17 @@ _eof_trans:
17617
17618
  }}
17618
17619
  break;
17619
17620
  case 337:
17620
- #line 1268 "ext/lexer/lexer.rl"
17621
+ #line 1271 "ext/lexer/lexer.rl"
17621
17622
  {
17622
17623
  lexer->escape_s = p;
17623
17624
  lexer->escape = Qnil;
17624
17625
  }
17625
- #line 1262 "ext/lexer/lexer.rl"
17626
+ #line 1265 "ext/lexer/lexer.rl"
17626
17627
  {
17627
17628
  diagnostic(lexer, fatal, escape_eof, Qnil, range(lexer, p - 1, p),
17628
17629
  empty_array);
17629
17630
  }
17630
- #line 2015 "ext/lexer/lexer.rl"
17631
+ #line 2018 "ext/lexer/lexer.rl"
17631
17632
  {te = p;p--;{
17632
17633
  VALUE value = lexer->escape;
17633
17634
  if (value == Qnil)
@@ -17642,123 +17643,123 @@ _eof_trans:
17642
17643
  }}
17643
17644
  break;
17644
17645
  case 61:
17645
- #line 1538 "ext/lexer/lexer.rl"
17646
+ #line 1541 "ext/lexer/lexer.rl"
17646
17647
  { sharp_s = p - 1; }
17647
- #line 1539 "ext/lexer/lexer.rl"
17648
+ #line 1542 "ext/lexer/lexer.rl"
17648
17649
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17649
- #line 1003 "ext/lexer/lexer.rl"
17650
+ #line 1006 "ext/lexer/lexer.rl"
17650
17651
  { lexer->newline_s = p; }
17651
17652
  break;
17652
17653
  case 204:
17653
- #line 1538 "ext/lexer/lexer.rl"
17654
+ #line 1541 "ext/lexer/lexer.rl"
17654
17655
  { sharp_s = p - 1; }
17655
- #line 1539 "ext/lexer/lexer.rl"
17656
+ #line 1542 "ext/lexer/lexer.rl"
17656
17657
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17657
- #line 1684 "ext/lexer/lexer.rl"
17658
+ #line 1687 "ext/lexer/lexer.rl"
17658
17659
  {te = p;p--;}
17659
17660
  break;
17660
17661
  case 219:
17661
- #line 1538 "ext/lexer/lexer.rl"
17662
+ #line 1541 "ext/lexer/lexer.rl"
17662
17663
  { sharp_s = p - 1; }
17663
- #line 1539 "ext/lexer/lexer.rl"
17664
+ #line 1542 "ext/lexer/lexer.rl"
17664
17665
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17665
- #line 1697 "ext/lexer/lexer.rl"
17666
+ #line 1700 "ext/lexer/lexer.rl"
17666
17667
  {te = p;p--;}
17667
17668
  break;
17668
17669
  case 231:
17669
- #line 1538 "ext/lexer/lexer.rl"
17670
+ #line 1541 "ext/lexer/lexer.rl"
17670
17671
  { sharp_s = p - 1; }
17671
- #line 1539 "ext/lexer/lexer.rl"
17672
+ #line 1542 "ext/lexer/lexer.rl"
17672
17673
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17673
- #line 1719 "ext/lexer/lexer.rl"
17674
+ #line 1722 "ext/lexer/lexer.rl"
17674
17675
  {te = p;p--;}
17675
17676
  break;
17676
17677
  case 253:
17677
- #line 1538 "ext/lexer/lexer.rl"
17678
+ #line 1541 "ext/lexer/lexer.rl"
17678
17679
  { sharp_s = p - 1; }
17679
- #line 1539 "ext/lexer/lexer.rl"
17680
+ #line 1542 "ext/lexer/lexer.rl"
17680
17681
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17681
- #line 1802 "ext/lexer/lexer.rl"
17682
+ #line 1805 "ext/lexer/lexer.rl"
17682
17683
  {te = p;p--;{ {cs = 769;goto _again;} }}
17683
17684
  break;
17684
17685
  case 268:
17685
- #line 1538 "ext/lexer/lexer.rl"
17686
+ #line 1541 "ext/lexer/lexer.rl"
17686
17687
  { sharp_s = p - 1; }
17687
- #line 1539 "ext/lexer/lexer.rl"
17688
+ #line 1542 "ext/lexer/lexer.rl"
17688
17689
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17689
- #line 1855 "ext/lexer/lexer.rl"
17690
+ #line 1858 "ext/lexer/lexer.rl"
17690
17691
  {te = p;p--;}
17691
17692
  break;
17692
17693
  case 280:
17693
- #line 1538 "ext/lexer/lexer.rl"
17694
+ #line 1541 "ext/lexer/lexer.rl"
17694
17695
  { sharp_s = p - 1; }
17695
- #line 1539 "ext/lexer/lexer.rl"
17696
+ #line 1542 "ext/lexer/lexer.rl"
17696
17697
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17697
- #line 1870 "ext/lexer/lexer.rl"
17698
+ #line 1873 "ext/lexer/lexer.rl"
17698
17699
  {te = p;p--;}
17699
17700
  break;
17700
17701
  case 306:
17701
- #line 1538 "ext/lexer/lexer.rl"
17702
+ #line 1541 "ext/lexer/lexer.rl"
17702
17703
  { sharp_s = p - 1; }
17703
- #line 1539 "ext/lexer/lexer.rl"
17704
+ #line 1542 "ext/lexer/lexer.rl"
17704
17705
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17705
- #line 2125 "ext/lexer/lexer.rl"
17706
+ #line 2128 "ext/lexer/lexer.rl"
17706
17707
  {te = p;p--;}
17707
17708
  break;
17708
17709
  case 370:
17709
- #line 1538 "ext/lexer/lexer.rl"
17710
+ #line 1541 "ext/lexer/lexer.rl"
17710
17711
  { sharp_s = p - 1; }
17711
- #line 1539 "ext/lexer/lexer.rl"
17712
+ #line 1542 "ext/lexer/lexer.rl"
17712
17713
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17713
- #line 2143 "ext/lexer/lexer.rl"
17714
+ #line 2146 "ext/lexer/lexer.rl"
17714
17715
  {te = p;p--;}
17715
17716
  break;
17716
17717
  case 380:
17717
- #line 1538 "ext/lexer/lexer.rl"
17718
+ #line 1541 "ext/lexer/lexer.rl"
17718
17719
  { sharp_s = p - 1; }
17719
- #line 1539 "ext/lexer/lexer.rl"
17720
+ #line 1542 "ext/lexer/lexer.rl"
17720
17721
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17721
- #line 2166 "ext/lexer/lexer.rl"
17722
+ #line 2169 "ext/lexer/lexer.rl"
17722
17723
  {te = p;p--;}
17723
17724
  break;
17724
17725
  case 402:
17725
- #line 1538 "ext/lexer/lexer.rl"
17726
+ #line 1541 "ext/lexer/lexer.rl"
17726
17727
  { sharp_s = p - 1; }
17727
- #line 1539 "ext/lexer/lexer.rl"
17728
+ #line 1542 "ext/lexer/lexer.rl"
17728
17729
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17729
- #line 2466 "ext/lexer/lexer.rl"
17730
+ #line 2469 "ext/lexer/lexer.rl"
17730
17731
  {te = p;p--;}
17731
17732
  break;
17732
17733
  case 95:
17733
- #line 1538 "ext/lexer/lexer.rl"
17734
+ #line 1541 "ext/lexer/lexer.rl"
17734
17735
  { sharp_s = p - 1; }
17735
- #line 1539 "ext/lexer/lexer.rl"
17736
+ #line 1542 "ext/lexer/lexer.rl"
17736
17737
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17737
- #line 2514 "ext/lexer/lexer.rl"
17738
+ #line 2517 "ext/lexer/lexer.rl"
17738
17739
  {te = p;p--;}
17739
17740
  break;
17740
17741
  case 462:
17741
- #line 2261 "ext/lexer/lexer.rl"
17742
+ #line 2264 "ext/lexer/lexer.rl"
17742
17743
  { num_base = 10; num_digits_s = ts; }
17743
- #line 2263 "ext/lexer/lexer.rl"
17744
+ #line 2266 "ext/lexer/lexer.rl"
17744
17745
  { num_suffix_s = p; }
17745
- #line 1077 "ext/lexer/lexer.rl"
17746
+ #line 1080 "ext/lexer/lexer.rl"
17746
17747
  { num_xfrm = emit_int; numeric_s = ts; }
17747
17748
  break;
17748
17749
  case 421:
17749
- #line 2262 "ext/lexer/lexer.rl"
17750
+ #line 2265 "ext/lexer/lexer.rl"
17750
17751
  { num_base = 8; num_digits_s = ts; }
17751
- #line 2263 "ext/lexer/lexer.rl"
17752
+ #line 2266 "ext/lexer/lexer.rl"
17752
17753
  { num_suffix_s = p; }
17753
- #line 1077 "ext/lexer/lexer.rl"
17754
+ #line 1080 "ext/lexer/lexer.rl"
17754
17755
  { num_xfrm = emit_int; numeric_s = ts; }
17755
17756
  break;
17756
17757
  case 437:
17757
- #line 2263 "ext/lexer/lexer.rl"
17758
+ #line 2266 "ext/lexer/lexer.rl"
17758
17759
  { num_suffix_s = p; }
17759
- #line 1077 "ext/lexer/lexer.rl"
17760
+ #line 1080 "ext/lexer/lexer.rl"
17760
17761
  { num_xfrm = emit_int; numeric_s = ts; }
17761
- #line 2264 "ext/lexer/lexer.rl"
17762
+ #line 2267 "ext/lexer/lexer.rl"
17762
17763
  {te = p;p--;{
17763
17764
  int invalid_idx;
17764
17765
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -17791,11 +17792,11 @@ _eof_trans:
17791
17792
  }}
17792
17793
  break;
17793
17794
  case 430:
17794
- #line 2330 "ext/lexer/lexer.rl"
17795
+ #line 2333 "ext/lexer/lexer.rl"
17795
17796
  { num_suffix_s = p; }
17796
- #line 1085 "ext/lexer/lexer.rl"
17797
+ #line 1088 "ext/lexer/lexer.rl"
17797
17798
  { num_xfrm = emit_float; numeric_s = ts; }
17798
- #line 2333 "ext/lexer/lexer.rl"
17799
+ #line 2336 "ext/lexer/lexer.rl"
17799
17800
  {te = p;p--;{
17800
17801
  VALUE digits = tok(lexer, ts, num_suffix_s);
17801
17802
 
@@ -17810,11 +17811,11 @@ _eof_trans:
17810
17811
  }}
17811
17812
  break;
17812
17813
  case 426:
17813
- #line 2331 "ext/lexer/lexer.rl"
17814
+ #line 2334 "ext/lexer/lexer.rl"
17814
17815
  { num_suffix_s = p; }
17815
- #line 1085 "ext/lexer/lexer.rl"
17816
+ #line 1088 "ext/lexer/lexer.rl"
17816
17817
  { num_xfrm = emit_float; numeric_s = ts; }
17817
- #line 2333 "ext/lexer/lexer.rl"
17818
+ #line 2336 "ext/lexer/lexer.rl"
17818
17819
  {te = p;p--;{
17819
17820
  VALUE digits = tok(lexer, ts, num_suffix_s);
17820
17821
 
@@ -17831,156 +17832,156 @@ _eof_trans:
17831
17832
  case 259:
17832
17833
  #line 1 "NONE"
17833
17834
  {te = p+1;}
17834
- #line 1003 "ext/lexer/lexer.rl"
17835
+ #line 1006 "ext/lexer/lexer.rl"
17835
17836
  { lexer->newline_s = p; }
17836
- #line 1800 "ext/lexer/lexer.rl"
17837
+ #line 1803 "ext/lexer/lexer.rl"
17837
17838
  {act = 74;}
17838
17839
  break;
17839
17840
  case 79:
17840
17841
  #line 1 "NONE"
17841
17842
  {te = p+1;}
17842
- #line 1003 "ext/lexer/lexer.rl"
17843
+ #line 1006 "ext/lexer/lexer.rl"
17843
17844
  { lexer->newline_s = p; }
17844
- #line 2364 "ext/lexer/lexer.rl"
17845
+ #line 2367 "ext/lexer/lexer.rl"
17845
17846
  {act = 154;}
17846
17847
  break;
17847
17848
  case 35:
17848
17849
  #line 1 "NONE"
17849
17850
  {te = p+1;}
17850
- #line 1273 "ext/lexer/lexer.rl"
17851
+ #line 1276 "ext/lexer/lexer.rl"
17851
17852
  {
17852
17853
  if (lexer->herebody_s) {
17853
17854
  p = lexer->herebody_s;
17854
17855
  lexer->herebody_s = 0;
17855
17856
  }
17856
17857
  }
17857
- #line 1795 "ext/lexer/lexer.rl"
17858
+ #line 1798 "ext/lexer/lexer.rl"
17858
17859
  {act = 73;}
17859
17860
  break;
17860
17861
  case 46:
17861
17862
  #line 1 "NONE"
17862
17863
  {te = p+1;}
17863
- #line 1273 "ext/lexer/lexer.rl"
17864
+ #line 1276 "ext/lexer/lexer.rl"
17864
17865
  {
17865
17866
  if (lexer->herebody_s) {
17866
17867
  p = lexer->herebody_s;
17867
17868
  lexer->herebody_s = 0;
17868
17869
  }
17869
17870
  }
17870
- #line 1835 "ext/lexer/lexer.rl"
17871
+ #line 1838 "ext/lexer/lexer.rl"
17871
17872
  {act = 81;}
17872
17873
  break;
17873
17874
  case 419:
17874
17875
  #line 1 "NONE"
17875
17876
  {te = p+1;}
17876
- #line 1273 "ext/lexer/lexer.rl"
17877
+ #line 1276 "ext/lexer/lexer.rl"
17877
17878
  {
17878
17879
  if (lexer->herebody_s) {
17879
17880
  p = lexer->herebody_s;
17880
17881
  lexer->herebody_s = 0;
17881
17882
  }
17882
17883
  }
17883
- #line 2364 "ext/lexer/lexer.rl"
17884
+ #line 2367 "ext/lexer/lexer.rl"
17884
17885
  {act = 154;}
17885
17886
  break;
17886
17887
  case 65:
17887
17888
  #line 1 "NONE"
17888
17889
  {te = p+1;}
17889
- #line 1539 "ext/lexer/lexer.rl"
17890
+ #line 1542 "ext/lexer/lexer.rl"
17890
17891
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17891
- #line 1880 "ext/lexer/lexer.rl"
17892
+ #line 1883 "ext/lexer/lexer.rl"
17892
17893
  {act = 94;}
17893
17894
  break;
17894
17895
  case 83:
17895
17896
  #line 1 "NONE"
17896
17897
  {te = p+1;}
17897
- #line 1539 "ext/lexer/lexer.rl"
17898
+ #line 1542 "ext/lexer/lexer.rl"
17898
17899
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17899
- #line 2209 "ext/lexer/lexer.rl"
17900
+ #line 2212 "ext/lexer/lexer.rl"
17900
17901
  {act = 138;}
17901
17902
  break;
17902
17903
  case 37:
17903
17904
  #line 1 "NONE"
17904
17905
  {te = p+1;}
17905
- #line 1771 "ext/lexer/lexer.rl"
17906
+ #line 1774 "ext/lexer/lexer.rl"
17906
17907
  { tm = p; }
17907
- #line 1771 "ext/lexer/lexer.rl"
17908
+ #line 1774 "ext/lexer/lexer.rl"
17908
17909
  {act = 68;}
17909
17910
  break;
17910
17911
  case 363:
17911
17912
  #line 1 "NONE"
17912
17913
  {te = p+1;}
17913
- #line 2071 "ext/lexer/lexer.rl"
17914
+ #line 2074 "ext/lexer/lexer.rl"
17914
17915
  { tm = p; }
17915
- #line 2105 "ext/lexer/lexer.rl"
17916
+ #line 2108 "ext/lexer/lexer.rl"
17916
17917
  {act = 117;}
17917
17918
  break;
17918
17919
  case 362:
17919
17920
  #line 1 "NONE"
17920
17921
  {te = p+1;}
17921
- #line 2071 "ext/lexer/lexer.rl"
17922
+ #line 2074 "ext/lexer/lexer.rl"
17922
17923
  { tm = p; }
17923
- #line 1594 "ext/lexer/lexer.rl"
17924
+ #line 1597 "ext/lexer/lexer.rl"
17924
17925
  {act = 118;}
17925
17926
  break;
17926
17927
  case 460:
17927
17928
  #line 1 "NONE"
17928
17929
  {te = p+1;}
17929
- #line 2257 "ext/lexer/lexer.rl"
17930
+ #line 2260 "ext/lexer/lexer.rl"
17930
17931
  { num_base = 16; num_digits_s = p; }
17931
- #line 2263 "ext/lexer/lexer.rl"
17932
+ #line 2266 "ext/lexer/lexer.rl"
17932
17933
  { num_suffix_s = p; }
17933
17934
  break;
17934
17935
  case 452:
17935
17936
  #line 1 "NONE"
17936
17937
  {te = p+1;}
17937
- #line 2258 "ext/lexer/lexer.rl"
17938
+ #line 2261 "ext/lexer/lexer.rl"
17938
17939
  { num_base = 10; num_digits_s = p; }
17939
- #line 2263 "ext/lexer/lexer.rl"
17940
+ #line 2266 "ext/lexer/lexer.rl"
17940
17941
  { num_suffix_s = p; }
17941
17942
  break;
17942
17943
  case 456:
17943
17944
  #line 1 "NONE"
17944
17945
  {te = p+1;}
17945
- #line 2259 "ext/lexer/lexer.rl"
17946
+ #line 2262 "ext/lexer/lexer.rl"
17946
17947
  { num_base = 8; num_digits_s = p; }
17947
- #line 2263 "ext/lexer/lexer.rl"
17948
+ #line 2266 "ext/lexer/lexer.rl"
17948
17949
  { num_suffix_s = p; }
17949
17950
  break;
17950
17951
  case 448:
17951
17952
  #line 1 "NONE"
17952
17953
  {te = p+1;}
17953
- #line 2260 "ext/lexer/lexer.rl"
17954
- { num_base = 2; num_digits_s = p; }
17955
17954
  #line 2263 "ext/lexer/lexer.rl"
17955
+ { num_base = 2; num_digits_s = p; }
17956
+ #line 2266 "ext/lexer/lexer.rl"
17956
17957
  { num_suffix_s = p; }
17957
17958
  break;
17958
17959
  case 467:
17959
17960
  #line 1 "NONE"
17960
17961
  {te = p+1;}
17961
- #line 2261 "ext/lexer/lexer.rl"
17962
+ #line 2264 "ext/lexer/lexer.rl"
17962
17963
  { num_base = 10; num_digits_s = ts; }
17963
- #line 2263 "ext/lexer/lexer.rl"
17964
+ #line 2266 "ext/lexer/lexer.rl"
17964
17965
  { num_suffix_s = p; }
17965
17966
  break;
17966
17967
  case 463:
17967
17968
  #line 1 "NONE"
17968
17969
  {te = p+1;}
17969
- #line 2261 "ext/lexer/lexer.rl"
17970
- { num_base = 10; num_digits_s = ts; }
17971
17970
  #line 2264 "ext/lexer/lexer.rl"
17971
+ { num_base = 10; num_digits_s = ts; }
17972
+ #line 2267 "ext/lexer/lexer.rl"
17972
17973
  {act = 145;}
17973
17974
  break;
17974
17975
  case 425:
17975
17976
  #line 1 "NONE"
17976
17977
  {te = p+1;}
17977
- #line 2262 "ext/lexer/lexer.rl"
17978
+ #line 2265 "ext/lexer/lexer.rl"
17978
17979
  { num_base = 8; num_digits_s = ts; }
17979
- #line 2263 "ext/lexer/lexer.rl"
17980
+ #line 2266 "ext/lexer/lexer.rl"
17980
17981
  { num_suffix_s = p; }
17981
17982
  break;
17982
17983
  case 119:
17983
- #line 1152 "ext/lexer/lexer.rl"
17984
+ #line 1155 "ext/lexer/lexer.rl"
17984
17985
  {
17985
17986
  char c = NUM2INT(rb_ary_entry(lexer->source_pts, p - 1));
17986
17987
  lexer->escape = unescape_char(c);
@@ -17991,19 +17992,19 @@ _eof_trans:
17991
17992
  force_encoding(codepoint, lexer->encoding);
17992
17993
  }
17993
17994
  }
17994
- #line 1168 "ext/lexer/lexer.rl"
17995
+ #line 1171 "ext/lexer/lexer.rl"
17995
17996
  {
17996
17997
  char c = *RSTRING_PTR(lexer->escape) & 0x9f;
17997
17998
  lexer->escape = rb_str_new(&c, 1);
17998
17999
  force_encoding(lexer->escape, lexer->encoding);
17999
18000
  }
18000
- #line 1174 "ext/lexer/lexer.rl"
18001
+ #line 1177 "ext/lexer/lexer.rl"
18001
18002
  {
18002
18003
  char c = *RSTRING_PTR(lexer->escape) | 0x80;
18003
18004
  lexer->escape = rb_str_new(&c, 1);
18004
18005
  force_encoding(lexer->escape, lexer->encoding);
18005
18006
  }
18006
- #line 1307 "ext/lexer/lexer.rl"
18007
+ #line 1310 "ext/lexer/lexer.rl"
18007
18008
  {te = p;p--;{
18008
18009
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
18009
18010
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -18034,7 +18035,7 @@ _eof_trans:
18034
18035
  }}
18035
18036
  break;
18036
18037
  case 146:
18037
- #line 1152 "ext/lexer/lexer.rl"
18038
+ #line 1155 "ext/lexer/lexer.rl"
18038
18039
  {
18039
18040
  char c = NUM2INT(rb_ary_entry(lexer->source_pts, p - 1));
18040
18041
  lexer->escape = unescape_char(c);
@@ -18045,19 +18046,19 @@ _eof_trans:
18045
18046
  force_encoding(codepoint, lexer->encoding);
18046
18047
  }
18047
18048
  }
18048
- #line 1168 "ext/lexer/lexer.rl"
18049
+ #line 1171 "ext/lexer/lexer.rl"
18049
18050
  {
18050
18051
  char c = *RSTRING_PTR(lexer->escape) & 0x9f;
18051
18052
  lexer->escape = rb_str_new(&c, 1);
18052
18053
  force_encoding(lexer->escape, lexer->encoding);
18053
18054
  }
18054
- #line 1174 "ext/lexer/lexer.rl"
18055
+ #line 1177 "ext/lexer/lexer.rl"
18055
18056
  {
18056
18057
  char c = *RSTRING_PTR(lexer->escape) | 0x80;
18057
18058
  lexer->escape = rb_str_new(&c, 1);
18058
18059
  force_encoding(lexer->escape, lexer->encoding);
18059
18060
  }
18060
- #line 1307 "ext/lexer/lexer.rl"
18061
+ #line 1310 "ext/lexer/lexer.rl"
18061
18062
  {te = p;p--;{
18062
18063
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
18063
18064
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -18088,7 +18089,7 @@ _eof_trans:
18088
18089
  }}
18089
18090
  break;
18090
18091
  case 347:
18091
- #line 1152 "ext/lexer/lexer.rl"
18092
+ #line 1155 "ext/lexer/lexer.rl"
18092
18093
  {
18093
18094
  char c = NUM2INT(rb_ary_entry(lexer->source_pts, p - 1));
18094
18095
  lexer->escape = unescape_char(c);
@@ -18099,19 +18100,19 @@ _eof_trans:
18099
18100
  force_encoding(codepoint, lexer->encoding);
18100
18101
  }
18101
18102
  }
18102
- #line 1168 "ext/lexer/lexer.rl"
18103
+ #line 1171 "ext/lexer/lexer.rl"
18103
18104
  {
18104
18105
  char c = *RSTRING_PTR(lexer->escape) & 0x9f;
18105
18106
  lexer->escape = rb_str_new(&c, 1);
18106
18107
  force_encoding(lexer->escape, lexer->encoding);
18107
18108
  }
18108
- #line 1174 "ext/lexer/lexer.rl"
18109
+ #line 1177 "ext/lexer/lexer.rl"
18109
18110
  {
18110
18111
  char c = *RSTRING_PTR(lexer->escape) | 0x80;
18111
18112
  lexer->escape = rb_str_new(&c, 1);
18112
18113
  force_encoding(lexer->escape, lexer->encoding);
18113
18114
  }
18114
- #line 2015 "ext/lexer/lexer.rl"
18115
+ #line 2018 "ext/lexer/lexer.rl"
18115
18116
  {te = p;p--;{
18116
18117
  VALUE value = lexer->escape;
18117
18118
  if (value == Qnil)
@@ -18126,21 +18127,21 @@ _eof_trans:
18126
18127
  }}
18127
18128
  break;
18128
18129
  case 117:
18129
- #line 1188 "ext/lexer/lexer.rl"
18130
+ #line 1191 "ext/lexer/lexer.rl"
18130
18131
  { lexer->escape = rb_str_substr(lexer->source, p - 1, 1); }
18131
- #line 1168 "ext/lexer/lexer.rl"
18132
+ #line 1171 "ext/lexer/lexer.rl"
18132
18133
  {
18133
18134
  char c = *RSTRING_PTR(lexer->escape) & 0x9f;
18134
18135
  lexer->escape = rb_str_new(&c, 1);
18135
18136
  force_encoding(lexer->escape, lexer->encoding);
18136
18137
  }
18137
- #line 1174 "ext/lexer/lexer.rl"
18138
+ #line 1177 "ext/lexer/lexer.rl"
18138
18139
  {
18139
18140
  char c = *RSTRING_PTR(lexer->escape) | 0x80;
18140
18141
  lexer->escape = rb_str_new(&c, 1);
18141
18142
  force_encoding(lexer->escape, lexer->encoding);
18142
18143
  }
18143
- #line 1307 "ext/lexer/lexer.rl"
18144
+ #line 1310 "ext/lexer/lexer.rl"
18144
18145
  {te = p;p--;{
18145
18146
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
18146
18147
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -18171,21 +18172,21 @@ _eof_trans:
18171
18172
  }}
18172
18173
  break;
18173
18174
  case 144:
18174
- #line 1188 "ext/lexer/lexer.rl"
18175
+ #line 1191 "ext/lexer/lexer.rl"
18175
18176
  { lexer->escape = rb_str_substr(lexer->source, p - 1, 1); }
18176
- #line 1168 "ext/lexer/lexer.rl"
18177
+ #line 1171 "ext/lexer/lexer.rl"
18177
18178
  {
18178
18179
  char c = *RSTRING_PTR(lexer->escape) & 0x9f;
18179
18180
  lexer->escape = rb_str_new(&c, 1);
18180
18181
  force_encoding(lexer->escape, lexer->encoding);
18181
18182
  }
18182
- #line 1174 "ext/lexer/lexer.rl"
18183
+ #line 1177 "ext/lexer/lexer.rl"
18183
18184
  {
18184
18185
  char c = *RSTRING_PTR(lexer->escape) | 0x80;
18185
18186
  lexer->escape = rb_str_new(&c, 1);
18186
18187
  force_encoding(lexer->escape, lexer->encoding);
18187
18188
  }
18188
- #line 1307 "ext/lexer/lexer.rl"
18189
+ #line 1310 "ext/lexer/lexer.rl"
18189
18190
  {te = p;p--;{
18190
18191
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
18191
18192
  VALUE escaped_char = rb_str_substr(lexer->source, lexer->escape_s, 1);
@@ -18216,21 +18217,21 @@ _eof_trans:
18216
18217
  }}
18217
18218
  break;
18218
18219
  case 345:
18219
- #line 1188 "ext/lexer/lexer.rl"
18220
+ #line 1191 "ext/lexer/lexer.rl"
18220
18221
  { lexer->escape = rb_str_substr(lexer->source, p - 1, 1); }
18221
- #line 1168 "ext/lexer/lexer.rl"
18222
+ #line 1171 "ext/lexer/lexer.rl"
18222
18223
  {
18223
18224
  char c = *RSTRING_PTR(lexer->escape) & 0x9f;
18224
18225
  lexer->escape = rb_str_new(&c, 1);
18225
18226
  force_encoding(lexer->escape, lexer->encoding);
18226
18227
  }
18227
- #line 1174 "ext/lexer/lexer.rl"
18228
+ #line 1177 "ext/lexer/lexer.rl"
18228
18229
  {
18229
18230
  char c = *RSTRING_PTR(lexer->escape) | 0x80;
18230
18231
  lexer->escape = rb_str_new(&c, 1);
18231
18232
  force_encoding(lexer->escape, lexer->encoding);
18232
18233
  }
18233
- #line 2015 "ext/lexer/lexer.rl"
18234
+ #line 2018 "ext/lexer/lexer.rl"
18234
18235
  {te = p;p--;{
18235
18236
  VALUE value = lexer->escape;
18236
18237
  if (value == Qnil)
@@ -18245,13 +18246,13 @@ _eof_trans:
18245
18246
  }}
18246
18247
  break;
18247
18248
  case 457:
18248
- #line 2257 "ext/lexer/lexer.rl"
18249
+ #line 2260 "ext/lexer/lexer.rl"
18249
18250
  { num_base = 16; num_digits_s = p; }
18250
- #line 2263 "ext/lexer/lexer.rl"
18251
+ #line 2266 "ext/lexer/lexer.rl"
18251
18252
  { num_suffix_s = p; }
18252
- #line 1077 "ext/lexer/lexer.rl"
18253
+ #line 1080 "ext/lexer/lexer.rl"
18253
18254
  { num_xfrm = emit_int; numeric_s = ts; }
18254
- #line 2264 "ext/lexer/lexer.rl"
18255
+ #line 2267 "ext/lexer/lexer.rl"
18255
18256
  {te = p;p--;{
18256
18257
  int invalid_idx;
18257
18258
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -18284,13 +18285,13 @@ _eof_trans:
18284
18285
  }}
18285
18286
  break;
18286
18287
  case 449:
18287
- #line 2258 "ext/lexer/lexer.rl"
18288
+ #line 2261 "ext/lexer/lexer.rl"
18288
18289
  { num_base = 10; num_digits_s = p; }
18289
- #line 2263 "ext/lexer/lexer.rl"
18290
+ #line 2266 "ext/lexer/lexer.rl"
18290
18291
  { num_suffix_s = p; }
18291
- #line 1077 "ext/lexer/lexer.rl"
18292
+ #line 1080 "ext/lexer/lexer.rl"
18292
18293
  { num_xfrm = emit_int; numeric_s = ts; }
18293
- #line 2264 "ext/lexer/lexer.rl"
18294
+ #line 2267 "ext/lexer/lexer.rl"
18294
18295
  {te = p;p--;{
18295
18296
  int invalid_idx;
18296
18297
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -18323,13 +18324,13 @@ _eof_trans:
18323
18324
  }}
18324
18325
  break;
18325
18326
  case 453:
18326
- #line 2259 "ext/lexer/lexer.rl"
18327
+ #line 2262 "ext/lexer/lexer.rl"
18327
18328
  { num_base = 8; num_digits_s = p; }
18328
- #line 2263 "ext/lexer/lexer.rl"
18329
+ #line 2266 "ext/lexer/lexer.rl"
18329
18330
  { num_suffix_s = p; }
18330
- #line 1077 "ext/lexer/lexer.rl"
18331
+ #line 1080 "ext/lexer/lexer.rl"
18331
18332
  { num_xfrm = emit_int; numeric_s = ts; }
18332
- #line 2264 "ext/lexer/lexer.rl"
18333
+ #line 2267 "ext/lexer/lexer.rl"
18333
18334
  {te = p;p--;{
18334
18335
  int invalid_idx;
18335
18336
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -18362,13 +18363,13 @@ _eof_trans:
18362
18363
  }}
18363
18364
  break;
18364
18365
  case 445:
18365
- #line 2260 "ext/lexer/lexer.rl"
18366
- { num_base = 2; num_digits_s = p; }
18367
18366
  #line 2263 "ext/lexer/lexer.rl"
18367
+ { num_base = 2; num_digits_s = p; }
18368
+ #line 2266 "ext/lexer/lexer.rl"
18368
18369
  { num_suffix_s = p; }
18369
- #line 1077 "ext/lexer/lexer.rl"
18370
+ #line 1080 "ext/lexer/lexer.rl"
18370
18371
  { num_xfrm = emit_int; numeric_s = ts; }
18371
- #line 2264 "ext/lexer/lexer.rl"
18372
+ #line 2267 "ext/lexer/lexer.rl"
18372
18373
  {te = p;p--;{
18373
18374
  int invalid_idx;
18374
18375
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -18401,13 +18402,13 @@ _eof_trans:
18401
18402
  }}
18402
18403
  break;
18403
18404
  case 461:
18404
- #line 2261 "ext/lexer/lexer.rl"
18405
+ #line 2264 "ext/lexer/lexer.rl"
18405
18406
  { num_base = 10; num_digits_s = ts; }
18406
- #line 2263 "ext/lexer/lexer.rl"
18407
+ #line 2266 "ext/lexer/lexer.rl"
18407
18408
  { num_suffix_s = p; }
18408
- #line 1077 "ext/lexer/lexer.rl"
18409
+ #line 1080 "ext/lexer/lexer.rl"
18409
18410
  { num_xfrm = emit_int; numeric_s = ts; }
18410
- #line 2264 "ext/lexer/lexer.rl"
18411
+ #line 2267 "ext/lexer/lexer.rl"
18411
18412
  {te = p;p--;{
18412
18413
  int invalid_idx;
18413
18414
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -18440,13 +18441,13 @@ _eof_trans:
18440
18441
  }}
18441
18442
  break;
18442
18443
  case 420:
18443
- #line 2262 "ext/lexer/lexer.rl"
18444
+ #line 2265 "ext/lexer/lexer.rl"
18444
18445
  { num_base = 8; num_digits_s = ts; }
18445
- #line 2263 "ext/lexer/lexer.rl"
18446
+ #line 2266 "ext/lexer/lexer.rl"
18446
18447
  { num_suffix_s = p; }
18447
- #line 1077 "ext/lexer/lexer.rl"
18448
+ #line 1080 "ext/lexer/lexer.rl"
18448
18449
  { num_xfrm = emit_int; numeric_s = ts; }
18449
- #line 2264 "ext/lexer/lexer.rl"
18450
+ #line 2267 "ext/lexer/lexer.rl"
18450
18451
  {te = p;p--;{
18451
18452
  int invalid_idx;
18452
18453
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -18481,63 +18482,63 @@ _eof_trans:
18481
18482
  case 31:
18482
18483
  #line 1 "NONE"
18483
18484
  {te = p+1;}
18484
- #line 1273 "ext/lexer/lexer.rl"
18485
+ #line 1276 "ext/lexer/lexer.rl"
18485
18486
  {
18486
18487
  if (lexer->herebody_s) {
18487
18488
  p = lexer->herebody_s;
18488
18489
  lexer->herebody_s = 0;
18489
18490
  }
18490
18491
  }
18491
- #line 1771 "ext/lexer/lexer.rl"
18492
+ #line 1774 "ext/lexer/lexer.rl"
18492
18493
  { tm = p; }
18493
- #line 1771 "ext/lexer/lexer.rl"
18494
+ #line 1774 "ext/lexer/lexer.rl"
18494
18495
  {act = 68;}
18495
18496
  break;
18496
18497
  case 62:
18497
18498
  #line 1 "NONE"
18498
18499
  {te = p+1;}
18499
- #line 1538 "ext/lexer/lexer.rl"
18500
+ #line 1541 "ext/lexer/lexer.rl"
18500
18501
  { sharp_s = p - 1; }
18501
- #line 1539 "ext/lexer/lexer.rl"
18502
+ #line 1542 "ext/lexer/lexer.rl"
18502
18503
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
18503
- #line 1880 "ext/lexer/lexer.rl"
18504
+ #line 1883 "ext/lexer/lexer.rl"
18504
18505
  {act = 94;}
18505
18506
  break;
18506
18507
  case 469:
18507
18508
  #line 1 "NONE"
18508
18509
  {te = p+1;}
18509
- #line 2263 "ext/lexer/lexer.rl"
18510
+ #line 2266 "ext/lexer/lexer.rl"
18510
18511
  { num_suffix_s = p; }
18511
- #line 1077 "ext/lexer/lexer.rl"
18512
+ #line 1080 "ext/lexer/lexer.rl"
18512
18513
  { num_xfrm = emit_int; numeric_s = ts; }
18513
- #line 2302 "ext/lexer/lexer.rl"
18514
+ #line 2305 "ext/lexer/lexer.rl"
18514
18515
  {act = 147;}
18515
18516
  break;
18516
18517
  case 464:
18517
18518
  #line 1 "NONE"
18518
18519
  {te = p+1;}
18519
- #line 2261 "ext/lexer/lexer.rl"
18520
+ #line 2264 "ext/lexer/lexer.rl"
18520
18521
  { num_base = 10; num_digits_s = ts; }
18521
- #line 2263 "ext/lexer/lexer.rl"
18522
+ #line 2266 "ext/lexer/lexer.rl"
18522
18523
  { num_suffix_s = p; }
18523
- #line 1077 "ext/lexer/lexer.rl"
18524
+ #line 1080 "ext/lexer/lexer.rl"
18524
18525
  { num_xfrm = emit_int; numeric_s = ts; }
18525
- #line 2302 "ext/lexer/lexer.rl"
18526
+ #line 2305 "ext/lexer/lexer.rl"
18526
18527
  {act = 147;}
18527
18528
  break;
18528
18529
  case 423:
18529
18530
  #line 1 "NONE"
18530
18531
  {te = p+1;}
18531
- #line 2262 "ext/lexer/lexer.rl"
18532
+ #line 2265 "ext/lexer/lexer.rl"
18532
18533
  { num_base = 8; num_digits_s = ts; }
18533
- #line 2263 "ext/lexer/lexer.rl"
18534
+ #line 2266 "ext/lexer/lexer.rl"
18534
18535
  { num_suffix_s = p; }
18535
- #line 1077 "ext/lexer/lexer.rl"
18536
+ #line 1080 "ext/lexer/lexer.rl"
18536
18537
  { num_xfrm = emit_int; numeric_s = ts; }
18537
- #line 2302 "ext/lexer/lexer.rl"
18538
+ #line 2305 "ext/lexer/lexer.rl"
18538
18539
  {act = 147;}
18539
18540
  break;
18540
- #line 18541 "ext/lexer/lexer.c"
18541
+ #line 18542 "ext/lexer/lexer.c"
18541
18542
  }
18542
18543
 
18543
18544
  _again:
@@ -18546,7 +18547,7 @@ _again:
18546
18547
  #line 1 "NONE"
18547
18548
  {ts = 0;}
18548
18549
  break;
18549
- #line 18550 "ext/lexer/lexer.c"
18550
+ #line 18551 "ext/lexer/lexer.c"
18550
18551
  }
18551
18552
 
18552
18553
  if ( cs == 0 )
@@ -18565,7 +18566,7 @@ _again:
18565
18566
  _out: {}
18566
18567
  }
18567
18568
 
18568
- #line 351 "ext/lexer/lexer.rl"
18569
+ #line 352 "ext/lexer/lexer.rl"
18569
18570
 
18570
18571
 
18571
18572
  lexer->p = p;
@@ -19173,6 +19174,8 @@ void Init_lexer()
19173
19174
  rb_define_method(c_Lexer, "source_buffer=", lexer_set_source_buffer, 1);
19174
19175
  rb_define_method(c_Lexer, "force_utf32=", lexer_set_force_utf32, 1);
19175
19176
 
19177
+ rb_define_attr(c_Lexer, "context", 1, 1);
19178
+
19176
19179
  VALUE m_Source = rb_const_get(m_Parser, rb_intern("Source"));
19177
19180
  comment_klass = rb_const_get(m_Source, rb_intern("Comment"));
19178
19181
  diagnostic_klass = rb_const_get(m_Parser, rb_intern("Diagnostic"));
@@ -19204,5 +19207,5 @@ void Init_lexer()
19204
19207
  }
19205
19208
 
19206
19209
 
19207
- #line 2527 "ext/lexer/lexer.rl"
19210
+ #line 2530 "ext/lexer/lexer.rl"
19208
19211