c_lexer 2.6.2.0.1 → 2.6.2.1.0

Sign up to get free protection for your applications and to get access to all the features.
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