c_lexer 2.5.3.0.0 → 2.6.0.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/ext/lexer/lexer.c CHANGED
@@ -10603,83 +10603,83 @@ _eof_trans:
10603
10603
  }
10604
10604
  break;
10605
10605
  case 59:
10606
- #line 1544 "ext/lexer/lexer.rl"
10606
+ #line 1542 "ext/lexer/lexer.rl"
10607
10607
  { sharp_s = p - 1; }
10608
10608
  break;
10609
10609
  case 63:
10610
- #line 1545 "ext/lexer/lexer.rl"
10610
+ #line 1543 "ext/lexer/lexer.rl"
10611
10611
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
10612
10612
  break;
10613
10613
  case 292:
10614
- #line 1563 "ext/lexer/lexer.rl"
10614
+ #line 1561 "ext/lexer/lexer.rl"
10615
10615
  { tm = p; }
10616
10616
  break;
10617
10617
  case 36:
10618
- #line 1766 "ext/lexer/lexer.rl"
10618
+ #line 1764 "ext/lexer/lexer.rl"
10619
10619
  { tm = p; }
10620
10620
  break;
10621
10621
  case 38:
10622
- #line 1777 "ext/lexer/lexer.rl"
10622
+ #line 1775 "ext/lexer/lexer.rl"
10623
10623
  { tm = p; }
10624
10624
  break;
10625
10625
  case 40:
10626
- #line 1794 "ext/lexer/lexer.rl"
10626
+ #line 1792 "ext/lexer/lexer.rl"
10627
10627
  { tm = p; }
10628
10628
  break;
10629
10629
  case 69:
10630
- #line 1925 "ext/lexer/lexer.rl"
10630
+ #line 1923 "ext/lexer/lexer.rl"
10631
10631
  { heredoc_e = p; }
10632
10632
  break;
10633
10633
  case 334:
10634
- #line 2020 "ext/lexer/lexer.rl"
10634
+ #line 2018 "ext/lexer/lexer.rl"
10635
10635
  { lexer->escape = Qnil; }
10636
10636
  break;
10637
10637
  case 363:
10638
- #line 2077 "ext/lexer/lexer.rl"
10638
+ #line 2075 "ext/lexer/lexer.rl"
10639
10639
  { tm = p; }
10640
10640
  break;
10641
10641
  case 290:
10642
- #line 2116 "ext/lexer/lexer.rl"
10642
+ #line 2114 "ext/lexer/lexer.rl"
10643
10643
  { ident_tok = tok(lexer, ts, te); ident_ts = ts; ident_te = te; }
10644
10644
  break;
10645
10645
  case 453:
10646
- #line 2263 "ext/lexer/lexer.rl"
10646
+ #line 2261 "ext/lexer/lexer.rl"
10647
10647
  { num_base = 16; num_digits_s = p; }
10648
10648
  break;
10649
10649
  case 445:
10650
- #line 2264 "ext/lexer/lexer.rl"
10650
+ #line 2262 "ext/lexer/lexer.rl"
10651
10651
  { num_base = 10; num_digits_s = p; }
10652
10652
  break;
10653
10653
  case 449:
10654
- #line 2265 "ext/lexer/lexer.rl"
10654
+ #line 2263 "ext/lexer/lexer.rl"
10655
10655
  { num_base = 8; num_digits_s = p; }
10656
10656
  break;
10657
10657
  case 441:
10658
- #line 2266 "ext/lexer/lexer.rl"
10658
+ #line 2264 "ext/lexer/lexer.rl"
10659
10659
  { num_base = 2; num_digits_s = p; }
10660
10660
  break;
10661
10661
  case 460:
10662
- #line 2267 "ext/lexer/lexer.rl"
10662
+ #line 2265 "ext/lexer/lexer.rl"
10663
10663
  { num_base = 10; num_digits_s = ts; }
10664
10664
  break;
10665
10665
  case 417:
10666
- #line 2268 "ext/lexer/lexer.rl"
10666
+ #line 2266 "ext/lexer/lexer.rl"
10667
10667
  { num_base = 8; num_digits_s = ts; }
10668
10668
  break;
10669
10669
  case 433:
10670
- #line 2269 "ext/lexer/lexer.rl"
10670
+ #line 2267 "ext/lexer/lexer.rl"
10671
10671
  { num_suffix_s = p; }
10672
10672
  break;
10673
10673
  case 426:
10674
- #line 2336 "ext/lexer/lexer.rl"
10674
+ #line 2334 "ext/lexer/lexer.rl"
10675
10675
  { num_suffix_s = p; }
10676
10676
  break;
10677
10677
  case 423:
10678
- #line 2337 "ext/lexer/lexer.rl"
10678
+ #line 2335 "ext/lexer/lexer.rl"
10679
10679
  { num_suffix_s = p; }
10680
10680
  break;
10681
10681
  case 85:
10682
- #line 2490 "ext/lexer/lexer.rl"
10682
+ #line 2488 "ext/lexer/lexer.rl"
10683
10683
  { tm = p; }
10684
10684
  break;
10685
10685
  case 7:
@@ -10687,7 +10687,7 @@ _eof_trans:
10687
10687
  {te = p+1;}
10688
10688
  break;
10689
10689
  case 105:
10690
- #line 1439 "ext/lexer/lexer.rl"
10690
+ #line 1437 "ext/lexer/lexer.rl"
10691
10691
  {te = p+1;{
10692
10692
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
10693
10693
  literal_flush_string(current_literal);
@@ -10706,7 +10706,7 @@ _eof_trans:
10706
10706
  }}
10707
10707
  break;
10708
10708
  case 5:
10709
- #line 1388 "ext/lexer/lexer.rl"
10709
+ #line 1386 "ext/lexer/lexer.rl"
10710
10710
  {te = p+1;{
10711
10711
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
10712
10712
  literal_flush_string(current_literal);
@@ -10728,7 +10728,7 @@ _eof_trans:
10728
10728
  }}
10729
10729
  break;
10730
10730
  case 101:
10731
- #line 1337 "ext/lexer/lexer.rl"
10731
+ #line 1335 "ext/lexer/lexer.rl"
10732
10732
  {te = p+1;{
10733
10733
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
10734
10734
  long str_s = current_literal->str_s;
@@ -10803,7 +10803,7 @@ _eof_trans:
10803
10803
  }}
10804
10804
  break;
10805
10805
  case 106:
10806
- #line 1388 "ext/lexer/lexer.rl"
10806
+ #line 1386 "ext/lexer/lexer.rl"
10807
10807
  {te = p;p--;{
10808
10808
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
10809
10809
  literal_flush_string(current_literal);
@@ -10825,7 +10825,7 @@ _eof_trans:
10825
10825
  }}
10826
10826
  break;
10827
10827
  case 103:
10828
- #line 1381 "ext/lexer/lexer.rl"
10828
+ #line 1379 "ext/lexer/lexer.rl"
10829
10829
  {te = p;p--;{
10830
10830
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
10831
10831
  literal_extend_space(current_literal, ts, te);
@@ -10873,18 +10873,16 @@ _eof_trans:
10873
10873
  literal_extend_string(current_literal, escaped_char, ts, te);
10874
10874
  }
10875
10875
  } else {
10876
- if (literal_regexp_p(current_literal)) {
10876
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
10877
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
10878
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
10879
+ VALUE token = tok(lexer, ts, te);
10880
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
10881
+ literal_extend_string(current_literal, token, ts, te);
10882
+ } else if (literal_regexp_p(current_literal)) {
10877
10883
  VALUE token = tok(lexer, ts, te);
10878
10884
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
10879
10885
  literal_extend_string(current_literal, token, ts, te);
10880
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
10881
- if (literal_squiggly_heredoc_p(current_literal)) {
10882
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
10883
- } else {
10884
- VALUE token = tok(lexer, ts, te);
10885
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
10886
- literal_extend_string(current_literal, token, ts, te);
10887
- }
10888
10886
  } else if (lexer->escape == Qnil) {
10889
10887
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
10890
10888
  } else {
@@ -10923,7 +10921,7 @@ _eof_trans:
10923
10921
  }}
10924
10922
  break;
10925
10923
  case 133:
10926
- #line 1439 "ext/lexer/lexer.rl"
10924
+ #line 1437 "ext/lexer/lexer.rl"
10927
10925
  {te = p+1;{
10928
10926
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
10929
10927
  literal_flush_string(current_literal);
@@ -10942,7 +10940,7 @@ _eof_trans:
10942
10940
  }}
10943
10941
  break;
10944
10942
  case 10:
10945
- #line 1388 "ext/lexer/lexer.rl"
10943
+ #line 1386 "ext/lexer/lexer.rl"
10946
10944
  {te = p+1;{
10947
10945
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
10948
10946
  literal_flush_string(current_literal);
@@ -10964,7 +10962,7 @@ _eof_trans:
10964
10962
  }}
10965
10963
  break;
10966
10964
  case 130:
10967
- #line 1337 "ext/lexer/lexer.rl"
10965
+ #line 1335 "ext/lexer/lexer.rl"
10968
10966
  {te = p+1;{
10969
10967
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
10970
10968
  long str_s = current_literal->str_s;
@@ -11039,7 +11037,7 @@ _eof_trans:
11039
11037
  }}
11040
11038
  break;
11041
11039
  case 134:
11042
- #line 1388 "ext/lexer/lexer.rl"
11040
+ #line 1386 "ext/lexer/lexer.rl"
11043
11041
  {te = p;p--;{
11044
11042
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11045
11043
  literal_flush_string(current_literal);
@@ -11102,18 +11100,16 @@ _eof_trans:
11102
11100
  literal_extend_string(current_literal, escaped_char, ts, te);
11103
11101
  }
11104
11102
  } else {
11105
- if (literal_regexp_p(current_literal)) {
11103
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
11104
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
11105
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
11106
+ VALUE token = tok(lexer, ts, te);
11107
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
11108
+ literal_extend_string(current_literal, token, ts, te);
11109
+ } else if (literal_regexp_p(current_literal)) {
11106
11110
  VALUE token = tok(lexer, ts, te);
11107
11111
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
11108
11112
  literal_extend_string(current_literal, token, ts, te);
11109
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
11110
- if (literal_squiggly_heredoc_p(current_literal)) {
11111
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
11112
- } else {
11113
- VALUE token = tok(lexer, ts, te);
11114
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
11115
- literal_extend_string(current_literal, token, ts, te);
11116
- }
11117
11113
  } else if (lexer->escape == Qnil) {
11118
11114
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
11119
11115
  } else {
@@ -11152,7 +11148,7 @@ _eof_trans:
11152
11148
  }}
11153
11149
  break;
11154
11150
  case 157:
11155
- #line 1337 "ext/lexer/lexer.rl"
11151
+ #line 1335 "ext/lexer/lexer.rl"
11156
11152
  {te = p+1;{
11157
11153
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11158
11154
  long str_s = current_literal->str_s;
@@ -11227,7 +11223,7 @@ _eof_trans:
11227
11223
  }}
11228
11224
  break;
11229
11225
  case 159:
11230
- #line 1381 "ext/lexer/lexer.rl"
11226
+ #line 1379 "ext/lexer/lexer.rl"
11231
11227
  {te = p;p--;{
11232
11228
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11233
11229
  literal_extend_space(current_literal, ts, te);
@@ -11263,7 +11259,7 @@ _eof_trans:
11263
11259
  }}
11264
11260
  break;
11265
11261
  case 163:
11266
- #line 1337 "ext/lexer/lexer.rl"
11262
+ #line 1335 "ext/lexer/lexer.rl"
11267
11263
  {te = p+1;{
11268
11264
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11269
11265
  long str_s = current_literal->str_s;
@@ -11367,7 +11363,7 @@ _eof_trans:
11367
11363
  }}
11368
11364
  break;
11369
11365
  case 172:
11370
- #line 1439 "ext/lexer/lexer.rl"
11366
+ #line 1437 "ext/lexer/lexer.rl"
11371
11367
  {te = p+1;{
11372
11368
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11373
11369
  literal_flush_string(current_literal);
@@ -11386,7 +11382,7 @@ _eof_trans:
11386
11382
  }}
11387
11383
  break;
11388
11384
  case 13:
11389
- #line 1388 "ext/lexer/lexer.rl"
11385
+ #line 1386 "ext/lexer/lexer.rl"
11390
11386
  {te = p+1;{
11391
11387
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11392
11388
  literal_flush_string(current_literal);
@@ -11408,7 +11404,7 @@ _eof_trans:
11408
11404
  }}
11409
11405
  break;
11410
11406
  case 169:
11411
- #line 1337 "ext/lexer/lexer.rl"
11407
+ #line 1335 "ext/lexer/lexer.rl"
11412
11408
  {te = p+1;{
11413
11409
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11414
11410
  long str_s = current_literal->str_s;
@@ -11483,7 +11479,7 @@ _eof_trans:
11483
11479
  }}
11484
11480
  break;
11485
11481
  case 173:
11486
- #line 1388 "ext/lexer/lexer.rl"
11482
+ #line 1386 "ext/lexer/lexer.rl"
11487
11483
  {te = p;p--;{
11488
11484
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11489
11485
  literal_flush_string(current_literal);
@@ -11563,7 +11559,7 @@ _eof_trans:
11563
11559
  }}
11564
11560
  break;
11565
11561
  case 175:
11566
- #line 1337 "ext/lexer/lexer.rl"
11562
+ #line 1335 "ext/lexer/lexer.rl"
11567
11563
  {te = p+1;{
11568
11564
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11569
11565
  long str_s = current_literal->str_s;
@@ -11638,7 +11634,7 @@ _eof_trans:
11638
11634
  }}
11639
11635
  break;
11640
11636
  case 182:
11641
- #line 1439 "ext/lexer/lexer.rl"
11637
+ #line 1437 "ext/lexer/lexer.rl"
11642
11638
  {te = p+1;{
11643
11639
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11644
11640
  literal_flush_string(current_literal);
@@ -11657,7 +11653,7 @@ _eof_trans:
11657
11653
  }}
11658
11654
  break;
11659
11655
  case 15:
11660
- #line 1388 "ext/lexer/lexer.rl"
11656
+ #line 1386 "ext/lexer/lexer.rl"
11661
11657
  {te = p+1;{
11662
11658
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11663
11659
  literal_flush_string(current_literal);
@@ -11679,7 +11675,7 @@ _eof_trans:
11679
11675
  }}
11680
11676
  break;
11681
11677
  case 178:
11682
- #line 1337 "ext/lexer/lexer.rl"
11678
+ #line 1335 "ext/lexer/lexer.rl"
11683
11679
  {te = p+1;{
11684
11680
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11685
11681
  long str_s = current_literal->str_s;
@@ -11754,7 +11750,7 @@ _eof_trans:
11754
11750
  }}
11755
11751
  break;
11756
11752
  case 183:
11757
- #line 1388 "ext/lexer/lexer.rl"
11753
+ #line 1386 "ext/lexer/lexer.rl"
11758
11754
  {te = p;p--;{
11759
11755
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11760
11756
  literal_flush_string(current_literal);
@@ -11776,7 +11772,7 @@ _eof_trans:
11776
11772
  }}
11777
11773
  break;
11778
11774
  case 180:
11779
- #line 1381 "ext/lexer/lexer.rl"
11775
+ #line 1379 "ext/lexer/lexer.rl"
11780
11776
  {te = p;p--;{
11781
11777
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11782
11778
  literal_extend_space(current_literal, ts, te);
@@ -11841,7 +11837,7 @@ _eof_trans:
11841
11837
  }}
11842
11838
  break;
11843
11839
  case 185:
11844
- #line 1337 "ext/lexer/lexer.rl"
11840
+ #line 1335 "ext/lexer/lexer.rl"
11845
11841
  {te = p+1;{
11846
11842
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11847
11843
  long str_s = current_literal->str_s;
@@ -11916,14 +11912,14 @@ _eof_trans:
11916
11912
  }}
11917
11913
  break;
11918
11914
  case 187:
11919
- #line 1381 "ext/lexer/lexer.rl"
11915
+ #line 1379 "ext/lexer/lexer.rl"
11920
11916
  {te = p;p--;{
11921
11917
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
11922
11918
  literal_extend_space(current_literal, ts, te);
11923
11919
  }}
11924
11920
  break;
11925
11921
  case 188:
11926
- #line 1531 "ext/lexer/lexer.rl"
11922
+ #line 1529 "ext/lexer/lexer.rl"
11927
11923
  {te = p+1;{
11928
11924
  emit_token(lexer, tREGEXP_OPT, tok(lexer, ts, te - 1), ts, te - 1);
11929
11925
  p--;
@@ -11931,7 +11927,7 @@ _eof_trans:
11931
11927
  }}
11932
11928
  break;
11933
11929
  case 189:
11934
- #line 1515 "ext/lexer/lexer.rl"
11930
+ #line 1513 "ext/lexer/lexer.rl"
11935
11931
  {te = p;p--;{
11936
11932
  VALUE unknown_options = find_unknown_options(tok(lexer, ts, te));
11937
11933
 
@@ -11948,7 +11944,7 @@ _eof_trans:
11948
11944
  }}
11949
11945
  break;
11950
11946
  case 16:
11951
- #line 1612 "ext/lexer/lexer.rl"
11947
+ #line 1610 "ext/lexer/lexer.rl"
11952
11948
  {te = p+1;{
11953
11949
  VALUE str = tok(lexer, ts, te);
11954
11950
 
@@ -11965,7 +11961,7 @@ _eof_trans:
11965
11961
  }}
11966
11962
  break;
11967
11963
  case 190:
11968
- #line 1612 "ext/lexer/lexer.rl"
11964
+ #line 1610 "ext/lexer/lexer.rl"
11969
11965
  {te = p;p--;{
11970
11966
  VALUE str = tok(lexer, ts, te);
11971
11967
 
@@ -11982,7 +11978,7 @@ _eof_trans:
11982
11978
  }}
11983
11979
  break;
11984
11980
  case 192:
11985
- #line 1627 "ext/lexer/lexer.rl"
11981
+ #line 1625 "ext/lexer/lexer.rl"
11986
11982
  {te = p;p--;{
11987
11983
  VALUE str = tok(lexer, ts, te);
11988
11984
 
@@ -11997,7 +11993,7 @@ _eof_trans:
11997
11993
  }}
11998
11994
  break;
11999
11995
  case 191:
12000
- #line 1640 "ext/lexer/lexer.rl"
11996
+ #line 1638 "ext/lexer/lexer.rl"
12001
11997
  {te = p;p--;{
12002
11998
  VALUE str = tok(lexer, ts, te);
12003
11999
 
@@ -12012,16 +12008,16 @@ _eof_trans:
12012
12008
  }}
12013
12009
  break;
12014
12010
  case 213:
12015
- #line 1656 "ext/lexer/lexer.rl"
12011
+ #line 1654 "ext/lexer/lexer.rl"
12016
12012
  {te = p+1;{ emit_table_KEYWORDS_BEGIN(lexer, tok(lexer, ts, te), ts, te);
12017
12013
  cs = 439; {p++; goto _out; } }}
12018
12014
  break;
12019
12015
  case 199:
12020
- #line 1661 "ext/lexer/lexer.rl"
12016
+ #line 1659 "ext/lexer/lexer.rl"
12021
12017
  {te = p+1;{ emit(tIDENTIFIER); cs = 439; {p++; goto _out; } }}
12022
12018
  break;
12023
12019
  case 18:
12024
- #line 1663 "ext/lexer/lexer.rl"
12020
+ #line 1661 "ext/lexer/lexer.rl"
12025
12021
  {te = p+1;{ p = ts - 1; cs = 768; {
12026
12022
  /* grow the state stack as needed */
12027
12023
  if (lexer->cs_stack_top == lexer->cs_stack_size) {
@@ -12034,16 +12030,16 @@ _eof_trans:
12034
12030
  {stack[top++] = cs; cs = 321;goto _again;}} }}
12035
12031
  break;
12036
12032
  case 196:
12037
- #line 1668 "ext/lexer/lexer.rl"
12033
+ #line 1666 "ext/lexer/lexer.rl"
12038
12034
  {te = p+1;{ emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12039
12035
  cs = 439; {p++; goto _out; } }}
12040
12036
  break;
12041
12037
  case 208:
12042
- #line 1671 "ext/lexer/lexer.rl"
12038
+ #line 1669 "ext/lexer/lexer.rl"
12043
12039
  {te = p+1;{ p--; p--; {cs = 768;goto _again;} }}
12044
12040
  break;
12045
12041
  case 20:
12046
- #line 1676 "ext/lexer/lexer.rl"
12042
+ #line 1674 "ext/lexer/lexer.rl"
12047
12043
  {te = p+1;{
12048
12044
  if (lexer->version == 23) {
12049
12045
  VALUE type = rb_str_substr(lexer->source, ts, te - ts - 1);
@@ -12059,7 +12055,7 @@ _eof_trans:
12059
12055
  }}
12060
12056
  break;
12061
12057
  case 195:
12062
- #line 1692 "ext/lexer/lexer.rl"
12058
+ #line 1690 "ext/lexer/lexer.rl"
12063
12059
  {te = p+1;{ p--; {cs = 768;goto _again;} }}
12064
12060
  break;
12065
12061
  case 194:
@@ -12067,20 +12063,20 @@ _eof_trans:
12067
12063
  {te = p+1;{ p--; {p++; goto _out; } }}
12068
12064
  break;
12069
12065
  case 212:
12070
- #line 1656 "ext/lexer/lexer.rl"
12066
+ #line 1654 "ext/lexer/lexer.rl"
12071
12067
  {te = p;p--;{ emit_table_KEYWORDS_BEGIN(lexer, tok(lexer, ts, te), ts, te);
12072
12068
  cs = 439; {p++; goto _out; } }}
12073
12069
  break;
12074
12070
  case 209:
12075
- #line 1659 "ext/lexer/lexer.rl"
12071
+ #line 1657 "ext/lexer/lexer.rl"
12076
12072
  {te = p;p--;{ emit(tCONSTANT); cs = 439; {p++; goto _out; } }}
12077
12073
  break;
12078
12074
  case 211:
12079
- #line 1661 "ext/lexer/lexer.rl"
12075
+ #line 1659 "ext/lexer/lexer.rl"
12080
12076
  {te = p;p--;{ emit(tIDENTIFIER); cs = 439; {p++; goto _out; } }}
12081
12077
  break;
12082
12078
  case 206:
12083
- #line 1663 "ext/lexer/lexer.rl"
12079
+ #line 1661 "ext/lexer/lexer.rl"
12084
12080
  {te = p;p--;{ p = ts - 1; cs = 768; {
12085
12081
  /* grow the state stack as needed */
12086
12082
  if (lexer->cs_stack_top == lexer->cs_stack_size) {
@@ -12093,29 +12089,29 @@ _eof_trans:
12093
12089
  {stack[top++] = cs; cs = 321;goto _again;}} }}
12094
12090
  break;
12095
12091
  case 202:
12096
- #line 1668 "ext/lexer/lexer.rl"
12092
+ #line 1666 "ext/lexer/lexer.rl"
12097
12093
  {te = p;p--;{ emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12098
12094
  cs = 439; {p++; goto _out; } }}
12099
12095
  break;
12100
12096
  case 207:
12101
- #line 1673 "ext/lexer/lexer.rl"
12097
+ #line 1671 "ext/lexer/lexer.rl"
12102
12098
  {te = p;p--;{ p--; {cs = 536;goto _again;} }}
12103
12099
  break;
12104
12100
  case 200:
12105
- #line 1690 "ext/lexer/lexer.rl"
12101
+ #line 1688 "ext/lexer/lexer.rl"
12106
12102
  {te = p;p--;}
12107
12103
  break;
12108
12104
  case 205:
12109
- #line 1692 "ext/lexer/lexer.rl"
12105
+ #line 1690 "ext/lexer/lexer.rl"
12110
12106
  {te = p;p--;{ p--; {cs = 768;goto _again;} }}
12111
12107
  break;
12112
12108
  case 19:
12113
- #line 1668 "ext/lexer/lexer.rl"
12109
+ #line 1666 "ext/lexer/lexer.rl"
12114
12110
  {{p = ((te))-1;}{ emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12115
12111
  cs = 439; {p++; goto _out; } }}
12116
12112
  break;
12117
12113
  case 17:
12118
- #line 1692 "ext/lexer/lexer.rl"
12114
+ #line 1690 "ext/lexer/lexer.rl"
12119
12115
  {{p = ((te))-1;}{ p--; {cs = 768;goto _again;} }}
12120
12116
  break;
12121
12117
  case 198:
@@ -12135,14 +12131,14 @@ _eof_trans:
12135
12131
  }
12136
12132
  break;
12137
12133
  case 22:
12138
- #line 1698 "ext/lexer/lexer.rl"
12134
+ #line 1696 "ext/lexer/lexer.rl"
12139
12135
  {te = p+1;{
12140
12136
  emit_token(lexer, tLABEL, tok(lexer, ts, te - 2), ts, te - 1);
12141
12137
  p--; cs = 753; {p++; goto _out; }
12142
12138
  }}
12143
12139
  break;
12144
12140
  case 215:
12145
- #line 1705 "ext/lexer/lexer.rl"
12141
+ #line 1703 "ext/lexer/lexer.rl"
12146
12142
  {te = p+1;{ p--; {cs = 768;goto _again;} }}
12147
12143
  break;
12148
12144
  case 214:
@@ -12150,24 +12146,24 @@ _eof_trans:
12150
12146
  {te = p+1;{ p--; {p++; goto _out; } }}
12151
12147
  break;
12152
12148
  case 217:
12153
- #line 1703 "ext/lexer/lexer.rl"
12149
+ #line 1701 "ext/lexer/lexer.rl"
12154
12150
  {te = p;p--;}
12155
12151
  break;
12156
12152
  case 216:
12157
- #line 1705 "ext/lexer/lexer.rl"
12153
+ #line 1703 "ext/lexer/lexer.rl"
12158
12154
  {te = p;p--;{ p--; {cs = 768;goto _again;} }}
12159
12155
  break;
12160
12156
  case 21:
12161
- #line 1705 "ext/lexer/lexer.rl"
12157
+ #line 1703 "ext/lexer/lexer.rl"
12162
12158
  {{p = ((te))-1;}{ p--; {cs = 768;goto _again;} }}
12163
12159
  break;
12164
12160
  case 223:
12165
- #line 1722 "ext/lexer/lexer.rl"
12161
+ #line 1720 "ext/lexer/lexer.rl"
12166
12162
  {te = p+1;{ emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12167
12163
  cs = 467; {p++; goto _out; } }}
12168
12164
  break;
12169
12165
  case 222:
12170
- #line 1728 "ext/lexer/lexer.rl"
12166
+ #line 1726 "ext/lexer/lexer.rl"
12171
12167
  {te = p+1;{ p--; {cs = 768;goto _again;} }}
12172
12168
  break;
12173
12169
  case 221:
@@ -12175,32 +12171,32 @@ _eof_trans:
12175
12171
  {te = p+1;{ p--; {p++; goto _out; } }}
12176
12172
  break;
12177
12173
  case 233:
12178
- #line 1711 "ext/lexer/lexer.rl"
12174
+ #line 1709 "ext/lexer/lexer.rl"
12179
12175
  {te = p;p--;{ emit(tCONSTANT); cs = (arg_or_cmdarg(command_state)); {p++; goto _out; } }}
12180
12176
  break;
12181
12177
  case 224:
12182
- #line 1713 "ext/lexer/lexer.rl"
12178
+ #line 1711 "ext/lexer/lexer.rl"
12183
12179
  {te = p;p--;{ emit(tIDENTIFIER); cs = (arg_or_cmdarg(command_state)); {p++; goto _out; } }}
12184
12180
  break;
12185
12181
  case 229:
12186
- #line 1722 "ext/lexer/lexer.rl"
12182
+ #line 1720 "ext/lexer/lexer.rl"
12187
12183
  {te = p;p--;{ emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12188
12184
  cs = 467; {p++; goto _out; } }}
12189
12185
  break;
12190
12186
  case 227:
12191
- #line 1725 "ext/lexer/lexer.rl"
12187
+ #line 1723 "ext/lexer/lexer.rl"
12192
12188
  {te = p;p--;}
12193
12189
  break;
12194
12190
  case 232:
12195
- #line 1728 "ext/lexer/lexer.rl"
12191
+ #line 1726 "ext/lexer/lexer.rl"
12196
12192
  {te = p;p--;{ p--; {cs = 768;goto _again;} }}
12197
12193
  break;
12198
12194
  case 256:
12199
- #line 1762 "ext/lexer/lexer.rl"
12195
+ #line 1760 "ext/lexer/lexer.rl"
12200
12196
  {te = p+1;{ p = ts - 1; {cs = 768;goto _again;} }}
12201
12197
  break;
12202
12198
  case 239:
12203
- #line 1767 "ext/lexer/lexer.rl"
12199
+ #line 1765 "ext/lexer/lexer.rl"
12204
12200
  {te = p+1;{
12205
12201
  if (NUM2INT(rb_ary_entry(lexer->source_pts, tm)) == '/') {
12206
12202
  diagnostic(lexer, warning, ambiguous_literal, Qnil,
@@ -12212,26 +12208,26 @@ _eof_trans:
12212
12208
  }}
12213
12209
  break;
12214
12210
  case 245:
12215
- #line 1788 "ext/lexer/lexer.rl"
12211
+ #line 1786 "ext/lexer/lexer.rl"
12216
12212
  {te = p+1;{ p--; p--; {cs = 536;goto _again;} }}
12217
12213
  break;
12218
12214
  case 24:
12219
- #line 1792 "ext/lexer/lexer.rl"
12215
+ #line 1790 "ext/lexer/lexer.rl"
12220
12216
  {te = p+1;{ p = ts - 1; {cs = 536;goto _again;} }}
12221
12217
  break;
12222
12218
  case 247:
12223
- #line 1794 "ext/lexer/lexer.rl"
12219
+ #line 1792 "ext/lexer/lexer.rl"
12224
12220
  {te = p+1;{ p = tm - 1; {cs = 768;goto _again;} }}
12225
12221
  break;
12226
12222
  case 39:
12227
- #line 1801 "ext/lexer/lexer.rl"
12223
+ #line 1799 "ext/lexer/lexer.rl"
12228
12224
  {te = p+1;{
12229
12225
  p = ts - 1;
12230
12226
  {cs = 768;goto _again;}
12231
12227
  }}
12232
12228
  break;
12233
12229
  case 234:
12234
- #line 1812 "ext/lexer/lexer.rl"
12230
+ #line 1810 "ext/lexer/lexer.rl"
12235
12231
  {te = p+1;{ p--; {cs = 536;goto _again;} }}
12236
12232
  break;
12237
12233
  case 235:
@@ -12239,11 +12235,11 @@ _eof_trans:
12239
12235
  {te = p+1;{ p--; {p++; goto _out; } }}
12240
12236
  break;
12241
12237
  case 246:
12242
- #line 1764 "ext/lexer/lexer.rl"
12238
+ #line 1762 "ext/lexer/lexer.rl"
12243
12239
  {te = p;p--;{ p--; {cs = 536;goto _again;} }}
12244
12240
  break;
12245
12241
  case 242:
12246
- #line 1777 "ext/lexer/lexer.rl"
12242
+ #line 1775 "ext/lexer/lexer.rl"
12247
12243
  {te = p;p--;{
12248
12244
  VALUE hash = rb_hash_new();
12249
12245
  VALUE str = tok(lexer, tm, te);
@@ -12256,30 +12252,30 @@ _eof_trans:
12256
12252
  }}
12257
12253
  break;
12258
12254
  case 244:
12259
- #line 1790 "ext/lexer/lexer.rl"
12255
+ #line 1788 "ext/lexer/lexer.rl"
12260
12256
  {te = p;p--;{ p--; {cs = 536;goto _again;} }}
12261
12257
  break;
12262
12258
  case 238:
12263
- #line 1801 "ext/lexer/lexer.rl"
12259
+ #line 1799 "ext/lexer/lexer.rl"
12264
12260
  {te = p;p--;{
12265
12261
  p = ts - 1;
12266
12262
  {cs = 768;goto _again;}
12267
12263
  }}
12268
12264
  break;
12269
12265
  case 237:
12270
- #line 1806 "ext/lexer/lexer.rl"
12266
+ #line 1804 "ext/lexer/lexer.rl"
12271
12267
  {te = p;p--;}
12272
12268
  break;
12273
12269
  case 255:
12274
- #line 1812 "ext/lexer/lexer.rl"
12270
+ #line 1810 "ext/lexer/lexer.rl"
12275
12271
  {te = p;p--;{ p--; {cs = 536;goto _again;} }}
12276
12272
  break;
12277
12273
  case 25:
12278
- #line 1806 "ext/lexer/lexer.rl"
12274
+ #line 1804 "ext/lexer/lexer.rl"
12279
12275
  {{p = ((te))-1;}}
12280
12276
  break;
12281
12277
  case 41:
12282
- #line 1812 "ext/lexer/lexer.rl"
12278
+ #line 1810 "ext/lexer/lexer.rl"
12283
12279
  {{p = ((te))-1;}{ p--; {cs = 536;goto _again;} }}
12284
12280
  break;
12285
12281
  case 23:
@@ -12321,7 +12317,7 @@ _eof_trans:
12321
12317
  }
12322
12318
  break;
12323
12319
  case 43:
12324
- #line 1841 "ext/lexer/lexer.rl"
12320
+ #line 1839 "ext/lexer/lexer.rl"
12325
12321
  {te = p+1;{ p = ts - 1;
12326
12322
  {cs = 467;goto _again;} }}
12327
12323
  break;
@@ -12330,12 +12326,12 @@ _eof_trans:
12330
12326
  {te = p+1;{ p--; {p++; goto _out; } }}
12331
12327
  break;
12332
12328
  case 261:
12333
- #line 1841 "ext/lexer/lexer.rl"
12329
+ #line 1839 "ext/lexer/lexer.rl"
12334
12330
  {te = p;p--;{ p = ts - 1;
12335
12331
  {cs = 467;goto _again;} }}
12336
12332
  break;
12337
12333
  case 44:
12338
- #line 1841 "ext/lexer/lexer.rl"
12334
+ #line 1839 "ext/lexer/lexer.rl"
12339
12335
  {{p = ((te))-1;}{ p = ts - 1;
12340
12336
  {cs = 467;goto _again;} }}
12341
12337
  break;
@@ -12360,11 +12356,11 @@ _eof_trans:
12360
12356
  }
12361
12357
  break;
12362
12358
  case 271:
12363
- #line 1859 "ext/lexer/lexer.rl"
12359
+ #line 1857 "ext/lexer/lexer.rl"
12364
12360
  {te = p+1;{ emit_do(lexer, 1, ts, te); cs = 760; {p++; goto _out; } }}
12365
12361
  break;
12366
12362
  case 264:
12367
- #line 1864 "ext/lexer/lexer.rl"
12363
+ #line 1862 "ext/lexer/lexer.rl"
12368
12364
  {te = p+1;{ p--; {cs = 768;goto _again;} }}
12369
12365
  break;
12370
12366
  case 265:
@@ -12372,15 +12368,15 @@ _eof_trans:
12372
12368
  {te = p+1;{ p--; {p++; goto _out; } }}
12373
12369
  break;
12374
12370
  case 266:
12375
- #line 1861 "ext/lexer/lexer.rl"
12371
+ #line 1859 "ext/lexer/lexer.rl"
12376
12372
  {te = p;p--;}
12377
12373
  break;
12378
12374
  case 269:
12379
- #line 1864 "ext/lexer/lexer.rl"
12375
+ #line 1862 "ext/lexer/lexer.rl"
12380
12376
  {te = p;p--;{ p--; {cs = 768;goto _again;} }}
12381
12377
  break;
12382
12378
  case 275:
12383
- #line 1880 "ext/lexer/lexer.rl"
12379
+ #line 1878 "ext/lexer/lexer.rl"
12384
12380
  {te = p+1;{ p--; {cs = 536;goto _again;} }}
12385
12381
  break;
12386
12382
  case 274:
@@ -12388,15 +12384,15 @@ _eof_trans:
12388
12384
  {te = p+1;{ p--; {p++; goto _out; } }}
12389
12385
  break;
12390
12386
  case 283:
12391
- #line 1874 "ext/lexer/lexer.rl"
12387
+ #line 1872 "ext/lexer/lexer.rl"
12392
12388
  {te = p;p--;{ p = ts - 1; {cs = 536;goto _again;} }}
12393
12389
  break;
12394
12390
  case 277:
12395
- #line 1876 "ext/lexer/lexer.rl"
12391
+ #line 1874 "ext/lexer/lexer.rl"
12396
12392
  {te = p;p--;}
12397
12393
  break;
12398
12394
  case 281:
12399
- #line 1880 "ext/lexer/lexer.rl"
12395
+ #line 1878 "ext/lexer/lexer.rl"
12400
12396
  {te = p;p--;{ p--; {cs = 536;goto _again;} }}
12401
12397
  break;
12402
12398
  case 276:
@@ -12413,21 +12409,21 @@ _eof_trans:
12413
12409
  }
12414
12410
  break;
12415
12411
  case 56:
12416
- #line 1886 "ext/lexer/lexer.rl"
12412
+ #line 1884 "ext/lexer/lexer.rl"
12417
12413
  {te = p+1;{
12418
12414
  emit_token(lexer, tUNARY_NUM, tok(lexer, ts, ts + 1), ts, ts + 1);
12419
12415
  p--; cs = 768; {p++; goto _out; }
12420
12416
  }}
12421
12417
  break;
12422
12418
  case 314:
12423
- #line 1893 "ext/lexer/lexer.rl"
12419
+ #line 1891 "ext/lexer/lexer.rl"
12424
12420
  {te = p+1;{
12425
12421
  VALUE delimiter = rb_str_substr(lexer->source, ts, 1);
12426
12422
  p--; {cs = (push_literal(lexer, delimiter, delimiter, ts, 0, 0, 0, 0)); goto _again;}
12427
12423
  }}
12428
12424
  break;
12429
12425
  case 308:
12430
- #line 1898 "ext/lexer/lexer.rl"
12426
+ #line 1896 "ext/lexer/lexer.rl"
12431
12427
  {te = p+1;{
12432
12428
  VALUE type = rb_str_substr(lexer->source, ts, 1);
12433
12429
  VALUE delimiter = rb_str_substr(lexer->source, te - 1, 1);
@@ -12438,7 +12434,7 @@ _eof_trans:
12438
12434
  }}
12439
12435
  break;
12440
12436
  case 54:
12441
- #line 1907 "ext/lexer/lexer.rl"
12437
+ #line 1905 "ext/lexer/lexer.rl"
12442
12438
  {te = p+1;{
12443
12439
  VALUE type = rb_str_substr(lexer->source, ts, te - ts - 1);
12444
12440
  VALUE delimiter = rb_str_substr(lexer->source, te - 1, 1);
@@ -12449,7 +12445,7 @@ _eof_trans:
12449
12445
  }}
12450
12446
  break;
12451
12447
  case 327:
12452
- #line 1989 "ext/lexer/lexer.rl"
12448
+ #line 1987 "ext/lexer/lexer.rl"
12453
12449
  {te = p+1;{
12454
12450
  p--; p--;
12455
12451
  emit_token(lexer, tSYMBEG, tok(lexer, ts, ts + 1), ts, ts + 1);
@@ -12457,7 +12453,7 @@ _eof_trans:
12457
12453
  }}
12458
12454
  break;
12459
12455
  case 315:
12460
- #line 1995 "ext/lexer/lexer.rl"
12456
+ #line 1993 "ext/lexer/lexer.rl"
12461
12457
  {te = p+1;{ /* ' */
12462
12458
  VALUE type = tok(lexer, ts, te);
12463
12459
  VALUE delimiter = tok(lexer, te - 1, te);
@@ -12465,21 +12461,21 @@ _eof_trans:
12465
12461
  }}
12466
12462
  break;
12467
12463
  case 326:
12468
- #line 2002 "ext/lexer/lexer.rl"
12464
+ #line 2000 "ext/lexer/lexer.rl"
12469
12465
  {te = p+1;{
12470
12466
  emit_token(lexer, tSYMBOL, tok(lexer, ts + 1, ts + 2), ts, te);
12471
12467
  cs = 768; {p++; goto _out; }
12472
12468
  }}
12473
12469
  break;
12474
12470
  case 68:
12475
- #line 2014 "ext/lexer/lexer.rl"
12471
+ #line 2012 "ext/lexer/lexer.rl"
12476
12472
  {te = p+1;{
12477
12473
  emit_token(lexer, tSYMBOL, tok(lexer, ts + 1, te), ts, te);
12478
12474
  cs = 768; {p++; goto _out; }
12479
12475
  }}
12480
12476
  break;
12481
12477
  case 331:
12482
- #line 2034 "ext/lexer/lexer.rl"
12478
+ #line 2032 "ext/lexer/lexer.rl"
12483
12479
  {te = p+1;{
12484
12480
  VALUE escape = escape_char(rb_str_subseq(lexer->source, ts + 1, 1));
12485
12481
  VALUE hash = rb_hash_new();
@@ -12492,19 +12488,19 @@ _eof_trans:
12492
12488
  }}
12493
12489
  break;
12494
12490
  case 330:
12495
- #line 2045 "ext/lexer/lexer.rl"
12491
+ #line 2043 "ext/lexer/lexer.rl"
12496
12492
  {te = p+1;{
12497
12493
  diagnostic(lexer, fatal, incomplete_escape, Qnil,
12498
12494
  range(lexer, ts, ts + 1), empty_array);
12499
12495
  }}
12500
12496
  break;
12501
12497
  case 316:
12502
- #line 2074 "ext/lexer/lexer.rl"
12498
+ #line 2072 "ext/lexer/lexer.rl"
12503
12499
  {te = p+1;{ emit_table_PUNCTUATION_BEGIN(lexer, tok(lexer, ts, te), ts, te);
12504
12500
  {p++; goto _out; } }}
12505
12501
  break;
12506
12502
  case 51:
12507
- #line 2088 "ext/lexer/lexer.rl"
12503
+ #line 2086 "ext/lexer/lexer.rl"
12508
12504
  {te = p+1;{
12509
12505
  p--;
12510
12506
 
@@ -12529,7 +12525,7 @@ _eof_trans:
12529
12525
  }}
12530
12526
  break;
12531
12527
  case 48:
12532
- #line 2118 "ext/lexer/lexer.rl"
12528
+ #line 2116 "ext/lexer/lexer.rl"
12533
12529
  {te = p+1;{
12534
12530
  emit_token(lexer, tIDENTIFIER, ident_tok, ident_ts, ident_te);
12535
12531
  p = ident_te - 1;
@@ -12544,7 +12540,7 @@ _eof_trans:
12544
12540
  }}
12545
12541
  break;
12546
12542
  case 302:
12547
- #line 2133 "ext/lexer/lexer.rl"
12543
+ #line 2131 "ext/lexer/lexer.rl"
12548
12544
  {te = p+1;{
12549
12545
  p = ts - 1;
12550
12546
  lexer->cs_before_block_comment = lexer->cs;
@@ -12552,7 +12548,7 @@ _eof_trans:
12552
12548
  }}
12553
12549
  break;
12554
12550
  case 55:
12555
- #line 2143 "ext/lexer/lexer.rl"
12551
+ #line 2141 "ext/lexer/lexer.rl"
12556
12552
  {te = p+1;{ p = ts - 1; {cs = 768;goto _again;} }}
12557
12553
  break;
12558
12554
  case 286:
@@ -12560,18 +12556,18 @@ _eof_trans:
12560
12556
  {te = p+1;{ p--; {p++; goto _out; } }}
12561
12557
  break;
12562
12558
  case 313:
12563
- #line 1886 "ext/lexer/lexer.rl"
12559
+ #line 1884 "ext/lexer/lexer.rl"
12564
12560
  {te = p;p--;{
12565
12561
  emit_token(lexer, tUNARY_NUM, tok(lexer, ts, ts + 1), ts, ts + 1);
12566
12562
  p--; cs = 768; {p++; goto _out; }
12567
12563
  }}
12568
12564
  break;
12569
12565
  case 312:
12570
- #line 1891 "ext/lexer/lexer.rl"
12566
+ #line 1889 "ext/lexer/lexer.rl"
12571
12567
  {te = p;p--;{ emit(tSTAR); {p++; goto _out; } }}
12572
12568
  break;
12573
12569
  case 309:
12574
- #line 1907 "ext/lexer/lexer.rl"
12570
+ #line 1905 "ext/lexer/lexer.rl"
12575
12571
  {te = p;p--;{
12576
12572
  VALUE type = rb_str_substr(lexer->source, ts, te - ts - 1);
12577
12573
  VALUE delimiter = rb_str_substr(lexer->source, te - 1, 1);
@@ -12582,37 +12578,37 @@ _eof_trans:
12582
12578
  }}
12583
12579
  break;
12584
12580
  case 307:
12585
- #line 1916 "ext/lexer/lexer.rl"
12581
+ #line 1914 "ext/lexer/lexer.rl"
12586
12582
  {te = p;p--;{
12587
12583
  diagnostic(lexer, fatal, string_eof, Qnil,
12588
12584
  range(lexer, ts, ts + 1), empty_array);
12589
12585
  }}
12590
12586
  break;
12591
12587
  case 317:
12592
- #line 2014 "ext/lexer/lexer.rl"
12588
+ #line 2012 "ext/lexer/lexer.rl"
12593
12589
  {te = p;p--;{
12594
12590
  emit_token(lexer, tSYMBOL, tok(lexer, ts + 1, te), ts, te);
12595
12591
  cs = 768; {p++; goto _out; }
12596
12592
  }}
12597
12593
  break;
12598
12594
  case 329:
12599
- #line 2045 "ext/lexer/lexer.rl"
12595
+ #line 2043 "ext/lexer/lexer.rl"
12600
12596
  {te = p;p--;{
12601
12597
  diagnostic(lexer, fatal, incomplete_escape, Qnil,
12602
12598
  range(lexer, ts, ts + 1), empty_array);
12603
12599
  }}
12604
12600
  break;
12605
12601
  case 335:
12606
- #line 2050 "ext/lexer/lexer.rl"
12602
+ #line 2048 "ext/lexer/lexer.rl"
12607
12603
  {te = p;p--;{ p = ts - 1; {cs = 768;goto _again;} }}
12608
12604
  break;
12609
12605
  case 310:
12610
- #line 2074 "ext/lexer/lexer.rl"
12606
+ #line 2072 "ext/lexer/lexer.rl"
12611
12607
  {te = p;p--;{ emit_table_PUNCTUATION_BEGIN(lexer, tok(lexer, ts, te), ts, te);
12612
12608
  {p++; goto _out; } }}
12613
12609
  break;
12614
12610
  case 289:
12615
- #line 1600 "ext/lexer/lexer.rl"
12611
+ #line 1598 "ext/lexer/lexer.rl"
12616
12612
  {te = p;p--;{
12617
12613
  VALUE str = tok(lexer, ts, te);
12618
12614
  emit(tIDENTIFIER);
@@ -12625,11 +12621,11 @@ _eof_trans:
12625
12621
  }}
12626
12622
  break;
12627
12623
  case 299:
12628
- #line 2131 "ext/lexer/lexer.rl"
12624
+ #line 2129 "ext/lexer/lexer.rl"
12629
12625
  {te = p;p--;}
12630
12626
  break;
12631
12627
  case 301:
12632
- #line 2133 "ext/lexer/lexer.rl"
12628
+ #line 2131 "ext/lexer/lexer.rl"
12633
12629
  {te = p;p--;{
12634
12630
  p = ts - 1;
12635
12631
  lexer->cs_before_block_comment = lexer->cs;
@@ -12637,18 +12633,18 @@ _eof_trans:
12637
12633
  }}
12638
12634
  break;
12639
12635
  case 304:
12640
- #line 2143 "ext/lexer/lexer.rl"
12636
+ #line 2141 "ext/lexer/lexer.rl"
12641
12637
  {te = p;p--;{ p = ts - 1; {cs = 768;goto _again;} }}
12642
12638
  break;
12643
12639
  case 53:
12644
- #line 1916 "ext/lexer/lexer.rl"
12640
+ #line 1914 "ext/lexer/lexer.rl"
12645
12641
  {{p = ((te))-1;}{
12646
12642
  diagnostic(lexer, fatal, string_eof, Qnil,
12647
12643
  range(lexer, ts, ts + 1), empty_array);
12648
12644
  }}
12649
12645
  break;
12650
12646
  case 71:
12651
- #line 2021 "ext/lexer/lexer.rl"
12647
+ #line 2019 "ext/lexer/lexer.rl"
12652
12648
  {{p = ((te))-1;}{
12653
12649
  VALUE value = lexer->escape;
12654
12650
  if (value == Qnil)
@@ -12663,7 +12659,7 @@ _eof_trans:
12663
12659
  }}
12664
12660
  break;
12665
12661
  case 47:
12666
- #line 1600 "ext/lexer/lexer.rl"
12662
+ #line 1598 "ext/lexer/lexer.rl"
12667
12663
  {{p = ((te))-1;}{
12668
12664
  VALUE str = tok(lexer, ts, te);
12669
12665
  emit(tIDENTIFIER);
@@ -12676,11 +12672,11 @@ _eof_trans:
12676
12672
  }}
12677
12673
  break;
12678
12674
  case 52:
12679
- #line 2131 "ext/lexer/lexer.rl"
12675
+ #line 2129 "ext/lexer/lexer.rl"
12680
12676
  {{p = ((te))-1;}}
12681
12677
  break;
12682
12678
  case 67:
12683
- #line 2143 "ext/lexer/lexer.rl"
12679
+ #line 2141 "ext/lexer/lexer.rl"
12684
12680
  {{p = ((te))-1;}{ p = ts - 1; {cs = 768;goto _again;} }}
12685
12681
  break;
12686
12682
  case 50:
@@ -12729,7 +12725,7 @@ _eof_trans:
12729
12725
  }
12730
12726
  break;
12731
12727
  case 365:
12732
- #line 2159 "ext/lexer/lexer.rl"
12728
+ #line 2157 "ext/lexer/lexer.rl"
12733
12729
  {te = p+1;{ p--; {cs = 536;goto _again;} }}
12734
12730
  break;
12735
12731
  case 366:
@@ -12737,26 +12733,26 @@ _eof_trans:
12737
12733
  {te = p+1;{ p--; {p++; goto _out; } }}
12738
12734
  break;
12739
12735
  case 367:
12740
- #line 2149 "ext/lexer/lexer.rl"
12736
+ #line 2147 "ext/lexer/lexer.rl"
12741
12737
  {te = p;p--;}
12742
12738
  break;
12743
12739
  case 371:
12744
- #line 2159 "ext/lexer/lexer.rl"
12740
+ #line 2157 "ext/lexer/lexer.rl"
12745
12741
  {te = p;p--;{ p--; {cs = 536;goto _again;} }}
12746
12742
  break;
12747
12743
  case 74:
12748
- #line 2165 "ext/lexer/lexer.rl"
12744
+ #line 2163 "ext/lexer/lexer.rl"
12749
12745
  {te = p+1;{ p = ts - 1; {cs = 768;goto _again;} }}
12750
12746
  break;
12751
12747
  case 375:
12752
- #line 2167 "ext/lexer/lexer.rl"
12748
+ #line 2165 "ext/lexer/lexer.rl"
12753
12749
  {te = p+1;{ /* ' */
12754
12750
  VALUE type = tok(lexer, ts, te);
12755
12751
  {cs = (push_literal(lexer, type, type, ts, 0, 0, 0, 0)); goto _again;}
12756
12752
  }}
12757
12753
  break;
12758
12754
  case 374:
12759
- #line 2176 "ext/lexer/lexer.rl"
12755
+ #line 2174 "ext/lexer/lexer.rl"
12760
12756
  {te = p+1;{ p--; {cs = 536;goto _again;} }}
12761
12757
  break;
12762
12758
  case 373:
@@ -12764,19 +12760,19 @@ _eof_trans:
12764
12760
  {te = p+1;{ p--; {p++; goto _out; } }}
12765
12761
  break;
12766
12762
  case 377:
12767
- #line 2172 "ext/lexer/lexer.rl"
12763
+ #line 2170 "ext/lexer/lexer.rl"
12768
12764
  {te = p;p--;}
12769
12765
  break;
12770
12766
  case 376:
12771
- #line 2176 "ext/lexer/lexer.rl"
12767
+ #line 2174 "ext/lexer/lexer.rl"
12772
12768
  {te = p;p--;{ p--; {cs = 536;goto _again;} }}
12773
12769
  break;
12774
12770
  case 73:
12775
- #line 2176 "ext/lexer/lexer.rl"
12771
+ #line 2174 "ext/lexer/lexer.rl"
12776
12772
  {{p = ((te))-1;}{ p--; {cs = 536;goto _again;} }}
12777
12773
  break;
12778
12774
  case 411:
12779
- #line 2182 "ext/lexer/lexer.rl"
12775
+ #line 2180 "ext/lexer/lexer.rl"
12780
12776
  {te = p+1;{
12781
12777
  emit_token(lexer, tLAMBDA, tok(lexer, ts, ts + 2), ts, ts + 2);
12782
12778
  rb_ary_push(lexer->lambda_stack, INT2NUM(lexer->paren_nest));
@@ -12784,13 +12780,13 @@ _eof_trans:
12784
12780
  }}
12785
12781
  break;
12786
12782
  case 83:
12787
- #line 2215 "ext/lexer/lexer.rl"
12783
+ #line 2213 "ext/lexer/lexer.rl"
12788
12784
  {te = p+1;{ emit_token(lexer, kCLASS, rb_str_new2("class"), ts, ts + 5);
12789
12785
  emit_token(lexer, tLSHFT, rb_str_new2("<<"), te - 2, te);
12790
12786
  cs = 760; {p++; goto _out; } }}
12791
12787
  break;
12792
12788
  case 385:
12793
- #line 2352 "ext/lexer/lexer.rl"
12789
+ #line 2350 "ext/lexer/lexer.rl"
12794
12790
  {te = p+1;{ /* ' */
12795
12791
  VALUE type = tok(lexer, ts, te);
12796
12792
  VALUE delimiter = tok(lexer, te - 1, te);
@@ -12798,7 +12794,7 @@ _eof_trans:
12798
12794
  }}
12799
12795
  break;
12800
12796
  case 76:
12801
- #line 2367 "ext/lexer/lexer.rl"
12797
+ #line 2365 "ext/lexer/lexer.rl"
12802
12798
  {te = p+1;{ p = ts - 1; {
12803
12799
  /* grow the state stack as needed */
12804
12800
  if (lexer->cs_stack_top == lexer->cs_stack_size) {
@@ -12811,26 +12807,26 @@ _eof_trans:
12811
12807
  {stack[top++] = cs; cs = 321;goto _again;}} }}
12812
12808
  break;
12813
12809
  case 407:
12814
- #line 2370 "ext/lexer/lexer.rl"
12810
+ #line 2368 "ext/lexer/lexer.rl"
12815
12811
  {te = p+1;{ emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12816
12812
  cs = 446; {p++; goto _out; } }}
12817
12813
  break;
12818
12814
  case 465:
12819
- #line 2385 "ext/lexer/lexer.rl"
12815
+ #line 2383 "ext/lexer/lexer.rl"
12820
12816
  {te = p+1;{
12821
12817
  emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12822
12818
  {cs = 760;goto _again;}
12823
12819
  }}
12824
12820
  break;
12825
12821
  case 400:
12826
- #line 2391 "ext/lexer/lexer.rl"
12822
+ #line 2389 "ext/lexer/lexer.rl"
12827
12823
  {te = p+1;{
12828
12824
  emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12829
12825
  cs = 760; {p++; goto _out; }
12830
12826
  }}
12831
12827
  break;
12832
12828
  case 392:
12833
- #line 2434 "ext/lexer/lexer.rl"
12829
+ #line 2432 "ext/lexer/lexer.rl"
12834
12830
  {te = p+1;{
12835
12831
  emit(tRBRACK);
12836
12832
 
@@ -12852,25 +12848,25 @@ _eof_trans:
12852
12848
  }}
12853
12849
  break;
12854
12850
  case 405:
12855
- #line 2455 "ext/lexer/lexer.rl"
12851
+ #line 2453 "ext/lexer/lexer.rl"
12856
12852
  {te = p+1;{ emit_token(lexer, tOP_ASGN, tok(lexer, ts, te - 1), ts, te);
12857
12853
  cs = 536; {p++; goto _out; } }}
12858
12854
  break;
12859
12855
  case 390:
12860
- #line 2458 "ext/lexer/lexer.rl"
12856
+ #line 2456 "ext/lexer/lexer.rl"
12861
12857
  {te = p+1;{ emit(tEH); cs = 760; {p++; goto _out; } }}
12862
12858
  break;
12863
12859
  case 387:
12864
- #line 2463 "ext/lexer/lexer.rl"
12860
+ #line 2461 "ext/lexer/lexer.rl"
12865
12861
  {te = p+1;{ emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12866
12862
  cs = 536; {p++; goto _out; } }}
12867
12863
  break;
12868
12864
  case 389:
12869
- #line 2470 "ext/lexer/lexer.rl"
12865
+ #line 2468 "ext/lexer/lexer.rl"
12870
12866
  {te = p+1;{ emit(tSEMI); cs = 760; {p++; goto _out; } }}
12871
12867
  break;
12872
12868
  case 470:
12873
- #line 2472 "ext/lexer/lexer.rl"
12869
+ #line 2470 "ext/lexer/lexer.rl"
12874
12870
  {te = p+1;{
12875
12871
  diagnostic(lexer, severity_error, bare_backslash, Qnil,
12876
12872
  range(lexer, ts, ts + 1), empty_array);
@@ -12878,7 +12874,7 @@ _eof_trans:
12878
12874
  }}
12879
12875
  break;
12880
12876
  case 384:
12881
- #line 2479 "ext/lexer/lexer.rl"
12877
+ #line 2477 "ext/lexer/lexer.rl"
12882
12878
  {te = p+1;{
12883
12879
  VALUE hash = rb_hash_new();
12884
12880
  VALUE str = rb_str_inspect(tok(lexer, ts, te));
@@ -12891,34 +12887,34 @@ _eof_trans:
12891
12887
  {te = p+1;{ p--; {p++; goto _out; } }}
12892
12888
  break;
12893
12889
  case 480:
12894
- #line 2211 "ext/lexer/lexer.rl"
12890
+ #line 2209 "ext/lexer/lexer.rl"
12895
12891
  {te = p;p--;{ emit_table_KEYWORDS(lexer, tok(lexer, ts, te), ts, te);
12896
12892
  cs = 326; {p++; goto _out; } }}
12897
12893
  break;
12898
12894
  case 478:
12899
- #line 2215 "ext/lexer/lexer.rl"
12895
+ #line 2213 "ext/lexer/lexer.rl"
12900
12896
  {te = p;p--;{ emit_token(lexer, kCLASS, rb_str_new2("class"), ts, ts + 5);
12901
12897
  emit_token(lexer, tLSHFT, rb_str_new2("<<"), te - 2, te);
12902
12898
  cs = 760; {p++; goto _out; } }}
12903
12899
  break;
12904
12900
  case 477:
12905
- #line 2224 "ext/lexer/lexer.rl"
12901
+ #line 2222 "ext/lexer/lexer.rl"
12906
12902
  {te = p;p--;{ emit_table_KEYWORDS(lexer, tok(lexer, ts, te), ts, te);
12907
12903
  cs = 760; {p++; goto _out; } }}
12908
12904
  break;
12909
12905
  case 414:
12910
- #line 2302 "ext/lexer/lexer.rl"
12906
+ #line 2300 "ext/lexer/lexer.rl"
12911
12907
  {te = p;p--;{
12912
12908
  diagnostic(lexer, severity_error, no_dot_digit_literal, Qnil,
12913
12909
  range(lexer, ts, te), empty_array);
12914
12910
  }}
12915
12911
  break;
12916
12912
  case 467:
12917
- #line 2358 "ext/lexer/lexer.rl"
12913
+ #line 2356 "ext/lexer/lexer.rl"
12918
12914
  {te = p;p--;{ emit(tCONSTANT); cs = (arg_or_cmdarg(command_state)); {p++; goto _out; } }}
12919
12915
  break;
12920
12916
  case 404:
12921
- #line 2367 "ext/lexer/lexer.rl"
12917
+ #line 2365 "ext/lexer/lexer.rl"
12922
12918
  {te = p;p--;{ p = ts - 1; {
12923
12919
  /* grow the state stack as needed */
12924
12920
  if (lexer->cs_stack_top == lexer->cs_stack_size) {
@@ -12931,12 +12927,12 @@ _eof_trans:
12931
12927
  {stack[top++] = cs; cs = 321;goto _again;}} }}
12932
12928
  break;
12933
12929
  case 412:
12934
- #line 2370 "ext/lexer/lexer.rl"
12930
+ #line 2368 "ext/lexer/lexer.rl"
12935
12931
  {te = p;p--;{ emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12936
12932
  cs = 446; {p++; goto _out; } }}
12937
12933
  break;
12938
12934
  case 472:
12939
- #line 1600 "ext/lexer/lexer.rl"
12935
+ #line 1598 "ext/lexer/lexer.rl"
12940
12936
  {te = p;p--;{
12941
12937
  VALUE str = tok(lexer, ts, te);
12942
12938
  emit(tIDENTIFIER);
@@ -12949,35 +12945,35 @@ _eof_trans:
12949
12945
  }}
12950
12946
  break;
12951
12947
  case 410:
12952
- #line 2385 "ext/lexer/lexer.rl"
12948
+ #line 2383 "ext/lexer/lexer.rl"
12953
12949
  {te = p;p--;{
12954
12950
  emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12955
12951
  {cs = 760;goto _again;}
12956
12952
  }}
12957
12953
  break;
12958
12954
  case 406:
12959
- #line 2391 "ext/lexer/lexer.rl"
12955
+ #line 2389 "ext/lexer/lexer.rl"
12960
12956
  {te = p;p--;{
12961
12957
  emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12962
12958
  cs = 760; {p++; goto _out; }
12963
12959
  }}
12964
12960
  break;
12965
12961
  case 399:
12966
- #line 2397 "ext/lexer/lexer.rl"
12962
+ #line 2395 "ext/lexer/lexer.rl"
12967
12963
  {te = p;p--;{ emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12968
12964
  cs = 536; {p++; goto _out; } }}
12969
12965
  break;
12970
12966
  case 413:
12971
- #line 2463 "ext/lexer/lexer.rl"
12967
+ #line 2461 "ext/lexer/lexer.rl"
12972
12968
  {te = p;p--;{ emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
12973
12969
  cs = 536; {p++; goto _out; } }}
12974
12970
  break;
12975
12971
  case 397:
12976
- #line 2466 "ext/lexer/lexer.rl"
12972
+ #line 2464 "ext/lexer/lexer.rl"
12977
12973
  {te = p;p--;}
12978
12974
  break;
12979
12975
  case 403:
12980
- #line 2479 "ext/lexer/lexer.rl"
12976
+ #line 2477 "ext/lexer/lexer.rl"
12981
12977
  {te = p;p--;{
12982
12978
  VALUE hash = rb_hash_new();
12983
12979
  VALUE str = rb_str_inspect(tok(lexer, ts, te));
@@ -12986,7 +12982,7 @@ _eof_trans:
12986
12982
  }}
12987
12983
  break;
12988
12984
  case 81:
12989
- #line 2270 "ext/lexer/lexer.rl"
12985
+ #line 2268 "ext/lexer/lexer.rl"
12990
12986
  {{p = ((te))-1;}{
12991
12987
  int invalid_idx;
12992
12988
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -13019,14 +13015,14 @@ _eof_trans:
13019
13015
  }}
13020
13016
  break;
13021
13017
  case 77:
13022
- #line 2302 "ext/lexer/lexer.rl"
13018
+ #line 2300 "ext/lexer/lexer.rl"
13023
13019
  {{p = ((te))-1;}{
13024
13020
  diagnostic(lexer, severity_error, no_dot_digit_literal, Qnil,
13025
13021
  range(lexer, ts, te), empty_array);
13026
13022
  }}
13027
13023
  break;
13028
13024
  case 80:
13029
- #line 2339 "ext/lexer/lexer.rl"
13025
+ #line 2337 "ext/lexer/lexer.rl"
13030
13026
  {{p = ((te))-1;}{
13031
13027
  VALUE digits = tok(lexer, ts, num_suffix_s);
13032
13028
 
@@ -13041,7 +13037,7 @@ _eof_trans:
13041
13037
  }}
13042
13038
  break;
13043
13039
  case 75:
13044
- #line 2479 "ext/lexer/lexer.rl"
13040
+ #line 2477 "ext/lexer/lexer.rl"
13045
13041
  {{p = ((te))-1;}{
13046
13042
  VALUE hash = rb_hash_new();
13047
13043
  VALUE str = rb_str_inspect(tok(lexer, ts, te));
@@ -13232,39 +13228,39 @@ _eof_trans:
13232
13228
  }
13233
13229
  break;
13234
13230
  case 87:
13235
- #line 2490 "ext/lexer/lexer.rl"
13231
+ #line 2488 "ext/lexer/lexer.rl"
13236
13232
  {te = p+1;{ p = tm - 1; {cs = 768;goto _again;} }}
13237
13233
  break;
13238
13234
  case 485:
13239
- #line 2492 "ext/lexer/lexer.rl"
13235
+ #line 2490 "ext/lexer/lexer.rl"
13240
13236
  {te = p+1;{
13241
13237
  emit_token(lexer, tNL, Qnil, lexer->newline_s, lexer->newline_s + 1);
13242
13238
  p--; cs = 182; {p++; goto _out; }
13243
13239
  }}
13244
13240
  break;
13245
13241
  case 486:
13246
- #line 2492 "ext/lexer/lexer.rl"
13242
+ #line 2490 "ext/lexer/lexer.rl"
13247
13243
  {te = p;p--;{
13248
13244
  emit_token(lexer, tNL, Qnil, lexer->newline_s, lexer->newline_s + 1);
13249
13245
  p--; cs = 182; {p++; goto _out; }
13250
13246
  }}
13251
13247
  break;
13252
13248
  case 84:
13253
- #line 2492 "ext/lexer/lexer.rl"
13249
+ #line 2490 "ext/lexer/lexer.rl"
13254
13250
  {{p = ((te))-1;}{
13255
13251
  emit_token(lexer, tNL, Qnil, lexer->newline_s, lexer->newline_s + 1);
13256
13252
  p--; cs = 182; {p++; goto _out; }
13257
13253
  }}
13258
13254
  break;
13259
13255
  case 489:
13260
- #line 2499 "ext/lexer/lexer.rl"
13256
+ #line 2497 "ext/lexer/lexer.rl"
13261
13257
  {te = p;p--;{
13262
13258
  emit_comment(lexer, lexer->eq_begin_s, te);
13263
13259
  {cs = (lexer->cs_before_block_comment); goto _again;}
13264
13260
  }}
13265
13261
  break;
13266
13262
  case 488:
13267
- #line 2506 "ext/lexer/lexer.rl"
13263
+ #line 2504 "ext/lexer/lexer.rl"
13268
13264
  {te = p;p--;{
13269
13265
  diagnostic(lexer, fatal, embedded_document, Qnil,
13270
13266
  range(lexer, lexer->eq_begin_s, lexer->eq_begin_s + 6),
@@ -13272,18 +13268,18 @@ _eof_trans:
13272
13268
  }}
13273
13269
  break;
13274
13270
  case 98:
13275
- #line 2516 "ext/lexer/lexer.rl"
13271
+ #line 2514 "ext/lexer/lexer.rl"
13276
13272
  {te = p+1;{
13277
13273
  lexer->eq_begin_s = ts;
13278
13274
  {cs = 948;goto _again;}
13279
13275
  }}
13280
13276
  break;
13281
13277
  case 2:
13282
- #line 2521 "ext/lexer/lexer.rl"
13278
+ #line 2519 "ext/lexer/lexer.rl"
13283
13279
  {te = p+1;{ p = pe - 3; }}
13284
13280
  break;
13285
13281
  case 90:
13286
- #line 2523 "ext/lexer/lexer.rl"
13282
+ #line 2521 "ext/lexer/lexer.rl"
13287
13283
  {te = p+1;{ p--; {cs = 760;goto _again;} }}
13288
13284
  break;
13289
13285
  case 91:
@@ -13291,34 +13287,34 @@ _eof_trans:
13291
13287
  {te = p+1;{ p--; {p++; goto _out; } }}
13292
13288
  break;
13293
13289
  case 92:
13294
- #line 2514 "ext/lexer/lexer.rl"
13290
+ #line 2512 "ext/lexer/lexer.rl"
13295
13291
  {te = p;p--;}
13296
13292
  break;
13297
13293
  case 97:
13298
- #line 2516 "ext/lexer/lexer.rl"
13294
+ #line 2514 "ext/lexer/lexer.rl"
13299
13295
  {te = p;p--;{
13300
13296
  lexer->eq_begin_s = ts;
13301
13297
  {cs = 948;goto _again;}
13302
13298
  }}
13303
13299
  break;
13304
13300
  case 96:
13305
- #line 2523 "ext/lexer/lexer.rl"
13301
+ #line 2521 "ext/lexer/lexer.rl"
13306
13302
  {te = p;p--;{ p--; {cs = 760;goto _again;} }}
13307
13303
  break;
13308
13304
  case 1:
13309
- #line 2523 "ext/lexer/lexer.rl"
13305
+ #line 2521 "ext/lexer/lexer.rl"
13310
13306
  {{p = ((te))-1;}{ p--; {cs = 760;goto _again;} }}
13311
13307
  break;
13312
13308
  case 66:
13313
13309
  #line 1002 "ext/lexer/lexer.rl"
13314
13310
  { lexer->newline_s = p; }
13315
- #line 1545 "ext/lexer/lexer.rl"
13311
+ #line 1543 "ext/lexer/lexer.rl"
13316
13312
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
13317
13313
  break;
13318
13314
  case 102:
13319
13315
  #line 1002 "ext/lexer/lexer.rl"
13320
13316
  { lexer->newline_s = p; }
13321
- #line 1337 "ext/lexer/lexer.rl"
13317
+ #line 1335 "ext/lexer/lexer.rl"
13322
13318
  {te = p+1;{
13323
13319
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
13324
13320
  long str_s = current_literal->str_s;
@@ -13366,7 +13362,7 @@ _eof_trans:
13366
13362
  case 131:
13367
13363
  #line 1002 "ext/lexer/lexer.rl"
13368
13364
  { lexer->newline_s = p; }
13369
- #line 1337 "ext/lexer/lexer.rl"
13365
+ #line 1335 "ext/lexer/lexer.rl"
13370
13366
  {te = p+1;{
13371
13367
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
13372
13368
  long str_s = current_literal->str_s;
@@ -13414,7 +13410,7 @@ _eof_trans:
13414
13410
  case 158:
13415
13411
  #line 1002 "ext/lexer/lexer.rl"
13416
13412
  { lexer->newline_s = p; }
13417
- #line 1337 "ext/lexer/lexer.rl"
13413
+ #line 1335 "ext/lexer/lexer.rl"
13418
13414
  {te = p+1;{
13419
13415
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
13420
13416
  long str_s = current_literal->str_s;
@@ -13462,7 +13458,7 @@ _eof_trans:
13462
13458
  case 164:
13463
13459
  #line 1002 "ext/lexer/lexer.rl"
13464
13460
  { lexer->newline_s = p; }
13465
- #line 1337 "ext/lexer/lexer.rl"
13461
+ #line 1335 "ext/lexer/lexer.rl"
13466
13462
  {te = p+1;{
13467
13463
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
13468
13464
  long str_s = current_literal->str_s;
@@ -13510,7 +13506,7 @@ _eof_trans:
13510
13506
  case 170:
13511
13507
  #line 1002 "ext/lexer/lexer.rl"
13512
13508
  { lexer->newline_s = p; }
13513
- #line 1337 "ext/lexer/lexer.rl"
13509
+ #line 1335 "ext/lexer/lexer.rl"
13514
13510
  {te = p+1;{
13515
13511
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
13516
13512
  long str_s = current_literal->str_s;
@@ -13558,7 +13554,7 @@ _eof_trans:
13558
13554
  case 176:
13559
13555
  #line 1002 "ext/lexer/lexer.rl"
13560
13556
  { lexer->newline_s = p; }
13561
- #line 1337 "ext/lexer/lexer.rl"
13557
+ #line 1335 "ext/lexer/lexer.rl"
13562
13558
  {te = p+1;{
13563
13559
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
13564
13560
  long str_s = current_literal->str_s;
@@ -13606,7 +13602,7 @@ _eof_trans:
13606
13602
  case 179:
13607
13603
  #line 1002 "ext/lexer/lexer.rl"
13608
13604
  { lexer->newline_s = p; }
13609
- #line 1337 "ext/lexer/lexer.rl"
13605
+ #line 1335 "ext/lexer/lexer.rl"
13610
13606
  {te = p+1;{
13611
13607
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
13612
13608
  long str_s = current_literal->str_s;
@@ -13654,7 +13650,7 @@ _eof_trans:
13654
13650
  case 186:
13655
13651
  #line 1002 "ext/lexer/lexer.rl"
13656
13652
  { lexer->newline_s = p; }
13657
- #line 1337 "ext/lexer/lexer.rl"
13653
+ #line 1335 "ext/lexer/lexer.rl"
13658
13654
  {te = p+1;{
13659
13655
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
13660
13656
  long str_s = current_literal->str_s;
@@ -13702,19 +13698,19 @@ _eof_trans:
13702
13698
  case 257:
13703
13699
  #line 1002 "ext/lexer/lexer.rl"
13704
13700
  { lexer->newline_s = p; }
13705
- #line 1762 "ext/lexer/lexer.rl"
13701
+ #line 1760 "ext/lexer/lexer.rl"
13706
13702
  {te = p+1;{ p = ts - 1; {cs = 768;goto _again;} }}
13707
13703
  break;
13708
13704
  case 248:
13709
13705
  #line 1002 "ext/lexer/lexer.rl"
13710
13706
  { lexer->newline_s = p; }
13711
- #line 1794 "ext/lexer/lexer.rl"
13707
+ #line 1792 "ext/lexer/lexer.rl"
13712
13708
  {te = p+1;{ p = tm - 1; {cs = 768;goto _again;} }}
13713
13709
  break;
13714
13710
  case 240:
13715
13711
  #line 1002 "ext/lexer/lexer.rl"
13716
13712
  { lexer->newline_s = p; }
13717
- #line 1801 "ext/lexer/lexer.rl"
13713
+ #line 1799 "ext/lexer/lexer.rl"
13718
13714
  {te = p+1;{
13719
13715
  p = ts - 1;
13720
13716
  {cs = 768;goto _again;}
@@ -13723,7 +13719,7 @@ _eof_trans:
13723
13719
  case 332:
13724
13720
  #line 1002 "ext/lexer/lexer.rl"
13725
13721
  { lexer->newline_s = p; }
13726
- #line 2034 "ext/lexer/lexer.rl"
13722
+ #line 2032 "ext/lexer/lexer.rl"
13727
13723
  {te = p+1;{
13728
13724
  VALUE escape = escape_char(rb_str_subseq(lexer->source, ts + 1, 1));
13729
13725
  VALUE hash = rb_hash_new();
@@ -13738,7 +13734,7 @@ _eof_trans:
13738
13734
  case 303:
13739
13735
  #line 1002 "ext/lexer/lexer.rl"
13740
13736
  { lexer->newline_s = p; }
13741
- #line 2133 "ext/lexer/lexer.rl"
13737
+ #line 2131 "ext/lexer/lexer.rl"
13742
13738
  {te = p+1;{
13743
13739
  p = ts - 1;
13744
13740
  lexer->cs_before_block_comment = lexer->cs;
@@ -13748,7 +13744,7 @@ _eof_trans:
13748
13744
  case 490:
13749
13745
  #line 1002 "ext/lexer/lexer.rl"
13750
13746
  { lexer->newline_s = p; }
13751
- #line 2499 "ext/lexer/lexer.rl"
13747
+ #line 2497 "ext/lexer/lexer.rl"
13752
13748
  {te = p+1;{
13753
13749
  emit_comment(lexer, lexer->eq_begin_s, te);
13754
13750
  {cs = (lexer->cs_before_block_comment); goto _again;}
@@ -13757,13 +13753,13 @@ _eof_trans:
13757
13753
  case 487:
13758
13754
  #line 1002 "ext/lexer/lexer.rl"
13759
13755
  { lexer->newline_s = p; }
13760
- #line 2504 "ext/lexer/lexer.rl"
13756
+ #line 2502 "ext/lexer/lexer.rl"
13761
13757
  {te = p+1;}
13762
13758
  break;
13763
13759
  case 99:
13764
13760
  #line 1002 "ext/lexer/lexer.rl"
13765
13761
  { lexer->newline_s = p; }
13766
- #line 2516 "ext/lexer/lexer.rl"
13762
+ #line 2514 "ext/lexer/lexer.rl"
13767
13763
  {te = p+1;{
13768
13764
  lexer->eq_begin_s = ts;
13769
13765
  {cs = 948;goto _again;}
@@ -13772,13 +13768,13 @@ _eof_trans:
13772
13768
  case 3:
13773
13769
  #line 1002 "ext/lexer/lexer.rl"
13774
13770
  { lexer->newline_s = p; }
13775
- #line 2521 "ext/lexer/lexer.rl"
13771
+ #line 2519 "ext/lexer/lexer.rl"
13776
13772
  {te = p+1;{ p = pe - 3; }}
13777
13773
  break;
13778
13774
  case 437:
13779
13775
  #line 1077 "ext/lexer/lexer.rl"
13780
13776
  { num_xfrm = emit_rational; numeric_s = ts; }
13781
- #line 2270 "ext/lexer/lexer.rl"
13777
+ #line 2268 "ext/lexer/lexer.rl"
13782
13778
  {te = p;p--;{
13783
13779
  int invalid_idx;
13784
13780
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -13813,7 +13809,7 @@ _eof_trans:
13813
13809
  case 435:
13814
13810
  #line 1078 "ext/lexer/lexer.rl"
13815
13811
  { num_xfrm = emit_complex; numeric_s = ts; }
13816
- #line 2270 "ext/lexer/lexer.rl"
13812
+ #line 2268 "ext/lexer/lexer.rl"
13817
13813
  {te = p;p--;{
13818
13814
  int invalid_idx;
13819
13815
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -13848,7 +13844,7 @@ _eof_trans:
13848
13844
  case 439:
13849
13845
  #line 1079 "ext/lexer/lexer.rl"
13850
13846
  { num_xfrm = emit_complex_rational; numeric_s = ts; }
13851
- #line 2270 "ext/lexer/lexer.rl"
13847
+ #line 2268 "ext/lexer/lexer.rl"
13852
13848
  {te = p;p--;{
13853
13849
  int invalid_idx;
13854
13850
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -13883,7 +13879,7 @@ _eof_trans:
13883
13879
  case 436:
13884
13880
  #line 1080 "ext/lexer/lexer.rl"
13885
13881
  { num_xfrm = emit_int_followed_by_if; numeric_s = ts; p -= 2; }
13886
- #line 2270 "ext/lexer/lexer.rl"
13882
+ #line 2268 "ext/lexer/lexer.rl"
13887
13883
  {te = p;p--;{
13888
13884
  int invalid_idx;
13889
13885
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -13918,7 +13914,7 @@ _eof_trans:
13918
13914
  case 438:
13919
13915
  #line 1081 "ext/lexer/lexer.rl"
13920
13916
  { num_xfrm = emit_int_followed_by_rescue; numeric_s = ts; p -= 6; }
13921
- #line 2270 "ext/lexer/lexer.rl"
13917
+ #line 2268 "ext/lexer/lexer.rl"
13922
13918
  {te = p;p--;{
13923
13919
  int invalid_idx;
13924
13920
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -13953,7 +13949,7 @@ _eof_trans:
13953
13949
  case 427:
13954
13950
  #line 1085 "ext/lexer/lexer.rl"
13955
13951
  { num_xfrm = emit_complex_float; numeric_s = ts; }
13956
- #line 2339 "ext/lexer/lexer.rl"
13952
+ #line 2337 "ext/lexer/lexer.rl"
13957
13953
  {te = p;p--;{
13958
13954
  VALUE digits = tok(lexer, ts, num_suffix_s);
13959
13955
 
@@ -13970,7 +13966,7 @@ _eof_trans:
13970
13966
  case 428:
13971
13967
  #line 1086 "ext/lexer/lexer.rl"
13972
13968
  { num_xfrm = emit_float_followed_by_if; numeric_s = ts; p -= 2; }
13973
- #line 2339 "ext/lexer/lexer.rl"
13969
+ #line 2337 "ext/lexer/lexer.rl"
13974
13970
  {te = p;p--;{
13975
13971
  VALUE digits = tok(lexer, ts, num_suffix_s);
13976
13972
 
@@ -13987,7 +13983,7 @@ _eof_trans:
13987
13983
  case 429:
13988
13984
  #line 1090 "ext/lexer/lexer.rl"
13989
13985
  { num_xfrm = emit_rational; numeric_s = ts; }
13990
- #line 2339 "ext/lexer/lexer.rl"
13986
+ #line 2337 "ext/lexer/lexer.rl"
13991
13987
  {te = p;p--;{
13992
13988
  VALUE digits = tok(lexer, ts, num_suffix_s);
13993
13989
 
@@ -14004,7 +14000,7 @@ _eof_trans:
14004
14000
  case 431:
14005
14001
  #line 1091 "ext/lexer/lexer.rl"
14006
14002
  { num_xfrm = emit_complex_rational; numeric_s = ts; }
14007
- #line 2339 "ext/lexer/lexer.rl"
14003
+ #line 2337 "ext/lexer/lexer.rl"
14008
14004
  {te = p;p--;{
14009
14005
  VALUE digits = tok(lexer, ts, num_suffix_s);
14010
14006
 
@@ -14021,7 +14017,7 @@ _eof_trans:
14021
14017
  case 430:
14022
14018
  #line 1092 "ext/lexer/lexer.rl"
14023
14019
  { num_xfrm = emit_float_followed_by_rescue; numeric_s = ts; p -= 6; }
14024
- #line 2339 "ext/lexer/lexer.rl"
14020
+ #line 2337 "ext/lexer/lexer.rl"
14025
14021
  {te = p;p--;{
14026
14022
  VALUE digits = tok(lexer, ts, num_suffix_s);
14027
14023
 
@@ -14103,18 +14099,16 @@ _eof_trans:
14103
14099
  literal_extend_string(current_literal, escaped_char, ts, te);
14104
14100
  }
14105
14101
  } else {
14106
- if (literal_regexp_p(current_literal)) {
14102
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14103
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14104
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
14105
+ VALUE token = tok(lexer, ts, te);
14106
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14107
+ literal_extend_string(current_literal, token, ts, te);
14108
+ } else if (literal_regexp_p(current_literal)) {
14107
14109
  VALUE token = tok(lexer, ts, te);
14108
14110
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14109
14111
  literal_extend_string(current_literal, token, ts, te);
14110
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14111
- if (literal_squiggly_heredoc_p(current_literal)) {
14112
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14113
- } else {
14114
- VALUE token = tok(lexer, ts, te);
14115
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14116
- literal_extend_string(current_literal, token, ts, te);
14117
- }
14118
14112
  } else if (lexer->escape == Qnil) {
14119
14113
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14120
14114
  } else {
@@ -14191,18 +14185,16 @@ _eof_trans:
14191
14185
  literal_extend_string(current_literal, escaped_char, ts, te);
14192
14186
  }
14193
14187
  } else {
14194
- if (literal_regexp_p(current_literal)) {
14188
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14189
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14190
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
14191
+ VALUE token = tok(lexer, ts, te);
14192
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14193
+ literal_extend_string(current_literal, token, ts, te);
14194
+ } else if (literal_regexp_p(current_literal)) {
14195
14195
  VALUE token = tok(lexer, ts, te);
14196
14196
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14197
14197
  literal_extend_string(current_literal, token, ts, te);
14198
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14199
- if (literal_squiggly_heredoc_p(current_literal)) {
14200
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14201
- } else {
14202
- VALUE token = tok(lexer, ts, te);
14203
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14204
- literal_extend_string(current_literal, token, ts, te);
14205
- }
14206
14198
  } else if (lexer->escape == Qnil) {
14207
14199
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14208
14200
  } else {
@@ -14267,7 +14259,7 @@ _eof_trans:
14267
14259
  }
14268
14260
  }
14269
14261
  }
14270
- #line 2021 "ext/lexer/lexer.rl"
14262
+ #line 2019 "ext/lexer/lexer.rl"
14271
14263
  {te = p;p--;{
14272
14264
  VALUE value = lexer->escape;
14273
14265
  if (value == Qnil)
@@ -14305,18 +14297,16 @@ _eof_trans:
14305
14297
  literal_extend_string(current_literal, escaped_char, ts, te);
14306
14298
  }
14307
14299
  } else {
14308
- if (literal_regexp_p(current_literal)) {
14300
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14301
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14302
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
14303
+ VALUE token = tok(lexer, ts, te);
14304
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14305
+ literal_extend_string(current_literal, token, ts, te);
14306
+ } else if (literal_regexp_p(current_literal)) {
14309
14307
  VALUE token = tok(lexer, ts, te);
14310
14308
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14311
14309
  literal_extend_string(current_literal, token, ts, te);
14312
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14313
- if (literal_squiggly_heredoc_p(current_literal)) {
14314
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14315
- } else {
14316
- VALUE token = tok(lexer, ts, te);
14317
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14318
- literal_extend_string(current_literal, token, ts, te);
14319
- }
14320
14310
  } else if (lexer->escape == Qnil) {
14321
14311
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14322
14312
  } else {
@@ -14349,18 +14339,16 @@ _eof_trans:
14349
14339
  literal_extend_string(current_literal, escaped_char, ts, te);
14350
14340
  }
14351
14341
  } else {
14352
- if (literal_regexp_p(current_literal)) {
14342
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14343
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14344
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
14345
+ VALUE token = tok(lexer, ts, te);
14346
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14347
+ literal_extend_string(current_literal, token, ts, te);
14348
+ } else if (literal_regexp_p(current_literal)) {
14353
14349
  VALUE token = tok(lexer, ts, te);
14354
14350
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14355
14351
  literal_extend_string(current_literal, token, ts, te);
14356
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14357
- if (literal_squiggly_heredoc_p(current_literal)) {
14358
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14359
- } else {
14360
- VALUE token = tok(lexer, ts, te);
14361
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14362
- literal_extend_string(current_literal, token, ts, te);
14363
- }
14364
14352
  } else if (lexer->escape == Qnil) {
14365
14353
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14366
14354
  } else {
@@ -14381,7 +14369,7 @@ _eof_trans:
14381
14369
  force_encoding(codepoint, lexer->encoding);
14382
14370
  }
14383
14371
  }
14384
- #line 2021 "ext/lexer/lexer.rl"
14372
+ #line 2019 "ext/lexer/lexer.rl"
14385
14373
  {te = p;p--;{
14386
14374
  VALUE value = lexer->escape;
14387
14375
  if (value == Qnil)
@@ -14413,18 +14401,16 @@ _eof_trans:
14413
14401
  literal_extend_string(current_literal, escaped_char, ts, te);
14414
14402
  }
14415
14403
  } else {
14416
- if (literal_regexp_p(current_literal)) {
14404
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14405
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14406
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
14407
+ VALUE token = tok(lexer, ts, te);
14408
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14409
+ literal_extend_string(current_literal, token, ts, te);
14410
+ } else if (literal_regexp_p(current_literal)) {
14417
14411
  VALUE token = tok(lexer, ts, te);
14418
14412
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14419
14413
  literal_extend_string(current_literal, token, ts, te);
14420
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14421
- if (literal_squiggly_heredoc_p(current_literal)) {
14422
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14423
- } else {
14424
- VALUE token = tok(lexer, ts, te);
14425
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14426
- literal_extend_string(current_literal, token, ts, te);
14427
- }
14428
14414
  } else if (lexer->escape == Qnil) {
14429
14415
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14430
14416
  } else {
@@ -14451,18 +14437,16 @@ _eof_trans:
14451
14437
  literal_extend_string(current_literal, escaped_char, ts, te);
14452
14438
  }
14453
14439
  } else {
14454
- if (literal_regexp_p(current_literal)) {
14440
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14441
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14442
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
14443
+ VALUE token = tok(lexer, ts, te);
14444
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14445
+ literal_extend_string(current_literal, token, ts, te);
14446
+ } else if (literal_regexp_p(current_literal)) {
14455
14447
  VALUE token = tok(lexer, ts, te);
14456
14448
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14457
14449
  literal_extend_string(current_literal, token, ts, te);
14458
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14459
- if (literal_squiggly_heredoc_p(current_literal)) {
14460
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14461
- } else {
14462
- VALUE token = tok(lexer, ts, te);
14463
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14464
- literal_extend_string(current_literal, token, ts, te);
14465
- }
14466
14450
  } else if (lexer->escape == Qnil) {
14467
14451
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14468
14452
  } else {
@@ -14477,7 +14461,7 @@ _eof_trans:
14477
14461
  diagnostic(lexer, fatal, invalid_escape, Qnil, range(lexer, ts, te),
14478
14462
  empty_array);
14479
14463
  }
14480
- #line 2021 "ext/lexer/lexer.rl"
14464
+ #line 2019 "ext/lexer/lexer.rl"
14481
14465
  {te = p;p--;{
14482
14466
  VALUE value = lexer->escape;
14483
14467
  if (value == Qnil)
@@ -14506,18 +14490,16 @@ _eof_trans:
14506
14490
  literal_extend_string(current_literal, escaped_char, ts, te);
14507
14491
  }
14508
14492
  } else {
14509
- if (literal_regexp_p(current_literal)) {
14493
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14494
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14495
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
14496
+ VALUE token = tok(lexer, ts, te);
14497
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14498
+ literal_extend_string(current_literal, token, ts, te);
14499
+ } else if (literal_regexp_p(current_literal)) {
14510
14500
  VALUE token = tok(lexer, ts, te);
14511
14501
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14512
14502
  literal_extend_string(current_literal, token, ts, te);
14513
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14514
- if (literal_squiggly_heredoc_p(current_literal)) {
14515
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14516
- } else {
14517
- VALUE token = tok(lexer, ts, te);
14518
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14519
- literal_extend_string(current_literal, token, ts, te);
14520
- }
14521
14503
  } else if (lexer->escape == Qnil) {
14522
14504
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14523
14505
  } else {
@@ -14541,18 +14523,16 @@ _eof_trans:
14541
14523
  literal_extend_string(current_literal, escaped_char, ts, te);
14542
14524
  }
14543
14525
  } else {
14544
- if (literal_regexp_p(current_literal)) {
14526
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14527
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14528
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
14529
+ VALUE token = tok(lexer, ts, te);
14530
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14531
+ literal_extend_string(current_literal, token, ts, te);
14532
+ } else if (literal_regexp_p(current_literal)) {
14545
14533
  VALUE token = tok(lexer, ts, te);
14546
14534
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14547
14535
  literal_extend_string(current_literal, token, ts, te);
14548
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14549
- if (literal_squiggly_heredoc_p(current_literal)) {
14550
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14551
- } else {
14552
- VALUE token = tok(lexer, ts, te);
14553
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14554
- literal_extend_string(current_literal, token, ts, te);
14555
- }
14556
14536
  } else if (lexer->escape == Qnil) {
14557
14537
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14558
14538
  } else {
@@ -14564,7 +14544,7 @@ _eof_trans:
14564
14544
  case 342:
14565
14545
  #line 1186 "ext/lexer/lexer.rl"
14566
14546
  { lexer->escape = rb_str_new2("\x7f"); }
14567
- #line 2021 "ext/lexer/lexer.rl"
14547
+ #line 2019 "ext/lexer/lexer.rl"
14568
14548
  {te = p;p--;{
14569
14549
  VALUE value = lexer->escape;
14570
14550
  if (value == Qnil)
@@ -14599,18 +14579,16 @@ _eof_trans:
14599
14579
  literal_extend_string(current_literal, escaped_char, ts, te);
14600
14580
  }
14601
14581
  } else {
14602
- if (literal_regexp_p(current_literal)) {
14582
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14583
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14584
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
14585
+ VALUE token = tok(lexer, ts, te);
14586
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14587
+ literal_extend_string(current_literal, token, ts, te);
14588
+ } else if (literal_regexp_p(current_literal)) {
14603
14589
  VALUE token = tok(lexer, ts, te);
14604
14590
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14605
14591
  literal_extend_string(current_literal, token, ts, te);
14606
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14607
- if (literal_squiggly_heredoc_p(current_literal)) {
14608
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14609
- } else {
14610
- VALUE token = tok(lexer, ts, te);
14611
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14612
- literal_extend_string(current_literal, token, ts, te);
14613
- }
14614
14592
  } else if (lexer->escape == Qnil) {
14615
14593
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14616
14594
  } else {
@@ -14640,18 +14618,16 @@ _eof_trans:
14640
14618
  literal_extend_string(current_literal, escaped_char, ts, te);
14641
14619
  }
14642
14620
  } else {
14643
- if (literal_regexp_p(current_literal)) {
14621
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14622
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14623
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
14624
+ VALUE token = tok(lexer, ts, te);
14625
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14626
+ literal_extend_string(current_literal, token, ts, te);
14627
+ } else if (literal_regexp_p(current_literal)) {
14644
14628
  VALUE token = tok(lexer, ts, te);
14645
14629
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14646
14630
  literal_extend_string(current_literal, token, ts, te);
14647
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14648
- if (literal_squiggly_heredoc_p(current_literal)) {
14649
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14650
- } else {
14651
- VALUE token = tok(lexer, ts, te);
14652
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14653
- literal_extend_string(current_literal, token, ts, te);
14654
- }
14655
14631
  } else if (lexer->escape == Qnil) {
14656
14632
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14657
14633
  } else {
@@ -14669,7 +14645,7 @@ _eof_trans:
14669
14645
  lexer->escape = rb_str_new(&c, 1);
14670
14646
  force_encoding(lexer->escape, lexer->encoding);
14671
14647
  }
14672
- #line 2021 "ext/lexer/lexer.rl"
14648
+ #line 2019 "ext/lexer/lexer.rl"
14673
14649
  {te = p;p--;{
14674
14650
  VALUE value = lexer->escape;
14675
14651
  if (value == Qnil)
@@ -14703,18 +14679,16 @@ _eof_trans:
14703
14679
  literal_extend_string(current_literal, escaped_char, ts, te);
14704
14680
  }
14705
14681
  } else {
14706
- if (literal_regexp_p(current_literal)) {
14682
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14683
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14684
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
14685
+ VALUE token = tok(lexer, ts, te);
14686
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14687
+ literal_extend_string(current_literal, token, ts, te);
14688
+ } else if (literal_regexp_p(current_literal)) {
14707
14689
  VALUE token = tok(lexer, ts, te);
14708
14690
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14709
14691
  literal_extend_string(current_literal, token, ts, te);
14710
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14711
- if (literal_squiggly_heredoc_p(current_literal)) {
14712
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14713
- } else {
14714
- VALUE token = tok(lexer, ts, te);
14715
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14716
- literal_extend_string(current_literal, token, ts, te);
14717
- }
14718
14692
  } else if (lexer->escape == Qnil) {
14719
14693
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14720
14694
  } else {
@@ -14743,18 +14717,16 @@ _eof_trans:
14743
14717
  literal_extend_string(current_literal, escaped_char, ts, te);
14744
14718
  }
14745
14719
  } else {
14746
- if (literal_regexp_p(current_literal)) {
14720
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14721
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14722
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
14723
+ VALUE token = tok(lexer, ts, te);
14724
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14725
+ literal_extend_string(current_literal, token, ts, te);
14726
+ } else if (literal_regexp_p(current_literal)) {
14747
14727
  VALUE token = tok(lexer, ts, te);
14748
14728
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14749
14729
  literal_extend_string(current_literal, token, ts, te);
14750
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14751
- if (literal_squiggly_heredoc_p(current_literal)) {
14752
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14753
- } else {
14754
- VALUE token = tok(lexer, ts, te);
14755
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14756
- literal_extend_string(current_literal, token, ts, te);
14757
- }
14758
14730
  } else if (lexer->escape == Qnil) {
14759
14731
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14760
14732
  } else {
@@ -14771,7 +14743,7 @@ _eof_trans:
14771
14743
  lexer->escape = rb_str_new(&c, 1);
14772
14744
  force_encoding(lexer->escape, lexer->encoding);
14773
14745
  }
14774
- #line 2021 "ext/lexer/lexer.rl"
14746
+ #line 2019 "ext/lexer/lexer.rl"
14775
14747
  {te = p;p--;{
14776
14748
  VALUE value = lexer->escape;
14777
14749
  if (value == Qnil)
@@ -14803,18 +14775,16 @@ _eof_trans:
14803
14775
  literal_extend_string(current_literal, escaped_char, ts, te);
14804
14776
  }
14805
14777
  } else {
14806
- if (literal_regexp_p(current_literal)) {
14778
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14779
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14780
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
14781
+ VALUE token = tok(lexer, ts, te);
14782
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14783
+ literal_extend_string(current_literal, token, ts, te);
14784
+ } else if (literal_regexp_p(current_literal)) {
14807
14785
  VALUE token = tok(lexer, ts, te);
14808
14786
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14809
14787
  literal_extend_string(current_literal, token, ts, te);
14810
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14811
- if (literal_squiggly_heredoc_p(current_literal)) {
14812
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14813
- } else {
14814
- VALUE token = tok(lexer, ts, te);
14815
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14816
- literal_extend_string(current_literal, token, ts, te);
14817
- }
14818
14788
  } else if (lexer->escape == Qnil) {
14819
14789
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14820
14790
  } else {
@@ -14841,18 +14811,16 @@ _eof_trans:
14841
14811
  literal_extend_string(current_literal, escaped_char, ts, te);
14842
14812
  }
14843
14813
  } else {
14844
- if (literal_regexp_p(current_literal)) {
14814
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14815
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14816
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
14817
+ VALUE token = tok(lexer, ts, te);
14818
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14819
+ literal_extend_string(current_literal, token, ts, te);
14820
+ } else if (literal_regexp_p(current_literal)) {
14845
14821
  VALUE token = tok(lexer, ts, te);
14846
14822
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14847
14823
  literal_extend_string(current_literal, token, ts, te);
14848
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14849
- if (literal_squiggly_heredoc_p(current_literal)) {
14850
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14851
- } else {
14852
- VALUE token = tok(lexer, ts, te);
14853
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14854
- literal_extend_string(current_literal, token, ts, te);
14855
- }
14856
14824
  } else if (lexer->escape == Qnil) {
14857
14825
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14858
14826
  } else {
@@ -14867,7 +14835,7 @@ _eof_trans:
14867
14835
  diagnostic(lexer, fatal, invalid_hex_escape, Qnil,
14868
14836
  range(lexer, lexer->escape_s - 1, p + 2), empty_array);
14869
14837
  }
14870
- #line 2021 "ext/lexer/lexer.rl"
14838
+ #line 2019 "ext/lexer/lexer.rl"
14871
14839
  {te = p;p--;{
14872
14840
  VALUE value = lexer->escape;
14873
14841
  if (value == Qnil)
@@ -14900,18 +14868,16 @@ _eof_trans:
14900
14868
  literal_extend_string(current_literal, escaped_char, ts, te);
14901
14869
  }
14902
14870
  } else {
14903
- if (literal_regexp_p(current_literal)) {
14871
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14872
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14873
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
14874
+ VALUE token = tok(lexer, ts, te);
14875
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14876
+ literal_extend_string(current_literal, token, ts, te);
14877
+ } else if (literal_regexp_p(current_literal)) {
14904
14878
  VALUE token = tok(lexer, ts, te);
14905
14879
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14906
14880
  literal_extend_string(current_literal, token, ts, te);
14907
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14908
- if (literal_squiggly_heredoc_p(current_literal)) {
14909
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14910
- } else {
14911
- VALUE token = tok(lexer, ts, te);
14912
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14913
- literal_extend_string(current_literal, token, ts, te);
14914
- }
14915
14881
  } else if (lexer->escape == Qnil) {
14916
14882
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14917
14883
  } else {
@@ -14939,18 +14905,16 @@ _eof_trans:
14939
14905
  literal_extend_string(current_literal, escaped_char, ts, te);
14940
14906
  }
14941
14907
  } else {
14942
- if (literal_regexp_p(current_literal)) {
14908
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14909
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14910
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
14911
+ VALUE token = tok(lexer, ts, te);
14912
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14913
+ literal_extend_string(current_literal, token, ts, te);
14914
+ } else if (literal_regexp_p(current_literal)) {
14943
14915
  VALUE token = tok(lexer, ts, te);
14944
14916
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14945
14917
  literal_extend_string(current_literal, token, ts, te);
14946
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14947
- if (literal_squiggly_heredoc_p(current_literal)) {
14948
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14949
- } else {
14950
- VALUE token = tok(lexer, ts, te);
14951
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14952
- literal_extend_string(current_literal, token, ts, te);
14953
- }
14954
14918
  } else if (lexer->escape == Qnil) {
14955
14919
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14956
14920
  } else {
@@ -14966,7 +14930,7 @@ _eof_trans:
14966
14930
  int i = NUM2INT(rb_str_to_inum(token, 16, 0));
14967
14931
  lexer->escape = rb_enc_uint_chr(i, rb_to_encoding(utf8_encoding));
14968
14932
  }
14969
- #line 2021 "ext/lexer/lexer.rl"
14933
+ #line 2019 "ext/lexer/lexer.rl"
14970
14934
  {te = p;p--;{
14971
14935
  VALUE value = lexer->escape;
14972
14936
  if (value == Qnil)
@@ -14998,18 +14962,16 @@ _eof_trans:
14998
14962
  literal_extend_string(current_literal, escaped_char, ts, te);
14999
14963
  }
15000
14964
  } else {
15001
- if (literal_regexp_p(current_literal)) {
14965
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
14966
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
14967
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
14968
+ VALUE token = tok(lexer, ts, te);
14969
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
14970
+ literal_extend_string(current_literal, token, ts, te);
14971
+ } else if (literal_regexp_p(current_literal)) {
15002
14972
  VALUE token = tok(lexer, ts, te);
15003
14973
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15004
14974
  literal_extend_string(current_literal, token, ts, te);
15005
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
15006
- if (literal_squiggly_heredoc_p(current_literal)) {
15007
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15008
- } else {
15009
- VALUE token = tok(lexer, ts, te);
15010
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15011
- literal_extend_string(current_literal, token, ts, te);
15012
- }
15013
14975
  } else if (lexer->escape == Qnil) {
15014
14976
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15015
14977
  } else {
@@ -15036,18 +14998,16 @@ _eof_trans:
15036
14998
  literal_extend_string(current_literal, escaped_char, ts, te);
15037
14999
  }
15038
15000
  } else {
15039
- if (literal_regexp_p(current_literal)) {
15001
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
15002
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15003
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
15004
+ VALUE token = tok(lexer, ts, te);
15005
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15006
+ literal_extend_string(current_literal, token, ts, te);
15007
+ } else if (literal_regexp_p(current_literal)) {
15040
15008
  VALUE token = tok(lexer, ts, te);
15041
15009
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15042
15010
  literal_extend_string(current_literal, token, ts, te);
15043
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
15044
- if (literal_squiggly_heredoc_p(current_literal)) {
15045
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15046
- } else {
15047
- VALUE token = tok(lexer, ts, te);
15048
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15049
- literal_extend_string(current_literal, token, ts, te);
15050
- }
15051
15011
  } else if (lexer->escape == Qnil) {
15052
15012
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15053
15013
  } else {
@@ -15062,7 +15022,7 @@ _eof_trans:
15062
15022
  diagnostic(lexer, fatal, invalid_unicode_escape, Qnil,
15063
15023
  range(lexer, lexer->escape_s - 1, p), empty_array);
15064
15024
  }
15065
- #line 2021 "ext/lexer/lexer.rl"
15025
+ #line 2019 "ext/lexer/lexer.rl"
15066
15026
  {te = p;p--;{
15067
15027
  VALUE value = lexer->escape;
15068
15028
  if (value == Qnil)
@@ -15094,18 +15054,16 @@ _eof_trans:
15094
15054
  literal_extend_string(current_literal, escaped_char, ts, te);
15095
15055
  }
15096
15056
  } else {
15097
- if (literal_regexp_p(current_literal)) {
15057
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
15058
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15059
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
15060
+ VALUE token = tok(lexer, ts, te);
15061
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15062
+ literal_extend_string(current_literal, token, ts, te);
15063
+ } else if (literal_regexp_p(current_literal)) {
15098
15064
  VALUE token = tok(lexer, ts, te);
15099
15065
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15100
15066
  literal_extend_string(current_literal, token, ts, te);
15101
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
15102
- if (literal_squiggly_heredoc_p(current_literal)) {
15103
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15104
- } else {
15105
- VALUE token = tok(lexer, ts, te);
15106
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15107
- literal_extend_string(current_literal, token, ts, te);
15108
- }
15109
15067
  } else if (lexer->escape == Qnil) {
15110
15068
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15111
15069
  } else {
@@ -15132,18 +15090,16 @@ _eof_trans:
15132
15090
  literal_extend_string(current_literal, escaped_char, ts, te);
15133
15091
  }
15134
15092
  } else {
15135
- if (literal_regexp_p(current_literal)) {
15093
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
15094
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15095
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
15096
+ VALUE token = tok(lexer, ts, te);
15097
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15098
+ literal_extend_string(current_literal, token, ts, te);
15099
+ } else if (literal_regexp_p(current_literal)) {
15136
15100
  VALUE token = tok(lexer, ts, te);
15137
15101
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15138
15102
  literal_extend_string(current_literal, token, ts, te);
15139
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
15140
- if (literal_squiggly_heredoc_p(current_literal)) {
15141
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15142
- } else {
15143
- VALUE token = tok(lexer, ts, te);
15144
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15145
- literal_extend_string(current_literal, token, ts, te);
15146
- }
15147
15103
  } else if (lexer->escape == Qnil) {
15148
15104
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15149
15105
  } else {
@@ -15158,7 +15114,7 @@ _eof_trans:
15158
15114
  diagnostic(lexer, fatal, invalid_unicode_escape, Qnil,
15159
15115
  range(lexer, lexer->escape_s - 1, p), empty_array);
15160
15116
  }
15161
- #line 2021 "ext/lexer/lexer.rl"
15117
+ #line 2019 "ext/lexer/lexer.rl"
15162
15118
  {te = p;p--;{
15163
15119
  VALUE value = lexer->escape;
15164
15120
  if (value == Qnil)
@@ -15190,18 +15146,16 @@ _eof_trans:
15190
15146
  literal_extend_string(current_literal, escaped_char, ts, te);
15191
15147
  }
15192
15148
  } else {
15193
- if (literal_regexp_p(current_literal)) {
15149
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
15150
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15151
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
15152
+ VALUE token = tok(lexer, ts, te);
15153
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15154
+ literal_extend_string(current_literal, token, ts, te);
15155
+ } else if (literal_regexp_p(current_literal)) {
15194
15156
  VALUE token = tok(lexer, ts, te);
15195
15157
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15196
15158
  literal_extend_string(current_literal, token, ts, te);
15197
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
15198
- if (literal_squiggly_heredoc_p(current_literal)) {
15199
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15200
- } else {
15201
- VALUE token = tok(lexer, ts, te);
15202
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15203
- literal_extend_string(current_literal, token, ts, te);
15204
- }
15205
15159
  } else if (lexer->escape == Qnil) {
15206
15160
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15207
15161
  } else {
@@ -15228,18 +15182,16 @@ _eof_trans:
15228
15182
  literal_extend_string(current_literal, escaped_char, ts, te);
15229
15183
  }
15230
15184
  } else {
15231
- if (literal_regexp_p(current_literal)) {
15185
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
15186
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15187
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
15188
+ VALUE token = tok(lexer, ts, te);
15189
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15190
+ literal_extend_string(current_literal, token, ts, te);
15191
+ } else if (literal_regexp_p(current_literal)) {
15232
15192
  VALUE token = tok(lexer, ts, te);
15233
15193
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15234
15194
  literal_extend_string(current_literal, token, ts, te);
15235
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
15236
- if (literal_squiggly_heredoc_p(current_literal)) {
15237
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15238
- } else {
15239
- VALUE token = tok(lexer, ts, te);
15240
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15241
- literal_extend_string(current_literal, token, ts, te);
15242
- }
15243
15195
  } else if (lexer->escape == Qnil) {
15244
15196
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15245
15197
  } else {
@@ -15254,7 +15206,7 @@ _eof_trans:
15254
15206
  diagnostic(lexer, fatal, invalid_unicode_escape, Qnil,
15255
15207
  range(lexer, p - 1, p), empty_array);
15256
15208
  }
15257
- #line 2021 "ext/lexer/lexer.rl"
15209
+ #line 2019 "ext/lexer/lexer.rl"
15258
15210
  {te = p;p--;{
15259
15211
  VALUE value = lexer->escape;
15260
15212
  if (value == Qnil)
@@ -15286,20 +15238,18 @@ _eof_trans:
15286
15238
  literal_extend_string(current_literal, escaped_char, ts, te);
15287
15239
  }
15288
15240
  } else {
15289
- if (literal_regexp_p(current_literal)) {
15241
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
15242
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15243
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
15290
15244
  VALUE token = tok(lexer, ts, te);
15291
15245
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15292
15246
  literal_extend_string(current_literal, token, ts, te);
15293
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
15294
- if (literal_squiggly_heredoc_p(current_literal)) {
15295
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15296
- } else {
15297
- VALUE token = tok(lexer, ts, te);
15298
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15299
- literal_extend_string(current_literal, token, ts, te);
15300
- }
15301
- } else if (lexer->escape == Qnil) {
15302
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15247
+ } else if (literal_regexp_p(current_literal)) {
15248
+ VALUE token = tok(lexer, ts, te);
15249
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15250
+ literal_extend_string(current_literal, token, ts, te);
15251
+ } else if (lexer->escape == Qnil) {
15252
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15303
15253
  } else {
15304
15254
  literal_extend_string(current_literal, lexer->escape, ts, te);
15305
15255
  }
@@ -15324,18 +15274,16 @@ _eof_trans:
15324
15274
  literal_extend_string(current_literal, escaped_char, ts, te);
15325
15275
  }
15326
15276
  } else {
15327
- if (literal_regexp_p(current_literal)) {
15277
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
15278
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15279
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
15280
+ VALUE token = tok(lexer, ts, te);
15281
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15282
+ literal_extend_string(current_literal, token, ts, te);
15283
+ } else if (literal_regexp_p(current_literal)) {
15328
15284
  VALUE token = tok(lexer, ts, te);
15329
15285
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15330
15286
  literal_extend_string(current_literal, token, ts, te);
15331
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
15332
- if (literal_squiggly_heredoc_p(current_literal)) {
15333
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15334
- } else {
15335
- VALUE token = tok(lexer, ts, te);
15336
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15337
- literal_extend_string(current_literal, token, ts, te);
15338
- }
15339
15287
  } else if (lexer->escape == Qnil) {
15340
15288
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15341
15289
  } else {
@@ -15350,7 +15298,7 @@ _eof_trans:
15350
15298
  diagnostic(lexer, fatal, escape_eof, Qnil, range(lexer, p - 1, p),
15351
15299
  empty_array);
15352
15300
  }
15353
- #line 2021 "ext/lexer/lexer.rl"
15301
+ #line 2019 "ext/lexer/lexer.rl"
15354
15302
  {te = p;p--;{
15355
15303
  VALUE value = lexer->escape;
15356
15304
  if (value == Qnil)
@@ -15382,18 +15330,16 @@ _eof_trans:
15382
15330
  literal_extend_string(current_literal, escaped_char, ts, te);
15383
15331
  }
15384
15332
  } else {
15385
- if (literal_regexp_p(current_literal)) {
15333
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
15334
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15335
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
15336
+ VALUE token = tok(lexer, ts, te);
15337
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15338
+ literal_extend_string(current_literal, token, ts, te);
15339
+ } else if (literal_regexp_p(current_literal)) {
15386
15340
  VALUE token = tok(lexer, ts, te);
15387
15341
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15388
15342
  literal_extend_string(current_literal, token, ts, te);
15389
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
15390
- if (literal_squiggly_heredoc_p(current_literal)) {
15391
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15392
- } else {
15393
- VALUE token = tok(lexer, ts, te);
15394
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15395
- literal_extend_string(current_literal, token, ts, te);
15396
- }
15397
15343
  } else if (lexer->escape == Qnil) {
15398
15344
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15399
15345
  } else {
@@ -15420,18 +15366,16 @@ _eof_trans:
15420
15366
  literal_extend_string(current_literal, escaped_char, ts, te);
15421
15367
  }
15422
15368
  } else {
15423
- if (literal_regexp_p(current_literal)) {
15369
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
15370
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15371
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
15372
+ VALUE token = tok(lexer, ts, te);
15373
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15374
+ literal_extend_string(current_literal, token, ts, te);
15375
+ } else if (literal_regexp_p(current_literal)) {
15424
15376
  VALUE token = tok(lexer, ts, te);
15425
15377
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15426
15378
  literal_extend_string(current_literal, token, ts, te);
15427
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
15428
- if (literal_squiggly_heredoc_p(current_literal)) {
15429
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15430
- } else {
15431
- VALUE token = tok(lexer, ts, te);
15432
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
15433
- literal_extend_string(current_literal, token, ts, te);
15434
- }
15435
15379
  } else if (lexer->escape == Qnil) {
15436
15380
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
15437
15381
  } else {
@@ -15459,7 +15403,7 @@ _eof_trans:
15459
15403
  lexer->herebody_s = 0;
15460
15404
  }
15461
15405
  }
15462
- #line 1766 "ext/lexer/lexer.rl"
15406
+ #line 1764 "ext/lexer/lexer.rl"
15463
15407
  { tm = p; }
15464
15408
  break;
15465
15409
  case 32:
@@ -15470,7 +15414,7 @@ _eof_trans:
15470
15414
  lexer->herebody_s = 0;
15471
15415
  }
15472
15416
  }
15473
- #line 1777 "ext/lexer/lexer.rl"
15417
+ #line 1775 "ext/lexer/lexer.rl"
15474
15418
  { tm = p; }
15475
15419
  break;
15476
15420
  case 34:
@@ -15481,7 +15425,7 @@ _eof_trans:
15481
15425
  lexer->herebody_s = 0;
15482
15426
  }
15483
15427
  }
15484
- #line 1794 "ext/lexer/lexer.rl"
15428
+ #line 1792 "ext/lexer/lexer.rl"
15485
15429
  { tm = p; }
15486
15430
  break;
15487
15431
  case 201:
@@ -15492,7 +15436,7 @@ _eof_trans:
15492
15436
  lexer->herebody_s = 0;
15493
15437
  }
15494
15438
  }
15495
- #line 1690 "ext/lexer/lexer.rl"
15439
+ #line 1688 "ext/lexer/lexer.rl"
15496
15440
  {te = p;p--;}
15497
15441
  break;
15498
15442
  case 220:
@@ -15503,7 +15447,7 @@ _eof_trans:
15503
15447
  lexer->herebody_s = 0;
15504
15448
  }
15505
15449
  }
15506
- #line 1703 "ext/lexer/lexer.rl"
15450
+ #line 1701 "ext/lexer/lexer.rl"
15507
15451
  {te = p;p--;}
15508
15452
  break;
15509
15453
  case 228:
@@ -15514,7 +15458,7 @@ _eof_trans:
15514
15458
  lexer->herebody_s = 0;
15515
15459
  }
15516
15460
  }
15517
- #line 1725 "ext/lexer/lexer.rl"
15461
+ #line 1723 "ext/lexer/lexer.rl"
15518
15462
  {te = p;p--;}
15519
15463
  break;
15520
15464
  case 33:
@@ -15525,7 +15469,7 @@ _eof_trans:
15525
15469
  lexer->herebody_s = 0;
15526
15470
  }
15527
15471
  }
15528
- #line 1801 "ext/lexer/lexer.rl"
15472
+ #line 1799 "ext/lexer/lexer.rl"
15529
15473
  {te = p+1;{
15530
15474
  p = ts - 1;
15531
15475
  {cs = 768;goto _again;}
@@ -15539,7 +15483,7 @@ _eof_trans:
15539
15483
  lexer->herebody_s = 0;
15540
15484
  }
15541
15485
  }
15542
- #line 1806 "ext/lexer/lexer.rl"
15486
+ #line 1804 "ext/lexer/lexer.rl"
15543
15487
  {te = p;p--;}
15544
15488
  break;
15545
15489
  case 251:
@@ -15550,7 +15494,7 @@ _eof_trans:
15550
15494
  lexer->herebody_s = 0;
15551
15495
  }
15552
15496
  }
15553
- #line 1810 "ext/lexer/lexer.rl"
15497
+ #line 1808 "ext/lexer/lexer.rl"
15554
15498
  {te = p;p--;{ p--; {cs = 768;goto _again;} }}
15555
15499
  break;
15556
15500
  case 270:
@@ -15561,7 +15505,7 @@ _eof_trans:
15561
15505
  lexer->herebody_s = 0;
15562
15506
  }
15563
15507
  }
15564
- #line 1861 "ext/lexer/lexer.rl"
15508
+ #line 1859 "ext/lexer/lexer.rl"
15565
15509
  {te = p;p--;}
15566
15510
  break;
15567
15511
  case 282:
@@ -15572,7 +15516,7 @@ _eof_trans:
15572
15516
  lexer->herebody_s = 0;
15573
15517
  }
15574
15518
  }
15575
- #line 1876 "ext/lexer/lexer.rl"
15519
+ #line 1874 "ext/lexer/lexer.rl"
15576
15520
  {te = p;p--;}
15577
15521
  break;
15578
15522
  case 278:
@@ -15583,7 +15527,7 @@ _eof_trans:
15583
15527
  lexer->herebody_s = 0;
15584
15528
  }
15585
15529
  }
15586
- #line 1878 "ext/lexer/lexer.rl"
15530
+ #line 1876 "ext/lexer/lexer.rl"
15587
15531
  {te = p;p--;{ p--; {cs = 768;goto _again;} }}
15588
15532
  break;
15589
15533
  case 58:
@@ -15594,7 +15538,7 @@ _eof_trans:
15594
15538
  lexer->herebody_s = 0;
15595
15539
  }
15596
15540
  }
15597
- #line 1886 "ext/lexer/lexer.rl"
15541
+ #line 1884 "ext/lexer/lexer.rl"
15598
15542
  {te = p+1;{
15599
15543
  emit_token(lexer, tUNARY_NUM, tok(lexer, ts, ts + 1), ts, ts + 1);
15600
15544
  p--; cs = 768; {p++; goto _out; }
@@ -15608,7 +15552,7 @@ _eof_trans:
15608
15552
  lexer->herebody_s = 0;
15609
15553
  }
15610
15554
  }
15611
- #line 2118 "ext/lexer/lexer.rl"
15555
+ #line 2116 "ext/lexer/lexer.rl"
15612
15556
  {te = p+1;{
15613
15557
  emit_token(lexer, tIDENTIFIER, ident_tok, ident_ts, ident_te);
15614
15558
  p = ident_te - 1;
@@ -15630,7 +15574,7 @@ _eof_trans:
15630
15574
  lexer->herebody_s = 0;
15631
15575
  }
15632
15576
  }
15633
- #line 2131 "ext/lexer/lexer.rl"
15577
+ #line 2129 "ext/lexer/lexer.rl"
15634
15578
  {te = p;p--;}
15635
15579
  break;
15636
15580
  case 372:
@@ -15641,7 +15585,7 @@ _eof_trans:
15641
15585
  lexer->herebody_s = 0;
15642
15586
  }
15643
15587
  }
15644
- #line 2149 "ext/lexer/lexer.rl"
15588
+ #line 2147 "ext/lexer/lexer.rl"
15645
15589
  {te = p;p--;}
15646
15590
  break;
15647
15591
  case 368:
@@ -15652,7 +15596,7 @@ _eof_trans:
15652
15596
  lexer->herebody_s = 0;
15653
15597
  }
15654
15598
  }
15655
- #line 2151 "ext/lexer/lexer.rl"
15599
+ #line 2149 "ext/lexer/lexer.rl"
15656
15600
  {te = p;p--;{
15657
15601
  if (lexer->in_kwarg) {
15658
15602
  p--; {cs = 768;goto _again;}
@@ -15669,7 +15613,7 @@ _eof_trans:
15669
15613
  lexer->herebody_s = 0;
15670
15614
  }
15671
15615
  }
15672
- #line 2172 "ext/lexer/lexer.rl"
15616
+ #line 2170 "ext/lexer/lexer.rl"
15673
15617
  {te = p;p--;}
15674
15618
  break;
15675
15619
  case 378:
@@ -15680,7 +15624,7 @@ _eof_trans:
15680
15624
  lexer->herebody_s = 0;
15681
15625
  }
15682
15626
  }
15683
- #line 2174 "ext/lexer/lexer.rl"
15627
+ #line 2172 "ext/lexer/lexer.rl"
15684
15628
  {te = p;p--;{ {cs = 182;goto _again;} }}
15685
15629
  break;
15686
15630
  case 471:
@@ -15691,7 +15635,7 @@ _eof_trans:
15691
15635
  lexer->herebody_s = 0;
15692
15636
  }
15693
15637
  }
15694
- #line 2466 "ext/lexer/lexer.rl"
15638
+ #line 2464 "ext/lexer/lexer.rl"
15695
15639
  {te = p;p--;}
15696
15640
  break;
15697
15641
  case 398:
@@ -15702,7 +15646,7 @@ _eof_trans:
15702
15646
  lexer->herebody_s = 0;
15703
15647
  }
15704
15648
  }
15705
- #line 2468 "ext/lexer/lexer.rl"
15649
+ #line 2466 "ext/lexer/lexer.rl"
15706
15650
  {te = p;p--;{ {cs = 945;goto _again;} }}
15707
15651
  break;
15708
15652
  case 93:
@@ -15713,11 +15657,11 @@ _eof_trans:
15713
15657
  lexer->herebody_s = 0;
15714
15658
  }
15715
15659
  }
15716
- #line 2514 "ext/lexer/lexer.rl"
15660
+ #line 2512 "ext/lexer/lexer.rl"
15717
15661
  {te = p;p--;}
15718
15662
  break;
15719
15663
  case 250:
15720
- #line 1401 "ext/lexer/lexer.rl"
15664
+ #line 1399 "ext/lexer/lexer.rl"
15721
15665
  {
15722
15666
  stack_state_push(&lexer->cond, 0);
15723
15667
  stack_state_push(&lexer->cmdarg, 0);
@@ -15727,7 +15671,7 @@ _eof_trans:
15727
15671
  literal_start_interp_brace(current_literal);
15728
15672
  }
15729
15673
  }
15730
- #line 1751 "ext/lexer/lexer.rl"
15674
+ #line 1749 "ext/lexer/lexer.rl"
15731
15675
  {te = p;p--;{
15732
15676
  VALUE val = array_last(lexer->lambda_stack);
15733
15677
  if (val != Qnil && NUM2INT(val) == lexer->paren_nest) {
@@ -15740,7 +15684,7 @@ _eof_trans:
15740
15684
  }}
15741
15685
  break;
15742
15686
  case 272:
15743
- #line 1401 "ext/lexer/lexer.rl"
15687
+ #line 1399 "ext/lexer/lexer.rl"
15744
15688
  {
15745
15689
  stack_state_push(&lexer->cond, 0);
15746
15690
  stack_state_push(&lexer->cmdarg, 0);
@@ -15750,7 +15694,7 @@ _eof_trans:
15750
15694
  literal_start_interp_brace(current_literal);
15751
15695
  }
15752
15696
  }
15753
- #line 1848 "ext/lexer/lexer.rl"
15697
+ #line 1846 "ext/lexer/lexer.rl"
15754
15698
  {te = p;p--;{
15755
15699
  VALUE val = array_last(lexer->lambda_stack);
15756
15700
  if (val != Qnil && NUM2INT(val) == lexer->paren_nest) {
@@ -15763,7 +15707,7 @@ _eof_trans:
15763
15707
  }}
15764
15708
  break;
15765
15709
  case 364:
15766
- #line 1401 "ext/lexer/lexer.rl"
15710
+ #line 1399 "ext/lexer/lexer.rl"
15767
15711
  {
15768
15712
  stack_state_push(&lexer->cond, 0);
15769
15713
  stack_state_push(&lexer->cmdarg, 0);
@@ -15773,7 +15717,7 @@ _eof_trans:
15773
15717
  literal_start_interp_brace(current_literal);
15774
15718
  }
15775
15719
  }
15776
- #line 2052 "ext/lexer/lexer.rl"
15720
+ #line 2050 "ext/lexer/lexer.rl"
15777
15721
  {te = p;p--;{
15778
15722
  VALUE val = array_last(lexer->lambda_stack);
15779
15723
  if (val != Qnil && NUM2INT(val) == lexer->paren_nest) {
@@ -15786,7 +15730,7 @@ _eof_trans:
15786
15730
  }}
15787
15731
  break;
15788
15732
  case 483:
15789
- #line 1401 "ext/lexer/lexer.rl"
15733
+ #line 1399 "ext/lexer/lexer.rl"
15790
15734
  {
15791
15735
  stack_state_push(&lexer->cond, 0);
15792
15736
  stack_state_push(&lexer->cmdarg, 0);
@@ -15796,7 +15740,7 @@ _eof_trans:
15796
15740
  literal_start_interp_brace(current_literal);
15797
15741
  }
15798
15742
  }
15799
- #line 2188 "ext/lexer/lexer.rl"
15743
+ #line 2186 "ext/lexer/lexer.rl"
15800
15744
  {te = p;p--;{
15801
15745
  VALUE val = array_last(lexer->lambda_stack);
15802
15746
  if (val != Qnil && NUM2INT(val) == lexer->paren_nest) {
@@ -15809,7 +15753,7 @@ _eof_trans:
15809
15753
  }}
15810
15754
  break;
15811
15755
  case 484:
15812
- #line 1411 "ext/lexer/lexer.rl"
15756
+ #line 1409 "ext/lexer/lexer.rl"
15813
15757
  {
15814
15758
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
15815
15759
  if (current_literal != NULL) {
@@ -15837,7 +15781,7 @@ _eof_trans:
15837
15781
  }
15838
15782
  }
15839
15783
  }
15840
- #line 2400 "ext/lexer/lexer.rl"
15784
+ #line 2398 "ext/lexer/lexer.rl"
15841
15785
  {te = p;p--;{
15842
15786
  emit(tRCURLY);
15843
15787
 
@@ -15859,94 +15803,94 @@ _eof_trans:
15859
15803
  }}
15860
15804
  break;
15861
15805
  case 60:
15862
- #line 1544 "ext/lexer/lexer.rl"
15806
+ #line 1542 "ext/lexer/lexer.rl"
15863
15807
  { sharp_s = p - 1; }
15864
- #line 1545 "ext/lexer/lexer.rl"
15808
+ #line 1543 "ext/lexer/lexer.rl"
15865
15809
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15866
15810
  break;
15867
15811
  case 64:
15868
- #line 1545 "ext/lexer/lexer.rl"
15812
+ #line 1543 "ext/lexer/lexer.rl"
15869
15813
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15870
15814
  #line 1002 "ext/lexer/lexer.rl"
15871
15815
  { lexer->newline_s = p; }
15872
15816
  break;
15873
15817
  case 204:
15874
- #line 1545 "ext/lexer/lexer.rl"
15818
+ #line 1543 "ext/lexer/lexer.rl"
15875
15819
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15876
- #line 1690 "ext/lexer/lexer.rl"
15820
+ #line 1688 "ext/lexer/lexer.rl"
15877
15821
  {te = p;p--;}
15878
15822
  break;
15879
15823
  case 219:
15880
- #line 1545 "ext/lexer/lexer.rl"
15824
+ #line 1543 "ext/lexer/lexer.rl"
15881
15825
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15882
- #line 1703 "ext/lexer/lexer.rl"
15826
+ #line 1701 "ext/lexer/lexer.rl"
15883
15827
  {te = p;p--;}
15884
15828
  break;
15885
15829
  case 231:
15886
- #line 1545 "ext/lexer/lexer.rl"
15830
+ #line 1543 "ext/lexer/lexer.rl"
15887
15831
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15888
- #line 1725 "ext/lexer/lexer.rl"
15832
+ #line 1723 "ext/lexer/lexer.rl"
15889
15833
  {te = p;p--;}
15890
15834
  break;
15891
15835
  case 253:
15892
- #line 1545 "ext/lexer/lexer.rl"
15836
+ #line 1543 "ext/lexer/lexer.rl"
15893
15837
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15894
- #line 1808 "ext/lexer/lexer.rl"
15838
+ #line 1806 "ext/lexer/lexer.rl"
15895
15839
  {te = p;p--;{ {cs = 768;goto _again;} }}
15896
15840
  break;
15897
15841
  case 268:
15898
- #line 1545 "ext/lexer/lexer.rl"
15842
+ #line 1543 "ext/lexer/lexer.rl"
15899
15843
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15900
- #line 1861 "ext/lexer/lexer.rl"
15844
+ #line 1859 "ext/lexer/lexer.rl"
15901
15845
  {te = p;p--;}
15902
15846
  break;
15903
15847
  case 280:
15904
- #line 1545 "ext/lexer/lexer.rl"
15848
+ #line 1543 "ext/lexer/lexer.rl"
15905
15849
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15906
- #line 1876 "ext/lexer/lexer.rl"
15850
+ #line 1874 "ext/lexer/lexer.rl"
15907
15851
  {te = p;p--;}
15908
15852
  break;
15909
15853
  case 306:
15910
- #line 1545 "ext/lexer/lexer.rl"
15854
+ #line 1543 "ext/lexer/lexer.rl"
15911
15855
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15912
- #line 2131 "ext/lexer/lexer.rl"
15856
+ #line 2129 "ext/lexer/lexer.rl"
15913
15857
  {te = p;p--;}
15914
15858
  break;
15915
15859
  case 370:
15916
- #line 1545 "ext/lexer/lexer.rl"
15860
+ #line 1543 "ext/lexer/lexer.rl"
15917
15861
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15918
- #line 2149 "ext/lexer/lexer.rl"
15862
+ #line 2147 "ext/lexer/lexer.rl"
15919
15863
  {te = p;p--;}
15920
15864
  break;
15921
15865
  case 380:
15922
- #line 1545 "ext/lexer/lexer.rl"
15866
+ #line 1543 "ext/lexer/lexer.rl"
15923
15867
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15924
- #line 2172 "ext/lexer/lexer.rl"
15868
+ #line 2170 "ext/lexer/lexer.rl"
15925
15869
  {te = p;p--;}
15926
15870
  break;
15927
15871
  case 402:
15928
- #line 1545 "ext/lexer/lexer.rl"
15872
+ #line 1543 "ext/lexer/lexer.rl"
15929
15873
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15930
- #line 2466 "ext/lexer/lexer.rl"
15874
+ #line 2464 "ext/lexer/lexer.rl"
15931
15875
  {te = p;p--;}
15932
15876
  break;
15933
15877
  case 95:
15934
- #line 1545 "ext/lexer/lexer.rl"
15878
+ #line 1543 "ext/lexer/lexer.rl"
15935
15879
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
15936
- #line 2514 "ext/lexer/lexer.rl"
15880
+ #line 2512 "ext/lexer/lexer.rl"
15937
15881
  {te = p;p--;}
15938
15882
  break;
15939
15883
  case 225:
15940
- #line 1563 "ext/lexer/lexer.rl"
15884
+ #line 1561 "ext/lexer/lexer.rl"
15941
15885
  { tm = p; }
15942
- #line 1716 "ext/lexer/lexer.rl"
15886
+ #line 1714 "ext/lexer/lexer.rl"
15943
15887
  {te = p;p--;{ emit_token(lexer, tFID, tok(lexer, ts, tm), ts, tm);
15944
15888
  cs = (arg_or_cmdarg(command_state)); p = tm - 1; {p++; goto _out; } }}
15945
15889
  break;
15946
15890
  case 318:
15947
- #line 1563 "ext/lexer/lexer.rl"
15891
+ #line 1561 "ext/lexer/lexer.rl"
15948
15892
  { tm = p; }
15949
- #line 2007 "ext/lexer/lexer.rl"
15893
+ #line 2005 "ext/lexer/lexer.rl"
15950
15894
  {te = p;p--;{
15951
15895
  emit_token(lexer, tSYMBOL, tok(lexer, ts + 1, tm), ts, tm);
15952
15896
  p = tm - 1;
@@ -15954,13 +15898,13 @@ _eof_trans:
15954
15898
  }}
15955
15899
  break;
15956
15900
  case 291:
15957
- #line 1563 "ext/lexer/lexer.rl"
15901
+ #line 1561 "ext/lexer/lexer.rl"
15958
15902
  { tm = p; }
15959
- #line 2111 "ext/lexer/lexer.rl"
15903
+ #line 2109 "ext/lexer/lexer.rl"
15960
15904
  {te = p;p--;{ p = ts - 1; {cs = 768;goto _again;} }}
15961
15905
  break;
15962
15906
  case 395:
15963
- #line 1563 "ext/lexer/lexer.rl"
15907
+ #line 1561 "ext/lexer/lexer.rl"
15964
15908
  { tm = p; }
15965
15909
  #line 1 "NONE"
15966
15910
  { switch( act ) {
@@ -16144,16 +16088,16 @@ _eof_trans:
16144
16088
  }
16145
16089
  break;
16146
16090
  case 226:
16147
- #line 1564 "ext/lexer/lexer.rl"
16091
+ #line 1562 "ext/lexer/lexer.rl"
16148
16092
  { tm = p - 2; }
16149
- #line 1716 "ext/lexer/lexer.rl"
16093
+ #line 1714 "ext/lexer/lexer.rl"
16150
16094
  {te = p;p--;{ emit_token(lexer, tFID, tok(lexer, ts, tm), ts, tm);
16151
16095
  cs = (arg_or_cmdarg(command_state)); p = tm - 1; {p++; goto _out; } }}
16152
16096
  break;
16153
16097
  case 319:
16154
- #line 1564 "ext/lexer/lexer.rl"
16098
+ #line 1562 "ext/lexer/lexer.rl"
16155
16099
  { tm = p - 2; }
16156
- #line 2007 "ext/lexer/lexer.rl"
16100
+ #line 2005 "ext/lexer/lexer.rl"
16157
16101
  {te = p;p--;{
16158
16102
  emit_token(lexer, tSYMBOL, tok(lexer, ts + 1, tm), ts, tm);
16159
16103
  p = tm - 1;
@@ -16161,15 +16105,15 @@ _eof_trans:
16161
16105
  }}
16162
16106
  break;
16163
16107
  case 293:
16164
- #line 1564 "ext/lexer/lexer.rl"
16108
+ #line 1562 "ext/lexer/lexer.rl"
16165
16109
  { tm = p - 2; }
16166
- #line 2111 "ext/lexer/lexer.rl"
16110
+ #line 2109 "ext/lexer/lexer.rl"
16167
16111
  {te = p;p--;{ p = ts - 1; {cs = 768;goto _again;} }}
16168
16112
  break;
16169
16113
  case 396:
16170
- #line 1564 "ext/lexer/lexer.rl"
16114
+ #line 1562 "ext/lexer/lexer.rl"
16171
16115
  { tm = p - 2; }
16172
- #line 2375 "ext/lexer/lexer.rl"
16116
+ #line 2373 "ext/lexer/lexer.rl"
16173
16117
  {te = p;p--;{
16174
16118
  if (tm == te) {
16175
16119
  emit(tFID);
@@ -16181,9 +16125,9 @@ _eof_trans:
16181
16125
  }}
16182
16126
  break;
16183
16127
  case 320:
16184
- #line 1569 "ext/lexer/lexer.rl"
16128
+ #line 1567 "ext/lexer/lexer.rl"
16185
16129
  { tm = p; }
16186
- #line 2007 "ext/lexer/lexer.rl"
16130
+ #line 2005 "ext/lexer/lexer.rl"
16187
16131
  {te = p;p--;{
16188
16132
  emit_token(lexer, tSYMBOL, tok(lexer, ts + 1, tm), ts, tm);
16189
16133
  p = tm - 1;
@@ -16191,15 +16135,15 @@ _eof_trans:
16191
16135
  }}
16192
16136
  break;
16193
16137
  case 294:
16194
- #line 1569 "ext/lexer/lexer.rl"
16138
+ #line 1567 "ext/lexer/lexer.rl"
16195
16139
  { tm = p; }
16196
- #line 2111 "ext/lexer/lexer.rl"
16140
+ #line 2109 "ext/lexer/lexer.rl"
16197
16141
  {te = p;p--;{ p = ts - 1; {cs = 768;goto _again;} }}
16198
16142
  break;
16199
16143
  case 321:
16200
- #line 1570 "ext/lexer/lexer.rl"
16144
+ #line 1568 "ext/lexer/lexer.rl"
16201
16145
  { tm = p - 2; }
16202
- #line 2007 "ext/lexer/lexer.rl"
16146
+ #line 2005 "ext/lexer/lexer.rl"
16203
16147
  {te = p;p--;{
16204
16148
  emit_token(lexer, tSYMBOL, tok(lexer, ts + 1, tm), ts, tm);
16205
16149
  p = tm - 1;
@@ -16207,15 +16151,15 @@ _eof_trans:
16207
16151
  }}
16208
16152
  break;
16209
16153
  case 295:
16210
- #line 1570 "ext/lexer/lexer.rl"
16154
+ #line 1568 "ext/lexer/lexer.rl"
16211
16155
  { tm = p - 2; }
16212
- #line 2111 "ext/lexer/lexer.rl"
16156
+ #line 2109 "ext/lexer/lexer.rl"
16213
16157
  {te = p;p--;{ p = ts - 1; {cs = 768;goto _again;} }}
16214
16158
  break;
16215
16159
  case 325:
16216
- #line 1571 "ext/lexer/lexer.rl"
16160
+ #line 1569 "ext/lexer/lexer.rl"
16217
16161
  { tm = p - 2; }
16218
- #line 2007 "ext/lexer/lexer.rl"
16162
+ #line 2005 "ext/lexer/lexer.rl"
16219
16163
  {te = p;p--;{
16220
16164
  emit_token(lexer, tSYMBOL, tok(lexer, ts + 1, tm), ts, tm);
16221
16165
  p = tm - 1;
@@ -16223,15 +16167,15 @@ _eof_trans:
16223
16167
  }}
16224
16168
  break;
16225
16169
  case 298:
16226
- #line 1571 "ext/lexer/lexer.rl"
16170
+ #line 1569 "ext/lexer/lexer.rl"
16227
16171
  { tm = p - 2; }
16228
- #line 2111 "ext/lexer/lexer.rl"
16172
+ #line 2109 "ext/lexer/lexer.rl"
16229
16173
  {te = p;p--;{ p = ts - 1; {cs = 768;goto _again;} }}
16230
16174
  break;
16231
16175
  case 324:
16232
- #line 1572 "ext/lexer/lexer.rl"
16176
+ #line 1570 "ext/lexer/lexer.rl"
16233
16177
  { tm = p - 2; }
16234
- #line 2007 "ext/lexer/lexer.rl"
16178
+ #line 2005 "ext/lexer/lexer.rl"
16235
16179
  {te = p;p--;{
16236
16180
  emit_token(lexer, tSYMBOL, tok(lexer, ts + 1, tm), ts, tm);
16237
16181
  p = tm - 1;
@@ -16239,7 +16183,7 @@ _eof_trans:
16239
16183
  }}
16240
16184
  break;
16241
16185
  case 297:
16242
- #line 1572 "ext/lexer/lexer.rl"
16186
+ #line 1570 "ext/lexer/lexer.rl"
16243
16187
  { tm = p - 2; }
16244
16188
  #line 1 "NONE"
16245
16189
  { switch( act ) {
@@ -16286,9 +16230,9 @@ _eof_trans:
16286
16230
  }
16287
16231
  break;
16288
16232
  case 322:
16289
- #line 1573 "ext/lexer/lexer.rl"
16233
+ #line 1571 "ext/lexer/lexer.rl"
16290
16234
  { tm = p - 3; }
16291
- #line 2007 "ext/lexer/lexer.rl"
16235
+ #line 2005 "ext/lexer/lexer.rl"
16292
16236
  {te = p;p--;{
16293
16237
  emit_token(lexer, tSYMBOL, tok(lexer, ts + 1, tm), ts, tm);
16294
16238
  p = tm - 1;
@@ -16296,15 +16240,15 @@ _eof_trans:
16296
16240
  }}
16297
16241
  break;
16298
16242
  case 296:
16299
- #line 1573 "ext/lexer/lexer.rl"
16243
+ #line 1571 "ext/lexer/lexer.rl"
16300
16244
  { tm = p - 3; }
16301
- #line 2111 "ext/lexer/lexer.rl"
16245
+ #line 2109 "ext/lexer/lexer.rl"
16302
16246
  {te = p;p--;{ p = ts - 1; {cs = 768;goto _again;} }}
16303
16247
  break;
16304
16248
  case 323:
16305
- #line 1578 "ext/lexer/lexer.rl"
16249
+ #line 1576 "ext/lexer/lexer.rl"
16306
16250
  { tm = p - 2; }
16307
- #line 2007 "ext/lexer/lexer.rl"
16251
+ #line 2005 "ext/lexer/lexer.rl"
16308
16252
  {te = p;p--;{
16309
16253
  emit_token(lexer, tSYMBOL, tok(lexer, ts + 1, tm), ts, tm);
16310
16254
  p = tm - 1;
@@ -16312,9 +16256,9 @@ _eof_trans:
16312
16256
  }}
16313
16257
  break;
16314
16258
  case 466:
16315
- #line 1582 "ext/lexer/lexer.rl"
16259
+ #line 1580 "ext/lexer/lexer.rl"
16316
16260
  { tm = p - 2; }
16317
- #line 2360 "ext/lexer/lexer.rl"
16261
+ #line 2358 "ext/lexer/lexer.rl"
16318
16262
  {te = p;p--;{
16319
16263
  emit_token(lexer, tCONSTANT, tok(lexer, ts, tm), ts, tm);
16320
16264
  p = tm - 1;
@@ -16322,46 +16266,46 @@ _eof_trans:
16322
16266
  }}
16323
16267
  break;
16324
16268
  case 249:
16325
- #line 1585 "ext/lexer/lexer.rl"
16269
+ #line 1583 "ext/lexer/lexer.rl"
16326
16270
  {
16327
16271
  stack_state_push(&lexer->cond, 0);
16328
16272
  stack_state_push(&lexer->cmdarg, 0);
16329
16273
  }
16330
- #line 1746 "ext/lexer/lexer.rl"
16274
+ #line 1744 "ext/lexer/lexer.rl"
16331
16275
  {te = p;p--;{
16332
16276
  emit_token(lexer, tLBRACK, rb_str_new2("["), te - 1, te);
16333
16277
  cs = 536; {p++; goto _out; }
16334
16278
  }}
16335
16279
  break;
16336
16280
  case 357:
16337
- #line 1585 "ext/lexer/lexer.rl"
16281
+ #line 1583 "ext/lexer/lexer.rl"
16338
16282
  {
16339
16283
  stack_state_push(&lexer->cond, 0);
16340
16284
  stack_state_push(&lexer->cmdarg, 0);
16341
16285
  }
16342
- #line 2063 "ext/lexer/lexer.rl"
16286
+ #line 2061 "ext/lexer/lexer.rl"
16343
16287
  {te = p;p--;{
16344
16288
  emit_token(lexer, tLBRACK, tok(lexer, ts, te), ts, te);
16345
16289
  {p++; goto _out; }
16346
16290
  }}
16347
16291
  break;
16348
16292
  case 469:
16349
- #line 1585 "ext/lexer/lexer.rl"
16293
+ #line 1583 "ext/lexer/lexer.rl"
16350
16294
  {
16351
16295
  stack_state_push(&lexer->cond, 0);
16352
16296
  stack_state_push(&lexer->cmdarg, 0);
16353
16297
  }
16354
- #line 2460 "ext/lexer/lexer.rl"
16298
+ #line 2458 "ext/lexer/lexer.rl"
16355
16299
  {te = p;p--;{ emit(tLBRACK2); cs = 536; {p++; goto _out; } }}
16356
16300
  break;
16357
16301
  case 241:
16358
- #line 1590 "ext/lexer/lexer.rl"
16302
+ #line 1588 "ext/lexer/lexer.rl"
16359
16303
  {
16360
16304
  stack_state_push(&lexer->cond, 0);
16361
16305
  stack_state_push(&lexer->cmdarg, 0);
16362
16306
  lexer->paren_nest += 1;
16363
16307
  }
16364
- #line 1734 "ext/lexer/lexer.rl"
16308
+ #line 1732 "ext/lexer/lexer.rl"
16365
16309
  {te = p;p--;{
16366
16310
  if (lexer->version == 18) {
16367
16311
  emit_token(lexer, tLPAREN2, rb_str_new2("("), te - 1, te);
@@ -16373,23 +16317,23 @@ _eof_trans:
16373
16317
  }}
16374
16318
  break;
16375
16319
  case 254:
16376
- #line 1590 "ext/lexer/lexer.rl"
16320
+ #line 1588 "ext/lexer/lexer.rl"
16377
16321
  {
16378
16322
  stack_state_push(&lexer->cond, 0);
16379
16323
  stack_state_push(&lexer->cmdarg, 0);
16380
16324
  lexer->paren_nest += 1;
16381
16325
  }
16382
- #line 1744 "ext/lexer/lexer.rl"
16326
+ #line 1742 "ext/lexer/lexer.rl"
16383
16327
  {te = p;p--;{ emit(tLPAREN2); cs = 536; {p++; goto _out; } }}
16384
16328
  break;
16385
16329
  case 262:
16386
- #line 1590 "ext/lexer/lexer.rl"
16330
+ #line 1588 "ext/lexer/lexer.rl"
16387
16331
  {
16388
16332
  stack_state_push(&lexer->cond, 0);
16389
16333
  stack_state_push(&lexer->cmdarg, 0);
16390
16334
  lexer->paren_nest += 1;
16391
16335
  }
16392
- #line 1819 "ext/lexer/lexer.rl"
16336
+ #line 1817 "ext/lexer/lexer.rl"
16393
16337
  {te = p;p--;{
16394
16338
  emit_token(lexer, tLPAREN_ARG, rb_str_new2("("), te - 1, te);
16395
16339
  if (lexer->version == 18) {
@@ -16400,35 +16344,35 @@ _eof_trans:
16400
16344
  }}
16401
16345
  break;
16402
16346
  case 311:
16403
- #line 1590 "ext/lexer/lexer.rl"
16347
+ #line 1588 "ext/lexer/lexer.rl"
16404
16348
  {
16405
16349
  stack_state_push(&lexer->cond, 0);
16406
16350
  stack_state_push(&lexer->cmdarg, 0);
16407
16351
  lexer->paren_nest += 1;
16408
16352
  }
16409
- #line 2068 "ext/lexer/lexer.rl"
16353
+ #line 2066 "ext/lexer/lexer.rl"
16410
16354
  {te = p;p--;{
16411
16355
  emit_token(lexer, tLPAREN, tok(lexer, ts, te), ts, te);
16412
16356
  {p++; goto _out; }
16413
16357
  }}
16414
16358
  break;
16415
16359
  case 408:
16416
- #line 1590 "ext/lexer/lexer.rl"
16360
+ #line 1588 "ext/lexer/lexer.rl"
16417
16361
  {
16418
16362
  stack_state_push(&lexer->cond, 0);
16419
16363
  stack_state_push(&lexer->cmdarg, 0);
16420
16364
  lexer->paren_nest += 1;
16421
16365
  }
16422
- #line 2397 "ext/lexer/lexer.rl"
16366
+ #line 2395 "ext/lexer/lexer.rl"
16423
16367
  {te = p;p--;{ emit_table_PUNCTUATION(lexer, tok(lexer, ts, te), ts, te);
16424
16368
  cs = 536; {p++; goto _out; } }}
16425
16369
  break;
16426
16370
  case 409:
16427
- #line 1596 "ext/lexer/lexer.rl"
16371
+ #line 1594 "ext/lexer/lexer.rl"
16428
16372
  {
16429
16373
  lexer->paren_nest -= 1;
16430
16374
  }
16431
- #line 2420 "ext/lexer/lexer.rl"
16375
+ #line 2418 "ext/lexer/lexer.rl"
16432
16376
  {te = p;p--;{
16433
16377
  emit(tRPAREN);
16434
16378
 
@@ -16444,15 +16388,15 @@ _eof_trans:
16444
16388
  }}
16445
16389
  break;
16446
16390
  case 70:
16447
- #line 1925 "ext/lexer/lexer.rl"
16391
+ #line 1923 "ext/lexer/lexer.rl"
16448
16392
  { heredoc_e = p; }
16449
16393
  #line 1002 "ext/lexer/lexer.rl"
16450
16394
  { lexer->newline_s = p; }
16451
16395
  break;
16452
16396
  case 328:
16453
- #line 1926 "ext/lexer/lexer.rl"
16397
+ #line 1924 "ext/lexer/lexer.rl"
16454
16398
  { if (!lexer->herebody_s) lexer->herebody_s = p; }
16455
- #line 1926 "ext/lexer/lexer.rl"
16399
+ #line 1924 "ext/lexer/lexer.rl"
16456
16400
  {te = p;p--;{
16457
16401
 
16458
16402
  VALUE heredoc = tok(lexer, ts, heredoc_e);
@@ -16517,9 +16461,9 @@ _eof_trans:
16517
16461
  }}
16518
16462
  break;
16519
16463
  case 333:
16520
- #line 2020 "ext/lexer/lexer.rl"
16464
+ #line 2018 "ext/lexer/lexer.rl"
16521
16465
  { lexer->escape = Qnil; }
16522
- #line 2021 "ext/lexer/lexer.rl"
16466
+ #line 2019 "ext/lexer/lexer.rl"
16523
16467
  {te = p;p--;{
16524
16468
  VALUE value = lexer->escape;
16525
16469
  if (value == Qnil)
@@ -16534,9 +16478,9 @@ _eof_trans:
16534
16478
  }}
16535
16479
  break;
16536
16480
  case 360:
16537
- #line 2077 "ext/lexer/lexer.rl"
16481
+ #line 2075 "ext/lexer/lexer.rl"
16538
16482
  { tm = p; }
16539
- #line 2077 "ext/lexer/lexer.rl"
16483
+ #line 2075 "ext/lexer/lexer.rl"
16540
16484
  {te = p;p--;{
16541
16485
  emit_token(lexer, kRESCUE, tok(lexer, ts, tm), ts, tm);
16542
16486
  p = tm - 1;
@@ -16544,51 +16488,51 @@ _eof_trans:
16544
16488
  }}
16545
16489
  break;
16546
16490
  case 454:
16547
- #line 2263 "ext/lexer/lexer.rl"
16491
+ #line 2261 "ext/lexer/lexer.rl"
16548
16492
  { num_base = 16; num_digits_s = p; }
16549
- #line 2269 "ext/lexer/lexer.rl"
16493
+ #line 2267 "ext/lexer/lexer.rl"
16550
16494
  { num_suffix_s = p; }
16551
16495
  break;
16552
16496
  case 446:
16553
- #line 2264 "ext/lexer/lexer.rl"
16497
+ #line 2262 "ext/lexer/lexer.rl"
16554
16498
  { num_base = 10; num_digits_s = p; }
16555
- #line 2269 "ext/lexer/lexer.rl"
16499
+ #line 2267 "ext/lexer/lexer.rl"
16556
16500
  { num_suffix_s = p; }
16557
16501
  break;
16558
16502
  case 450:
16559
- #line 2265 "ext/lexer/lexer.rl"
16503
+ #line 2263 "ext/lexer/lexer.rl"
16560
16504
  { num_base = 8; num_digits_s = p; }
16561
- #line 2269 "ext/lexer/lexer.rl"
16505
+ #line 2267 "ext/lexer/lexer.rl"
16562
16506
  { num_suffix_s = p; }
16563
16507
  break;
16564
16508
  case 442:
16565
- #line 2266 "ext/lexer/lexer.rl"
16509
+ #line 2264 "ext/lexer/lexer.rl"
16566
16510
  { num_base = 2; num_digits_s = p; }
16567
- #line 2269 "ext/lexer/lexer.rl"
16511
+ #line 2267 "ext/lexer/lexer.rl"
16568
16512
  { num_suffix_s = p; }
16569
16513
  break;
16570
16514
  case 461:
16571
- #line 2267 "ext/lexer/lexer.rl"
16515
+ #line 2265 "ext/lexer/lexer.rl"
16572
16516
  { num_base = 10; num_digits_s = ts; }
16573
- #line 2269 "ext/lexer/lexer.rl"
16517
+ #line 2267 "ext/lexer/lexer.rl"
16574
16518
  { num_suffix_s = p; }
16575
16519
  break;
16576
16520
  case 419:
16577
- #line 2268 "ext/lexer/lexer.rl"
16521
+ #line 2266 "ext/lexer/lexer.rl"
16578
16522
  { num_base = 8; num_digits_s = ts; }
16579
- #line 2269 "ext/lexer/lexer.rl"
16523
+ #line 2267 "ext/lexer/lexer.rl"
16580
16524
  { num_suffix_s = p; }
16581
16525
  break;
16582
16526
  case 463:
16583
- #line 2269 "ext/lexer/lexer.rl"
16527
+ #line 2267 "ext/lexer/lexer.rl"
16584
16528
  { num_suffix_s = p; }
16585
16529
  #line 1076 "ext/lexer/lexer.rl"
16586
16530
  { num_xfrm = emit_int; numeric_s = ts; }
16587
16531
  break;
16588
16532
  case 86:
16589
- #line 2490 "ext/lexer/lexer.rl"
16533
+ #line 2488 "ext/lexer/lexer.rl"
16590
16534
  { tm = p; }
16591
- #line 2490 "ext/lexer/lexer.rl"
16535
+ #line 2488 "ext/lexer/lexer.rl"
16592
16536
  {te = p+1;{ p = tm - 1; {cs = 768;goto _again;} }}
16593
16537
  break;
16594
16538
  case 8:
@@ -16600,217 +16544,217 @@ _eof_trans:
16600
16544
  case 434:
16601
16545
  #line 1 "NONE"
16602
16546
  {te = p+1;}
16603
- #line 2269 "ext/lexer/lexer.rl"
16547
+ #line 2267 "ext/lexer/lexer.rl"
16604
16548
  { num_suffix_s = p; }
16605
16549
  break;
16606
16550
  case 424:
16607
16551
  #line 1 "NONE"
16608
16552
  {te = p+1;}
16609
- #line 2337 "ext/lexer/lexer.rl"
16553
+ #line 2335 "ext/lexer/lexer.rl"
16610
16554
  { num_suffix_s = p; }
16611
16555
  break;
16612
16556
  case 210:
16613
16557
  #line 1 "NONE"
16614
16558
  {te = p+1;}
16615
- #line 1656 "ext/lexer/lexer.rl"
16559
+ #line 1654 "ext/lexer/lexer.rl"
16616
16560
  {act = 39;}
16617
16561
  break;
16618
16562
  case 197:
16619
16563
  #line 1 "NONE"
16620
16564
  {te = p+1;}
16621
- #line 1659 "ext/lexer/lexer.rl"
16565
+ #line 1657 "ext/lexer/lexer.rl"
16622
16566
  {act = 40;}
16623
16567
  break;
16624
16568
  case 193:
16625
16569
  #line 1 "NONE"
16626
16570
  {te = p+1;}
16627
- #line 1661 "ext/lexer/lexer.rl"
16571
+ #line 1659 "ext/lexer/lexer.rl"
16628
16572
  {act = 41;}
16629
16573
  break;
16630
16574
  case 26:
16631
16575
  #line 1 "NONE"
16632
16576
  {te = p+1;}
16633
- #line 1767 "ext/lexer/lexer.rl"
16577
+ #line 1765 "ext/lexer/lexer.rl"
16634
16578
  {act = 67;}
16635
16579
  break;
16636
16580
  case 243:
16637
16581
  #line 1 "NONE"
16638
16582
  {te = p+1;}
16639
- #line 1777 "ext/lexer/lexer.rl"
16583
+ #line 1775 "ext/lexer/lexer.rl"
16640
16584
  {act = 68;}
16641
16585
  break;
16642
16586
  case 27:
16643
16587
  #line 1 "NONE"
16644
16588
  {te = p+1;}
16645
- #line 1801 "ext/lexer/lexer.rl"
16589
+ #line 1799 "ext/lexer/lexer.rl"
16646
16590
  {act = 73;}
16647
16591
  break;
16648
16592
  case 236:
16649
16593
  #line 1 "NONE"
16650
16594
  {te = p+1;}
16651
- #line 1806 "ext/lexer/lexer.rl"
16595
+ #line 1804 "ext/lexer/lexer.rl"
16652
16596
  {act = 74;}
16653
16597
  break;
16654
16598
  case 263:
16655
16599
  #line 1 "NONE"
16656
16600
  {te = p+1;}
16657
- #line 1829 "ext/lexer/lexer.rl"
16601
+ #line 1827 "ext/lexer/lexer.rl"
16658
16602
  {act = 80;}
16659
16603
  break;
16660
16604
  case 45:
16661
16605
  #line 1 "NONE"
16662
16606
  {te = p+1;}
16663
- #line 1841 "ext/lexer/lexer.rl"
16607
+ #line 1839 "ext/lexer/lexer.rl"
16664
16608
  {act = 81;}
16665
16609
  break;
16666
16610
  case 284:
16667
16611
  #line 1 "NONE"
16668
16612
  {te = p+1;}
16669
- #line 1871 "ext/lexer/lexer.rl"
16613
+ #line 1869 "ext/lexer/lexer.rl"
16670
16614
  {act = 88;}
16671
16615
  break;
16672
16616
  case 273:
16673
16617
  #line 1 "NONE"
16674
16618
  {te = p+1;}
16675
- #line 1874 "ext/lexer/lexer.rl"
16619
+ #line 1872 "ext/lexer/lexer.rl"
16676
16620
  {act = 89;}
16677
16621
  break;
16678
16622
  case 287:
16679
16623
  #line 1 "NONE"
16680
16624
  {te = p+1;}
16681
- #line 2074 "ext/lexer/lexer.rl"
16625
+ #line 2072 "ext/lexer/lexer.rl"
16682
16626
  {act = 113;}
16683
16627
  break;
16684
16628
  case 359:
16685
16629
  #line 1 "NONE"
16686
16630
  {te = p+1;}
16687
- #line 2077 "ext/lexer/lexer.rl"
16631
+ #line 2075 "ext/lexer/lexer.rl"
16688
16632
  {act = 114;}
16689
16633
  break;
16690
16634
  case 358:
16691
16635
  #line 1 "NONE"
16692
16636
  {te = p+1;}
16693
- #line 2084 "ext/lexer/lexer.rl"
16637
+ #line 2082 "ext/lexer/lexer.rl"
16694
16638
  {act = 115;}
16695
16639
  break;
16696
16640
  case 72:
16697
16641
  #line 1 "NONE"
16698
16642
  {te = p+1;}
16699
- #line 2111 "ext/lexer/lexer.rl"
16643
+ #line 2109 "ext/lexer/lexer.rl"
16700
16644
  {act = 117;}
16701
16645
  break;
16702
16646
  case 285:
16703
16647
  #line 1 "NONE"
16704
16648
  {te = p+1;}
16705
- #line 1600 "ext/lexer/lexer.rl"
16649
+ #line 1598 "ext/lexer/lexer.rl"
16706
16650
  {act = 118;}
16707
16651
  break;
16708
16652
  case 288:
16709
16653
  #line 1 "NONE"
16710
16654
  {te = p+1;}
16711
- #line 2143 "ext/lexer/lexer.rl"
16655
+ #line 2141 "ext/lexer/lexer.rl"
16712
16656
  {act = 122;}
16713
16657
  break;
16714
16658
  case 479:
16715
16659
  #line 1 "NONE"
16716
16660
  {te = p+1;}
16717
- #line 2199 "ext/lexer/lexer.rl"
16661
+ #line 2197 "ext/lexer/lexer.rl"
16718
16662
  {act = 136;}
16719
16663
  break;
16720
16664
  case 474:
16721
16665
  #line 1 "NONE"
16722
16666
  {te = p+1;}
16723
- #line 2211 "ext/lexer/lexer.rl"
16667
+ #line 2209 "ext/lexer/lexer.rl"
16724
16668
  {act = 137;}
16725
16669
  break;
16726
16670
  case 482:
16727
16671
  #line 1 "NONE"
16728
16672
  {te = p+1;}
16729
- #line 2220 "ext/lexer/lexer.rl"
16673
+ #line 2218 "ext/lexer/lexer.rl"
16730
16674
  {act = 139;}
16731
16675
  break;
16732
16676
  case 475:
16733
16677
  #line 1 "NONE"
16734
16678
  {te = p+1;}
16735
- #line 2224 "ext/lexer/lexer.rl"
16679
+ #line 2222 "ext/lexer/lexer.rl"
16736
16680
  {act = 140;}
16737
16681
  break;
16738
16682
  case 476:
16739
16683
  #line 1 "NONE"
16740
16684
  {te = p+1;}
16741
- #line 2228 "ext/lexer/lexer.rl"
16685
+ #line 2226 "ext/lexer/lexer.rl"
16742
16686
  {act = 141;}
16743
16687
  break;
16744
16688
  case 481:
16745
16689
  #line 1 "NONE"
16746
16690
  {te = p+1;}
16747
- #line 2232 "ext/lexer/lexer.rl"
16691
+ #line 2230 "ext/lexer/lexer.rl"
16748
16692
  {act = 142;}
16749
16693
  break;
16750
16694
  case 473:
16751
16695
  #line 1 "NONE"
16752
16696
  {te = p+1;}
16753
- #line 2243 "ext/lexer/lexer.rl"
16697
+ #line 2241 "ext/lexer/lexer.rl"
16754
16698
  {act = 143;}
16755
16699
  break;
16756
16700
  case 468:
16757
16701
  #line 1 "NONE"
16758
16702
  {te = p+1;}
16759
- #line 2260 "ext/lexer/lexer.rl"
16703
+ #line 2258 "ext/lexer/lexer.rl"
16760
16704
  {act = 144;}
16761
16705
  break;
16762
16706
  case 388:
16763
16707
  #line 1 "NONE"
16764
16708
  {te = p+1;}
16765
- #line 2270 "ext/lexer/lexer.rl"
16709
+ #line 2268 "ext/lexer/lexer.rl"
16766
16710
  {act = 145;}
16767
16711
  break;
16768
16712
  case 422:
16769
16713
  #line 1 "NONE"
16770
16714
  {te = p+1;}
16771
- #line 2322 "ext/lexer/lexer.rl"
16715
+ #line 2320 "ext/lexer/lexer.rl"
16772
16716
  {act = 148;}
16773
16717
  break;
16774
16718
  case 79:
16775
16719
  #line 1 "NONE"
16776
16720
  {te = p+1;}
16777
- #line 2339 "ext/lexer/lexer.rl"
16721
+ #line 2337 "ext/lexer/lexer.rl"
16778
16722
  {act = 149;}
16779
16723
  break;
16780
16724
  case 391:
16781
16725
  #line 1 "NONE"
16782
16726
  {te = p+1;}
16783
- #line 2358 "ext/lexer/lexer.rl"
16727
+ #line 2356 "ext/lexer/lexer.rl"
16784
16728
  {act = 151;}
16785
16729
  break;
16786
16730
  case 382:
16787
16731
  #line 1 "NONE"
16788
16732
  {te = p+1;}
16789
- #line 1600 "ext/lexer/lexer.rl"
16733
+ #line 1598 "ext/lexer/lexer.rl"
16790
16734
  {act = 155;}
16791
16735
  break;
16792
16736
  case 394:
16793
16737
  #line 1 "NONE"
16794
16738
  {te = p+1;}
16795
- #line 2375 "ext/lexer/lexer.rl"
16739
+ #line 2373 "ext/lexer/lexer.rl"
16796
16740
  {act = 156;}
16797
16741
  break;
16798
16742
  case 386:
16799
16743
  #line 1 "NONE"
16800
16744
  {te = p+1;}
16801
- #line 2391 "ext/lexer/lexer.rl"
16745
+ #line 2389 "ext/lexer/lexer.rl"
16802
16746
  {act = 158;}
16803
16747
  break;
16804
16748
  case 393:
16805
16749
  #line 1 "NONE"
16806
16750
  {te = p+1;}
16807
- #line 2397 "ext/lexer/lexer.rl"
16751
+ #line 2395 "ext/lexer/lexer.rl"
16808
16752
  {act = 159;}
16809
16753
  break;
16810
16754
  case 167:
16811
16755
  #line 1002 "ext/lexer/lexer.rl"
16812
16756
  { lexer->newline_s = p; }
16813
- #line 1337 "ext/lexer/lexer.rl"
16757
+ #line 1335 "ext/lexer/lexer.rl"
16814
16758
  {te = p+1;{
16815
16759
  literal *current_literal = lit_stack_top(&lexer->literal_stack);
16816
16760
  long str_s = current_literal->str_s;
@@ -16890,18 +16834,16 @@ _eof_trans:
16890
16834
  literal_extend_string(current_literal, escaped_char, ts, te);
16891
16835
  }
16892
16836
  } else {
16893
- if (literal_regexp_p(current_literal)) {
16837
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
16838
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
16839
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
16840
+ VALUE token = tok(lexer, ts, te);
16841
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
16842
+ literal_extend_string(current_literal, token, ts, te);
16843
+ } else if (literal_regexp_p(current_literal)) {
16894
16844
  VALUE token = tok(lexer, ts, te);
16895
16845
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
16896
16846
  literal_extend_string(current_literal, token, ts, te);
16897
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
16898
- if (literal_squiggly_heredoc_p(current_literal)) {
16899
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
16900
- } else {
16901
- VALUE token = tok(lexer, ts, te);
16902
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
16903
- literal_extend_string(current_literal, token, ts, te);
16904
- }
16905
16847
  } else if (lexer->escape == Qnil) {
16906
16848
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
16907
16849
  } else {
@@ -16940,18 +16882,16 @@ _eof_trans:
16940
16882
  literal_extend_string(current_literal, escaped_char, ts, te);
16941
16883
  }
16942
16884
  } else {
16943
- if (literal_regexp_p(current_literal)) {
16885
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
16886
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
16887
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
16888
+ VALUE token = tok(lexer, ts, te);
16889
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
16890
+ literal_extend_string(current_literal, token, ts, te);
16891
+ } else if (literal_regexp_p(current_literal)) {
16944
16892
  VALUE token = tok(lexer, ts, te);
16945
16893
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
16946
16894
  literal_extend_string(current_literal, token, ts, te);
16947
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
16948
- if (literal_squiggly_heredoc_p(current_literal)) {
16949
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
16950
- } else {
16951
- VALUE token = tok(lexer, ts, te);
16952
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
16953
- literal_extend_string(current_literal, token, ts, te);
16954
- }
16955
16895
  } else if (lexer->escape == Qnil) {
16956
16896
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
16957
16897
  } else {
@@ -16978,7 +16918,7 @@ _eof_trans:
16978
16918
  lexer->escape = rb_str_new(&c, 1);
16979
16919
  force_encoding(lexer->escape, lexer->encoding);
16980
16920
  }
16981
- #line 2021 "ext/lexer/lexer.rl"
16921
+ #line 2019 "ext/lexer/lexer.rl"
16982
16922
  {te = p;p--;{
16983
16923
  VALUE value = lexer->escape;
16984
16924
  if (value == Qnil)
@@ -17022,18 +16962,16 @@ _eof_trans:
17022
16962
  literal_extend_string(current_literal, escaped_char, ts, te);
17023
16963
  }
17024
16964
  } else {
17025
- if (literal_regexp_p(current_literal)) {
16965
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
16966
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
16967
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
16968
+ VALUE token = tok(lexer, ts, te);
16969
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
16970
+ literal_extend_string(current_literal, token, ts, te);
16971
+ } else if (literal_regexp_p(current_literal)) {
17026
16972
  VALUE token = tok(lexer, ts, te);
17027
16973
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17028
16974
  literal_extend_string(current_literal, token, ts, te);
17029
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17030
- if (literal_squiggly_heredoc_p(current_literal)) {
17031
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17032
- } else {
17033
- VALUE token = tok(lexer, ts, te);
17034
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17035
- literal_extend_string(current_literal, token, ts, te);
17036
- }
17037
16975
  } else if (lexer->escape == Qnil) {
17038
16976
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17039
16977
  } else {
@@ -17072,18 +17010,16 @@ _eof_trans:
17072
17010
  literal_extend_string(current_literal, escaped_char, ts, te);
17073
17011
  }
17074
17012
  } else {
17075
- if (literal_regexp_p(current_literal)) {
17013
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17014
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17015
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
17016
+ VALUE token = tok(lexer, ts, te);
17017
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17018
+ literal_extend_string(current_literal, token, ts, te);
17019
+ } else if (literal_regexp_p(current_literal)) {
17076
17020
  VALUE token = tok(lexer, ts, te);
17077
17021
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17078
17022
  literal_extend_string(current_literal, token, ts, te);
17079
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17080
- if (literal_squiggly_heredoc_p(current_literal)) {
17081
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17082
- } else {
17083
- VALUE token = tok(lexer, ts, te);
17084
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17085
- literal_extend_string(current_literal, token, ts, te);
17086
- }
17087
17023
  } else if (lexer->escape == Qnil) {
17088
17024
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17089
17025
  } else {
@@ -17110,7 +17046,7 @@ _eof_trans:
17110
17046
  lexer->escape = rb_str_new(&c, 1);
17111
17047
  force_encoding(lexer->escape, lexer->encoding);
17112
17048
  }
17113
- #line 2021 "ext/lexer/lexer.rl"
17049
+ #line 2019 "ext/lexer/lexer.rl"
17114
17050
  {te = p;p--;{
17115
17051
  VALUE value = lexer->escape;
17116
17052
  if (value == Qnil)
@@ -17145,18 +17081,16 @@ _eof_trans:
17145
17081
  literal_extend_string(current_literal, escaped_char, ts, te);
17146
17082
  }
17147
17083
  } else {
17148
- if (literal_regexp_p(current_literal)) {
17084
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17085
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17086
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
17087
+ VALUE token = tok(lexer, ts, te);
17088
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17089
+ literal_extend_string(current_literal, token, ts, te);
17090
+ } else if (literal_regexp_p(current_literal)) {
17149
17091
  VALUE token = tok(lexer, ts, te);
17150
17092
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17151
17093
  literal_extend_string(current_literal, token, ts, te);
17152
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17153
- if (literal_squiggly_heredoc_p(current_literal)) {
17154
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17155
- } else {
17156
- VALUE token = tok(lexer, ts, te);
17157
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17158
- literal_extend_string(current_literal, token, ts, te);
17159
- }
17160
17094
  } else if (lexer->escape == Qnil) {
17161
17095
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17162
17096
  } else {
@@ -17186,18 +17120,16 @@ _eof_trans:
17186
17120
  literal_extend_string(current_literal, escaped_char, ts, te);
17187
17121
  }
17188
17122
  } else {
17189
- if (literal_regexp_p(current_literal)) {
17123
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17124
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17125
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
17126
+ VALUE token = tok(lexer, ts, te);
17127
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17128
+ literal_extend_string(current_literal, token, ts, te);
17129
+ } else if (literal_regexp_p(current_literal)) {
17190
17130
  VALUE token = tok(lexer, ts, te);
17191
17131
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17192
17132
  literal_extend_string(current_literal, token, ts, te);
17193
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17194
- if (literal_squiggly_heredoc_p(current_literal)) {
17195
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17196
- } else {
17197
- VALUE token = tok(lexer, ts, te);
17198
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17199
- literal_extend_string(current_literal, token, ts, te);
17200
- }
17201
17133
  } else if (lexer->escape == Qnil) {
17202
17134
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17203
17135
  } else {
@@ -17215,7 +17147,7 @@ _eof_trans:
17215
17147
  lexer->escape = rb_str_new(&c, 1);
17216
17148
  force_encoding(lexer->escape, lexer->encoding);
17217
17149
  }
17218
- #line 2021 "ext/lexer/lexer.rl"
17150
+ #line 2019 "ext/lexer/lexer.rl"
17219
17151
  {te = p;p--;{
17220
17152
  VALUE value = lexer->escape;
17221
17153
  if (value == Qnil)
@@ -17250,18 +17182,16 @@ _eof_trans:
17250
17182
  literal_extend_string(current_literal, escaped_char, ts, te);
17251
17183
  }
17252
17184
  } else {
17253
- if (literal_regexp_p(current_literal)) {
17185
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17186
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17187
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
17188
+ VALUE token = tok(lexer, ts, te);
17189
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17190
+ literal_extend_string(current_literal, token, ts, te);
17191
+ } else if (literal_regexp_p(current_literal)) {
17254
17192
  VALUE token = tok(lexer, ts, te);
17255
17193
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17256
17194
  literal_extend_string(current_literal, token, ts, te);
17257
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17258
- if (literal_squiggly_heredoc_p(current_literal)) {
17259
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17260
- } else {
17261
- VALUE token = tok(lexer, ts, te);
17262
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17263
- literal_extend_string(current_literal, token, ts, te);
17264
- }
17265
17195
  } else if (lexer->escape == Qnil) {
17266
17196
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17267
17197
  } else {
@@ -17291,18 +17221,16 @@ _eof_trans:
17291
17221
  literal_extend_string(current_literal, escaped_char, ts, te);
17292
17222
  }
17293
17223
  } else {
17294
- if (literal_regexp_p(current_literal)) {
17224
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17225
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17226
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
17227
+ VALUE token = tok(lexer, ts, te);
17228
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17229
+ literal_extend_string(current_literal, token, ts, te);
17230
+ } else if (literal_regexp_p(current_literal)) {
17295
17231
  VALUE token = tok(lexer, ts, te);
17296
17232
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17297
17233
  literal_extend_string(current_literal, token, ts, te);
17298
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17299
- if (literal_squiggly_heredoc_p(current_literal)) {
17300
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17301
- } else {
17302
- VALUE token = tok(lexer, ts, te);
17303
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17304
- literal_extend_string(current_literal, token, ts, te);
17305
- }
17306
17234
  } else if (lexer->escape == Qnil) {
17307
17235
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17308
17236
  } else {
@@ -17320,7 +17248,7 @@ _eof_trans:
17320
17248
  lexer->escape = rb_str_new(&c, 1);
17321
17249
  force_encoding(lexer->escape, lexer->encoding);
17322
17250
  }
17323
- #line 2021 "ext/lexer/lexer.rl"
17251
+ #line 2019 "ext/lexer/lexer.rl"
17324
17252
  {te = p;p--;{
17325
17253
  VALUE value = lexer->escape;
17326
17254
  if (value == Qnil)
@@ -17355,18 +17283,16 @@ _eof_trans:
17355
17283
  literal_extend_string(current_literal, escaped_char, ts, te);
17356
17284
  }
17357
17285
  } else {
17358
- if (literal_regexp_p(current_literal)) {
17286
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17287
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17288
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
17289
+ VALUE token = tok(lexer, ts, te);
17290
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17291
+ literal_extend_string(current_literal, token, ts, te);
17292
+ } else if (literal_regexp_p(current_literal)) {
17359
17293
  VALUE token = tok(lexer, ts, te);
17360
17294
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17361
17295
  literal_extend_string(current_literal, token, ts, te);
17362
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17363
- if (literal_squiggly_heredoc_p(current_literal)) {
17364
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17365
- } else {
17366
- VALUE token = tok(lexer, ts, te);
17367
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17368
- literal_extend_string(current_literal, token, ts, te);
17369
- }
17370
17296
  } else if (lexer->escape == Qnil) {
17371
17297
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17372
17298
  } else {
@@ -17396,18 +17322,16 @@ _eof_trans:
17396
17322
  literal_extend_string(current_literal, escaped_char, ts, te);
17397
17323
  }
17398
17324
  } else {
17399
- if (literal_regexp_p(current_literal)) {
17325
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17326
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17327
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
17328
+ VALUE token = tok(lexer, ts, te);
17329
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17330
+ literal_extend_string(current_literal, token, ts, te);
17331
+ } else if (literal_regexp_p(current_literal)) {
17400
17332
  VALUE token = tok(lexer, ts, te);
17401
17333
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17402
17334
  literal_extend_string(current_literal, token, ts, te);
17403
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17404
- if (literal_squiggly_heredoc_p(current_literal)) {
17405
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17406
- } else {
17407
- VALUE token = tok(lexer, ts, te);
17408
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17409
- literal_extend_string(current_literal, token, ts, te);
17410
- }
17411
17335
  } else if (lexer->escape == Qnil) {
17412
17336
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17413
17337
  } else {
@@ -17425,7 +17349,7 @@ _eof_trans:
17425
17349
  lexer->escape = rb_str_new(&c, 1);
17426
17350
  force_encoding(lexer->escape, lexer->encoding);
17427
17351
  }
17428
- #line 2021 "ext/lexer/lexer.rl"
17352
+ #line 2019 "ext/lexer/lexer.rl"
17429
17353
  {te = p;p--;{
17430
17354
  VALUE value = lexer->escape;
17431
17355
  if (value == Qnil)
@@ -17462,18 +17386,16 @@ _eof_trans:
17462
17386
  literal_extend_string(current_literal, escaped_char, ts, te);
17463
17387
  }
17464
17388
  } else {
17465
- if (literal_regexp_p(current_literal)) {
17389
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17390
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17391
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
17392
+ VALUE token = tok(lexer, ts, te);
17393
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17394
+ literal_extend_string(current_literal, token, ts, te);
17395
+ } else if (literal_regexp_p(current_literal)) {
17466
17396
  VALUE token = tok(lexer, ts, te);
17467
17397
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17468
17398
  literal_extend_string(current_literal, token, ts, te);
17469
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17470
- if (literal_squiggly_heredoc_p(current_literal)) {
17471
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17472
- } else {
17473
- VALUE token = tok(lexer, ts, te);
17474
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17475
- literal_extend_string(current_literal, token, ts, te);
17476
- }
17477
17399
  } else if (lexer->escape == Qnil) {
17478
17400
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17479
17401
  } else {
@@ -17505,18 +17427,16 @@ _eof_trans:
17505
17427
  literal_extend_string(current_literal, escaped_char, ts, te);
17506
17428
  }
17507
17429
  } else {
17508
- if (literal_regexp_p(current_literal)) {
17430
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17431
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17432
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
17433
+ VALUE token = tok(lexer, ts, te);
17434
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17435
+ literal_extend_string(current_literal, token, ts, te);
17436
+ } else if (literal_regexp_p(current_literal)) {
17509
17437
  VALUE token = tok(lexer, ts, te);
17510
17438
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17511
17439
  literal_extend_string(current_literal, token, ts, te);
17512
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17513
- if (literal_squiggly_heredoc_p(current_literal)) {
17514
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17515
- } else {
17516
- VALUE token = tok(lexer, ts, te);
17517
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17518
- literal_extend_string(current_literal, token, ts, te);
17519
- }
17520
17440
  } else if (lexer->escape == Qnil) {
17521
17441
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17522
17442
  } else {
@@ -17536,7 +17456,7 @@ _eof_trans:
17536
17456
  diagnostic(lexer, fatal, invalid_unicode_escape, Qnil,
17537
17457
  range(lexer, p - 1, p), empty_array);
17538
17458
  }
17539
- #line 2021 "ext/lexer/lexer.rl"
17459
+ #line 2019 "ext/lexer/lexer.rl"
17540
17460
  {te = p;p--;{
17541
17461
  VALUE value = lexer->escape;
17542
17462
  if (value == Qnil)
@@ -17573,18 +17493,16 @@ _eof_trans:
17573
17493
  literal_extend_string(current_literal, escaped_char, ts, te);
17574
17494
  }
17575
17495
  } else {
17576
- if (literal_regexp_p(current_literal)) {
17496
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17497
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17498
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
17499
+ VALUE token = tok(lexer, ts, te);
17500
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17501
+ literal_extend_string(current_literal, token, ts, te);
17502
+ } else if (literal_regexp_p(current_literal)) {
17577
17503
  VALUE token = tok(lexer, ts, te);
17578
17504
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17579
17505
  literal_extend_string(current_literal, token, ts, te);
17580
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17581
- if (literal_squiggly_heredoc_p(current_literal)) {
17582
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17583
- } else {
17584
- VALUE token = tok(lexer, ts, te);
17585
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17586
- literal_extend_string(current_literal, token, ts, te);
17587
- }
17588
17506
  } else if (lexer->escape == Qnil) {
17589
17507
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17590
17508
  } else {
@@ -17616,18 +17534,16 @@ _eof_trans:
17616
17534
  literal_extend_string(current_literal, escaped_char, ts, te);
17617
17535
  }
17618
17536
  } else {
17619
- if (literal_regexp_p(current_literal)) {
17537
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17538
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17539
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
17540
+ VALUE token = tok(lexer, ts, te);
17541
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17542
+ literal_extend_string(current_literal, token, ts, te);
17543
+ } else if (literal_regexp_p(current_literal)) {
17620
17544
  VALUE token = tok(lexer, ts, te);
17621
17545
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17622
17546
  literal_extend_string(current_literal, token, ts, te);
17623
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17624
- if (literal_squiggly_heredoc_p(current_literal)) {
17625
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17626
- } else {
17627
- VALUE token = tok(lexer, ts, te);
17628
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17629
- literal_extend_string(current_literal, token, ts, te);
17630
- }
17631
17547
  } else if (lexer->escape == Qnil) {
17632
17548
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17633
17549
  } else {
@@ -17647,7 +17563,7 @@ _eof_trans:
17647
17563
  diagnostic(lexer, fatal, escape_eof, Qnil, range(lexer, p - 1, p),
17648
17564
  empty_array);
17649
17565
  }
17650
- #line 2021 "ext/lexer/lexer.rl"
17566
+ #line 2019 "ext/lexer/lexer.rl"
17651
17567
  {te = p;p--;{
17652
17568
  VALUE value = lexer->escape;
17653
17569
  if (value == Qnil)
@@ -17662,123 +17578,123 @@ _eof_trans:
17662
17578
  }}
17663
17579
  break;
17664
17580
  case 61:
17665
- #line 1544 "ext/lexer/lexer.rl"
17581
+ #line 1542 "ext/lexer/lexer.rl"
17666
17582
  { sharp_s = p - 1; }
17667
- #line 1545 "ext/lexer/lexer.rl"
17583
+ #line 1543 "ext/lexer/lexer.rl"
17668
17584
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17669
17585
  #line 1002 "ext/lexer/lexer.rl"
17670
17586
  { lexer->newline_s = p; }
17671
17587
  break;
17672
17588
  case 203:
17673
- #line 1544 "ext/lexer/lexer.rl"
17589
+ #line 1542 "ext/lexer/lexer.rl"
17674
17590
  { sharp_s = p - 1; }
17675
- #line 1545 "ext/lexer/lexer.rl"
17591
+ #line 1543 "ext/lexer/lexer.rl"
17676
17592
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17677
- #line 1690 "ext/lexer/lexer.rl"
17593
+ #line 1688 "ext/lexer/lexer.rl"
17678
17594
  {te = p;p--;}
17679
17595
  break;
17680
17596
  case 218:
17681
- #line 1544 "ext/lexer/lexer.rl"
17597
+ #line 1542 "ext/lexer/lexer.rl"
17682
17598
  { sharp_s = p - 1; }
17683
- #line 1545 "ext/lexer/lexer.rl"
17599
+ #line 1543 "ext/lexer/lexer.rl"
17684
17600
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17685
- #line 1703 "ext/lexer/lexer.rl"
17601
+ #line 1701 "ext/lexer/lexer.rl"
17686
17602
  {te = p;p--;}
17687
17603
  break;
17688
17604
  case 230:
17689
- #line 1544 "ext/lexer/lexer.rl"
17605
+ #line 1542 "ext/lexer/lexer.rl"
17690
17606
  { sharp_s = p - 1; }
17691
- #line 1545 "ext/lexer/lexer.rl"
17607
+ #line 1543 "ext/lexer/lexer.rl"
17692
17608
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17693
- #line 1725 "ext/lexer/lexer.rl"
17609
+ #line 1723 "ext/lexer/lexer.rl"
17694
17610
  {te = p;p--;}
17695
17611
  break;
17696
17612
  case 252:
17697
- #line 1544 "ext/lexer/lexer.rl"
17613
+ #line 1542 "ext/lexer/lexer.rl"
17698
17614
  { sharp_s = p - 1; }
17699
- #line 1545 "ext/lexer/lexer.rl"
17615
+ #line 1543 "ext/lexer/lexer.rl"
17700
17616
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17701
- #line 1808 "ext/lexer/lexer.rl"
17617
+ #line 1806 "ext/lexer/lexer.rl"
17702
17618
  {te = p;p--;{ {cs = 768;goto _again;} }}
17703
17619
  break;
17704
17620
  case 267:
17705
- #line 1544 "ext/lexer/lexer.rl"
17621
+ #line 1542 "ext/lexer/lexer.rl"
17706
17622
  { sharp_s = p - 1; }
17707
- #line 1545 "ext/lexer/lexer.rl"
17623
+ #line 1543 "ext/lexer/lexer.rl"
17708
17624
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17709
- #line 1861 "ext/lexer/lexer.rl"
17625
+ #line 1859 "ext/lexer/lexer.rl"
17710
17626
  {te = p;p--;}
17711
17627
  break;
17712
17628
  case 279:
17713
- #line 1544 "ext/lexer/lexer.rl"
17629
+ #line 1542 "ext/lexer/lexer.rl"
17714
17630
  { sharp_s = p - 1; }
17715
- #line 1545 "ext/lexer/lexer.rl"
17631
+ #line 1543 "ext/lexer/lexer.rl"
17716
17632
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17717
- #line 1876 "ext/lexer/lexer.rl"
17633
+ #line 1874 "ext/lexer/lexer.rl"
17718
17634
  {te = p;p--;}
17719
17635
  break;
17720
17636
  case 305:
17721
- #line 1544 "ext/lexer/lexer.rl"
17637
+ #line 1542 "ext/lexer/lexer.rl"
17722
17638
  { sharp_s = p - 1; }
17723
- #line 1545 "ext/lexer/lexer.rl"
17639
+ #line 1543 "ext/lexer/lexer.rl"
17724
17640
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17725
- #line 2131 "ext/lexer/lexer.rl"
17641
+ #line 2129 "ext/lexer/lexer.rl"
17726
17642
  {te = p;p--;}
17727
17643
  break;
17728
17644
  case 369:
17729
- #line 1544 "ext/lexer/lexer.rl"
17645
+ #line 1542 "ext/lexer/lexer.rl"
17730
17646
  { sharp_s = p - 1; }
17731
- #line 1545 "ext/lexer/lexer.rl"
17647
+ #line 1543 "ext/lexer/lexer.rl"
17732
17648
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17733
- #line 2149 "ext/lexer/lexer.rl"
17649
+ #line 2147 "ext/lexer/lexer.rl"
17734
17650
  {te = p;p--;}
17735
17651
  break;
17736
17652
  case 379:
17737
- #line 1544 "ext/lexer/lexer.rl"
17653
+ #line 1542 "ext/lexer/lexer.rl"
17738
17654
  { sharp_s = p - 1; }
17739
- #line 1545 "ext/lexer/lexer.rl"
17655
+ #line 1543 "ext/lexer/lexer.rl"
17740
17656
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17741
- #line 2172 "ext/lexer/lexer.rl"
17657
+ #line 2170 "ext/lexer/lexer.rl"
17742
17658
  {te = p;p--;}
17743
17659
  break;
17744
17660
  case 401:
17745
- #line 1544 "ext/lexer/lexer.rl"
17661
+ #line 1542 "ext/lexer/lexer.rl"
17746
17662
  { sharp_s = p - 1; }
17747
- #line 1545 "ext/lexer/lexer.rl"
17663
+ #line 1543 "ext/lexer/lexer.rl"
17748
17664
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17749
- #line 2466 "ext/lexer/lexer.rl"
17665
+ #line 2464 "ext/lexer/lexer.rl"
17750
17666
  {te = p;p--;}
17751
17667
  break;
17752
17668
  case 94:
17753
- #line 1544 "ext/lexer/lexer.rl"
17669
+ #line 1542 "ext/lexer/lexer.rl"
17754
17670
  { sharp_s = p - 1; }
17755
- #line 1545 "ext/lexer/lexer.rl"
17671
+ #line 1543 "ext/lexer/lexer.rl"
17756
17672
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17757
- #line 2514 "ext/lexer/lexer.rl"
17673
+ #line 2512 "ext/lexer/lexer.rl"
17758
17674
  {te = p;p--;}
17759
17675
  break;
17760
17676
  case 457:
17761
- #line 2267 "ext/lexer/lexer.rl"
17677
+ #line 2265 "ext/lexer/lexer.rl"
17762
17678
  { num_base = 10; num_digits_s = ts; }
17763
- #line 2269 "ext/lexer/lexer.rl"
17679
+ #line 2267 "ext/lexer/lexer.rl"
17764
17680
  { num_suffix_s = p; }
17765
17681
  #line 1076 "ext/lexer/lexer.rl"
17766
17682
  { num_xfrm = emit_int; numeric_s = ts; }
17767
17683
  break;
17768
17684
  case 416:
17769
- #line 2268 "ext/lexer/lexer.rl"
17685
+ #line 2266 "ext/lexer/lexer.rl"
17770
17686
  { num_base = 8; num_digits_s = ts; }
17771
- #line 2269 "ext/lexer/lexer.rl"
17687
+ #line 2267 "ext/lexer/lexer.rl"
17772
17688
  { num_suffix_s = p; }
17773
17689
  #line 1076 "ext/lexer/lexer.rl"
17774
17690
  { num_xfrm = emit_int; numeric_s = ts; }
17775
17691
  break;
17776
17692
  case 432:
17777
- #line 2269 "ext/lexer/lexer.rl"
17693
+ #line 2267 "ext/lexer/lexer.rl"
17778
17694
  { num_suffix_s = p; }
17779
17695
  #line 1076 "ext/lexer/lexer.rl"
17780
17696
  { num_xfrm = emit_int; numeric_s = ts; }
17781
- #line 2270 "ext/lexer/lexer.rl"
17697
+ #line 2268 "ext/lexer/lexer.rl"
17782
17698
  {te = p;p--;{
17783
17699
  int invalid_idx;
17784
17700
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -17811,11 +17727,11 @@ _eof_trans:
17811
17727
  }}
17812
17728
  break;
17813
17729
  case 425:
17814
- #line 2336 "ext/lexer/lexer.rl"
17730
+ #line 2334 "ext/lexer/lexer.rl"
17815
17731
  { num_suffix_s = p; }
17816
17732
  #line 1084 "ext/lexer/lexer.rl"
17817
17733
  { num_xfrm = emit_float; numeric_s = ts; }
17818
- #line 2339 "ext/lexer/lexer.rl"
17734
+ #line 2337 "ext/lexer/lexer.rl"
17819
17735
  {te = p;p--;{
17820
17736
  VALUE digits = tok(lexer, ts, num_suffix_s);
17821
17737
 
@@ -17830,11 +17746,11 @@ _eof_trans:
17830
17746
  }}
17831
17747
  break;
17832
17748
  case 421:
17833
- #line 2337 "ext/lexer/lexer.rl"
17749
+ #line 2335 "ext/lexer/lexer.rl"
17834
17750
  { num_suffix_s = p; }
17835
17751
  #line 1084 "ext/lexer/lexer.rl"
17836
17752
  { num_xfrm = emit_float; numeric_s = ts; }
17837
- #line 2339 "ext/lexer/lexer.rl"
17753
+ #line 2337 "ext/lexer/lexer.rl"
17838
17754
  {te = p;p--;{
17839
17755
  VALUE digits = tok(lexer, ts, num_suffix_s);
17840
17756
 
@@ -17853,7 +17769,7 @@ _eof_trans:
17853
17769
  {te = p+1;}
17854
17770
  #line 1002 "ext/lexer/lexer.rl"
17855
17771
  { lexer->newline_s = p; }
17856
- #line 1806 "ext/lexer/lexer.rl"
17772
+ #line 1804 "ext/lexer/lexer.rl"
17857
17773
  {act = 74;}
17858
17774
  break;
17859
17775
  case 35:
@@ -17866,7 +17782,7 @@ _eof_trans:
17866
17782
  lexer->herebody_s = 0;
17867
17783
  }
17868
17784
  }
17869
- #line 1801 "ext/lexer/lexer.rl"
17785
+ #line 1799 "ext/lexer/lexer.rl"
17870
17786
  {act = 73;}
17871
17787
  break;
17872
17788
  case 46:
@@ -17879,103 +17795,103 @@ _eof_trans:
17879
17795
  lexer->herebody_s = 0;
17880
17796
  }
17881
17797
  }
17882
- #line 1841 "ext/lexer/lexer.rl"
17798
+ #line 1839 "ext/lexer/lexer.rl"
17883
17799
  {act = 81;}
17884
17800
  break;
17885
17801
  case 65:
17886
17802
  #line 1 "NONE"
17887
17803
  {te = p+1;}
17888
- #line 1545 "ext/lexer/lexer.rl"
17804
+ #line 1543 "ext/lexer/lexer.rl"
17889
17805
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17890
- #line 1886 "ext/lexer/lexer.rl"
17806
+ #line 1884 "ext/lexer/lexer.rl"
17891
17807
  {act = 94;}
17892
17808
  break;
17893
17809
  case 82:
17894
17810
  #line 1 "NONE"
17895
17811
  {te = p+1;}
17896
- #line 1545 "ext/lexer/lexer.rl"
17812
+ #line 1543 "ext/lexer/lexer.rl"
17897
17813
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
17898
- #line 2215 "ext/lexer/lexer.rl"
17814
+ #line 2213 "ext/lexer/lexer.rl"
17899
17815
  {act = 138;}
17900
17816
  break;
17901
17817
  case 37:
17902
17818
  #line 1 "NONE"
17903
17819
  {te = p+1;}
17904
- #line 1777 "ext/lexer/lexer.rl"
17820
+ #line 1775 "ext/lexer/lexer.rl"
17905
17821
  { tm = p; }
17906
- #line 1777 "ext/lexer/lexer.rl"
17822
+ #line 1775 "ext/lexer/lexer.rl"
17907
17823
  {act = 68;}
17908
17824
  break;
17909
17825
  case 362:
17910
17826
  #line 1 "NONE"
17911
17827
  {te = p+1;}
17912
- #line 2077 "ext/lexer/lexer.rl"
17828
+ #line 2075 "ext/lexer/lexer.rl"
17913
17829
  { tm = p; }
17914
- #line 2111 "ext/lexer/lexer.rl"
17830
+ #line 2109 "ext/lexer/lexer.rl"
17915
17831
  {act = 117;}
17916
17832
  break;
17917
17833
  case 361:
17918
17834
  #line 1 "NONE"
17919
17835
  {te = p+1;}
17920
- #line 2077 "ext/lexer/lexer.rl"
17836
+ #line 2075 "ext/lexer/lexer.rl"
17921
17837
  { tm = p; }
17922
- #line 1600 "ext/lexer/lexer.rl"
17838
+ #line 1598 "ext/lexer/lexer.rl"
17923
17839
  {act = 118;}
17924
17840
  break;
17925
17841
  case 455:
17926
17842
  #line 1 "NONE"
17927
17843
  {te = p+1;}
17928
- #line 2263 "ext/lexer/lexer.rl"
17844
+ #line 2261 "ext/lexer/lexer.rl"
17929
17845
  { num_base = 16; num_digits_s = p; }
17930
- #line 2269 "ext/lexer/lexer.rl"
17846
+ #line 2267 "ext/lexer/lexer.rl"
17931
17847
  { num_suffix_s = p; }
17932
17848
  break;
17933
17849
  case 447:
17934
17850
  #line 1 "NONE"
17935
17851
  {te = p+1;}
17936
- #line 2264 "ext/lexer/lexer.rl"
17852
+ #line 2262 "ext/lexer/lexer.rl"
17937
17853
  { num_base = 10; num_digits_s = p; }
17938
- #line 2269 "ext/lexer/lexer.rl"
17854
+ #line 2267 "ext/lexer/lexer.rl"
17939
17855
  { num_suffix_s = p; }
17940
17856
  break;
17941
17857
  case 451:
17942
17858
  #line 1 "NONE"
17943
17859
  {te = p+1;}
17944
- #line 2265 "ext/lexer/lexer.rl"
17860
+ #line 2263 "ext/lexer/lexer.rl"
17945
17861
  { num_base = 8; num_digits_s = p; }
17946
- #line 2269 "ext/lexer/lexer.rl"
17862
+ #line 2267 "ext/lexer/lexer.rl"
17947
17863
  { num_suffix_s = p; }
17948
17864
  break;
17949
17865
  case 443:
17950
17866
  #line 1 "NONE"
17951
17867
  {te = p+1;}
17952
- #line 2266 "ext/lexer/lexer.rl"
17868
+ #line 2264 "ext/lexer/lexer.rl"
17953
17869
  { num_base = 2; num_digits_s = p; }
17954
- #line 2269 "ext/lexer/lexer.rl"
17870
+ #line 2267 "ext/lexer/lexer.rl"
17955
17871
  { num_suffix_s = p; }
17956
17872
  break;
17957
17873
  case 462:
17958
17874
  #line 1 "NONE"
17959
17875
  {te = p+1;}
17960
- #line 2267 "ext/lexer/lexer.rl"
17876
+ #line 2265 "ext/lexer/lexer.rl"
17961
17877
  { num_base = 10; num_digits_s = ts; }
17962
- #line 2269 "ext/lexer/lexer.rl"
17878
+ #line 2267 "ext/lexer/lexer.rl"
17963
17879
  { num_suffix_s = p; }
17964
17880
  break;
17965
17881
  case 458:
17966
17882
  #line 1 "NONE"
17967
17883
  {te = p+1;}
17968
- #line 2267 "ext/lexer/lexer.rl"
17884
+ #line 2265 "ext/lexer/lexer.rl"
17969
17885
  { num_base = 10; num_digits_s = ts; }
17970
- #line 2270 "ext/lexer/lexer.rl"
17886
+ #line 2268 "ext/lexer/lexer.rl"
17971
17887
  {act = 145;}
17972
17888
  break;
17973
17889
  case 420:
17974
17890
  #line 1 "NONE"
17975
17891
  {te = p+1;}
17976
- #line 2268 "ext/lexer/lexer.rl"
17892
+ #line 2266 "ext/lexer/lexer.rl"
17977
17893
  { num_base = 8; num_digits_s = ts; }
17978
- #line 2269 "ext/lexer/lexer.rl"
17894
+ #line 2267 "ext/lexer/lexer.rl"
17979
17895
  { num_suffix_s = p; }
17980
17896
  break;
17981
17897
  case 118:
@@ -18014,18 +17930,16 @@ _eof_trans:
18014
17930
  literal_extend_string(current_literal, escaped_char, ts, te);
18015
17931
  }
18016
17932
  } else {
18017
- if (literal_regexp_p(current_literal)) {
17933
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17934
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17935
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
17936
+ VALUE token = tok(lexer, ts, te);
17937
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17938
+ literal_extend_string(current_literal, token, ts, te);
17939
+ } else if (literal_regexp_p(current_literal)) {
18018
17940
  VALUE token = tok(lexer, ts, te);
18019
17941
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
18020
17942
  literal_extend_string(current_literal, token, ts, te);
18021
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
18022
- if (literal_squiggly_heredoc_p(current_literal)) {
18023
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
18024
- } else {
18025
- VALUE token = tok(lexer, ts, te);
18026
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
18027
- literal_extend_string(current_literal, token, ts, te);
18028
- }
18029
17943
  } else if (lexer->escape == Qnil) {
18030
17944
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
18031
17945
  } else {
@@ -18070,18 +17984,16 @@ _eof_trans:
18070
17984
  literal_extend_string(current_literal, escaped_char, ts, te);
18071
17985
  }
18072
17986
  } else {
18073
- if (literal_regexp_p(current_literal)) {
17987
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
17988
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
17989
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
17990
+ VALUE token = tok(lexer, ts, te);
17991
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
17992
+ literal_extend_string(current_literal, token, ts, te);
17993
+ } else if (literal_regexp_p(current_literal)) {
18074
17994
  VALUE token = tok(lexer, ts, te);
18075
17995
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
18076
17996
  literal_extend_string(current_literal, token, ts, te);
18077
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
18078
- if (literal_squiggly_heredoc_p(current_literal)) {
18079
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
18080
- } else {
18081
- VALUE token = tok(lexer, ts, te);
18082
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
18083
- literal_extend_string(current_literal, token, ts, te);
18084
- }
18085
17997
  } else if (lexer->escape == Qnil) {
18086
17998
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
18087
17999
  } else {
@@ -18114,7 +18026,7 @@ _eof_trans:
18114
18026
  lexer->escape = rb_str_new(&c, 1);
18115
18027
  force_encoding(lexer->escape, lexer->encoding);
18116
18028
  }
18117
- #line 2021 "ext/lexer/lexer.rl"
18029
+ #line 2019 "ext/lexer/lexer.rl"
18118
18030
  {te = p;p--;{
18119
18031
  VALUE value = lexer->escape;
18120
18032
  if (value == Qnil)
@@ -18155,18 +18067,16 @@ _eof_trans:
18155
18067
  literal_extend_string(current_literal, escaped_char, ts, te);
18156
18068
  }
18157
18069
  } else {
18158
- if (literal_regexp_p(current_literal)) {
18070
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
18071
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
18072
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
18073
+ VALUE token = tok(lexer, ts, te);
18074
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
18075
+ literal_extend_string(current_literal, token, ts, te);
18076
+ } else if (literal_regexp_p(current_literal)) {
18159
18077
  VALUE token = tok(lexer, ts, te);
18160
18078
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
18161
18079
  literal_extend_string(current_literal, token, ts, te);
18162
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
18163
- if (literal_squiggly_heredoc_p(current_literal)) {
18164
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
18165
- } else {
18166
- VALUE token = tok(lexer, ts, te);
18167
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
18168
- literal_extend_string(current_literal, token, ts, te);
18169
- }
18170
18080
  } else if (lexer->escape == Qnil) {
18171
18081
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
18172
18082
  } else {
@@ -18202,18 +18112,16 @@ _eof_trans:
18202
18112
  literal_extend_string(current_literal, escaped_char, ts, te);
18203
18113
  }
18204
18114
  } else {
18205
- if (literal_regexp_p(current_literal)) {
18115
+ if (literal_squiggly_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
18116
+ literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
18117
+ } else if (literal_supports_line_continuation_via_slash_p(current_literal) && newline_char_p(escaped_char)) {
18118
+ VALUE token = tok(lexer, ts, te);
18119
+ rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
18120
+ literal_extend_string(current_literal, token, ts, te);
18121
+ } else if (literal_regexp_p(current_literal)) {
18206
18122
  VALUE token = tok(lexer, ts, te);
18207
18123
  rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
18208
18124
  literal_extend_string(current_literal, token, ts, te);
18209
- } else if (literal_heredoc_p(current_literal) && newline_char_p(escaped_char)) {
18210
- if (literal_squiggly_heredoc_p(current_literal)) {
18211
- literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
18212
- } else {
18213
- VALUE token = tok(lexer, ts, te);
18214
- rb_funcall(token, rb_intern("gsub!"), 2, escaped_newline, blank_string);
18215
- literal_extend_string(current_literal, token, ts, te);
18216
- }
18217
18125
  } else if (lexer->escape == Qnil) {
18218
18126
  literal_extend_string(current_literal, tok(lexer, ts, te), ts, te);
18219
18127
  } else {
@@ -18237,7 +18145,7 @@ _eof_trans:
18237
18145
  lexer->escape = rb_str_new(&c, 1);
18238
18146
  force_encoding(lexer->escape, lexer->encoding);
18239
18147
  }
18240
- #line 2021 "ext/lexer/lexer.rl"
18148
+ #line 2019 "ext/lexer/lexer.rl"
18241
18149
  {te = p;p--;{
18242
18150
  VALUE value = lexer->escape;
18243
18151
  if (value == Qnil)
@@ -18252,13 +18160,13 @@ _eof_trans:
18252
18160
  }}
18253
18161
  break;
18254
18162
  case 452:
18255
- #line 2263 "ext/lexer/lexer.rl"
18163
+ #line 2261 "ext/lexer/lexer.rl"
18256
18164
  { num_base = 16; num_digits_s = p; }
18257
- #line 2269 "ext/lexer/lexer.rl"
18165
+ #line 2267 "ext/lexer/lexer.rl"
18258
18166
  { num_suffix_s = p; }
18259
18167
  #line 1076 "ext/lexer/lexer.rl"
18260
18168
  { num_xfrm = emit_int; numeric_s = ts; }
18261
- #line 2270 "ext/lexer/lexer.rl"
18169
+ #line 2268 "ext/lexer/lexer.rl"
18262
18170
  {te = p;p--;{
18263
18171
  int invalid_idx;
18264
18172
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -18291,13 +18199,13 @@ _eof_trans:
18291
18199
  }}
18292
18200
  break;
18293
18201
  case 444:
18294
- #line 2264 "ext/lexer/lexer.rl"
18202
+ #line 2262 "ext/lexer/lexer.rl"
18295
18203
  { num_base = 10; num_digits_s = p; }
18296
- #line 2269 "ext/lexer/lexer.rl"
18204
+ #line 2267 "ext/lexer/lexer.rl"
18297
18205
  { num_suffix_s = p; }
18298
18206
  #line 1076 "ext/lexer/lexer.rl"
18299
18207
  { num_xfrm = emit_int; numeric_s = ts; }
18300
- #line 2270 "ext/lexer/lexer.rl"
18208
+ #line 2268 "ext/lexer/lexer.rl"
18301
18209
  {te = p;p--;{
18302
18210
  int invalid_idx;
18303
18211
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -18330,13 +18238,13 @@ _eof_trans:
18330
18238
  }}
18331
18239
  break;
18332
18240
  case 448:
18333
- #line 2265 "ext/lexer/lexer.rl"
18241
+ #line 2263 "ext/lexer/lexer.rl"
18334
18242
  { num_base = 8; num_digits_s = p; }
18335
- #line 2269 "ext/lexer/lexer.rl"
18243
+ #line 2267 "ext/lexer/lexer.rl"
18336
18244
  { num_suffix_s = p; }
18337
18245
  #line 1076 "ext/lexer/lexer.rl"
18338
18246
  { num_xfrm = emit_int; numeric_s = ts; }
18339
- #line 2270 "ext/lexer/lexer.rl"
18247
+ #line 2268 "ext/lexer/lexer.rl"
18340
18248
  {te = p;p--;{
18341
18249
  int invalid_idx;
18342
18250
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -18369,13 +18277,13 @@ _eof_trans:
18369
18277
  }}
18370
18278
  break;
18371
18279
  case 440:
18372
- #line 2266 "ext/lexer/lexer.rl"
18280
+ #line 2264 "ext/lexer/lexer.rl"
18373
18281
  { num_base = 2; num_digits_s = p; }
18374
- #line 2269 "ext/lexer/lexer.rl"
18282
+ #line 2267 "ext/lexer/lexer.rl"
18375
18283
  { num_suffix_s = p; }
18376
18284
  #line 1076 "ext/lexer/lexer.rl"
18377
18285
  { num_xfrm = emit_int; numeric_s = ts; }
18378
- #line 2270 "ext/lexer/lexer.rl"
18286
+ #line 2268 "ext/lexer/lexer.rl"
18379
18287
  {te = p;p--;{
18380
18288
  int invalid_idx;
18381
18289
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -18408,13 +18316,13 @@ _eof_trans:
18408
18316
  }}
18409
18317
  break;
18410
18318
  case 456:
18411
- #line 2267 "ext/lexer/lexer.rl"
18319
+ #line 2265 "ext/lexer/lexer.rl"
18412
18320
  { num_base = 10; num_digits_s = ts; }
18413
- #line 2269 "ext/lexer/lexer.rl"
18321
+ #line 2267 "ext/lexer/lexer.rl"
18414
18322
  { num_suffix_s = p; }
18415
18323
  #line 1076 "ext/lexer/lexer.rl"
18416
18324
  { num_xfrm = emit_int; numeric_s = ts; }
18417
- #line 2270 "ext/lexer/lexer.rl"
18325
+ #line 2268 "ext/lexer/lexer.rl"
18418
18326
  {te = p;p--;{
18419
18327
  int invalid_idx;
18420
18328
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -18447,13 +18355,13 @@ _eof_trans:
18447
18355
  }}
18448
18356
  break;
18449
18357
  case 415:
18450
- #line 2268 "ext/lexer/lexer.rl"
18358
+ #line 2266 "ext/lexer/lexer.rl"
18451
18359
  { num_base = 8; num_digits_s = ts; }
18452
- #line 2269 "ext/lexer/lexer.rl"
18360
+ #line 2267 "ext/lexer/lexer.rl"
18453
18361
  { num_suffix_s = p; }
18454
18362
  #line 1076 "ext/lexer/lexer.rl"
18455
18363
  { num_xfrm = emit_int; numeric_s = ts; }
18456
- #line 2270 "ext/lexer/lexer.rl"
18364
+ #line 2268 "ext/lexer/lexer.rl"
18457
18365
  {te = p;p--;{
18458
18366
  int invalid_idx;
18459
18367
  VALUE digits = tok(lexer, num_digits_s, num_suffix_s);
@@ -18495,56 +18403,56 @@ _eof_trans:
18495
18403
  lexer->herebody_s = 0;
18496
18404
  }
18497
18405
  }
18498
- #line 1777 "ext/lexer/lexer.rl"
18406
+ #line 1775 "ext/lexer/lexer.rl"
18499
18407
  { tm = p; }
18500
- #line 1777 "ext/lexer/lexer.rl"
18408
+ #line 1775 "ext/lexer/lexer.rl"
18501
18409
  {act = 68;}
18502
18410
  break;
18503
18411
  case 62:
18504
18412
  #line 1 "NONE"
18505
18413
  {te = p+1;}
18506
- #line 1544 "ext/lexer/lexer.rl"
18414
+ #line 1542 "ext/lexer/lexer.rl"
18507
18415
  { sharp_s = p - 1; }
18508
- #line 1545 "ext/lexer/lexer.rl"
18416
+ #line 1543 "ext/lexer/lexer.rl"
18509
18417
  { emit_comment(lexer, sharp_s, p == pe ? p - 2 : p); }
18510
- #line 1886 "ext/lexer/lexer.rl"
18418
+ #line 1884 "ext/lexer/lexer.rl"
18511
18419
  {act = 94;}
18512
18420
  break;
18513
18421
  case 464:
18514
18422
  #line 1 "NONE"
18515
18423
  {te = p+1;}
18516
- #line 2269 "ext/lexer/lexer.rl"
18424
+ #line 2267 "ext/lexer/lexer.rl"
18517
18425
  { num_suffix_s = p; }
18518
18426
  #line 1076 "ext/lexer/lexer.rl"
18519
18427
  { num_xfrm = emit_int; numeric_s = ts; }
18520
- #line 2308 "ext/lexer/lexer.rl"
18428
+ #line 2306 "ext/lexer/lexer.rl"
18521
18429
  {act = 147;}
18522
18430
  break;
18523
18431
  case 459:
18524
18432
  #line 1 "NONE"
18525
18433
  {te = p+1;}
18526
- #line 2267 "ext/lexer/lexer.rl"
18434
+ #line 2265 "ext/lexer/lexer.rl"
18527
18435
  { num_base = 10; num_digits_s = ts; }
18528
- #line 2269 "ext/lexer/lexer.rl"
18436
+ #line 2267 "ext/lexer/lexer.rl"
18529
18437
  { num_suffix_s = p; }
18530
18438
  #line 1076 "ext/lexer/lexer.rl"
18531
18439
  { num_xfrm = emit_int; numeric_s = ts; }
18532
- #line 2308 "ext/lexer/lexer.rl"
18440
+ #line 2306 "ext/lexer/lexer.rl"
18533
18441
  {act = 147;}
18534
18442
  break;
18535
18443
  case 418:
18536
18444
  #line 1 "NONE"
18537
18445
  {te = p+1;}
18538
- #line 2268 "ext/lexer/lexer.rl"
18446
+ #line 2266 "ext/lexer/lexer.rl"
18539
18447
  { num_base = 8; num_digits_s = ts; }
18540
- #line 2269 "ext/lexer/lexer.rl"
18448
+ #line 2267 "ext/lexer/lexer.rl"
18541
18449
  { num_suffix_s = p; }
18542
18450
  #line 1076 "ext/lexer/lexer.rl"
18543
18451
  { num_xfrm = emit_int; numeric_s = ts; }
18544
- #line 2308 "ext/lexer/lexer.rl"
18452
+ #line 2306 "ext/lexer/lexer.rl"
18545
18453
  {act = 147;}
18546
18454
  break;
18547
- #line 18548 "ext/lexer/lexer.c"
18455
+ #line 18456 "ext/lexer/lexer.c"
18548
18456
  }
18549
18457
 
18550
18458
  _again:
@@ -18553,7 +18461,7 @@ _again:
18553
18461
  #line 1 "NONE"
18554
18462
  {ts = 0;}
18555
18463
  break;
18556
- #line 18557 "ext/lexer/lexer.c"
18464
+ #line 18465 "ext/lexer/lexer.c"
18557
18465
  }
18558
18466
 
18559
18467
  if ( cs == 0 )
@@ -19210,5 +19118,5 @@ void Init_lexer()
19210
19118
  }
19211
19119
 
19212
19120
 
19213
- #line 2527 "ext/lexer/lexer.rl"
19121
+ #line 2525 "ext/lexer/lexer.rl"
19214
19122