c_lexer 2.5.3.0.0 → 2.6.0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/ext/lexer/lexer.c CHANGED
@@ -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