ruby_parser 3.13.0 → 3.13.1
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.
- checksums.yaml +4 -4
 - checksums.yaml.gz.sig +0 -0
 - data.tar.gz.sig +0 -0
 - data/History.rdoc +32 -0
 - data/Rakefile +2 -3
 - data/bin/ruby_parse_extract_error +10 -32
 - data/lib/rp_extensions.rb +1 -1
 - data/lib/ruby20_parser.rb +2427 -2432
 - data/lib/ruby20_parser.y +32 -29
 - data/lib/ruby21_parser.rb +2101 -2109
 - data/lib/ruby21_parser.y +32 -29
 - data/lib/ruby22_parser.rb +2080 -2095
 - data/lib/ruby22_parser.y +32 -29
 - data/lib/ruby23_parser.rb +2337 -2332
 - data/lib/ruby23_parser.y +32 -29
 - data/lib/ruby24_parser.rb +2347 -2335
 - data/lib/ruby24_parser.y +32 -23
 - data/lib/ruby25_parser.rb +2347 -2334
 - data/lib/ruby25_parser.y +32 -23
 - data/lib/ruby26_parser.rb +2351 -2338
 - data/lib/ruby26_parser.y +32 -23
 - data/lib/ruby_lexer.rb +253 -161
 - data/lib/ruby_lexer.rex +25 -25
 - data/lib/ruby_lexer.rex.rb +68 -26
 - data/lib/ruby_parser.rb +3 -1
 - data/lib/ruby_parser.yy +34 -23
 - data/lib/ruby_parser_extras.rb +64 -43
 - data/test/test_ruby_lexer.rb +1013 -952
 - data/test/test_ruby_parser.rb +161 -24
 - data/tools/munge.rb +2 -1
 - data/tools/ripper.rb +6 -1
 - metadata +2 -2
 - metadata.gz.sig +0 -0
 
    
        data/lib/ruby_parser_extras.rb
    CHANGED
    
    | 
         @@ -7,7 +7,7 @@ require "rp_extensions" 
     | 
|
| 
       7 
7 
     | 
    
         
             
            require "rp_stringscanner"
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
            module RubyParserStuff
         
     | 
| 
       10 
     | 
    
         
            -
              VERSION = "3.13. 
     | 
| 
      
 10 
     | 
    
         
            +
              VERSION = "3.13.1"
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
              attr_accessor :lexer, :in_def, :in_single, :file
         
     | 
| 
       13 
13 
     | 
    
         
             
              attr_accessor :in_kwarg
         
     | 
| 
         @@ -698,6 +698,22 @@ module RubyParserStuff 
     | 
|
| 
       698 
698 
     | 
    
         
             
                result
         
     | 
| 
       699 
699 
     | 
    
         
             
              end
         
     | 
| 
       700 
700 
     | 
    
         | 
| 
      
 701 
     | 
    
         
            +
              def new_const_op_asgn val
         
     | 
| 
      
 702 
     | 
    
         
            +
                lhs, asgn_op, rhs = val[0], val[1].to_sym, val[2]
         
     | 
| 
      
 703 
     | 
    
         
            +
             
     | 
| 
      
 704 
     | 
    
         
            +
                result = case asgn_op
         
     | 
| 
      
 705 
     | 
    
         
            +
                         when :"||" then
         
     | 
| 
      
 706 
     | 
    
         
            +
                           s(:op_asgn_or, lhs, rhs)
         
     | 
| 
      
 707 
     | 
    
         
            +
                         when :"&&" then
         
     | 
| 
      
 708 
     | 
    
         
            +
                           s(:op_asgn_and, lhs, rhs)
         
     | 
| 
      
 709 
     | 
    
         
            +
                         else
         
     | 
| 
      
 710 
     | 
    
         
            +
                           s(:op_asgn, lhs, asgn_op, rhs)
         
     | 
| 
      
 711 
     | 
    
         
            +
                         end
         
     | 
| 
      
 712 
     | 
    
         
            +
             
     | 
| 
      
 713 
     | 
    
         
            +
                result.line = lhs.line
         
     | 
| 
      
 714 
     | 
    
         
            +
                result
         
     | 
| 
      
 715 
     | 
    
         
            +
              end
         
     | 
| 
      
 716 
     | 
    
         
            +
             
     | 
| 
       701 
717 
     | 
    
         
             
              def new_op_asgn2 val
         
     | 
| 
       702 
718 
     | 
    
         
             
                recv, call_op, meth, op, arg = val
         
     | 
| 
       703 
719 
     | 
    
         
             
                meth = :"#{meth}="
         
     | 
| 
         @@ -804,6 +820,7 @@ module RubyParserStuff 
     | 
|
| 
       804 
820 
     | 
    
         | 
| 
       805 
821 
     | 
    
         
             
              def new_string val
         
     | 
| 
       806 
822 
     | 
    
         
             
                str = val[0]
         
     | 
| 
      
 823 
     | 
    
         
            +
                str.force_encoding("UTF-8")
         
     | 
| 
       807 
824 
     | 
    
         
             
                str.force_encoding("ASCII-8BIT") unless str.valid_encoding?
         
     | 
| 
       808 
825 
     | 
    
         
             
                result = s(:str, str)
         
     | 
| 
       809 
826 
     | 
    
         
             
                self.lexer.fixup_lineno str.count("\n")
         
     | 
| 
         @@ -1168,6 +1185,8 @@ module RubyParserStuff 
     | 
|
| 
       1168 
1185 
     | 
    
         
             
              end
         
     | 
| 
       1169 
1186 
     | 
    
         | 
| 
       1170 
1187 
     | 
    
         
             
              class Keyword
         
     | 
| 
      
 1188 
     | 
    
         
            +
                include RubyLexer::State::Values
         
     | 
| 
      
 1189 
     | 
    
         
            +
             
     | 
| 
       1171 
1190 
     | 
    
         
             
                class KWtable
         
     | 
| 
       1172 
1191 
     | 
    
         
             
                  attr_accessor :name, :state, :id0, :id1
         
     | 
| 
       1173 
1192 
     | 
    
         
             
                  def initialize(name, id=[], state=nil)
         
     | 
| 
         @@ -1196,48 +1215,50 @@ module RubyParserStuff 
     | 
|
| 
       1196 
1215 
     | 
    
         
             
                # :expr_value   = :expr_beg -- work to remove. Need multi-state support.
         
     | 
| 
       1197 
1216 
     | 
    
         | 
| 
       1198 
1217 
     | 
    
         
             
                wordlist = [
         
     | 
| 
       1199 
     | 
    
         
            -
                            ["alias",    [:kALIAS,    :kALIAS      ],  
     | 
| 
       1200 
     | 
    
         
            -
                            ["and",      [:kAND,      :kAND        ],  
     | 
| 
       1201 
     | 
    
         
            -
                            ["begin",    [:kBEGIN,    :kBEGIN      ],  
     | 
| 
       1202 
     | 
    
         
            -
                            ["break",    [:kBREAK,    :kBREAK      ],  
     | 
| 
       1203 
     | 
    
         
            -
                            ["case",     [:kCASE,     :kCASE       ],  
     | 
| 
       1204 
     | 
    
         
            -
                            ["class",    [:kCLASS,    :kCLASS      ],  
     | 
| 
       1205 
     | 
    
         
            -
                            ["def",      [:kDEF,      :kDEF        ],  
     | 
| 
       1206 
     | 
    
         
            -
                            ["defined?", [:kDEFINED,  :kDEFINED    ],  
     | 
| 
       1207 
     | 
    
         
            -
                            ["do",       [:kDO,       :kDO         ],  
     | 
| 
       1208 
     | 
    
         
            -
                            ["else",     [:kELSE,     :kELSE       ],  
     | 
| 
       1209 
     | 
    
         
            -
                            ["elsif",    [:kELSIF,    :kELSIF      ],  
     | 
| 
       1210 
     | 
    
         
            -
                            ["end",      [:kEND,      :kEND        ],  
     | 
| 
       1211 
     | 
    
         
            -
                            ["ensure",   [:kENSURE,   :kENSURE     ],  
     | 
| 
       1212 
     | 
    
         
            -
                            ["false",    [:kFALSE,    :kFALSE      ],  
     | 
| 
       1213 
     | 
    
         
            -
                            ["for",      [:kFOR,      :kFOR        ],  
     | 
| 
       1214 
     | 
    
         
            -
                            ["if",       [:kIF,       :kIF_MOD     ],  
     | 
| 
       1215 
     | 
    
         
            -
                            ["in",       [:kIN,       :kIN         ],  
     | 
| 
       1216 
     | 
    
         
            -
                            ["module",   [:kMODULE,   :kMODULE     ],  
     | 
| 
       1217 
     | 
    
         
            -
                            ["next",     [:kNEXT,     :kNEXT       ],  
     | 
| 
       1218 
     | 
    
         
            -
                            ["nil",      [:kNIL,      :kNIL        ],  
     | 
| 
       1219 
     | 
    
         
            -
                            ["not",      [:kNOT,      :kNOT        ],  
     | 
| 
       1220 
     | 
    
         
            -
                            ["or",       [:kOR,       :kOR         ],  
     | 
| 
       1221 
     | 
    
         
            -
                            ["redo",     [:kREDO,     :kREDO       ],  
     | 
| 
       1222 
     | 
    
         
            -
                            ["rescue",   [:kRESCUE,   :kRESCUE_MOD ],  
     | 
| 
       1223 
     | 
    
         
            -
                            ["retry",    [:kRETRY,    :kRETRY      ],  
     | 
| 
       1224 
     | 
    
         
            -
                            ["return",   [:kRETURN,   :kRETURN     ],  
     | 
| 
       1225 
     | 
    
         
            -
                            ["self",     [:kSELF,     :kSELF       ],  
     | 
| 
       1226 
     | 
    
         
            -
                            ["super",    [:kSUPER,    :kSUPER      ],  
     | 
| 
       1227 
     | 
    
         
            -
                            ["then",     [:kTHEN,     :kTHEN       ],  
     | 
| 
       1228 
     | 
    
         
            -
                            ["true",     [:kTRUE,     :kTRUE       ],  
     | 
| 
       1229 
     | 
    
         
            -
                            ["undef",    [:kUNDEF,    :kUNDEF      ],  
     | 
| 
       1230 
     | 
    
         
            -
                            ["unless",   [:kUNLESS,   :kUNLESS_MOD ],  
     | 
| 
       1231 
     | 
    
         
            -
                            ["until",    [:kUNTIL,    :kUNTIL_MOD  ],  
     | 
| 
       1232 
     | 
    
         
            -
                            ["when",     [:kWHEN,     :kWHEN       ],  
     | 
| 
       1233 
     | 
    
         
            -
                            ["while",    [:kWHILE,    :kWHILE_MOD  ],  
     | 
| 
       1234 
     | 
    
         
            -
                            ["yield",    [:kYIELD,    :kYIELD      ],  
     | 
| 
       1235 
     | 
    
         
            -
                            ["BEGIN",    [:klBEGIN,   :klBEGIN     ],  
     | 
| 
       1236 
     | 
    
         
            -
                            ["END",      [:klEND,     :klEND       ],  
     | 
| 
       1237 
     | 
    
         
            -
                            ["__FILE__", [:k__FILE__, :k__FILE__   ],  
     | 
| 
       1238 
     | 
    
         
            -
                            ["__LINE__", [:k__LINE__, :k__LINE__   ],  
     | 
| 
       1239 
     | 
    
         
            -
                            ["__ENCODING__", [:k__ENCODING__, :k__ENCODING__],  
     | 
| 
       1240 
     | 
    
         
            -
                           ].map { |args| 
     | 
| 
      
 1218 
     | 
    
         
            +
                            ["alias",    [:kALIAS,    :kALIAS      ], EXPR_FNAME|EXPR_FITEM],
         
     | 
| 
      
 1219 
     | 
    
         
            +
                            ["and",      [:kAND,      :kAND        ], EXPR_BEG   ],
         
     | 
| 
      
 1220 
     | 
    
         
            +
                            ["begin",    [:kBEGIN,    :kBEGIN      ], EXPR_BEG   ],
         
     | 
| 
      
 1221 
     | 
    
         
            +
                            ["break",    [:kBREAK,    :kBREAK      ], EXPR_MID   ],
         
     | 
| 
      
 1222 
     | 
    
         
            +
                            ["case",     [:kCASE,     :kCASE       ], EXPR_BEG   ],
         
     | 
| 
      
 1223 
     | 
    
         
            +
                            ["class",    [:kCLASS,    :kCLASS      ], EXPR_CLASS ],
         
     | 
| 
      
 1224 
     | 
    
         
            +
                            ["def",      [:kDEF,      :kDEF        ], EXPR_FNAME ],
         
     | 
| 
      
 1225 
     | 
    
         
            +
                            ["defined?", [:kDEFINED,  :kDEFINED    ], EXPR_ARG   ],
         
     | 
| 
      
 1226 
     | 
    
         
            +
                            ["do",       [:kDO,       :kDO         ], EXPR_BEG   ],
         
     | 
| 
      
 1227 
     | 
    
         
            +
                            ["else",     [:kELSE,     :kELSE       ], EXPR_BEG   ],
         
     | 
| 
      
 1228 
     | 
    
         
            +
                            ["elsif",    [:kELSIF,    :kELSIF      ], EXPR_BEG   ],
         
     | 
| 
      
 1229 
     | 
    
         
            +
                            ["end",      [:kEND,      :kEND        ], EXPR_END   ],
         
     | 
| 
      
 1230 
     | 
    
         
            +
                            ["ensure",   [:kENSURE,   :kENSURE     ], EXPR_BEG   ],
         
     | 
| 
      
 1231 
     | 
    
         
            +
                            ["false",    [:kFALSE,    :kFALSE      ], EXPR_END   ],
         
     | 
| 
      
 1232 
     | 
    
         
            +
                            ["for",      [:kFOR,      :kFOR        ], EXPR_BEG   ],
         
     | 
| 
      
 1233 
     | 
    
         
            +
                            ["if",       [:kIF,       :kIF_MOD     ], EXPR_BEG   ],
         
     | 
| 
      
 1234 
     | 
    
         
            +
                            ["in",       [:kIN,       :kIN         ], EXPR_BEG   ],
         
     | 
| 
      
 1235 
     | 
    
         
            +
                            ["module",   [:kMODULE,   :kMODULE     ], EXPR_BEG   ],
         
     | 
| 
      
 1236 
     | 
    
         
            +
                            ["next",     [:kNEXT,     :kNEXT       ], EXPR_MID   ],
         
     | 
| 
      
 1237 
     | 
    
         
            +
                            ["nil",      [:kNIL,      :kNIL        ], EXPR_END   ],
         
     | 
| 
      
 1238 
     | 
    
         
            +
                            ["not",      [:kNOT,      :kNOT        ], EXPR_ARG   ],
         
     | 
| 
      
 1239 
     | 
    
         
            +
                            ["or",       [:kOR,       :kOR         ], EXPR_BEG   ],
         
     | 
| 
      
 1240 
     | 
    
         
            +
                            ["redo",     [:kREDO,     :kREDO       ], EXPR_END   ],
         
     | 
| 
      
 1241 
     | 
    
         
            +
                            ["rescue",   [:kRESCUE,   :kRESCUE_MOD ], EXPR_MID   ],
         
     | 
| 
      
 1242 
     | 
    
         
            +
                            ["retry",    [:kRETRY,    :kRETRY      ], EXPR_END   ],
         
     | 
| 
      
 1243 
     | 
    
         
            +
                            ["return",   [:kRETURN,   :kRETURN     ], EXPR_MID   ],
         
     | 
| 
      
 1244 
     | 
    
         
            +
                            ["self",     [:kSELF,     :kSELF       ], EXPR_END   ],
         
     | 
| 
      
 1245 
     | 
    
         
            +
                            ["super",    [:kSUPER,    :kSUPER      ], EXPR_ARG   ],
         
     | 
| 
      
 1246 
     | 
    
         
            +
                            ["then",     [:kTHEN,     :kTHEN       ], EXPR_BEG   ],
         
     | 
| 
      
 1247 
     | 
    
         
            +
                            ["true",     [:kTRUE,     :kTRUE       ], EXPR_END   ],
         
     | 
| 
      
 1248 
     | 
    
         
            +
                            ["undef",    [:kUNDEF,    :kUNDEF      ], EXPR_FNAME|EXPR_FITEM],
         
     | 
| 
      
 1249 
     | 
    
         
            +
                            ["unless",   [:kUNLESS,   :kUNLESS_MOD ], EXPR_BEG   ],
         
     | 
| 
      
 1250 
     | 
    
         
            +
                            ["until",    [:kUNTIL,    :kUNTIL_MOD  ], EXPR_BEG   ],
         
     | 
| 
      
 1251 
     | 
    
         
            +
                            ["when",     [:kWHEN,     :kWHEN       ], EXPR_BEG   ],
         
     | 
| 
      
 1252 
     | 
    
         
            +
                            ["while",    [:kWHILE,    :kWHILE_MOD  ], EXPR_BEG   ],
         
     | 
| 
      
 1253 
     | 
    
         
            +
                            ["yield",    [:kYIELD,    :kYIELD      ], EXPR_ARG   ],
         
     | 
| 
      
 1254 
     | 
    
         
            +
                            ["BEGIN",    [:klBEGIN,   :klBEGIN     ], EXPR_END   ],
         
     | 
| 
      
 1255 
     | 
    
         
            +
                            ["END",      [:klEND,     :klEND       ], EXPR_END   ],
         
     | 
| 
      
 1256 
     | 
    
         
            +
                            ["__FILE__", [:k__FILE__, :k__FILE__   ], EXPR_END   ],
         
     | 
| 
      
 1257 
     | 
    
         
            +
                            ["__LINE__", [:k__LINE__, :k__LINE__   ], EXPR_END   ],
         
     | 
| 
      
 1258 
     | 
    
         
            +
                            ["__ENCODING__", [:k__ENCODING__, :k__ENCODING__], EXPR_END],
         
     | 
| 
      
 1259 
     | 
    
         
            +
                           ].map { |args|
         
     | 
| 
      
 1260 
     | 
    
         
            +
                  KWtable.new(*args)
         
     | 
| 
      
 1261 
     | 
    
         
            +
                }
         
     | 
| 
       1241 
1262 
     | 
    
         | 
| 
       1242 
1263 
     | 
    
         
             
                # :startdoc:
         
     | 
| 
       1243 
1264 
     | 
    
         | 
    
        data/test/test_ruby_lexer.rb
    CHANGED
    
    | 
         @@ -1,17 +1,20 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # encoding: US-ASCII
         
     | 
| 
      
 2 
     | 
    
         
            +
            # TODO: work this out
         
     | 
| 
       2 
3 
     | 
    
         | 
| 
       3 
4 
     | 
    
         
             
            require "minitest/autorun"
         
     | 
| 
       4 
5 
     | 
    
         
             
            require "ruby_lexer"
         
     | 
| 
       5 
6 
     | 
    
         
             
            require "ruby_parser"
         
     | 
| 
       6 
7 
     | 
    
         | 
| 
       7 
8 
     | 
    
         
             
            class TestRubyLexer < Minitest::Test
         
     | 
| 
      
 9 
     | 
    
         
            +
              include RubyLexer::State::Values
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
       8 
11 
     | 
    
         
             
              attr_accessor :processor, :lex, :parser_class, :lex_state
         
     | 
| 
       9 
12 
     | 
    
         | 
| 
       10 
13 
     | 
    
         
             
              alias :lexer :lex # lets me copy/paste code from parser
         
     | 
| 
       11 
14 
     | 
    
         
             
              alias :lexer= :lex=
         
     | 
| 
       12 
15 
     | 
    
         | 
| 
       13 
16 
     | 
    
         
             
              def setup
         
     | 
| 
       14 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 17 
     | 
    
         
            +
                self.lex_state = EXPR_BEG
         
     | 
| 
       15 
18 
     | 
    
         
             
                setup_lexer_class RubyParser.latest.class
         
     | 
| 
       16 
19 
     | 
    
         
             
              end
         
     | 
| 
       17 
20 
     | 
    
         | 
| 
         @@ -59,11 +62,11 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       59 
62 
     | 
    
         
             
                end
         
     | 
| 
       60 
63 
     | 
    
         
             
              end
         
     | 
| 
       61 
64 
     | 
    
         | 
| 
       62 
     | 
    
         
            -
              def assert_lex_fname name, type, end_state =  
     | 
| 
      
 65 
     | 
    
         
            +
              def assert_lex_fname name, type, end_state = EXPR_ARG # TODO: swap name/type
         
     | 
| 
       63 
66 
     | 
    
         
             
                assert_lex3("def #{name} ",
         
     | 
| 
       64 
67 
     | 
    
         
             
                            nil,
         
     | 
| 
       65 
68 
     | 
    
         | 
| 
       66 
     | 
    
         
            -
                            :kDEF, "def",  
     | 
| 
      
 69 
     | 
    
         
            +
                            :kDEF, "def", EXPR_FNAME,
         
     | 
| 
       67 
70 
     | 
    
         
             
                            type,  name,  end_state)
         
     | 
| 
       68 
71 
     | 
    
         
             
              end
         
     | 
| 
       69 
72 
     | 
    
         | 
| 
         @@ -102,8 +105,8 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       102 
105 
     | 
    
         
             
              end
         
     | 
| 
       103 
106 
     | 
    
         | 
| 
       104 
107 
     | 
    
         
             
              def assert_read_escape expected, input
         
     | 
| 
       105 
     | 
    
         
            -
                @lex.ss.string = input
         
     | 
| 
       106 
     | 
    
         
            -
                assert_equal expected, @lex.read_escape, input
         
     | 
| 
      
 108 
     | 
    
         
            +
                @lex.ss.string = input.dup
         
     | 
| 
      
 109 
     | 
    
         
            +
                assert_equal expected, @lex.read_escape.b, input
         
     | 
| 
       107 
110 
     | 
    
         
             
              end
         
     | 
| 
       108 
111 
     | 
    
         | 
| 
       109 
112 
     | 
    
         
             
              def assert_read_escape_bad input # TODO: rename refute_read_escape
         
     | 
| 
         @@ -132,15 +135,15 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       132 
135 
     | 
    
         
             
                lexer.cmdarg.push false
         
     | 
| 
       133 
136 
     | 
    
         | 
| 
       134 
137 
     | 
    
         
             
                lexer.lex_strterm = nil
         
     | 
| 
       135 
     | 
    
         
            -
                lexer.lex_state =  
     | 
| 
      
 138 
     | 
    
         
            +
                lexer.lex_state = EXPR_BEG
         
     | 
| 
       136 
139 
     | 
    
         | 
| 
       137 
140 
     | 
    
         
             
                yield
         
     | 
| 
       138 
141 
     | 
    
         | 
| 
       139 
     | 
    
         
            -
                lexer.lex_state =  
     | 
| 
       140 
     | 
    
         
            -
                assert_next_lexeme :tSTRING_DEND, "}",   
     | 
| 
      
 142 
     | 
    
         
            +
                lexer.lex_state = EXPR_ENDARG
         
     | 
| 
      
 143 
     | 
    
         
            +
                assert_next_lexeme :tSTRING_DEND, "}",  EXPR_ENDARG, 0
         
     | 
| 
       141 
144 
     | 
    
         | 
| 
       142 
145 
     | 
    
         
             
                lexer.lex_strterm = lex_strterm
         
     | 
| 
       143 
     | 
    
         
            -
                lexer.lex_state   =  
     | 
| 
      
 146 
     | 
    
         
            +
                lexer.lex_state   = EXPR_BEG
         
     | 
| 
       144 
147 
     | 
    
         
             
                lexer.string_nest = string_nest
         
     | 
| 
       145 
148 
     | 
    
         
             
                lexer.brace_nest  = brace_nest
         
     | 
| 
       146 
149 
     | 
    
         | 
| 
         @@ -158,7 +161,7 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       158 
161 
     | 
    
         | 
| 
       159 
162 
     | 
    
         
             
              def test_unicode_ident
         
     | 
| 
       160 
163 
     | 
    
         
             
                s = "@\u1088\u1077\u1093\u1072"
         
     | 
| 
       161 
     | 
    
         
            -
                assert_lex3(s.dup, nil, :tIVAR, s.dup,  
     | 
| 
      
 164 
     | 
    
         
            +
                assert_lex3(s.dup, nil, :tIVAR, s.dup, EXPR_END)
         
     | 
| 
       162 
165 
     | 
    
         
             
              end
         
     | 
| 
       163 
166 
     | 
    
         | 
| 
       164 
167 
     | 
    
         
             
              def test_read_escape
         
     | 
| 
         @@ -217,9 +220,9 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       217 
220 
     | 
    
         
             
              def test_yylex_ambiguous_uminus
         
     | 
| 
       218 
221 
     | 
    
         
             
                assert_lex3("m -3",
         
     | 
| 
       219 
222 
     | 
    
         
             
                            nil,
         
     | 
| 
       220 
     | 
    
         
            -
                            :tIDENTIFIER, "m",  
     | 
| 
       221 
     | 
    
         
            -
                            :tUMINUS_NUM, "-",  
     | 
| 
       222 
     | 
    
         
            -
                            :tINTEGER,    3,    
     | 
| 
      
 223 
     | 
    
         
            +
                            :tIDENTIFIER, "m", EXPR_CMDARG,
         
     | 
| 
      
 224 
     | 
    
         
            +
                            :tUMINUS_NUM, "-", EXPR_BEG,
         
     | 
| 
      
 225 
     | 
    
         
            +
                            :tINTEGER,    3,   EXPR_NUM)
         
     | 
| 
       223 
226 
     | 
    
         | 
| 
       224 
227 
     | 
    
         
             
                # TODO: verify warning
         
     | 
| 
       225 
228 
     | 
    
         
             
              end
         
     | 
| 
         @@ -227,36 +230,36 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       227 
230 
     | 
    
         
             
              def test_yylex_ambiguous_uplus
         
     | 
| 
       228 
231 
     | 
    
         
             
                assert_lex3("m +3",
         
     | 
| 
       229 
232 
     | 
    
         
             
                            nil,
         
     | 
| 
       230 
     | 
    
         
            -
                            :tIDENTIFIER, "m",  
     | 
| 
       231 
     | 
    
         
            -
                            :tINTEGER,    3,    
     | 
| 
      
 233 
     | 
    
         
            +
                            :tIDENTIFIER, "m", EXPR_CMDARG,
         
     | 
| 
      
 234 
     | 
    
         
            +
                            :tINTEGER,    3,   EXPR_NUM)
         
     | 
| 
       232 
235 
     | 
    
         | 
| 
       233 
236 
     | 
    
         
             
                # TODO: verify warning
         
     | 
| 
       234 
237 
     | 
    
         
             
              end
         
     | 
| 
       235 
238 
     | 
    
         | 
| 
       236 
239 
     | 
    
         
             
              def test_yylex_and
         
     | 
| 
       237 
     | 
    
         
            -
                assert_lex3("&", nil, :tAMPER, "&",  
     | 
| 
      
 240 
     | 
    
         
            +
                assert_lex3("&", nil, :tAMPER, "&", EXPR_BEG)
         
     | 
| 
       238 
241 
     | 
    
         
             
              end
         
     | 
| 
       239 
242 
     | 
    
         | 
| 
       240 
243 
     | 
    
         
             
              def test_yylex_and2
         
     | 
| 
       241 
     | 
    
         
            -
                assert_lex3("&&", nil, :tANDOP, "&&",  
     | 
| 
      
 244 
     | 
    
         
            +
                assert_lex3("&&", nil, :tANDOP, "&&", EXPR_BEG)
         
     | 
| 
       242 
245 
     | 
    
         
             
              end
         
     | 
| 
       243 
246 
     | 
    
         | 
| 
       244 
247 
     | 
    
         
             
              def test_yylex_and2_equals
         
     | 
| 
       245 
     | 
    
         
            -
                assert_lex3("&&=", nil, :tOP_ASGN, "&&",  
     | 
| 
      
 248 
     | 
    
         
            +
                assert_lex3("&&=", nil, :tOP_ASGN, "&&", EXPR_BEG)
         
     | 
| 
       246 
249 
     | 
    
         
             
              end
         
     | 
| 
       247 
250 
     | 
    
         | 
| 
       248 
251 
     | 
    
         
             
              def test_yylex_and_dot
         
     | 
| 
       249 
252 
     | 
    
         
             
                setup_lexer_class RubyParser::V23
         
     | 
| 
       250 
253 
     | 
    
         | 
| 
       251 
     | 
    
         
            -
                assert_lex3("&.", nil, :tLONELY, "&.",  
     | 
| 
      
 254 
     | 
    
         
            +
                assert_lex3("&.", nil, :tLONELY, "&.", EXPR_DOT)
         
     | 
| 
       252 
255 
     | 
    
         
             
              end
         
     | 
| 
       253 
256 
     | 
    
         | 
| 
       254 
257 
     | 
    
         
             
              def test_yylex_and_dot_call
         
     | 
| 
       255 
258 
     | 
    
         
             
                setup_lexer_class RubyParser::V23
         
     | 
| 
       256 
259 
     | 
    
         | 
| 
       257 
260 
     | 
    
         
             
                assert_lex3("x&.y", nil,
         
     | 
| 
       258 
     | 
    
         
            -
                            :tIDENTIFIER, "x", 
     | 
| 
       259 
     | 
    
         
            -
                            :tLONELY, 
     | 
| 
      
 261 
     | 
    
         
            +
                            :tIDENTIFIER, "x",  EXPR_CMDARG,
         
     | 
| 
      
 262 
     | 
    
         
            +
                            :tLONELY,     "&.", EXPR_DOT,
         
     | 
| 
       260 
263 
     | 
    
         
             
                            :tIDENTIFIER, "y")
         
     | 
| 
       261 
264 
     | 
    
         
             
              end
         
     | 
| 
       262 
265 
     | 
    
         | 
| 
         @@ -264,32 +267,32 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       264 
267 
     | 
    
         
             
                setup_lexer_class Ruby23Parser
         
     | 
| 
       265 
268 
     | 
    
         | 
| 
       266 
269 
     | 
    
         
             
                assert_lex3("x\n&.y", nil,
         
     | 
| 
       267 
     | 
    
         
            -
                            :tIDENTIFIER, "x", 
     | 
| 
       268 
     | 
    
         
            -
                            :tLONELY, 
     | 
| 
      
 270 
     | 
    
         
            +
                            :tIDENTIFIER, "x",  EXPR_CMDARG,
         
     | 
| 
      
 271 
     | 
    
         
            +
                            :tLONELY,     "&.", EXPR_DOT,
         
     | 
| 
       269 
272 
     | 
    
         
             
                            :tIDENTIFIER, "y")
         
     | 
| 
       270 
273 
     | 
    
         
             
              end
         
     | 
| 
       271 
274 
     | 
    
         | 
| 
       272 
275 
     | 
    
         
             
              def test_yylex_and_arg
         
     | 
| 
       273 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 276 
     | 
    
         
            +
                self.lex_state = EXPR_ARG
         
     | 
| 
       274 
277 
     | 
    
         | 
| 
       275 
278 
     | 
    
         
             
                assert_lex3(" &y",
         
     | 
| 
       276 
279 
     | 
    
         
             
                            nil,
         
     | 
| 
       277 
     | 
    
         
            -
                            :tAMPER,      "&",  
     | 
| 
       278 
     | 
    
         
            -
                            :tIDENTIFIER, "y",  
     | 
| 
      
 280 
     | 
    
         
            +
                            :tAMPER,      "&", EXPR_BEG,
         
     | 
| 
      
 281 
     | 
    
         
            +
                            :tIDENTIFIER, "y", EXPR_ARG)
         
     | 
| 
       279 
282 
     | 
    
         
             
              end
         
     | 
| 
       280 
283 
     | 
    
         | 
| 
       281 
284 
     | 
    
         
             
              def test_yylex_and_equals
         
     | 
| 
       282 
     | 
    
         
            -
                assert_lex3("&=", nil, :tOP_ASGN, "&",  
     | 
| 
      
 285 
     | 
    
         
            +
                assert_lex3("&=", nil, :tOP_ASGN, "&", EXPR_BEG)
         
     | 
| 
       283 
286 
     | 
    
         
             
              end
         
     | 
| 
       284 
287 
     | 
    
         | 
| 
       285 
288 
     | 
    
         
             
              def test_yylex_and_expr
         
     | 
| 
       286 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 289 
     | 
    
         
            +
                self.lex_state = EXPR_ARG
         
     | 
| 
       287 
290 
     | 
    
         | 
| 
       288 
291 
     | 
    
         
             
                assert_lex3("x & y",
         
     | 
| 
       289 
292 
     | 
    
         
             
                            nil,
         
     | 
| 
       290 
     | 
    
         
            -
                            :tIDENTIFIER, "x",  
     | 
| 
       291 
     | 
    
         
            -
                            :tAMPER2,     "&",  
     | 
| 
       292 
     | 
    
         
            -
                            :tIDENTIFIER, "y",  
     | 
| 
      
 293 
     | 
    
         
            +
                            :tIDENTIFIER, "x", EXPR_CMDARG,
         
     | 
| 
      
 294 
     | 
    
         
            +
                            :tAMPER2,     "&", EXPR_BEG,
         
     | 
| 
      
 295 
     | 
    
         
            +
                            :tIDENTIFIER, "y", EXPR_ARG)
         
     | 
| 
       293 
296 
     | 
    
         
             
              end
         
     | 
| 
       294 
297 
     | 
    
         | 
| 
       295 
298 
     | 
    
         
             
              def test_yylex_and_meth
         
     | 
| 
         @@ -297,7 +300,7 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       297 
300 
     | 
    
         
             
              end
         
     | 
| 
       298 
301 
     | 
    
         | 
| 
       299 
302 
     | 
    
         
             
              def test_yylex_assoc
         
     | 
| 
       300 
     | 
    
         
            -
                assert_lex3 
     | 
| 
      
 303 
     | 
    
         
            +
                assert_lex3 "=>", nil, :tASSOC, "=>", EXPR_BEG
         
     | 
| 
       301 
304 
     | 
    
         
             
              end
         
     | 
| 
       302 
305 
     | 
    
         | 
| 
       303 
306 
     | 
    
         
             
              def test_yylex_label__20
         
     | 
| 
         @@ -305,8 +308,8 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       305 
308 
     | 
    
         | 
| 
       306 
309 
     | 
    
         
             
                assert_lex3("{a:",
         
     | 
| 
       307 
310 
     | 
    
         
             
                            nil,
         
     | 
| 
       308 
     | 
    
         
            -
                            :tLBRACE, "{", 
     | 
| 
       309 
     | 
    
         
            -
                            :tLABEL,  "a", 
     | 
| 
      
 311 
     | 
    
         
            +
                            :tLBRACE, "{",  EXPR_PAR,
         
     | 
| 
      
 312 
     | 
    
         
            +
                            :tLABEL,  "a",  EXPR_LAB)
         
     | 
| 
       310 
313 
     | 
    
         
             
              end
         
     | 
| 
       311 
314 
     | 
    
         | 
| 
       312 
315 
     | 
    
         
             
              def test_yylex_label_in_params__20
         
     | 
| 
         @@ -314,9 +317,9 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       314 
317 
     | 
    
         | 
| 
       315 
318 
     | 
    
         
             
                assert_lex3("foo(a:",
         
     | 
| 
       316 
319 
     | 
    
         
             
                            nil,
         
     | 
| 
       317 
     | 
    
         
            -
                            :tIDENTIFIER, "foo",  
     | 
| 
       318 
     | 
    
         
            -
                            :tLPAREN2,    "(", 
     | 
| 
       319 
     | 
    
         
            -
                            :tLABEL,      "a", 
     | 
| 
      
 320 
     | 
    
         
            +
                            :tIDENTIFIER, "foo", EXPR_CMDARG,
         
     | 
| 
      
 321 
     | 
    
         
            +
                            :tLPAREN2,    "(",    EXPR_PAR,
         
     | 
| 
      
 322 
     | 
    
         
            +
                            :tLABEL,      "a",    EXPR_LAB)
         
     | 
| 
       320 
323 
     | 
    
         
             
              end
         
     | 
| 
       321 
324 
     | 
    
         | 
| 
       322 
325 
     | 
    
         
             
              def test_yylex_paren_string_parens_interpolated
         
     | 
| 
         @@ -327,22 +330,22 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       327 
330 
     | 
    
         
             
                              s(:evstr, s(:call, nil, :d)),
         
     | 
| 
       328 
331 
     | 
    
         
             
                              s(:str, ")")))
         
     | 
| 
       329 
332 
     | 
    
         | 
| 
       330 
     | 
    
         
            -
                assert_next_lexeme :tSTRING_BEG,     "%)",  
     | 
| 
       331 
     | 
    
         
            -
                assert_next_lexeme :tSTRING_CONTENT, "(",   
     | 
| 
       332 
     | 
    
         
            -
                assert_next_lexeme :tSTRING_DBEG,    nil,   
     | 
| 
      
 333 
     | 
    
         
            +
                assert_next_lexeme :tSTRING_BEG,     "%)", EXPR_BEG, 0, 0
         
     | 
| 
      
 334 
     | 
    
         
            +
                assert_next_lexeme :tSTRING_CONTENT, "(",  EXPR_BEG, 0, 0
         
     | 
| 
      
 335 
     | 
    
         
            +
                assert_next_lexeme :tSTRING_DBEG,    nil,  EXPR_BEG, 0, 0
         
     | 
| 
       333 
336 
     | 
    
         | 
| 
       334 
337 
     | 
    
         
             
                emulate_string_interpolation do
         
     | 
| 
       335 
     | 
    
         
            -
                  assert_next_lexeme :tIDENTIFIER,   "b",   
     | 
| 
      
 338 
     | 
    
         
            +
                  assert_next_lexeme :tIDENTIFIER,   "b",  EXPR_CMDARG, 0, 0
         
     | 
| 
       336 
339 
     | 
    
         
             
                end
         
     | 
| 
       337 
340 
     | 
    
         | 
| 
       338 
     | 
    
         
            -
                assert_next_lexeme :tSTRING_DBEG,    nil,   
     | 
| 
      
 341 
     | 
    
         
            +
                assert_next_lexeme :tSTRING_DBEG,    nil,  EXPR_BEG, 0, 0
         
     | 
| 
       339 
342 
     | 
    
         | 
| 
       340 
343 
     | 
    
         
             
                emulate_string_interpolation do
         
     | 
| 
       341 
     | 
    
         
            -
                  assert_next_lexeme :tIDENTIFIER,   "d",   
     | 
| 
      
 344 
     | 
    
         
            +
                  assert_next_lexeme :tIDENTIFIER,   "d",  EXPR_CMDARG, 0, 0
         
     | 
| 
       342 
345 
     | 
    
         
             
                end
         
     | 
| 
       343 
346 
     | 
    
         | 
| 
       344 
     | 
    
         
            -
                assert_next_lexeme :tSTRING_CONTENT, ")",   
     | 
| 
       345 
     | 
    
         
            -
                assert_next_lexeme :tSTRING_END,     ")",   
     | 
| 
      
 347 
     | 
    
         
            +
                assert_next_lexeme :tSTRING_CONTENT, ")",  EXPR_BEG, 0, 0
         
     | 
| 
      
 348 
     | 
    
         
            +
                assert_next_lexeme :tSTRING_END,     ")",  EXPR_END, 0, 0
         
     | 
| 
       346 
349 
     | 
    
         | 
| 
       347 
350 
     | 
    
         
             
                refute_lexeme
         
     | 
| 
       348 
351 
     | 
    
         
             
              end
         
     | 
| 
         @@ -351,20 +354,20 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       351 
354 
     | 
    
         
             
                setup_lexer('%( #{(/abcd/)} )',
         
     | 
| 
       352 
355 
     | 
    
         
             
                            s(:dstr, " ", s(:evstr, s(:lit, /abcd/)), s(:str, " ")))
         
     | 
| 
       353 
356 
     | 
    
         | 
| 
       354 
     | 
    
         
            -
                assert_next_lexeme :tSTRING_BEG,       "%)",    
     | 
| 
       355 
     | 
    
         
            -
                assert_next_lexeme :tSTRING_CONTENT,   " ",     
     | 
| 
       356 
     | 
    
         
            -
                assert_next_lexeme :tSTRING_DBEG,      nil,     
     | 
| 
      
 357 
     | 
    
         
            +
                assert_next_lexeme :tSTRING_BEG,       "%)",   EXPR_BEG, 0, 0
         
     | 
| 
      
 358 
     | 
    
         
            +
                assert_next_lexeme :tSTRING_CONTENT,   " ",    EXPR_BEG, 0, 0
         
     | 
| 
      
 359 
     | 
    
         
            +
                assert_next_lexeme :tSTRING_DBEG,      nil,    EXPR_BEG, 0, 0
         
     | 
| 
       357 
360 
     | 
    
         | 
| 
       358 
361 
     | 
    
         
             
                emulate_string_interpolation do
         
     | 
| 
       359 
     | 
    
         
            -
                  assert_next_lexeme :tLPAREN,         "(", 
     | 
| 
       360 
     | 
    
         
            -
                  assert_next_lexeme :tREGEXP_BEG,     "/", 
     | 
| 
       361 
     | 
    
         
            -
                  assert_next_lexeme :tSTRING_CONTENT, "abcd", 
     | 
| 
       362 
     | 
    
         
            -
                  assert_next_lexeme :tREGEXP_END,     "",      
     | 
| 
       363 
     | 
    
         
            -
                  assert_next_lexeme :tRPAREN,         ")",     
     | 
| 
      
 362 
     | 
    
         
            +
                  assert_next_lexeme :tLPAREN,         "(",     EXPR_PAR, 1, 0
         
     | 
| 
      
 363 
     | 
    
         
            +
                  assert_next_lexeme :tREGEXP_BEG,     "/",     EXPR_PAR, 1, 0
         
     | 
| 
      
 364 
     | 
    
         
            +
                  assert_next_lexeme :tSTRING_CONTENT, "abcd",  EXPR_PAR, 1, 0
         
     | 
| 
      
 365 
     | 
    
         
            +
                  assert_next_lexeme :tREGEXP_END,     "",     EXPR_END, 1, 0
         
     | 
| 
      
 366 
     | 
    
         
            +
                  assert_next_lexeme :tRPAREN,         ")",    EXPR_ENDFN, 0, 0
         
     | 
| 
       364 
367 
     | 
    
         
             
                end
         
     | 
| 
       365 
368 
     | 
    
         | 
| 
       366 
     | 
    
         
            -
                assert_next_lexeme :tSTRING_CONTENT,   " ",     
     | 
| 
       367 
     | 
    
         
            -
                assert_next_lexeme :tSTRING_END,       ")",     
     | 
| 
      
 369 
     | 
    
         
            +
                assert_next_lexeme :tSTRING_CONTENT,   " ",    EXPR_BEG, 0, 0
         
     | 
| 
      
 370 
     | 
    
         
            +
                assert_next_lexeme :tSTRING_END,       ")",    EXPR_END, 0, 0
         
     | 
| 
       368 
371 
     | 
    
         | 
| 
       369 
372 
     | 
    
         
             
                refute_lexeme
         
     | 
| 
       370 
373 
     | 
    
         
             
              end
         
     | 
| 
         @@ -375,26 +378,26 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       375 
378 
     | 
    
         
             
                assert_lex("def +@; end",
         
     | 
| 
       376 
379 
     | 
    
         
             
                           s(:defn, :+@, s(:args), s(:nil)),
         
     | 
| 
       377 
380 
     | 
    
         | 
| 
       378 
     | 
    
         
            -
                           :kDEF,   "def",  
     | 
| 
       379 
     | 
    
         
            -
                           :tUPLUS, "+@",   
     | 
| 
       380 
     | 
    
         
            -
                           :tSEMI,  ";",    
     | 
| 
       381 
     | 
    
         
            -
                           :kEND,   "end",  
     | 
| 
      
 381 
     | 
    
         
            +
                           :kDEF,   "def", EXPR_FNAME, 0, 0,
         
     | 
| 
      
 382 
     | 
    
         
            +
                           :tUPLUS, "+@",  EXPR_ARG,   0, 0,
         
     | 
| 
      
 383 
     | 
    
         
            +
                           :tSEMI,  ";",   EXPR_BEG,   0, 0,
         
     | 
| 
      
 384 
     | 
    
         
            +
                           :kEND,   "end", EXPR_END,   0, 0)
         
     | 
| 
       382 
385 
     | 
    
         | 
| 
       383 
386 
     | 
    
         
             
                assert_lex("def !@; end",
         
     | 
| 
       384 
387 
     | 
    
         
             
                           s(:defn, :"!@", s(:args), s(:nil)),
         
     | 
| 
       385 
388 
     | 
    
         | 
| 
       386 
     | 
    
         
            -
                           :kDEF,   "def",  
     | 
| 
       387 
     | 
    
         
            -
                           :tUBANG, "!@",   
     | 
| 
       388 
     | 
    
         
            -
                           :tSEMI,  ";",    
     | 
| 
       389 
     | 
    
         
            -
                           :kEND,   "end",  
     | 
| 
      
 389 
     | 
    
         
            +
                           :kDEF,   "def", EXPR_FNAME, 0, 0,
         
     | 
| 
      
 390 
     | 
    
         
            +
                           :tUBANG, "!@",  EXPR_ARG,   0, 0,
         
     | 
| 
      
 391 
     | 
    
         
            +
                           :tSEMI,  ";",   EXPR_BEG,   0, 0,
         
     | 
| 
      
 392 
     | 
    
         
            +
                           :kEND,   "end", EXPR_END,   0, 0)
         
     | 
| 
       390 
393 
     | 
    
         
             
              end
         
     | 
| 
       391 
394 
     | 
    
         | 
| 
       392 
395 
     | 
    
         
             
              def test_yylex_not_at_ivar
         
     | 
| 
       393 
396 
     | 
    
         
             
                assert_lex("!@ivar",
         
     | 
| 
       394 
397 
     | 
    
         
             
                           s(:call, s(:ivar, :@ivar), :"!"),
         
     | 
| 
       395 
398 
     | 
    
         | 
| 
       396 
     | 
    
         
            -
                           :tBANG, "!",      
     | 
| 
       397 
     | 
    
         
            -
                           :tIVAR, "@ivar",  
     | 
| 
      
 399 
     | 
    
         
            +
                           :tBANG, "!",     EXPR_BEG, 0, 0,
         
     | 
| 
      
 400 
     | 
    
         
            +
                           :tIVAR, "@ivar", EXPR_END, 0, 0)
         
     | 
| 
       398 
401 
     | 
    
         
             
              end
         
     | 
| 
       399 
402 
     | 
    
         | 
| 
       400 
403 
     | 
    
         
             
              def test_yylex_number_times_ident_times_return_number
         
     | 
| 
         @@ -403,43 +406,43 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       403 
406 
     | 
    
         
             
                             s(:call, s(:lit, 1), :*, s(:call, nil, :b)),
         
     | 
| 
       404 
407 
     | 
    
         
             
                             :*, s(:lit, 3)),
         
     | 
| 
       405 
408 
     | 
    
         | 
| 
       406 
     | 
    
         
            -
                           :tINTEGER,      1, 
     | 
| 
       407 
     | 
    
         
            -
                           :tSTAR2,      "*",  
     | 
| 
       408 
     | 
    
         
            -
                           :tIDENTIFIER, "b",  
     | 
| 
       409 
     | 
    
         
            -
                           :tSTAR2,      "*",  
     | 
| 
       410 
     | 
    
         
            -
                           :tINTEGER,      3, 
     | 
| 
      
 409 
     | 
    
         
            +
                           :tINTEGER,      1,  EXPR_NUM, 0, 0,
         
     | 
| 
      
 410 
     | 
    
         
            +
                           :tSTAR2,      "*", EXPR_BEG, 0, 0,
         
     | 
| 
      
 411 
     | 
    
         
            +
                           :tIDENTIFIER, "b", EXPR_ARG, 0, 0,
         
     | 
| 
      
 412 
     | 
    
         
            +
                           :tSTAR2,      "*", EXPR_BEG, 0, 0,
         
     | 
| 
      
 413 
     | 
    
         
            +
                           :tINTEGER,      3,  EXPR_NUM, 0, 0)
         
     | 
| 
       411 
414 
     | 
    
         | 
| 
       412 
415 
     | 
    
         
             
                assert_lex("1 * b *\n 3",
         
     | 
| 
       413 
416 
     | 
    
         
             
                           s(:call,
         
     | 
| 
       414 
417 
     | 
    
         
             
                             s(:call, s(:lit, 1), :*, s(:call, nil, :b)),
         
     | 
| 
       415 
418 
     | 
    
         
             
                             :*, s(:lit, 3)),
         
     | 
| 
       416 
419 
     | 
    
         | 
| 
       417 
     | 
    
         
            -
                           :tINTEGER,      1, 
     | 
| 
       418 
     | 
    
         
            -
                           :tSTAR2,      "*",  
     | 
| 
       419 
     | 
    
         
            -
                           :tIDENTIFIER, "b",  
     | 
| 
       420 
     | 
    
         
            -
                           :tSTAR2,      "*",  
     | 
| 
       421 
     | 
    
         
            -
                           :tINTEGER,      3, 
     | 
| 
      
 420 
     | 
    
         
            +
                           :tINTEGER,      1,  EXPR_NUM, 0, 0,
         
     | 
| 
      
 421 
     | 
    
         
            +
                           :tSTAR2,      "*", EXPR_BEG, 0, 0,
         
     | 
| 
      
 422 
     | 
    
         
            +
                           :tIDENTIFIER, "b", EXPR_ARG, 0, 0,
         
     | 
| 
      
 423 
     | 
    
         
            +
                           :tSTAR2,      "*", EXPR_BEG, 0, 0,
         
     | 
| 
      
 424 
     | 
    
         
            +
                           :tINTEGER,      3,  EXPR_NUM, 0, 0)
         
     | 
| 
       422 
425 
     | 
    
         
             
              end
         
     | 
| 
       423 
426 
     | 
    
         | 
| 
       424 
427 
     | 
    
         
             
              def test_yylex_paren_string_parens_interpolated_regexp
         
     | 
| 
       425 
428 
     | 
    
         
             
                setup_lexer('%((#{(/abcd/)}))',
         
     | 
| 
       426 
429 
     | 
    
         
             
                            s(:dstr, "(", s(:evstr, s(:lit, /abcd/)), s(:str, ")")))
         
     | 
| 
       427 
430 
     | 
    
         | 
| 
       428 
     | 
    
         
            -
                assert_next_lexeme :tSTRING_BEG,       "%)",    
     | 
| 
       429 
     | 
    
         
            -
                assert_next_lexeme :tSTRING_CONTENT,   "(",     
     | 
| 
      
 431 
     | 
    
         
            +
                assert_next_lexeme :tSTRING_BEG,       "%)",   EXPR_BEG, 0, 0
         
     | 
| 
      
 432 
     | 
    
         
            +
                assert_next_lexeme :tSTRING_CONTENT,   "(",    EXPR_BEG, 0, 0
         
     | 
| 
       430 
433 
     | 
    
         | 
| 
       431 
     | 
    
         
            -
                assert_next_lexeme :tSTRING_DBEG,       nil,    
     | 
| 
      
 434 
     | 
    
         
            +
                assert_next_lexeme :tSTRING_DBEG,       nil,   EXPR_BEG, 0, 0
         
     | 
| 
       432 
435 
     | 
    
         | 
| 
       433 
436 
     | 
    
         
             
                emulate_string_interpolation do
         
     | 
| 
       434 
     | 
    
         
            -
                  assert_next_lexeme :tLPAREN,         "(", 
     | 
| 
       435 
     | 
    
         
            -
                  assert_next_lexeme :tREGEXP_BEG,     "/", 
     | 
| 
       436 
     | 
    
         
            -
                  assert_next_lexeme :tSTRING_CONTENT, "abcd", 
     | 
| 
       437 
     | 
    
         
            -
                  assert_next_lexeme :tREGEXP_END,     "",      
     | 
| 
       438 
     | 
    
         
            -
                  assert_next_lexeme :tRPAREN,         ")",     
     | 
| 
      
 437 
     | 
    
         
            +
                  assert_next_lexeme :tLPAREN,         "(",     EXPR_PAR, 1, 0
         
     | 
| 
      
 438 
     | 
    
         
            +
                  assert_next_lexeme :tREGEXP_BEG,     "/",     EXPR_PAR, 1, 0
         
     | 
| 
      
 439 
     | 
    
         
            +
                  assert_next_lexeme :tSTRING_CONTENT, "abcd",  EXPR_PAR, 1, 0
         
     | 
| 
      
 440 
     | 
    
         
            +
                  assert_next_lexeme :tREGEXP_END,     "",     EXPR_END, 1, 0
         
     | 
| 
      
 441 
     | 
    
         
            +
                  assert_next_lexeme :tRPAREN,         ")",    EXPR_ENDFN, 0, 0
         
     | 
| 
       439 
442 
     | 
    
         
             
                end
         
     | 
| 
       440 
443 
     | 
    
         | 
| 
       441 
     | 
    
         
            -
                assert_next_lexeme :tSTRING_CONTENT,   ")",     
     | 
| 
       442 
     | 
    
         
            -
                assert_next_lexeme :tSTRING_END,       ")",     
     | 
| 
      
 444 
     | 
    
         
            +
                assert_next_lexeme :tSTRING_CONTENT,   ")",    EXPR_BEG, 0, 0
         
     | 
| 
      
 445 
     | 
    
         
            +
                assert_next_lexeme :tSTRING_END,       ")",    EXPR_END, 0, 0
         
     | 
| 
       443 
446 
     | 
    
         | 
| 
       444 
447 
     | 
    
         
             
                refute_lexeme
         
     | 
| 
       445 
448 
     | 
    
         
             
              end
         
     | 
| 
         @@ -447,11 +450,11 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       447 
450 
     | 
    
         
             
              def test_yylex_method_parens_chevron
         
     | 
| 
       448 
451 
     | 
    
         
             
                assert_lex("a()<<1",
         
     | 
| 
       449 
452 
     | 
    
         
             
                           s(:call, s(:call, nil, :a), :<<, s(:lit, 1)),
         
     | 
| 
       450 
     | 
    
         
            -
                           :tIDENTIFIER, "a",    
     | 
| 
       451 
     | 
    
         
            -
                           :tLPAREN2,    "(", 
     | 
| 
       452 
     | 
    
         
            -
                           :tRPAREN,     ")",    
     | 
| 
       453 
     | 
    
         
            -
                           :tLSHFT,      "<<" ,  
     | 
| 
       454 
     | 
    
         
            -
                           :tINTEGER,    1, 
     | 
| 
      
 453 
     | 
    
         
            +
                           :tIDENTIFIER, "a",   EXPR_CMDARG, 0, 0,
         
     | 
| 
      
 454 
     | 
    
         
            +
                           :tLPAREN2,    "(",    EXPR_PAR,    1, 0,
         
     | 
| 
      
 455 
     | 
    
         
            +
                           :tRPAREN,     ")",   EXPR_ENDFN,  0, 0,
         
     | 
| 
      
 456 
     | 
    
         
            +
                           :tLSHFT,      "<<" , EXPR_BEG,    0, 0,
         
     | 
| 
      
 457 
     | 
    
         
            +
                           :tINTEGER,    1,      EXPR_NUM,    0, 0)
         
     | 
| 
       455 
458 
     | 
    
         
             
              end
         
     | 
| 
       456 
459 
     | 
    
         | 
| 
       457 
460 
     | 
    
         
             
              def test_yylex_lambda_args__20
         
     | 
| 
         @@ -461,12 +464,12 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       461 
464 
     | 
    
         
             
                           s(:iter, s(:call, nil, :lambda),
         
     | 
| 
       462 
465 
     | 
    
         
             
                             s(:args, :a)),
         
     | 
| 
       463 
466 
     | 
    
         | 
| 
       464 
     | 
    
         
            -
                           :tLAMBDA,     nil,  
     | 
| 
       465 
     | 
    
         
            -
                           :tLPAREN2,    "(", 
     | 
| 
       466 
     | 
    
         
            -
                           :tIDENTIFIER, "a",  
     | 
| 
       467 
     | 
    
         
            -
                           :tRPAREN,     ")",  
     | 
| 
       468 
     | 
    
         
            -
                           :tLCURLY,     "{", 
     | 
| 
       469 
     | 
    
         
            -
                           :tRCURLY,     "}",  
     | 
| 
      
 467 
     | 
    
         
            +
                           :tLAMBDA,     nil, EXPR_ENDFN,  0, 0,
         
     | 
| 
      
 468 
     | 
    
         
            +
                           :tLPAREN2,    "(",  EXPR_PAR,    1, 0,
         
     | 
| 
      
 469 
     | 
    
         
            +
                           :tIDENTIFIER, "a", EXPR_ARG,    1, 0,
         
     | 
| 
      
 470 
     | 
    
         
            +
                           :tRPAREN,     ")", EXPR_ENDFN,  0, 0,
         
     | 
| 
      
 471 
     | 
    
         
            +
                           :tLCURLY,     "{",  EXPR_PAR,    0, 1,
         
     | 
| 
      
 472 
     | 
    
         
            +
                           :tRCURLY,     "}", EXPR_ENDARG, 0, 0)
         
     | 
| 
       470 
473 
     | 
    
         
             
              end
         
     | 
| 
       471 
474 
     | 
    
         | 
| 
       472 
475 
     | 
    
         
             
              def test_yylex_lambda_as_args_with_block__20
         
     | 
| 
         @@ -474,12 +477,12 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       474 
477 
     | 
    
         | 
| 
       475 
478 
     | 
    
         
             
                assert_lex3("a -> do end do end",
         
     | 
| 
       476 
479 
     | 
    
         
             
                            nil,
         
     | 
| 
       477 
     | 
    
         
            -
                            :tIDENTIFIER, "a",    
     | 
| 
       478 
     | 
    
         
            -
                            :tLAMBDA,     nil,    
     | 
| 
       479 
     | 
    
         
            -
                            :kDO,         "do",   
     | 
| 
       480 
     | 
    
         
            -
                            :kEND,        "end",  
     | 
| 
       481 
     | 
    
         
            -
                            :kDO,         "do",   
     | 
| 
       482 
     | 
    
         
            -
                            :kEND,        "end",  
     | 
| 
      
 480 
     | 
    
         
            +
                            :tIDENTIFIER, "a",   EXPR_CMDARG,
         
     | 
| 
      
 481 
     | 
    
         
            +
                            :tLAMBDA,     nil,   EXPR_ENDFN,
         
     | 
| 
      
 482 
     | 
    
         
            +
                            :kDO,         "do",  EXPR_BEG,
         
     | 
| 
      
 483 
     | 
    
         
            +
                            :kEND,        "end", EXPR_END,
         
     | 
| 
      
 484 
     | 
    
         
            +
                            :kDO,         "do",  EXPR_BEG,
         
     | 
| 
      
 485 
     | 
    
         
            +
                            :kEND,        "end", EXPR_END)
         
     | 
| 
       483 
486 
     | 
    
         
             
              end
         
     | 
| 
       484 
487 
     | 
    
         | 
| 
       485 
488 
     | 
    
         
             
              def test_yylex_lambda_args_opt__20
         
     | 
| 
         @@ -489,14 +492,14 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       489 
492 
     | 
    
         
             
                           s(:iter, s(:call, nil, :lambda),
         
     | 
| 
       490 
493 
     | 
    
         
             
                             s(:args, s(:lasgn, :a, s(:nil)))),
         
     | 
| 
       491 
494 
     | 
    
         | 
| 
       492 
     | 
    
         
            -
                           :tLAMBDA,     nil,  
     | 
| 
       493 
     | 
    
         
            -
                           :tLPAREN2,    "(", 
     | 
| 
       494 
     | 
    
         
            -
                           :tIDENTIFIER, "a",  
     | 
| 
       495 
     | 
    
         
            -
                           :tEQL,        "=",  
     | 
| 
       496 
     | 
    
         
            -
                           :kNIL,        "nil",  
     | 
| 
       497 
     | 
    
         
            -
                           :tRPAREN,     ")",  
     | 
| 
       498 
     | 
    
         
            -
                           :tLCURLY,     "{", 
     | 
| 
       499 
     | 
    
         
            -
                           :tRCURLY,     "}",  
     | 
| 
      
 495 
     | 
    
         
            +
                           :tLAMBDA,     nil, EXPR_ENDFN,  0, 0,
         
     | 
| 
      
 496 
     | 
    
         
            +
                           :tLPAREN2,    "(",  EXPR_PAR,    1, 0,
         
     | 
| 
      
 497 
     | 
    
         
            +
                           :tIDENTIFIER, "a", EXPR_ARG,    1, 0,
         
     | 
| 
      
 498 
     | 
    
         
            +
                           :tEQL,        "=", EXPR_BEG,    1, 0,
         
     | 
| 
      
 499 
     | 
    
         
            +
                           :kNIL,        "nil", EXPR_END,    1, 0,
         
     | 
| 
      
 500 
     | 
    
         
            +
                           :tRPAREN,     ")", EXPR_ENDFN,  0, 0,
         
     | 
| 
      
 501 
     | 
    
         
            +
                           :tLCURLY,     "{",  EXPR_PAR,    0, 1,
         
     | 
| 
      
 502 
     | 
    
         
            +
                           :tRCURLY,     "}", EXPR_ENDARG, 0, 0)
         
     | 
| 
       500 
503 
     | 
    
         
             
              end
         
     | 
| 
       501 
504 
     | 
    
         | 
| 
       502 
505 
     | 
    
         
             
              def test_yylex_lambda_hash__20
         
     | 
| 
         @@ -506,15 +509,15 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       506 
509 
     | 
    
         
             
                           s(:iter, s(:call, nil, :lambda),
         
     | 
| 
       507 
510 
     | 
    
         
             
                             s(:args, s(:lasgn, :a, s(:hash)))),
         
     | 
| 
       508 
511 
     | 
    
         | 
| 
       509 
     | 
    
         
            -
                           :tLAMBDA,     nil,  
     | 
| 
       510 
     | 
    
         
            -
                           :tLPAREN2,    "(", 
     | 
| 
       511 
     | 
    
         
            -
                           :tIDENTIFIER, "a",  
     | 
| 
       512 
     | 
    
         
            -
                           :tEQL,        "=",  
     | 
| 
       513 
     | 
    
         
            -
                           :tLBRACE,     "{", 
     | 
| 
       514 
     | 
    
         
            -
                           :tRCURLY,     "}",  
     | 
| 
       515 
     | 
    
         
            -
                           :tRPAREN,     ")",  
     | 
| 
       516 
     | 
    
         
            -
                           :tLCURLY,     "{", 
     | 
| 
       517 
     | 
    
         
            -
                           :tRCURLY,     "}",  
     | 
| 
      
 512 
     | 
    
         
            +
                           :tLAMBDA,     nil, EXPR_ENDFN,  0, 0,
         
     | 
| 
      
 513 
     | 
    
         
            +
                           :tLPAREN2,    "(",  EXPR_PAR,    1, 0,
         
     | 
| 
      
 514 
     | 
    
         
            +
                           :tIDENTIFIER, "a", EXPR_ARG,    1, 0,
         
     | 
| 
      
 515 
     | 
    
         
            +
                           :tEQL,        "=", EXPR_BEG,    1, 0,
         
     | 
| 
      
 516 
     | 
    
         
            +
                           :tLBRACE,     "{",  EXPR_PAR,    1, 1,
         
     | 
| 
      
 517 
     | 
    
         
            +
                           :tRCURLY,     "}", EXPR_ENDARG, 1, 0,
         
     | 
| 
      
 518 
     | 
    
         
            +
                           :tRPAREN,     ")", EXPR_ENDFN,  0, 0,
         
     | 
| 
      
 519 
     | 
    
         
            +
                           :tLCURLY,     "{",  EXPR_PAR,    0, 1,
         
     | 
| 
      
 520 
     | 
    
         
            +
                           :tRCURLY,     "}", EXPR_ENDARG, 0, 0)
         
     | 
| 
       518 
521 
     | 
    
         
             
              end
         
     | 
| 
       519 
522 
     | 
    
         | 
| 
       520 
523 
     | 
    
         
             
              def test_yylex_iter_array_curly
         
     | 
| 
         @@ -523,19 +526,19 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       523 
526 
     | 
    
         
             
                             s(:call, nil, :f, s(:lit, :a), s(:array, s(:lit, :b))),
         
     | 
| 
       524 
527 
     | 
    
         
             
                             s(:args, :c, :d)),
         
     | 
| 
       525 
528 
     | 
    
         | 
| 
       526 
     | 
    
         
            -
                           :tIDENTIFIER, "f",  
     | 
| 
       527 
     | 
    
         
            -
                           :tSYMBOL,     "a",  
     | 
| 
       528 
     | 
    
         
            -
                           :tCOMMA,      ",", 
     | 
| 
       529 
     | 
    
         
            -
                           :tLBRACK,     "[", 
     | 
| 
       530 
     | 
    
         
            -
                           :tSYMBOL,     "b",  
     | 
| 
       531 
     | 
    
         
            -
                           :tRBRACK,     "]",  
     | 
| 
       532 
     | 
    
         
            -
                           :tLBRACE_ARG, "{",  
     | 
| 
       533 
     | 
    
         
            -
                           :tPIPE,       "|", 
     | 
| 
       534 
     | 
    
         
            -
                           :tIDENTIFIER, "c",  
     | 
| 
       535 
     | 
    
         
            -
                           :tCOMMA,      ",", 
     | 
| 
       536 
     | 
    
         
            -
                           :tIDENTIFIER, "d",  
     | 
| 
       537 
     | 
    
         
            -
                           :tPIPE,       "|", 
     | 
| 
       538 
     | 
    
         
            -
                           :tRCURLY,     "}",  
     | 
| 
      
 529 
     | 
    
         
            +
                           :tIDENTIFIER, "f", EXPR_CMDARG, 0, 0,
         
     | 
| 
      
 530 
     | 
    
         
            +
                           :tSYMBOL,     "a", EXPR_END,    0, 0,
         
     | 
| 
      
 531 
     | 
    
         
            +
                           :tCOMMA,      ",",  EXPR_PAR,    0, 0,
         
     | 
| 
      
 532 
     | 
    
         
            +
                           :tLBRACK,     "[",  EXPR_PAR,    1, 0,
         
     | 
| 
      
 533 
     | 
    
         
            +
                           :tSYMBOL,     "b", EXPR_END,    1, 0,
         
     | 
| 
      
 534 
     | 
    
         
            +
                           :tRBRACK,     "]", EXPR_ENDARG, 0, 0,
         
     | 
| 
      
 535 
     | 
    
         
            +
                           :tLBRACE_ARG, "{", EXPR_BEG,    0, 1,
         
     | 
| 
      
 536 
     | 
    
         
            +
                           :tPIPE,       "|",  EXPR_PAR,    0, 1,
         
     | 
| 
      
 537 
     | 
    
         
            +
                           :tIDENTIFIER, "c", EXPR_ARG,    0, 1,
         
     | 
| 
      
 538 
     | 
    
         
            +
                           :tCOMMA,      ",",  EXPR_PAR,    0, 1,
         
     | 
| 
      
 539 
     | 
    
         
            +
                           :tIDENTIFIER, "d", EXPR_ARG,    0, 1,
         
     | 
| 
      
 540 
     | 
    
         
            +
                           :tPIPE,       "|",  EXPR_PAR,    0, 1,
         
     | 
| 
      
 541 
     | 
    
         
            +
                           :tRCURLY,     "}", EXPR_ENDARG, 0, 0)
         
     | 
| 
       539 
542 
     | 
    
         
             
              end
         
     | 
| 
       540 
543 
     | 
    
         | 
| 
       541 
544 
     | 
    
         
             
              def test_yylex_const_call_same_name
         
     | 
| 
         @@ -547,18 +550,18 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       547 
550 
     | 
    
         
             
                               0,
         
     | 
| 
       548 
551 
     | 
    
         
             
                               s(:call, nil, :f, s(:lit, :c)))),
         
     | 
| 
       549 
552 
     | 
    
         | 
| 
       550 
     | 
    
         
            -
                           :tCONSTANT,   "X",  
     | 
| 
       551 
     | 
    
         
            -
                           :tEQL,        "=",  
     | 
| 
       552 
     | 
    
         
            -
                           :tIDENTIFIER, "a",  
     | 
| 
       553 
     | 
    
         
            -
                           :tLCURLY,     "{", 
     | 
| 
       554 
     | 
    
         
            -
                           :tRCURLY,     "}",  
     | 
| 
       555 
     | 
    
         
            -
                           :tSEMI,       ";",  
     | 
| 
      
 553 
     | 
    
         
            +
                           :tCONSTANT,   "X", EXPR_CMDARG, 0, 0,
         
     | 
| 
      
 554 
     | 
    
         
            +
                           :tEQL,        "=", EXPR_BEG,    0, 0,
         
     | 
| 
      
 555 
     | 
    
         
            +
                           :tIDENTIFIER, "a", EXPR_ARG,    0, 0,
         
     | 
| 
      
 556 
     | 
    
         
            +
                           :tLCURLY,     "{",  EXPR_PAR,    0, 1,
         
     | 
| 
      
 557 
     | 
    
         
            +
                           :tRCURLY,     "}", EXPR_ENDARG, 0, 0,
         
     | 
| 
      
 558 
     | 
    
         
            +
                           :tSEMI,       ";", EXPR_BEG,    0, 0,
         
     | 
| 
       556 
559 
     | 
    
         | 
| 
       557 
     | 
    
         
            -
                           :tIDENTIFIER, "b",  
     | 
| 
       558 
     | 
    
         
            -
                           :tLCURLY,     "{", 
     | 
| 
       559 
     | 
    
         
            -
                           :tIDENTIFIER, "f",  
     | 
| 
       560 
     | 
    
         
            -
                           :tSYMBOL,     "c",  
     | 
| 
       561 
     | 
    
         
            -
                           :tRCURLY,     "}",  
     | 
| 
      
 560 
     | 
    
         
            +
                           :tIDENTIFIER, "b", EXPR_CMDARG, 0, 0,
         
     | 
| 
      
 561 
     | 
    
         
            +
                           :tLCURLY,     "{",  EXPR_PAR,    0, 1,
         
     | 
| 
      
 562 
     | 
    
         
            +
                           :tIDENTIFIER, "f", EXPR_CMDARG, 0, 1, # different
         
     | 
| 
      
 563 
     | 
    
         
            +
                           :tSYMBOL,     "c", EXPR_END,    0, 1,
         
     | 
| 
      
 564 
     | 
    
         
            +
                           :tRCURLY,     "}", EXPR_ENDARG, 0, 0)
         
     | 
| 
       562 
565 
     | 
    
         | 
| 
       563 
566 
     | 
    
         
             
                assert_lex("X = a { }; b { X :c }",
         
     | 
| 
       564 
567 
     | 
    
         
             
                           s(:block,
         
     | 
| 
         @@ -568,18 +571,18 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       568 
571 
     | 
    
         
             
                               0,
         
     | 
| 
       569 
572 
     | 
    
         
             
                               s(:call, nil, :X, s(:lit, :c)))),
         
     | 
| 
       570 
573 
     | 
    
         | 
| 
       571 
     | 
    
         
            -
                           :tCONSTANT,   "X",  
     | 
| 
       572 
     | 
    
         
            -
                           :tEQL,        "=",  
     | 
| 
       573 
     | 
    
         
            -
                           :tIDENTIFIER, "a",  
     | 
| 
       574 
     | 
    
         
            -
                           :tLCURLY,     "{", 
     | 
| 
       575 
     | 
    
         
            -
                           :tRCURLY,     "}",  
     | 
| 
       576 
     | 
    
         
            -
                           :tSEMI,       ";",  
     | 
| 
      
 574 
     | 
    
         
            +
                           :tCONSTANT,   "X", EXPR_CMDARG, 0, 0,
         
     | 
| 
      
 575 
     | 
    
         
            +
                           :tEQL,        "=", EXPR_BEG,    0, 0,
         
     | 
| 
      
 576 
     | 
    
         
            +
                           :tIDENTIFIER, "a", EXPR_ARG,    0, 0,
         
     | 
| 
      
 577 
     | 
    
         
            +
                           :tLCURLY,     "{",  EXPR_PAR,    0, 1,
         
     | 
| 
      
 578 
     | 
    
         
            +
                           :tRCURLY,     "}", EXPR_ENDARG, 0, 0,
         
     | 
| 
      
 579 
     | 
    
         
            +
                           :tSEMI,       ";", EXPR_BEG,    0, 0,
         
     | 
| 
       577 
580 
     | 
    
         | 
| 
       578 
     | 
    
         
            -
                           :tIDENTIFIER, "b",  
     | 
| 
       579 
     | 
    
         
            -
                           :tLCURLY,     "{", 
     | 
| 
       580 
     | 
    
         
            -
                           :tCONSTANT,   "X",  
     | 
| 
       581 
     | 
    
         
            -
                           :tSYMBOL,     "c",  
     | 
| 
       582 
     | 
    
         
            -
                           :tRCURLY,     "}",  
     | 
| 
      
 581 
     | 
    
         
            +
                           :tIDENTIFIER, "b", EXPR_CMDARG, 0, 0,
         
     | 
| 
      
 582 
     | 
    
         
            +
                           :tLCURLY,     "{",  EXPR_PAR,    0, 1,
         
     | 
| 
      
 583 
     | 
    
         
            +
                           :tCONSTANT,   "X", EXPR_CMDARG, 0, 1, # same
         
     | 
| 
      
 584 
     | 
    
         
            +
                           :tSYMBOL,     "c", EXPR_END,    0, 1,
         
     | 
| 
      
 585 
     | 
    
         
            +
                           :tRCURLY,     "}", EXPR_ENDARG, 0, 0)
         
     | 
| 
       583 
586 
     | 
    
         
             
              end
         
     | 
| 
       584 
587 
     | 
    
         | 
| 
       585 
588 
     | 
    
         
             
              def test_yylex_lasgn_call_same_name
         
     | 
| 
         @@ -588,47 +591,47 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       588 
591 
     | 
    
         
             
                             s(:call, s(:call, nil, :b), :c,
         
     | 
| 
       589 
592 
     | 
    
         
             
                               s(:hash, s(:lit, :d), s(:lit, 1)))),
         
     | 
| 
       590 
593 
     | 
    
         | 
| 
       591 
     | 
    
         
            -
                           :tIDENTIFIER, "a",  
     | 
| 
       592 
     | 
    
         
            -
                           :tEQL,        "=",  
     | 
| 
       593 
     | 
    
         
            -
                           :tIDENTIFIER, "b",  
     | 
| 
       594 
     | 
    
         
            -
                           :tDOT,        ".",  
     | 
| 
       595 
     | 
    
         
            -
                           :tIDENTIFIER, "c",  
     | 
| 
       596 
     | 
    
         
            -
                           :tSYMBOL,     "d",  
     | 
| 
       597 
     | 
    
         
            -
                           :tASSOC,      "=>",  
     | 
| 
       598 
     | 
    
         
            -
                           :tINTEGER,      1, 
     | 
| 
      
 594 
     | 
    
         
            +
                           :tIDENTIFIER, "a", EXPR_CMDARG, 0, 0,
         
     | 
| 
      
 595 
     | 
    
         
            +
                           :tEQL,        "=", EXPR_BEG,    0, 0,
         
     | 
| 
      
 596 
     | 
    
         
            +
                           :tIDENTIFIER, "b", EXPR_ARG,    0, 0,
         
     | 
| 
      
 597 
     | 
    
         
            +
                           :tDOT,        ".", EXPR_DOT,    0, 0,
         
     | 
| 
      
 598 
     | 
    
         
            +
                           :tIDENTIFIER, "c", EXPR_ARG,    0, 0, # different
         
     | 
| 
      
 599 
     | 
    
         
            +
                           :tSYMBOL,     "d", EXPR_END,    0, 0,
         
     | 
| 
      
 600 
     | 
    
         
            +
                           :tASSOC,      "=>", EXPR_BEG,   0, 0,
         
     | 
| 
      
 601 
     | 
    
         
            +
                           :tINTEGER,      1,  EXPR_NUM,    0, 0)
         
     | 
| 
       599 
602 
     | 
    
         | 
| 
       600 
603 
     | 
    
         
             
                assert_lex("a = b.a :d => 1",
         
     | 
| 
       601 
604 
     | 
    
         
             
                           s(:lasgn, :a,
         
     | 
| 
       602 
605 
     | 
    
         
             
                             s(:call, s(:call, nil, :b), :a,
         
     | 
| 
       603 
606 
     | 
    
         
             
                               s(:hash, s(:lit, :d), s(:lit, 1)))),
         
     | 
| 
       604 
607 
     | 
    
         | 
| 
       605 
     | 
    
         
            -
                           :tIDENTIFIER, "a",  
     | 
| 
       606 
     | 
    
         
            -
                           :tEQL,        "=",  
     | 
| 
       607 
     | 
    
         
            -
                           :tIDENTIFIER, "b",  
     | 
| 
       608 
     | 
    
         
            -
                           :tDOT,        ".",  
     | 
| 
       609 
     | 
    
         
            -
                           :tIDENTIFIER, "a",  
     | 
| 
       610 
     | 
    
         
            -
                           :tSYMBOL,     "d",  
     | 
| 
       611 
     | 
    
         
            -
                           :tASSOC,      "=>",  
     | 
| 
       612 
     | 
    
         
            -
                           :tINTEGER,      1, 
     | 
| 
      
 608 
     | 
    
         
            +
                           :tIDENTIFIER, "a", EXPR_CMDARG, 0, 0,
         
     | 
| 
      
 609 
     | 
    
         
            +
                           :tEQL,        "=", EXPR_BEG,    0, 0,
         
     | 
| 
      
 610 
     | 
    
         
            +
                           :tIDENTIFIER, "b", EXPR_ARG,    0, 0,
         
     | 
| 
      
 611 
     | 
    
         
            +
                           :tDOT,        ".", EXPR_DOT,    0, 0,
         
     | 
| 
      
 612 
     | 
    
         
            +
                           :tIDENTIFIER, "a", EXPR_ARG,    0, 0, # same as lvar
         
     | 
| 
      
 613 
     | 
    
         
            +
                           :tSYMBOL,     "d", EXPR_END,    0, 0,
         
     | 
| 
      
 614 
     | 
    
         
            +
                           :tASSOC,      "=>", EXPR_BEG,   0, 0,
         
     | 
| 
      
 615 
     | 
    
         
            +
                           :tINTEGER,      1,  EXPR_NUM,    0, 0)
         
     | 
| 
       613 
616 
     | 
    
         
             
              end
         
     | 
| 
       614 
617 
     | 
    
         | 
| 
       615 
618 
     | 
    
         
             
              def test_yylex_back_ref
         
     | 
| 
       616 
619 
     | 
    
         
             
                assert_lex3("[$&, $`, $', $+]",
         
     | 
| 
       617 
620 
     | 
    
         
             
                            nil,
         
     | 
| 
       618 
     | 
    
         
            -
                            :tLBRACK,   "[", 
     | 
| 
       619 
     | 
    
         
            -
                            :tBACK_REF, :&,    
     | 
| 
       620 
     | 
    
         
            -
                            :tBACK_REF, :"`",  
     | 
| 
       621 
     | 
    
         
            -
                            :tBACK_REF, :"'",  
     | 
| 
       622 
     | 
    
         
            -
                            :tBACK_REF, :+,    
     | 
| 
       623 
     | 
    
         
            -
                            :tRBRACK,   "]",   
     | 
| 
      
 621 
     | 
    
         
            +
                            :tLBRACK,   "[",   EXPR_PAR,
         
     | 
| 
      
 622 
     | 
    
         
            +
                            :tBACK_REF, :&,   EXPR_END, :tCOMMA, ",", EXPR_PAR,
         
     | 
| 
      
 623 
     | 
    
         
            +
                            :tBACK_REF, :"`", EXPR_END, :tCOMMA, ",", EXPR_PAR,
         
     | 
| 
      
 624 
     | 
    
         
            +
                            :tBACK_REF, :"'", EXPR_END, :tCOMMA, ",", EXPR_PAR,
         
     | 
| 
      
 625 
     | 
    
         
            +
                            :tBACK_REF, :+,   EXPR_END,
         
     | 
| 
      
 626 
     | 
    
         
            +
                            :tRBRACK,   "]",  EXPR_ENDARG)
         
     | 
| 
       624 
627 
     | 
    
         
             
              end
         
     | 
| 
       625 
628 
     | 
    
         | 
| 
       626 
629 
     | 
    
         
             
              def test_yylex_backslash
         
     | 
| 
       627 
630 
     | 
    
         
             
                assert_lex3("1 \\\n+ 2",
         
     | 
| 
       628 
631 
     | 
    
         
             
                            nil,
         
     | 
| 
       629 
     | 
    
         
            -
                            :tINTEGER, 1, 
     | 
| 
       630 
     | 
    
         
            -
                            :tPLUS,    "+",  
     | 
| 
       631 
     | 
    
         
            -
                            :tINTEGER, 2, 
     | 
| 
      
 632 
     | 
    
         
            +
                            :tINTEGER, 1,    EXPR_NUM,
         
     | 
| 
      
 633 
     | 
    
         
            +
                            :tPLUS,    "+", EXPR_BEG,
         
     | 
| 
      
 634 
     | 
    
         
            +
                            :tINTEGER, 2,    EXPR_NUM)
         
     | 
| 
       632 
635 
     | 
    
         
             
              end
         
     | 
| 
       633 
636 
     | 
    
         | 
| 
       634 
637 
     | 
    
         
             
              def test_yylex_backslash_bad
         
     | 
| 
         @@ -638,37 +641,37 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       638 
641 
     | 
    
         
             
              def test_yylex_backtick
         
     | 
| 
       639 
642 
     | 
    
         
             
                assert_lex3("`ls`",
         
     | 
| 
       640 
643 
     | 
    
         
             
                            nil,
         
     | 
| 
       641 
     | 
    
         
            -
                            :tXSTRING_BEG,    "`",   
     | 
| 
       642 
     | 
    
         
            -
                            :tSTRING_CONTENT, "ls",  
     | 
| 
       643 
     | 
    
         
            -
                            :tSTRING_END,     "`",   
     | 
| 
      
 644 
     | 
    
         
            +
                            :tXSTRING_BEG,    "`",  EXPR_BEG,
         
     | 
| 
      
 645 
     | 
    
         
            +
                            :tSTRING_CONTENT, "ls", EXPR_BEG,
         
     | 
| 
      
 646 
     | 
    
         
            +
                            :tSTRING_END,     "`",  EXPR_END)
         
     | 
| 
       644 
647 
     | 
    
         
             
              end
         
     | 
| 
       645 
648 
     | 
    
         | 
| 
       646 
649 
     | 
    
         
             
              def test_yylex_backtick_cmdarg
         
     | 
| 
       647 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 650 
     | 
    
         
            +
                self.lex_state = EXPR_DOT
         
     | 
| 
       648 
651 
     | 
    
         | 
| 
       649 
652 
     | 
    
         
             
                # \n ensures expr_cmd (TODO: why?)
         
     | 
| 
       650 
     | 
    
         
            -
                assert_lex3("\n`", nil, :tBACK_REF2, "`",  
     | 
| 
      
 653 
     | 
    
         
            +
                assert_lex3("\n`", nil, :tBACK_REF2, "`", EXPR_CMDARG)
         
     | 
| 
       651 
654 
     | 
    
         
             
              end
         
     | 
| 
       652 
655 
     | 
    
         | 
| 
       653 
656 
     | 
    
         
             
              def test_yylex_backtick_dot
         
     | 
| 
       654 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 657 
     | 
    
         
            +
                self.lex_state = EXPR_DOT
         
     | 
| 
       655 
658 
     | 
    
         | 
| 
       656 
659 
     | 
    
         
             
                assert_lex3("a.`(3)",
         
     | 
| 
       657 
660 
     | 
    
         
             
                            nil,
         
     | 
| 
       658 
     | 
    
         
            -
                            :tIDENTIFIER, "a",  
     | 
| 
       659 
     | 
    
         
            -
                            :tDOT,        ".",  
     | 
| 
       660 
     | 
    
         
            -
                            :tBACK_REF2,  "`",  
     | 
| 
       661 
     | 
    
         
            -
                            :tLPAREN2,    "(", 
     | 
| 
       662 
     | 
    
         
            -
                            :tINTEGER,    3, 
     | 
| 
       663 
     | 
    
         
            -
                            :tRPAREN,     ")",  
     | 
| 
      
 661 
     | 
    
         
            +
                            :tIDENTIFIER, "a", EXPR_CMDARG,
         
     | 
| 
      
 662 
     | 
    
         
            +
                            :tDOT,        ".", EXPR_DOT,
         
     | 
| 
      
 663 
     | 
    
         
            +
                            :tBACK_REF2,  "`", EXPR_ARG,
         
     | 
| 
      
 664 
     | 
    
         
            +
                            :tLPAREN2,    "(",  EXPR_PAR,
         
     | 
| 
      
 665 
     | 
    
         
            +
                            :tINTEGER,    3,    EXPR_NUM,
         
     | 
| 
      
 666 
     | 
    
         
            +
                            :tRPAREN,     ")", EXPR_ENDFN)
         
     | 
| 
       664 
667 
     | 
    
         
             
              end
         
     | 
| 
       665 
668 
     | 
    
         | 
| 
       666 
669 
     | 
    
         
             
              def test_yylex_backtick_method
         
     | 
| 
       667 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 670 
     | 
    
         
            +
                self.lex_state = EXPR_FNAME
         
     | 
| 
       668 
671 
     | 
    
         | 
| 
       669 
672 
     | 
    
         
             
                assert_lex3("`",
         
     | 
| 
       670 
673 
     | 
    
         
             
                            nil,
         
     | 
| 
       671 
     | 
    
         
            -
                            :tBACK_REF2, "`",  
     | 
| 
      
 674 
     | 
    
         
            +
                            :tBACK_REF2, "`", EXPR_END)
         
     | 
| 
       672 
675 
     | 
    
         
             
              end
         
     | 
| 
       673 
676 
     | 
    
         | 
| 
       674 
677 
     | 
    
         
             
              def test_yylex_bad_char
         
     | 
| 
         @@ -676,24 +679,24 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       676 
679 
     | 
    
         
             
              end
         
     | 
| 
       677 
680 
     | 
    
         | 
| 
       678 
681 
     | 
    
         
             
              def test_yylex_bang
         
     | 
| 
       679 
     | 
    
         
            -
                assert_lex3("!", nil, :tBANG, "!",  
     | 
| 
      
 682 
     | 
    
         
            +
                assert_lex3("!", nil, :tBANG, "!", EXPR_BEG)
         
     | 
| 
       680 
683 
     | 
    
         
             
              end
         
     | 
| 
       681 
684 
     | 
    
         | 
| 
       682 
685 
     | 
    
         
             
              def test_yylex_bang_equals
         
     | 
| 
       683 
     | 
    
         
            -
                assert_lex3("!=", nil, :tNEQ, "!=",  
     | 
| 
      
 686 
     | 
    
         
            +
                assert_lex3("!=", nil, :tNEQ, "!=", EXPR_BEG)
         
     | 
| 
       684 
687 
     | 
    
         
             
              end
         
     | 
| 
       685 
688 
     | 
    
         | 
| 
       686 
689 
     | 
    
         
             
              def test_yylex_bang_tilde
         
     | 
| 
       687 
     | 
    
         
            -
                assert_lex3("!~", nil, :tNMATCH, "!~",  
     | 
| 
      
 690 
     | 
    
         
            +
                assert_lex3("!~", nil, :tNMATCH, "!~", EXPR_BEG)
         
     | 
| 
       688 
691 
     | 
    
         
             
              end
         
     | 
| 
       689 
692 
     | 
    
         | 
| 
       690 
693 
     | 
    
         
             
              def test_yylex_block_bug_1
         
     | 
| 
       691 
694 
     | 
    
         
             
                assert_lex3("a do end",
         
     | 
| 
       692 
695 
     | 
    
         
             
                            s(:iter, s(:call, nil, :a), 0),
         
     | 
| 
       693 
696 
     | 
    
         | 
| 
       694 
     | 
    
         
            -
                            :tIDENTIFIER, "a",    
     | 
| 
       695 
     | 
    
         
            -
                            :kDO,         "do",   
     | 
| 
       696 
     | 
    
         
            -
                            :kEND,        "end",  
     | 
| 
      
 697 
     | 
    
         
            +
                            :tIDENTIFIER, "a",   EXPR_CMDARG,
         
     | 
| 
      
 698 
     | 
    
         
            +
                            :kDO,         "do",  EXPR_BEG,
         
     | 
| 
      
 699 
     | 
    
         
            +
                            :kEND,        "end", EXPR_END)
         
     | 
| 
       697 
700 
     | 
    
         
             
              end
         
     | 
| 
       698 
701 
     | 
    
         | 
| 
       699 
702 
     | 
    
         
             
              def test_yylex_block_bug_2
         
     | 
| 
         @@ -702,70 +705,70 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       702 
705 
     | 
    
         
             
                              s(:lasgn, :a, s(:lit, 1)),
         
     | 
| 
       703 
706 
     | 
    
         
             
                              s(:iter, s(:call, nil, :a), 0)),
         
     | 
| 
       704 
707 
     | 
    
         | 
| 
       705 
     | 
    
         
            -
                            :tIDENTIFIER, "a",    
     | 
| 
       706 
     | 
    
         
            -
                            :tEQL,        "=",    
     | 
| 
       707 
     | 
    
         
            -
                            :tINTEGER,    1, 
     | 
| 
       708 
     | 
    
         
            -
                            :tNL,         nil,    
     | 
| 
       709 
     | 
    
         
            -
                            :tIDENTIFIER, "a",    
     | 
| 
       710 
     | 
    
         
            -
                            :kDO,         "do",   
     | 
| 
       711 
     | 
    
         
            -
                            :kEND,        "end",  
     | 
| 
      
 708 
     | 
    
         
            +
                            :tIDENTIFIER, "a",   EXPR_CMDARG,
         
     | 
| 
      
 709 
     | 
    
         
            +
                            :tEQL,        "=",   EXPR_BEG,
         
     | 
| 
      
 710 
     | 
    
         
            +
                            :tINTEGER,    1,      EXPR_NUM,
         
     | 
| 
      
 711 
     | 
    
         
            +
                            :tNL,         nil,   EXPR_BEG,
         
     | 
| 
      
 712 
     | 
    
         
            +
                            :tIDENTIFIER, "a",   EXPR_CMDARG,
         
     | 
| 
      
 713 
     | 
    
         
            +
                            :kDO,         "do",  EXPR_BEG,
         
     | 
| 
      
 714 
     | 
    
         
            +
                            :kEND,        "end", EXPR_END)
         
     | 
| 
       712 
715 
     | 
    
         
             
              end
         
     | 
| 
       713 
716 
     | 
    
         | 
| 
       714 
717 
     | 
    
         
             
              def test_yylex_block_bug_3
         
     | 
| 
       715 
718 
     | 
    
         
             
                assert_lex3("a { }",
         
     | 
| 
       716 
719 
     | 
    
         
             
                            s(:iter, s(:call, nil, :a), 0),
         
     | 
| 
       717 
720 
     | 
    
         | 
| 
       718 
     | 
    
         
            -
                            :tIDENTIFIER, "a",  
     | 
| 
       719 
     | 
    
         
            -
                            :tLCURLY,     "{", 
     | 
| 
       720 
     | 
    
         
            -
                            :tRCURLY,     "}",  
     | 
| 
      
 721 
     | 
    
         
            +
                            :tIDENTIFIER, "a", EXPR_CMDARG, # verified
         
     | 
| 
      
 722 
     | 
    
         
            +
                            :tLCURLY,     "{",  EXPR_PAR,
         
     | 
| 
      
 723 
     | 
    
         
            +
                            :tRCURLY,     "}", EXPR_ENDARG)
         
     | 
| 
       721 
724 
     | 
    
         
             
              end
         
     | 
| 
       722 
725 
     | 
    
         | 
| 
       723 
726 
     | 
    
         
             
              def test_yylex_carat
         
     | 
| 
       724 
     | 
    
         
            -
                assert_lex3("^", nil, :tCARET, "^",  
     | 
| 
      
 727 
     | 
    
         
            +
                assert_lex3("^", nil, :tCARET, "^", EXPR_BEG)
         
     | 
| 
       725 
728 
     | 
    
         
             
              end
         
     | 
| 
       726 
729 
     | 
    
         | 
| 
       727 
730 
     | 
    
         
             
              def test_yylex_carat_equals
         
     | 
| 
       728 
     | 
    
         
            -
                assert_lex3("^=", nil, :tOP_ASGN, "^",  
     | 
| 
      
 731 
     | 
    
         
            +
                assert_lex3("^=", nil, :tOP_ASGN, "^", EXPR_BEG)
         
     | 
| 
       729 
732 
     | 
    
         
             
              end
         
     | 
| 
       730 
733 
     | 
    
         | 
| 
       731 
734 
     | 
    
         
             
              def test_yylex_colon2
         
     | 
| 
       732 
735 
     | 
    
         
             
                assert_lex3("A::B",
         
     | 
| 
       733 
736 
     | 
    
         
             
                            nil,
         
     | 
| 
       734 
     | 
    
         
            -
                            :tCONSTANT, "A",   
     | 
| 
       735 
     | 
    
         
            -
                            :tCOLON2,   "::",  
     | 
| 
       736 
     | 
    
         
            -
                            :tCONSTANT, "B",   
     | 
| 
      
 737 
     | 
    
         
            +
                            :tCONSTANT, "A",  EXPR_CMDARG,
         
     | 
| 
      
 738 
     | 
    
         
            +
                            :tCOLON2,   "::", EXPR_DOT,
         
     | 
| 
      
 739 
     | 
    
         
            +
                            :tCONSTANT, "B",  EXPR_ARG)
         
     | 
| 
       737 
740 
     | 
    
         
             
              end
         
     | 
| 
       738 
741 
     | 
    
         | 
| 
       739 
742 
     | 
    
         
             
              def test_yylex_colon2_argh
         
     | 
| 
       740 
743 
     | 
    
         
             
                assert_lex3("module X::Y\n  c\nend",
         
     | 
| 
       741 
744 
     | 
    
         
             
                            nil,
         
     | 
| 
       742 
     | 
    
         
            -
                            :kMODULE,     "module",  
     | 
| 
       743 
     | 
    
         
            -
                            :tCONSTANT,   "X",       
     | 
| 
       744 
     | 
    
         
            -
                            :tCOLON2,     "::",      
     | 
| 
       745 
     | 
    
         
            -
                            :tCONSTANT,   "Y",       
     | 
| 
       746 
     | 
    
         
            -
                            :tNL,         nil,       
     | 
| 
       747 
     | 
    
         
            -
                            :tIDENTIFIER, "c",       
     | 
| 
       748 
     | 
    
         
            -
                            :tNL,         nil,       
     | 
| 
       749 
     | 
    
         
            -
                            :kEND,        "end",     
     | 
| 
      
 745 
     | 
    
         
            +
                            :kMODULE,     "module", EXPR_BEG,
         
     | 
| 
      
 746 
     | 
    
         
            +
                            :tCONSTANT,   "X",      EXPR_CMDARG,
         
     | 
| 
      
 747 
     | 
    
         
            +
                            :tCOLON2,     "::",     EXPR_DOT,
         
     | 
| 
      
 748 
     | 
    
         
            +
                            :tCONSTANT,   "Y",      EXPR_ARG,
         
     | 
| 
      
 749 
     | 
    
         
            +
                            :tNL,         nil,      EXPR_BEG,
         
     | 
| 
      
 750 
     | 
    
         
            +
                            :tIDENTIFIER, "c",      EXPR_CMDARG,
         
     | 
| 
      
 751 
     | 
    
         
            +
                            :tNL,         nil,      EXPR_BEG,
         
     | 
| 
      
 752 
     | 
    
         
            +
                            :kEND,        "end",    EXPR_END)
         
     | 
| 
       750 
753 
     | 
    
         
             
              end
         
     | 
| 
       751 
754 
     | 
    
         | 
| 
       752 
755 
     | 
    
         
             
              def test_yylex_colon3
         
     | 
| 
       753 
756 
     | 
    
         
             
                assert_lex3("::Array",
         
     | 
| 
       754 
757 
     | 
    
         
             
                            nil,
         
     | 
| 
       755 
     | 
    
         
            -
                            :tCOLON3,   "::",     
     | 
| 
       756 
     | 
    
         
            -
                            :tCONSTANT, "Array",  
     | 
| 
      
 758 
     | 
    
         
            +
                            :tCOLON3,   "::",    EXPR_BEG,
         
     | 
| 
      
 759 
     | 
    
         
            +
                            :tCONSTANT, "Array", EXPR_ARG)
         
     | 
| 
       757 
760 
     | 
    
         
             
              end
         
     | 
| 
       758 
761 
     | 
    
         | 
| 
       759 
762 
     | 
    
         
             
              def test_yylex_comma
         
     | 
| 
       760 
     | 
    
         
            -
                assert_lex3(",", nil, :tCOMMA, ",",  
     | 
| 
      
 763 
     | 
    
         
            +
                assert_lex3(",", nil, :tCOMMA, ",", EXPR_PAR)
         
     | 
| 
       761 
764 
     | 
    
         
             
              end
         
     | 
| 
       762 
765 
     | 
    
         | 
| 
       763 
766 
     | 
    
         
             
              def test_yylex_comment
         
     | 
| 
       764 
767 
     | 
    
         
             
                assert_lex3("1 # one\n# two\n2",
         
     | 
| 
       765 
768 
     | 
    
         
             
                            nil,
         
     | 
| 
       766 
     | 
    
         
            -
                            :tINTEGER, 1, 
     | 
| 
       767 
     | 
    
         
            -
                            :tNL,      nil,  
     | 
| 
       768 
     | 
    
         
            -
                            :tINTEGER, 2, 
     | 
| 
      
 769 
     | 
    
         
            +
                            :tINTEGER, 1,    EXPR_NUM,
         
     | 
| 
      
 770 
     | 
    
         
            +
                            :tNL,      nil, EXPR_BEG,
         
     | 
| 
      
 771 
     | 
    
         
            +
                            :tINTEGER, 2,    EXPR_NUM)
         
     | 
| 
       769 
772 
     | 
    
         | 
| 
       770 
773 
     | 
    
         
             
                assert_equal "# one\n# two\n", @lex.comments
         
     | 
| 
       771 
774 
     | 
    
         
             
              end
         
     | 
| 
         @@ -773,7 +776,7 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       773 
776 
     | 
    
         
             
              def test_yylex_comment_begin
         
     | 
| 
       774 
777 
     | 
    
         
             
                assert_lex3("=begin\nblah\nblah\n=end\n42",
         
     | 
| 
       775 
778 
     | 
    
         
             
                            nil,
         
     | 
| 
       776 
     | 
    
         
            -
                            :tINTEGER, 42, 
     | 
| 
      
 779 
     | 
    
         
            +
                            :tINTEGER, 42,  EXPR_NUM)
         
     | 
| 
       777 
780 
     | 
    
         | 
| 
       778 
781 
     | 
    
         
             
                assert_equal "=begin\nblah\nblah\n=end\n", @lex.comments
         
     | 
| 
       779 
782 
     | 
    
         
             
              end
         
     | 
| 
         @@ -787,14 +790,14 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       787 
790 
     | 
    
         
             
              def test_yylex_comment_begin_not_comment
         
     | 
| 
       788 
791 
     | 
    
         
             
                assert_lex3("beginfoo = 5\np x \\\n=beginfoo",
         
     | 
| 
       789 
792 
     | 
    
         
             
                            nil,
         
     | 
| 
       790 
     | 
    
         
            -
                            :tIDENTIFIER, "beginfoo",  
     | 
| 
       791 
     | 
    
         
            -
                            :tEQL,        "=",         
     | 
| 
       792 
     | 
    
         
            -
                            :tINTEGER,    5, 
     | 
| 
       793 
     | 
    
         
            -
                            :tNL,         nil,         
     | 
| 
       794 
     | 
    
         
            -
                            :tIDENTIFIER, "p",         
     | 
| 
       795 
     | 
    
         
            -
                            :tIDENTIFIER, "x",         
     | 
| 
       796 
     | 
    
         
            -
                            :tEQL,        "=",         
     | 
| 
       797 
     | 
    
         
            -
                            :tIDENTIFIER, "beginfoo",  
     | 
| 
      
 793 
     | 
    
         
            +
                            :tIDENTIFIER, "beginfoo", EXPR_CMDARG,
         
     | 
| 
      
 794 
     | 
    
         
            +
                            :tEQL,        "=",        EXPR_BEG,
         
     | 
| 
      
 795 
     | 
    
         
            +
                            :tINTEGER,    5,           EXPR_NUM,
         
     | 
| 
      
 796 
     | 
    
         
            +
                            :tNL,         nil,        EXPR_BEG,
         
     | 
| 
      
 797 
     | 
    
         
            +
                            :tIDENTIFIER, "p",        EXPR_CMDARG,
         
     | 
| 
      
 798 
     | 
    
         
            +
                            :tIDENTIFIER, "x",        EXPR_ARG,
         
     | 
| 
      
 799 
     | 
    
         
            +
                            :tEQL,        "=",        EXPR_BEG,
         
     | 
| 
      
 800 
     | 
    
         
            +
                            :tIDENTIFIER, "beginfoo", EXPR_ARG)
         
     | 
| 
       798 
801 
     | 
    
         
             
              end
         
     | 
| 
       799 
802 
     | 
    
         | 
| 
       800 
803 
     | 
    
         
             
              def test_yylex_comment_begin_space
         
     | 
| 
         @@ -814,18 +817,18 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       814 
817 
     | 
    
         
             
              end
         
     | 
| 
       815 
818 
     | 
    
         | 
| 
       816 
819 
     | 
    
         
             
              def test_yylex_constant
         
     | 
| 
       817 
     | 
    
         
            -
                assert_lex3("ArgumentError", nil, :tCONSTANT, "ArgumentError",  
     | 
| 
      
 820 
     | 
    
         
            +
                assert_lex3("ArgumentError", nil, :tCONSTANT, "ArgumentError", EXPR_CMDARG)
         
     | 
| 
       818 
821 
     | 
    
         
             
              end
         
     | 
| 
       819 
822 
     | 
    
         | 
| 
       820 
823 
     | 
    
         
             
              def test_yylex_constant_semi
         
     | 
| 
       821 
824 
     | 
    
         
             
                assert_lex3("ArgumentError;",
         
     | 
| 
       822 
825 
     | 
    
         
             
                            nil,
         
     | 
| 
       823 
     | 
    
         
            -
                            :tCONSTANT, "ArgumentError",  
     | 
| 
       824 
     | 
    
         
            -
                            :tSEMI,     ";",              
     | 
| 
      
 826 
     | 
    
         
            +
                            :tCONSTANT, "ArgumentError", EXPR_CMDARG,
         
     | 
| 
      
 827 
     | 
    
         
            +
                            :tSEMI,     ";",             EXPR_BEG)
         
     | 
| 
       825 
828 
     | 
    
         
             
              end
         
     | 
| 
       826 
829 
     | 
    
         | 
| 
       827 
830 
     | 
    
         
             
              def test_yylex_cvar
         
     | 
| 
       828 
     | 
    
         
            -
                assert_lex3("@@blah", nil, :tCVAR, "@@blah",  
     | 
| 
      
 831 
     | 
    
         
            +
                assert_lex3("@@blah", nil, :tCVAR, "@@blah", EXPR_END)
         
     | 
| 
       829 
832 
     | 
    
         
             
              end
         
     | 
| 
       830 
833 
     | 
    
         | 
| 
       831 
834 
     | 
    
         
             
              def test_yylex_cvar_bad
         
     | 
| 
         @@ -835,75 +838,75 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       835 
838 
     | 
    
         
             
              end
         
     | 
| 
       836 
839 
     | 
    
         | 
| 
       837 
840 
     | 
    
         
             
              def test_yylex_def_bad_name
         
     | 
| 
       838 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 841 
     | 
    
         
            +
                self.lex_state = EXPR_FNAME
         
     | 
| 
       839 
842 
     | 
    
         
             
                refute_lex("def [ ", :kDEF, "def")
         
     | 
| 
       840 
843 
     | 
    
         
             
              end
         
     | 
| 
       841 
844 
     | 
    
         | 
| 
       842 
845 
     | 
    
         
             
              def test_yylex_div
         
     | 
| 
       843 
846 
     | 
    
         
             
                assert_lex3("a / 2",
         
     | 
| 
       844 
847 
     | 
    
         
             
                            nil,
         
     | 
| 
       845 
     | 
    
         
            -
                            :tIDENTIFIER, "a",  
     | 
| 
       846 
     | 
    
         
            -
                            :tDIVIDE,     "/",  
     | 
| 
       847 
     | 
    
         
            -
                            :tINTEGER,    2, 
     | 
| 
      
 848 
     | 
    
         
            +
                            :tIDENTIFIER, "a", EXPR_CMDARG,
         
     | 
| 
      
 849 
     | 
    
         
            +
                            :tDIVIDE,     "/", EXPR_BEG,
         
     | 
| 
      
 850 
     | 
    
         
            +
                            :tINTEGER,    2,    EXPR_NUM)
         
     | 
| 
       848 
851 
     | 
    
         
             
              end
         
     | 
| 
       849 
852 
     | 
    
         | 
| 
       850 
853 
     | 
    
         
             
              def test_yylex_div_equals
         
     | 
| 
       851 
854 
     | 
    
         
             
                assert_lex3("a /= 2",
         
     | 
| 
       852 
855 
     | 
    
         
             
                            nil,
         
     | 
| 
       853 
     | 
    
         
            -
                            :tIDENTIFIER, "a",  
     | 
| 
       854 
     | 
    
         
            -
                            :tOP_ASGN,    "/",  
     | 
| 
       855 
     | 
    
         
            -
                            :tINTEGER,    2, 
     | 
| 
      
 856 
     | 
    
         
            +
                            :tIDENTIFIER, "a", EXPR_CMDARG,
         
     | 
| 
      
 857 
     | 
    
         
            +
                            :tOP_ASGN,    "/", EXPR_BEG,
         
     | 
| 
      
 858 
     | 
    
         
            +
                            :tINTEGER,    2,    EXPR_NUM)
         
     | 
| 
       856 
859 
     | 
    
         
             
              end
         
     | 
| 
       857 
860 
     | 
    
         | 
| 
       858 
861 
     | 
    
         
             
              def test_yylex_do
         
     | 
| 
       859 
862 
     | 
    
         
             
                assert_lex3("x do 42 end",
         
     | 
| 
       860 
863 
     | 
    
         
             
                            nil,
         
     | 
| 
       861 
     | 
    
         
            -
                            :tIDENTIFIER, "x",    
     | 
| 
       862 
     | 
    
         
            -
                            :kDO,         "do",   
     | 
| 
       863 
     | 
    
         
            -
                            :tINTEGER,    42, 
     | 
| 
       864 
     | 
    
         
            -
                            :kEND,        "end",  
     | 
| 
      
 864 
     | 
    
         
            +
                            :tIDENTIFIER, "x",   EXPR_CMDARG,
         
     | 
| 
      
 865 
     | 
    
         
            +
                            :kDO,         "do",  EXPR_BEG,
         
     | 
| 
      
 866 
     | 
    
         
            +
                            :tINTEGER,    42,     EXPR_NUM,
         
     | 
| 
      
 867 
     | 
    
         
            +
                            :kEND,        "end", EXPR_END)
         
     | 
| 
       865 
868 
     | 
    
         
             
              end
         
     | 
| 
       866 
869 
     | 
    
         | 
| 
       867 
870 
     | 
    
         
             
              def test_yylex_do_block
         
     | 
| 
       868 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 871 
     | 
    
         
            +
                self.lex_state = EXPR_ENDARG
         
     | 
| 
       869 
872 
     | 
    
         | 
| 
       870 
873 
     | 
    
         
             
                assert_lex3("x.y do 42 end",
         
     | 
| 
       871 
874 
     | 
    
         
             
                            nil,
         
     | 
| 
       872 
     | 
    
         
            -
                            :tIDENTIFIER, "x",    
     | 
| 
       873 
     | 
    
         
            -
                            :tDOT,        ".",    
     | 
| 
       874 
     | 
    
         
            -
                            :tIDENTIFIER, "y",    
     | 
| 
       875 
     | 
    
         
            -
                            :kDO_BLOCK,   "do",   
     | 
| 
       876 
     | 
    
         
            -
                            :tINTEGER,    42, 
     | 
| 
       877 
     | 
    
         
            -
                            :kEND,        "end",  
     | 
| 
      
 875 
     | 
    
         
            +
                            :tIDENTIFIER, "x",   EXPR_END,
         
     | 
| 
      
 876 
     | 
    
         
            +
                            :tDOT,        ".",   EXPR_DOT,
         
     | 
| 
      
 877 
     | 
    
         
            +
                            :tIDENTIFIER, "y",   EXPR_ARG,
         
     | 
| 
      
 878 
     | 
    
         
            +
                            :kDO_BLOCK,   "do",  EXPR_BEG,
         
     | 
| 
      
 879 
     | 
    
         
            +
                            :tINTEGER,    42,     EXPR_NUM,
         
     | 
| 
      
 880 
     | 
    
         
            +
                            :kEND,        "end", EXPR_END) do
         
     | 
| 
       878 
881 
     | 
    
         
             
                  @lex.cmdarg.push true
         
     | 
| 
       879 
882 
     | 
    
         
             
                end
         
     | 
| 
       880 
883 
     | 
    
         
             
              end
         
     | 
| 
       881 
884 
     | 
    
         | 
| 
       882 
885 
     | 
    
         
             
              def test_yylex_do_block2
         
     | 
| 
       883 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 886 
     | 
    
         
            +
                self.lex_state = EXPR_ENDARG
         
     | 
| 
       884 
887 
     | 
    
         | 
| 
       885 
888 
     | 
    
         
             
                assert_lex3("do 42 end",
         
     | 
| 
       886 
889 
     | 
    
         
             
                            nil,
         
     | 
| 
       887 
     | 
    
         
            -
                            :kDO_BLOCK, "do",   
     | 
| 
       888 
     | 
    
         
            -
                            :tINTEGER,  42, 
     | 
| 
       889 
     | 
    
         
            -
                            :kEND,      "end",  
     | 
| 
      
 890 
     | 
    
         
            +
                            :kDO_BLOCK, "do",  EXPR_BEG,
         
     | 
| 
      
 891 
     | 
    
         
            +
                            :tINTEGER,  42,     EXPR_NUM,
         
     | 
| 
      
 892 
     | 
    
         
            +
                            :kEND,      "end", EXPR_END)
         
     | 
| 
       890 
893 
     | 
    
         
             
              end
         
     | 
| 
       891 
894 
     | 
    
         | 
| 
       892 
895 
     | 
    
         
             
              def test_yylex_is_your_spacebar_broken?
         
     | 
| 
       893 
896 
     | 
    
         
             
                assert_lex3(":a!=:b",
         
     | 
| 
       894 
897 
     | 
    
         
             
                            nil,
         
     | 
| 
       895 
     | 
    
         
            -
                            :tSYMBOL, "a",   
     | 
| 
       896 
     | 
    
         
            -
                            :tNEQ,    "!=",  
     | 
| 
       897 
     | 
    
         
            -
                            :tSYMBOL, "b",   
     | 
| 
      
 898 
     | 
    
         
            +
                            :tSYMBOL, "a",  EXPR_END,
         
     | 
| 
      
 899 
     | 
    
         
            +
                            :tNEQ,    "!=", EXPR_BEG,
         
     | 
| 
      
 900 
     | 
    
         
            +
                            :tSYMBOL, "b",  EXPR_END)
         
     | 
| 
       898 
901 
     | 
    
         
             
              end
         
     | 
| 
       899 
902 
     | 
    
         | 
| 
       900 
903 
     | 
    
         
             
              def test_yylex_do_cond
         
     | 
| 
       901 
904 
     | 
    
         
             
                assert_lex3("x do 42 end",
         
     | 
| 
       902 
905 
     | 
    
         
             
                            nil,
         
     | 
| 
       903 
     | 
    
         
            -
                            :tIDENTIFIER, "x",    
     | 
| 
       904 
     | 
    
         
            -
                            :kDO_COND,    "do",   
     | 
| 
       905 
     | 
    
         
            -
                            :tINTEGER,    42, 
     | 
| 
       906 
     | 
    
         
            -
                            :kEND,        "end",  
     | 
| 
      
 906 
     | 
    
         
            +
                            :tIDENTIFIER, "x",   EXPR_CMDARG,
         
     | 
| 
      
 907 
     | 
    
         
            +
                            :kDO_COND,    "do",  EXPR_BEG,
         
     | 
| 
      
 908 
     | 
    
         
            +
                            :tINTEGER,    42,     EXPR_NUM,
         
     | 
| 
      
 909 
     | 
    
         
            +
                            :kEND,        "end", EXPR_END) do
         
     | 
| 
       907 
910 
     | 
    
         
             
                  @lex.cond.push true
         
     | 
| 
       908 
911 
     | 
    
         
             
                end
         
     | 
| 
       909 
912 
     | 
    
         
             
              end
         
     | 
| 
         @@ -914,40 +917,40 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       914 
917 
     | 
    
         
             
              end
         
     | 
| 
       915 
918 
     | 
    
         | 
| 
       916 
919 
     | 
    
         
             
              def test_yylex_dollar_eos
         
     | 
| 
       917 
     | 
    
         
            -
                assert_lex3("$", nil, "$", "$",  
     | 
| 
      
 920 
     | 
    
         
            +
                assert_lex3("$", nil, "$", "$", EXPR_END) # FIX: wtf is this?!?
         
     | 
| 
       918 
921 
     | 
    
         
             
              end
         
     | 
| 
       919 
922 
     | 
    
         | 
| 
       920 
923 
     | 
    
         
             
              def test_yylex_dot # HINT message sends
         
     | 
| 
       921 
     | 
    
         
            -
                assert_lex3(".", nil, :tDOT, ".",  
     | 
| 
      
 924 
     | 
    
         
            +
                assert_lex3(".", nil, :tDOT, ".", EXPR_DOT)
         
     | 
| 
       922 
925 
     | 
    
         
             
              end
         
     | 
| 
       923 
926 
     | 
    
         | 
| 
       924 
927 
     | 
    
         
             
              def test_yylex_dot2
         
     | 
| 
       925 
     | 
    
         
            -
                assert_lex3("..", nil, :tDOT2, "..",  
     | 
| 
      
 928 
     | 
    
         
            +
                assert_lex3("..", nil, :tDOT2, "..", EXPR_BEG)
         
     | 
| 
       926 
929 
     | 
    
         
             
              end
         
     | 
| 
       927 
930 
     | 
    
         | 
| 
       928 
931 
     | 
    
         
             
              def test_yylex_dot3
         
     | 
| 
       929 
     | 
    
         
            -
                assert_lex3("...", nil, :tDOT3, "...",  
     | 
| 
      
 932 
     | 
    
         
            +
                assert_lex3("...", nil, :tDOT3, "...", EXPR_BEG)
         
     | 
| 
       930 
933 
     | 
    
         
             
              end
         
     | 
| 
       931 
934 
     | 
    
         | 
| 
       932 
935 
     | 
    
         
             
              def test_yylex_equals
         
     | 
| 
       933 
936 
     | 
    
         
             
                # FIX: this sucks
         
     | 
| 
       934 
     | 
    
         
            -
                assert_lex3("=", nil, :tEQL, "=",  
     | 
| 
      
 937 
     | 
    
         
            +
                assert_lex3("=", nil, :tEQL, "=", EXPR_BEG)
         
     | 
| 
       935 
938 
     | 
    
         
             
              end
         
     | 
| 
       936 
939 
     | 
    
         | 
| 
       937 
940 
     | 
    
         
             
              def test_yylex_equals2
         
     | 
| 
       938 
     | 
    
         
            -
                assert_lex3("==", nil, :tEQ, "==",  
     | 
| 
      
 941 
     | 
    
         
            +
                assert_lex3("==", nil, :tEQ, "==", EXPR_BEG)
         
     | 
| 
       939 
942 
     | 
    
         
             
              end
         
     | 
| 
       940 
943 
     | 
    
         | 
| 
       941 
944 
     | 
    
         
             
              def test_yylex_equals3
         
     | 
| 
       942 
     | 
    
         
            -
                assert_lex3("===", nil, :tEQQ, "===",  
     | 
| 
      
 945 
     | 
    
         
            +
                assert_lex3("===", nil, :tEQQ, "===", EXPR_BEG)
         
     | 
| 
       943 
946 
     | 
    
         
             
              end
         
     | 
| 
       944 
947 
     | 
    
         | 
| 
       945 
948 
     | 
    
         
             
              def test_yylex_equals_tilde
         
     | 
| 
       946 
     | 
    
         
            -
                assert_lex3("=~", nil, :tMATCH, "=~",  
     | 
| 
      
 949 
     | 
    
         
            +
                assert_lex3("=~", nil, :tMATCH, "=~", EXPR_BEG)
         
     | 
| 
       947 
950 
     | 
    
         
             
              end
         
     | 
| 
       948 
951 
     | 
    
         | 
| 
       949 
952 
     | 
    
         
             
              def test_yylex_float
         
     | 
| 
       950 
     | 
    
         
            -
                assert_lex3("1.0", nil, :tFLOAT, 1.0, 
     | 
| 
      
 953 
     | 
    
         
            +
                assert_lex3("1.0", nil, :tFLOAT, 1.0,  EXPR_NUM)
         
     | 
| 
       951 
954 
     | 
    
         
             
              end
         
     | 
| 
       952 
955 
     | 
    
         | 
| 
       953 
956 
     | 
    
         
             
              def test_yylex_float_bad_no_underscores
         
     | 
| 
         @@ -965,55 +968,55 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       965 
968 
     | 
    
         
             
              def test_yylex_float_call
         
     | 
| 
       966 
969 
     | 
    
         
             
                assert_lex3("1.0.to_s",
         
     | 
| 
       967 
970 
     | 
    
         
             
                            nil,
         
     | 
| 
       968 
     | 
    
         
            -
                            :tFLOAT,      1.0, 
     | 
| 
       969 
     | 
    
         
            -
                            :tDOT,        ".",     
     | 
| 
       970 
     | 
    
         
            -
                            :tIDENTIFIER, "to_s",  
     | 
| 
      
 971 
     | 
    
         
            +
                            :tFLOAT,      1.0,     EXPR_NUM,
         
     | 
| 
      
 972 
     | 
    
         
            +
                            :tDOT,        ".",    EXPR_DOT,
         
     | 
| 
      
 973 
     | 
    
         
            +
                            :tIDENTIFIER, "to_s", EXPR_ARG)
         
     | 
| 
       971 
974 
     | 
    
         
             
              end
         
     | 
| 
       972 
975 
     | 
    
         | 
| 
       973 
976 
     | 
    
         
             
              def test_yylex_float_dot_E
         
     | 
| 
       974 
977 
     | 
    
         
             
                assert_lex3("1.0E10",
         
     | 
| 
       975 
978 
     | 
    
         
             
                            nil,
         
     | 
| 
       976 
     | 
    
         
            -
                            :tFLOAT, 10000000000.0,  
     | 
| 
      
 979 
     | 
    
         
            +
                            :tFLOAT, 10000000000.0, EXPR_NUM)
         
     | 
| 
       977 
980 
     | 
    
         
             
              end
         
     | 
| 
       978 
981 
     | 
    
         | 
| 
       979 
982 
     | 
    
         
             
              def test_yylex_float_dot_E_neg
         
     | 
| 
       980 
983 
     | 
    
         
             
                assert_lex3("-1.0E10",
         
     | 
| 
       981 
984 
     | 
    
         
             
                            nil,
         
     | 
| 
       982 
     | 
    
         
            -
                            :tUMINUS_NUM, "-",            
     | 
| 
       983 
     | 
    
         
            -
                            :tFLOAT,      10000000000.0, 
     | 
| 
      
 985 
     | 
    
         
            +
                            :tUMINUS_NUM, "-",           EXPR_BEG,
         
     | 
| 
      
 986 
     | 
    
         
            +
                            :tFLOAT,      10000000000.0,  EXPR_NUM)
         
     | 
| 
       984 
987 
     | 
    
         
             
              end
         
     | 
| 
       985 
988 
     | 
    
         | 
| 
       986 
989 
     | 
    
         
             
              def test_yylex_float_dot_e
         
     | 
| 
       987 
990 
     | 
    
         
             
                assert_lex3("1.0e10",
         
     | 
| 
       988 
991 
     | 
    
         
             
                            nil,
         
     | 
| 
       989 
     | 
    
         
            -
                            :tFLOAT, 10000000000.0,  
     | 
| 
      
 992 
     | 
    
         
            +
                            :tFLOAT, 10000000000.0, EXPR_NUM)
         
     | 
| 
       990 
993 
     | 
    
         
             
              end
         
     | 
| 
       991 
994 
     | 
    
         | 
| 
       992 
995 
     | 
    
         
             
              def test_yylex_float_dot_e_neg
         
     | 
| 
       993 
996 
     | 
    
         
             
                assert_lex3("-1.0e10",
         
     | 
| 
       994 
997 
     | 
    
         
             
                            nil,
         
     | 
| 
       995 
     | 
    
         
            -
                            :tUMINUS_NUM, "-",            
     | 
| 
       996 
     | 
    
         
            -
                            :tFLOAT,      10000000000.0, 
     | 
| 
      
 998 
     | 
    
         
            +
                            :tUMINUS_NUM, "-",           EXPR_BEG,
         
     | 
| 
      
 999 
     | 
    
         
            +
                            :tFLOAT,      10000000000.0,  EXPR_NUM)
         
     | 
| 
       997 
1000 
     | 
    
         
             
              end
         
     | 
| 
       998 
1001 
     | 
    
         | 
| 
       999 
1002 
     | 
    
         
             
              def test_yylex_float_e
         
     | 
| 
       1000 
1003 
     | 
    
         
             
                assert_lex3("1e10",
         
     | 
| 
       1001 
1004 
     | 
    
         
             
                            nil,
         
     | 
| 
       1002 
     | 
    
         
            -
                            :tFLOAT, 10000000000.0, 
     | 
| 
      
 1005 
     | 
    
         
            +
                            :tFLOAT, 10000000000.0,  EXPR_NUM)
         
     | 
| 
       1003 
1006 
     | 
    
         
             
              end
         
     | 
| 
       1004 
1007 
     | 
    
         | 
| 
       1005 
1008 
     | 
    
         
             
              def test_yylex_float_e_bad_double_e
         
     | 
| 
       1006 
1009 
     | 
    
         
             
                assert_lex3("1e2e3",
         
     | 
| 
       1007 
1010 
     | 
    
         
             
                            nil,
         
     | 
| 
       1008 
     | 
    
         
            -
                            :tFLOAT, 100, 
     | 
| 
       1009 
     | 
    
         
            -
                            :tIDENTIFIER, "e3",  
     | 
| 
      
 1011 
     | 
    
         
            +
                            :tFLOAT, 100,        EXPR_NUM,
         
     | 
| 
      
 1012 
     | 
    
         
            +
                            :tIDENTIFIER, "e3", EXPR_END)
         
     | 
| 
       1010 
1013 
     | 
    
         
             
              end
         
     | 
| 
       1011 
1014 
     | 
    
         | 
| 
       1012 
1015 
     | 
    
         
             
              def test_yylex_float_if_modifier
         
     | 
| 
       1013 
1016 
     | 
    
         
             
                assert_lex3("1e2if",
         
     | 
| 
       1014 
1017 
     | 
    
         
             
                            nil,
         
     | 
| 
       1015 
     | 
    
         
            -
                            :tFLOAT, 100, 
     | 
| 
       1016 
     | 
    
         
            -
                            :kIF_MOD, "if", 
     | 
| 
      
 1018 
     | 
    
         
            +
                            :tFLOAT, 100,    EXPR_NUM,
         
     | 
| 
      
 1019 
     | 
    
         
            +
                            :kIF_MOD, "if",  EXPR_PAR)
         
     | 
| 
       1017 
1020 
     | 
    
         
             
              end
         
     | 
| 
       1018 
1021 
     | 
    
         | 
| 
       1019 
1022 
     | 
    
         
             
              def test_yylex_float_e_bad_trailing_underscore
         
     | 
| 
         @@ -1021,157 +1024,157 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1021 
1024 
     | 
    
         
             
              end
         
     | 
| 
       1022 
1025 
     | 
    
         | 
| 
       1023 
1026 
     | 
    
         
             
              def test_yylex_float_e_minus
         
     | 
| 
       1024 
     | 
    
         
            -
                assert_lex3("1e-10", nil, :tFLOAT, 1.0e-10,  
     | 
| 
      
 1027 
     | 
    
         
            +
                assert_lex3("1e-10", nil, :tFLOAT, 1.0e-10, EXPR_NUM)
         
     | 
| 
       1025 
1028 
     | 
    
         
             
              end
         
     | 
| 
       1026 
1029 
     | 
    
         | 
| 
       1027 
1030 
     | 
    
         
             
              def test_yylex_float_e_neg
         
     | 
| 
       1028 
1031 
     | 
    
         
             
                assert_lex3("-1e10",
         
     | 
| 
       1029 
1032 
     | 
    
         
             
                            nil,
         
     | 
| 
       1030 
     | 
    
         
            -
                            :tUMINUS_NUM, "-",            
     | 
| 
       1031 
     | 
    
         
            -
                            :tFLOAT,      10000000000.0, 
     | 
| 
      
 1033 
     | 
    
         
            +
                            :tUMINUS_NUM, "-",           EXPR_BEG,
         
     | 
| 
      
 1034 
     | 
    
         
            +
                            :tFLOAT,      10000000000.0,  EXPR_NUM)
         
     | 
| 
       1032 
1035 
     | 
    
         
             
              end
         
     | 
| 
       1033 
1036 
     | 
    
         | 
| 
       1034 
1037 
     | 
    
         
             
              def test_yylex_float_e_neg_minus
         
     | 
| 
       1035 
1038 
     | 
    
         
             
                assert_lex3("-1e-10",
         
     | 
| 
       1036 
1039 
     | 
    
         
             
                            nil,
         
     | 
| 
       1037 
     | 
    
         
            -
                            :tUMINUS_NUM, "-",      
     | 
| 
       1038 
     | 
    
         
            -
                            :tFLOAT,      1.0e-10, 
     | 
| 
      
 1040 
     | 
    
         
            +
                            :tUMINUS_NUM, "-",     EXPR_BEG,
         
     | 
| 
      
 1041 
     | 
    
         
            +
                            :tFLOAT,      1.0e-10,  EXPR_NUM)
         
     | 
| 
       1039 
1042 
     | 
    
         
             
              end
         
     | 
| 
       1040 
1043 
     | 
    
         | 
| 
       1041 
1044 
     | 
    
         
             
              def test_yylex_float_e_neg_plus
         
     | 
| 
       1042 
1045 
     | 
    
         
             
                assert_lex3("-1e+10",
         
     | 
| 
       1043 
1046 
     | 
    
         
             
                            nil,
         
     | 
| 
       1044 
     | 
    
         
            -
                            :tUMINUS_NUM, "-",            
     | 
| 
       1045 
     | 
    
         
            -
                            :tFLOAT,      10000000000.0, 
     | 
| 
      
 1047 
     | 
    
         
            +
                            :tUMINUS_NUM, "-",           EXPR_BEG,
         
     | 
| 
      
 1048 
     | 
    
         
            +
                            :tFLOAT,      10000000000.0,  EXPR_NUM)
         
     | 
| 
       1046 
1049 
     | 
    
         
             
              end
         
     | 
| 
       1047 
1050 
     | 
    
         | 
| 
       1048 
1051 
     | 
    
         
             
              def test_yylex_float_e_plus
         
     | 
| 
       1049 
     | 
    
         
            -
                assert_lex3("1e+10", nil, :tFLOAT, 10000000000.0,  
     | 
| 
      
 1052 
     | 
    
         
            +
                assert_lex3("1e+10", nil, :tFLOAT, 10000000000.0, EXPR_NUM)
         
     | 
| 
       1050 
1053 
     | 
    
         
             
              end
         
     | 
| 
       1051 
1054 
     | 
    
         | 
| 
       1052 
1055 
     | 
    
         
             
              def test_yylex_float_e_zero
         
     | 
| 
       1053 
     | 
    
         
            -
                assert_lex3("0e0", nil, :tFLOAT, 0.0,  
     | 
| 
      
 1056 
     | 
    
         
            +
                assert_lex3("0e0", nil, :tFLOAT, 0.0, EXPR_NUM)
         
     | 
| 
       1054 
1057 
     | 
    
         
             
              end
         
     | 
| 
       1055 
1058 
     | 
    
         | 
| 
       1056 
1059 
     | 
    
         
             
              def test_yylex_float_neg
         
     | 
| 
       1057 
1060 
     | 
    
         
             
                assert_lex3("-1.0",
         
     | 
| 
       1058 
1061 
     | 
    
         
             
                            nil,
         
     | 
| 
       1059 
     | 
    
         
            -
                            :tUMINUS_NUM, "-",  
     | 
| 
       1060 
     | 
    
         
            -
                            :tFLOAT,      1.0, 
     | 
| 
      
 1062 
     | 
    
         
            +
                            :tUMINUS_NUM, "-", EXPR_BEG,
         
     | 
| 
      
 1063 
     | 
    
         
            +
                            :tFLOAT,      1.0,  EXPR_NUM)
         
     | 
| 
       1061 
1064 
     | 
    
         
             
              end
         
     | 
| 
       1062 
1065 
     | 
    
         | 
| 
       1063 
1066 
     | 
    
         
             
              def test_yylex_ge
         
     | 
| 
       1064 
1067 
     | 
    
         
             
                assert_lex3("a >= 2",
         
     | 
| 
       1065 
1068 
     | 
    
         
             
                            nil,
         
     | 
| 
       1066 
     | 
    
         
            -
                            :tIDENTIFIER, "a",   
     | 
| 
       1067 
     | 
    
         
            -
                            :tGEQ,        ">=",  
     | 
| 
       1068 
     | 
    
         
            -
                            :tINTEGER,    2, 
     | 
| 
      
 1069 
     | 
    
         
            +
                            :tIDENTIFIER, "a",  EXPR_CMDARG,
         
     | 
| 
      
 1070 
     | 
    
         
            +
                            :tGEQ,        ">=", EXPR_BEG,
         
     | 
| 
      
 1071 
     | 
    
         
            +
                            :tINTEGER,    2,     EXPR_NUM)
         
     | 
| 
       1069 
1072 
     | 
    
         
             
              end
         
     | 
| 
       1070 
1073 
     | 
    
         | 
| 
       1071 
1074 
     | 
    
         
             
              def test_yylex_global
         
     | 
| 
       1072 
     | 
    
         
            -
                assert_lex3("$blah", nil, :tGVAR, "$blah",  
     | 
| 
      
 1075 
     | 
    
         
            +
                assert_lex3("$blah", nil, :tGVAR, "$blah", EXPR_END)
         
     | 
| 
       1073 
1076 
     | 
    
         
             
              end
         
     | 
| 
       1074 
1077 
     | 
    
         | 
| 
       1075 
1078 
     | 
    
         
             
              def test_yylex_global_backref
         
     | 
| 
       1076 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 1079 
     | 
    
         
            +
                self.lex_state = EXPR_FNAME
         
     | 
| 
       1077 
1080 
     | 
    
         | 
| 
       1078 
     | 
    
         
            -
                assert_lex3("$`", nil, :tGVAR, "$`",  
     | 
| 
      
 1081 
     | 
    
         
            +
                assert_lex3("$`", nil, :tGVAR, "$`", EXPR_END)
         
     | 
| 
       1079 
1082 
     | 
    
         
             
              end
         
     | 
| 
       1080 
1083 
     | 
    
         | 
| 
       1081 
1084 
     | 
    
         
             
              def test_yylex_global_dash_nothing
         
     | 
| 
       1082 
     | 
    
         
            -
                assert_lex3("$- ", nil, :tGVAR, "$-",  
     | 
| 
      
 1085 
     | 
    
         
            +
                assert_lex3("$- ", nil, :tGVAR, "$-", EXPR_END)
         
     | 
| 
       1083 
1086 
     | 
    
         
             
              end
         
     | 
| 
       1084 
1087 
     | 
    
         | 
| 
       1085 
1088 
     | 
    
         
             
              def test_yylex_global_dash_something
         
     | 
| 
       1086 
     | 
    
         
            -
                assert_lex3("$-x", nil, :tGVAR, "$-x",  
     | 
| 
      
 1089 
     | 
    
         
            +
                assert_lex3("$-x", nil, :tGVAR, "$-x", EXPR_END)
         
     | 
| 
       1087 
1090 
     | 
    
         
             
              end
         
     | 
| 
       1088 
1091 
     | 
    
         | 
| 
       1089 
1092 
     | 
    
         
             
              def test_yylex_global_number
         
     | 
| 
       1090 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 1093 
     | 
    
         
            +
                self.lex_state = EXPR_FNAME
         
     | 
| 
       1091 
1094 
     | 
    
         | 
| 
       1092 
     | 
    
         
            -
                assert_lex3("$1", nil, :tGVAR, "$1",  
     | 
| 
      
 1095 
     | 
    
         
            +
                assert_lex3("$1", nil, :tGVAR, "$1", EXPR_END)
         
     | 
| 
       1093 
1096 
     | 
    
         
             
              end
         
     | 
| 
       1094 
1097 
     | 
    
         | 
| 
       1095 
1098 
     | 
    
         
             
              def test_yylex_global_number_big
         
     | 
| 
       1096 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 1099 
     | 
    
         
            +
                self.lex_state = EXPR_FNAME
         
     | 
| 
       1097 
1100 
     | 
    
         | 
| 
       1098 
     | 
    
         
            -
                assert_lex3("$1234", nil, :tGVAR, "$1234",  
     | 
| 
      
 1101 
     | 
    
         
            +
                assert_lex3("$1234", nil, :tGVAR, "$1234", EXPR_END)
         
     | 
| 
       1099 
1102 
     | 
    
         
             
              end
         
     | 
| 
       1100 
1103 
     | 
    
         | 
| 
       1101 
1104 
     | 
    
         
             
              def test_yylex_global_other
         
     | 
| 
       1102 
1105 
     | 
    
         
             
                assert_lex3("[$~, $*, $$, $?, $!, $@, $/, $\\, $;, $,, $., $=, $:, $<, $>, $\"]",
         
     | 
| 
       1103 
1106 
     | 
    
         
             
                            nil,
         
     | 
| 
       1104 
     | 
    
         
            -
                            :tLBRACK, "[",    
     | 
| 
       1105 
     | 
    
         
            -
                            :tGVAR,   "$~",   
     | 
| 
       1106 
     | 
    
         
            -
                            :tGVAR,   "$*",   
     | 
| 
       1107 
     | 
    
         
            -
                            :tGVAR,   "$$",   
     | 
| 
       1108 
     | 
    
         
            -
                            :tGVAR,   "$?",   
     | 
| 
       1109 
     | 
    
         
            -
                            :tGVAR,   "$!",   
     | 
| 
       1110 
     | 
    
         
            -
                            :tGVAR,   "$@",   
     | 
| 
       1111 
     | 
    
         
            -
                            :tGVAR,   "$/",   
     | 
| 
       1112 
     | 
    
         
            -
                            :tGVAR,   "$\\",  
     | 
| 
       1113 
     | 
    
         
            -
                            :tGVAR,   "$;",   
     | 
| 
       1114 
     | 
    
         
            -
                            :tGVAR,   "$,",   
     | 
| 
       1115 
     | 
    
         
            -
                            :tGVAR,   "$.",   
     | 
| 
       1116 
     | 
    
         
            -
                            :tGVAR,   "$=",   
     | 
| 
       1117 
     | 
    
         
            -
                            :tGVAR,   "$:",   
     | 
| 
       1118 
     | 
    
         
            -
                            :tGVAR,   "$<",   
     | 
| 
       1119 
     | 
    
         
            -
                            :tGVAR,   "$>",   
     | 
| 
       1120 
     | 
    
         
            -
                            :tGVAR,   "$\"",  
     | 
| 
       1121 
     | 
    
         
            -
                            :tRBRACK, "]",    
     | 
| 
      
 1107 
     | 
    
         
            +
                            :tLBRACK, "[",   EXPR_PAR,
         
     | 
| 
      
 1108 
     | 
    
         
            +
                            :tGVAR,   "$~",  EXPR_END, :tCOMMA,  ",", EXPR_PAR,
         
     | 
| 
      
 1109 
     | 
    
         
            +
                            :tGVAR,   "$*",  EXPR_END, :tCOMMA,  ",", EXPR_PAR,
         
     | 
| 
      
 1110 
     | 
    
         
            +
                            :tGVAR,   "$$",  EXPR_END, :tCOMMA,  ",", EXPR_PAR,
         
     | 
| 
      
 1111 
     | 
    
         
            +
                            :tGVAR,   "$?",  EXPR_END, :tCOMMA,  ",", EXPR_PAR,
         
     | 
| 
      
 1112 
     | 
    
         
            +
                            :tGVAR,   "$!",  EXPR_END, :tCOMMA,  ",", EXPR_PAR,
         
     | 
| 
      
 1113 
     | 
    
         
            +
                            :tGVAR,   "$@",  EXPR_END, :tCOMMA,  ",", EXPR_PAR,
         
     | 
| 
      
 1114 
     | 
    
         
            +
                            :tGVAR,   "$/",  EXPR_END, :tCOMMA,  ",", EXPR_PAR,
         
     | 
| 
      
 1115 
     | 
    
         
            +
                            :tGVAR,   "$\\", EXPR_END, :tCOMMA,  ",", EXPR_PAR,
         
     | 
| 
      
 1116 
     | 
    
         
            +
                            :tGVAR,   "$;",  EXPR_END, :tCOMMA,  ",", EXPR_PAR,
         
     | 
| 
      
 1117 
     | 
    
         
            +
                            :tGVAR,   "$,",  EXPR_END, :tCOMMA,  ",", EXPR_PAR,
         
     | 
| 
      
 1118 
     | 
    
         
            +
                            :tGVAR,   "$.",  EXPR_END, :tCOMMA,  ",", EXPR_PAR,
         
     | 
| 
      
 1119 
     | 
    
         
            +
                            :tGVAR,   "$=",  EXPR_END, :tCOMMA,  ",", EXPR_PAR,
         
     | 
| 
      
 1120 
     | 
    
         
            +
                            :tGVAR,   "$:",  EXPR_END, :tCOMMA,  ",", EXPR_PAR,
         
     | 
| 
      
 1121 
     | 
    
         
            +
                            :tGVAR,   "$<",  EXPR_END, :tCOMMA,  ",", EXPR_PAR,
         
     | 
| 
      
 1122 
     | 
    
         
            +
                            :tGVAR,   "$>",  EXPR_END, :tCOMMA,  ",", EXPR_PAR,
         
     | 
| 
      
 1123 
     | 
    
         
            +
                            :tGVAR,   "$\"", EXPR_END,
         
     | 
| 
      
 1124 
     | 
    
         
            +
                            :tRBRACK, "]",   EXPR_ENDARG)
         
     | 
| 
       1122 
1125 
     | 
    
         
             
              end
         
     | 
| 
       1123 
1126 
     | 
    
         | 
| 
       1124 
1127 
     | 
    
         
             
              def test_yylex_global_underscore
         
     | 
| 
       1125 
     | 
    
         
            -
                assert_lex3("$_", nil, :tGVAR, "$_",  
     | 
| 
      
 1128 
     | 
    
         
            +
                assert_lex3("$_", nil, :tGVAR, "$_", EXPR_END)
         
     | 
| 
       1126 
1129 
     | 
    
         
             
              end
         
     | 
| 
       1127 
1130 
     | 
    
         | 
| 
       1128 
1131 
     | 
    
         
             
              def test_yylex_global_wierd
         
     | 
| 
       1129 
     | 
    
         
            -
                assert_lex3("$__blah", nil, :tGVAR, "$__blah",  
     | 
| 
      
 1132 
     | 
    
         
            +
                assert_lex3("$__blah", nil, :tGVAR, "$__blah", EXPR_END)
         
     | 
| 
       1130 
1133 
     | 
    
         
             
              end
         
     | 
| 
       1131 
1134 
     | 
    
         | 
| 
       1132 
1135 
     | 
    
         
             
              def test_yylex_global_zero
         
     | 
| 
       1133 
     | 
    
         
            -
                assert_lex3("$0", nil, :tGVAR, "$0",  
     | 
| 
      
 1136 
     | 
    
         
            +
                assert_lex3("$0", nil, :tGVAR, "$0", EXPR_END)
         
     | 
| 
       1134 
1137 
     | 
    
         
             
              end
         
     | 
| 
       1135 
1138 
     | 
    
         | 
| 
       1136 
1139 
     | 
    
         
             
              def test_yylex_gt
         
     | 
| 
       1137 
1140 
     | 
    
         
             
                assert_lex3("a > 2",
         
     | 
| 
       1138 
1141 
     | 
    
         
             
                            nil,
         
     | 
| 
       1139 
     | 
    
         
            -
                            :tIDENTIFIER, "a",  
     | 
| 
       1140 
     | 
    
         
            -
                            :tGT,         ">",  
     | 
| 
       1141 
     | 
    
         
            -
                            :tINTEGER,    2, 
     | 
| 
      
 1142 
     | 
    
         
            +
                            :tIDENTIFIER, "a", EXPR_CMDARG,
         
     | 
| 
      
 1143 
     | 
    
         
            +
                            :tGT,         ">", EXPR_BEG,
         
     | 
| 
      
 1144 
     | 
    
         
            +
                            :tINTEGER,    2,    EXPR_NUM)
         
     | 
| 
       1142 
1145 
     | 
    
         
             
              end
         
     | 
| 
       1143 
1146 
     | 
    
         | 
| 
       1144 
1147 
     | 
    
         
             
              def test_yylex_heredoc_backtick
         
     | 
| 
       1145 
1148 
     | 
    
         
             
                assert_lex3("a = <<`EOF`\n  blah blah\nEOF\n\n",
         
     | 
| 
       1146 
1149 
     | 
    
         
             
                            nil,
         
     | 
| 
       1147 
     | 
    
         
            -
                            :tIDENTIFIER,     "a",              
     | 
| 
       1148 
     | 
    
         
            -
                            :tEQL,            "=",              
     | 
| 
       1149 
     | 
    
         
            -
                            :tXSTRING_BEG,    "`",              
     | 
| 
       1150 
     | 
    
         
            -
                            :tSTRING_CONTENT, "  blah blah\n",  
     | 
| 
       1151 
     | 
    
         
            -
                            :tSTRING_END,     "EOF",            
     | 
| 
       1152 
     | 
    
         
            -
                            :tNL,             nil,              
     | 
| 
      
 1150 
     | 
    
         
            +
                            :tIDENTIFIER,     "a",             EXPR_CMDARG,
         
     | 
| 
      
 1151 
     | 
    
         
            +
                            :tEQL,            "=",             EXPR_BEG,
         
     | 
| 
      
 1152 
     | 
    
         
            +
                            :tXSTRING_BEG,    "`",             EXPR_BEG,
         
     | 
| 
      
 1153 
     | 
    
         
            +
                            :tSTRING_CONTENT, "  blah blah\n", EXPR_BEG,
         
     | 
| 
      
 1154 
     | 
    
         
            +
                            :tSTRING_END,     "EOF",           EXPR_END,
         
     | 
| 
      
 1155 
     | 
    
         
            +
                            :tNL,             nil,             EXPR_BEG)
         
     | 
| 
       1153 
1156 
     | 
    
         
             
              end
         
     | 
| 
       1154 
1157 
     | 
    
         | 
| 
       1155 
1158 
     | 
    
         
             
              def test_yylex_heredoc_double
         
     | 
| 
       1156 
1159 
     | 
    
         
             
                assert_lex3("a = <<\"EOF\"\n  blah blah\nEOF\n\n",
         
     | 
| 
       1157 
1160 
     | 
    
         
             
                            nil,
         
     | 
| 
       1158 
     | 
    
         
            -
                            :tIDENTIFIER,     "a",              
     | 
| 
       1159 
     | 
    
         
            -
                            :tEQL,            "=",              
     | 
| 
       1160 
     | 
    
         
            -
                            :tSTRING_BEG,     "\"",             
     | 
| 
       1161 
     | 
    
         
            -
                            :tSTRING_CONTENT, "  blah blah\n",  
     | 
| 
       1162 
     | 
    
         
            -
                            :tSTRING_END,     "EOF",            
     | 
| 
       1163 
     | 
    
         
            -
                            :tNL,             nil,              
     | 
| 
      
 1161 
     | 
    
         
            +
                            :tIDENTIFIER,     "a",             EXPR_CMDARG,
         
     | 
| 
      
 1162 
     | 
    
         
            +
                            :tEQL,            "=",             EXPR_BEG,
         
     | 
| 
      
 1163 
     | 
    
         
            +
                            :tSTRING_BEG,     "\"",            EXPR_BEG,
         
     | 
| 
      
 1164 
     | 
    
         
            +
                            :tSTRING_CONTENT, "  blah blah\n", EXPR_BEG,
         
     | 
| 
      
 1165 
     | 
    
         
            +
                            :tSTRING_END,     "EOF",           EXPR_END,
         
     | 
| 
      
 1166 
     | 
    
         
            +
                            :tNL,             nil,             EXPR_BEG)
         
     | 
| 
       1164 
1167 
     | 
    
         
             
              end
         
     | 
| 
       1165 
1168 
     | 
    
         | 
| 
       1166 
1169 
     | 
    
         
             
              def test_yylex_heredoc_double_dash
         
     | 
| 
       1167 
1170 
     | 
    
         
             
                assert_lex3("a = <<-\"EOF\"\n  blah blah\n  EOF\n\n",
         
     | 
| 
       1168 
1171 
     | 
    
         
             
                            nil,
         
     | 
| 
       1169 
     | 
    
         
            -
                            :tIDENTIFIER,     "a",              
     | 
| 
       1170 
     | 
    
         
            -
                            :tEQL,            "=",              
     | 
| 
       1171 
     | 
    
         
            -
                            :tSTRING_BEG,     "\"",             
     | 
| 
       1172 
     | 
    
         
            -
                            :tSTRING_CONTENT, "  blah blah\n",  
     | 
| 
       1173 
     | 
    
         
            -
                            :tSTRING_END,     "EOF",            
     | 
| 
       1174 
     | 
    
         
            -
                            :tNL,             nil,              
     | 
| 
      
 1172 
     | 
    
         
            +
                            :tIDENTIFIER,     "a",             EXPR_CMDARG,
         
     | 
| 
      
 1173 
     | 
    
         
            +
                            :tEQL,            "=",             EXPR_BEG,
         
     | 
| 
      
 1174 
     | 
    
         
            +
                            :tSTRING_BEG,     "\"",            EXPR_BEG,
         
     | 
| 
      
 1175 
     | 
    
         
            +
                            :tSTRING_CONTENT, "  blah blah\n", EXPR_BEG,
         
     | 
| 
      
 1176 
     | 
    
         
            +
                            :tSTRING_END,     "EOF",           EXPR_END,
         
     | 
| 
      
 1177 
     | 
    
         
            +
                            :tNL,             nil,             EXPR_BEG)
         
     | 
| 
       1175 
1178 
     | 
    
         
             
              end
         
     | 
| 
       1176 
1179 
     | 
    
         | 
| 
       1177 
1180 
     | 
    
         
             
              def test_yylex_heredoc_double_squiggly
         
     | 
| 
         @@ -1179,12 +1182,12 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1179 
1182 
     | 
    
         | 
| 
       1180 
1183 
     | 
    
         
             
                assert_lex3("a = <<~\"EOF\"\n  blah blah\n  EOF\n\n",
         
     | 
| 
       1181 
1184 
     | 
    
         
             
                            nil,
         
     | 
| 
       1182 
     | 
    
         
            -
                            :tIDENTIFIER,     "a",            
     | 
| 
       1183 
     | 
    
         
            -
                            :tEQL,            "=",            
     | 
| 
       1184 
     | 
    
         
            -
                            :tSTRING_BEG,     "\"",           
     | 
| 
       1185 
     | 
    
         
            -
                            :tSTRING_CONTENT, "blah blah\n",  
     | 
| 
       1186 
     | 
    
         
            -
                            :tSTRING_END,     "EOF",          
     | 
| 
       1187 
     | 
    
         
            -
                            :tNL,             nil,            
     | 
| 
      
 1185 
     | 
    
         
            +
                            :tIDENTIFIER,     "a",           EXPR_CMDARG,
         
     | 
| 
      
 1186 
     | 
    
         
            +
                            :tEQL,            "=",           EXPR_BEG,
         
     | 
| 
      
 1187 
     | 
    
         
            +
                            :tSTRING_BEG,     "\"",          EXPR_BEG,
         
     | 
| 
      
 1188 
     | 
    
         
            +
                            :tSTRING_CONTENT, "blah blah\n", EXPR_BEG,
         
     | 
| 
      
 1189 
     | 
    
         
            +
                            :tSTRING_END,     "EOF",         EXPR_END,
         
     | 
| 
      
 1190 
     | 
    
         
            +
                            :tNL,             nil,           EXPR_BEG)
         
     | 
| 
       1188 
1191 
     | 
    
         
             
              end
         
     | 
| 
       1189 
1192 
     | 
    
         | 
| 
       1190 
1193 
     | 
    
         
             
              # mri handles tabs in a pretty specific way:
         
     | 
| 
         @@ -1194,12 +1197,12 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1194 
1197 
     | 
    
         | 
| 
       1195 
1198 
     | 
    
         
             
                assert_lex3("a = <<~\"EOF\"\n  blah blah\n \tblah blah\n  EOF\n\n",
         
     | 
| 
       1196 
1199 
     | 
    
         
             
                            nil,
         
     | 
| 
       1197 
     | 
    
         
            -
                            :tIDENTIFIER,     "a",                         
     | 
| 
       1198 
     | 
    
         
            -
                            :tEQL,            "=",                         
     | 
| 
       1199 
     | 
    
         
            -
                            :tSTRING_BEG,     "\"",                        
     | 
| 
       1200 
     | 
    
         
            -
                            :tSTRING_CONTENT, "blah blah\n\tblah blah\n",  
     | 
| 
       1201 
     | 
    
         
            -
                            :tSTRING_END,     "EOF",                       
     | 
| 
       1202 
     | 
    
         
            -
                            :tNL,             nil,                         
     | 
| 
      
 1200 
     | 
    
         
            +
                            :tIDENTIFIER,     "a",                        EXPR_CMDARG,
         
     | 
| 
      
 1201 
     | 
    
         
            +
                            :tEQL,            "=",                        EXPR_BEG,
         
     | 
| 
      
 1202 
     | 
    
         
            +
                            :tSTRING_BEG,     "\"",                       EXPR_BEG,
         
     | 
| 
      
 1203 
     | 
    
         
            +
                            :tSTRING_CONTENT, "blah blah\n\tblah blah\n", EXPR_BEG,
         
     | 
| 
      
 1204 
     | 
    
         
            +
                            :tSTRING_END,     "EOF",                      EXPR_END,
         
     | 
| 
      
 1205 
     | 
    
         
            +
                            :tNL,             nil,                        EXPR_BEG)
         
     | 
| 
       1203 
1206 
     | 
    
         
             
              end
         
     | 
| 
       1204 
1207 
     | 
    
         | 
| 
       1205 
1208 
     | 
    
         
             
              def test_yylex_heredoc_double_squiggly_with_tab_indentation_removed
         
     | 
| 
         @@ -1207,12 +1210,12 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1207 
1210 
     | 
    
         | 
| 
       1208 
1211 
     | 
    
         
             
                assert_lex3("a = <<~\"EOF\"\n        blah blah\n\t blah blah\n  EOF\n\n",
         
     | 
| 
       1209 
1212 
     | 
    
         
             
                            nil,
         
     | 
| 
       1210 
     | 
    
         
            -
                            :tIDENTIFIER,     "a",                        
     | 
| 
       1211 
     | 
    
         
            -
                            :tEQL,            "=",                        
     | 
| 
       1212 
     | 
    
         
            -
                            :tSTRING_BEG,     "\"",                       
     | 
| 
       1213 
     | 
    
         
            -
                            :tSTRING_CONTENT, "blah blah\n blah blah\n",  
     | 
| 
       1214 
     | 
    
         
            -
                            :tSTRING_END,     "EOF",                      
     | 
| 
       1215 
     | 
    
         
            -
                            :tNL,             nil,                        
     | 
| 
      
 1213 
     | 
    
         
            +
                            :tIDENTIFIER,     "a",                       EXPR_CMDARG,
         
     | 
| 
      
 1214 
     | 
    
         
            +
                            :tEQL,            "=",                       EXPR_BEG,
         
     | 
| 
      
 1215 
     | 
    
         
            +
                            :tSTRING_BEG,     "\"",                      EXPR_BEG,
         
     | 
| 
      
 1216 
     | 
    
         
            +
                            :tSTRING_CONTENT, "blah blah\n blah blah\n", EXPR_BEG,
         
     | 
| 
      
 1217 
     | 
    
         
            +
                            :tSTRING_END,     "EOF",                     EXPR_END,
         
     | 
| 
      
 1218 
     | 
    
         
            +
                            :tNL,             nil,                       EXPR_BEG)
         
     | 
| 
       1216 
1219 
     | 
    
         
             
              end
         
     | 
| 
       1217 
1220 
     | 
    
         | 
| 
       1218 
1221 
     | 
    
         
             
              def test_yylex_heredoc_double_eos
         
     | 
| 
         @@ -1230,41 +1233,43 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1230 
1233 
     | 
    
         
             
              end
         
     | 
| 
       1231 
1234 
     | 
    
         | 
| 
       1232 
1235 
     | 
    
         
             
              def test_yylex_heredoc_double_interp
         
     | 
| 
       1233 
     | 
    
         
            -
                assert_lex3("a = <<\"EOF\"\n#x a \#@a b \#$b c \#{3} \nEOF\n\n",
         
     | 
| 
       1234 
     | 
    
         
            -
                            nil,
         
     | 
| 
       1235 
     | 
    
         
            -
                            :tIDENTIFIER,     "a",      
     | 
| 
       1236 
     | 
    
         
            -
                            :tEQL,            "=",      
     | 
| 
       1237 
     | 
    
         
            -
                            :tSTRING_BEG,     "\"",     
     | 
| 
       1238 
     | 
    
         
            -
                            :tSTRING_CONTENT, "#x a ",  
     | 
| 
       1239 
     | 
    
         
            -
                            :tSTRING_DVAR,    "\#@",    
     | 
| 
       1240 
     | 
    
         
            -
                            :tSTRING_CONTENT, "@a b ",  
     | 
| 
       1241 
     | 
    
         
            -
                            :tSTRING_DVAR,    "\#$",    
     | 
| 
       1242 
     | 
    
         
            -
                            :tSTRING_CONTENT, "$b c ",  
     | 
| 
       1243 
     | 
    
         
            -
                            : 
     | 
| 
       1244 
     | 
    
         
            -
                            :tSTRING_CONTENT, " 
     | 
| 
       1245 
     | 
    
         
            -
                            : 
     | 
| 
       1246 
     | 
    
         
            -
                            : 
     | 
| 
      
 1236 
     | 
    
         
            +
                assert_lex3("a = <<\"EOF\"\n#x a \#@a b \#$b c \#@@d \#{3} \nEOF\n\n",
         
     | 
| 
      
 1237 
     | 
    
         
            +
                            nil,
         
     | 
| 
      
 1238 
     | 
    
         
            +
                            :tIDENTIFIER,     "a",     EXPR_CMDARG,
         
     | 
| 
      
 1239 
     | 
    
         
            +
                            :tEQL,            "=",     EXPR_BEG,
         
     | 
| 
      
 1240 
     | 
    
         
            +
                            :tSTRING_BEG,     "\"",    EXPR_BEG,
         
     | 
| 
      
 1241 
     | 
    
         
            +
                            :tSTRING_CONTENT, "#x a ", EXPR_BEG,
         
     | 
| 
      
 1242 
     | 
    
         
            +
                            :tSTRING_DVAR,    "\#@",   EXPR_BEG,
         
     | 
| 
      
 1243 
     | 
    
         
            +
                            :tSTRING_CONTENT, "@a b ", EXPR_BEG, # HUH?
         
     | 
| 
      
 1244 
     | 
    
         
            +
                            :tSTRING_DVAR,    "\#$",   EXPR_BEG,
         
     | 
| 
      
 1245 
     | 
    
         
            +
                            :tSTRING_CONTENT, "$b c ", EXPR_BEG, # HUH?
         
     | 
| 
      
 1246 
     | 
    
         
            +
                            :tSTRING_DVAR,    "\#@",   EXPR_BEG,
         
     | 
| 
      
 1247 
     | 
    
         
            +
                            :tSTRING_CONTENT, "@@d ",  EXPR_BEG, # HUH?
         
     | 
| 
      
 1248 
     | 
    
         
            +
                            :tSTRING_DBEG,    "\#{",   EXPR_BEG,
         
     | 
| 
      
 1249 
     | 
    
         
            +
                            :tSTRING_CONTENT, "3} \n", EXPR_BEG,
         
     | 
| 
      
 1250 
     | 
    
         
            +
                            :tSTRING_END,     "EOF",   EXPR_END,
         
     | 
| 
      
 1251 
     | 
    
         
            +
                            :tNL,             nil,     EXPR_BEG)
         
     | 
| 
       1247 
1252 
     | 
    
         
             
              end
         
     | 
| 
       1248 
1253 
     | 
    
         | 
| 
       1249 
1254 
     | 
    
         
             
              def test_yylex_heredoc_empty
         
     | 
| 
       1250 
1255 
     | 
    
         
             
                assert_lex3("<<\"\"\n\#{x}\nblah2\n\n\n",
         
     | 
| 
       1251 
1256 
     | 
    
         
             
                            nil,
         
     | 
| 
       1252 
     | 
    
         
            -
                            :tSTRING_BEG,     "\"",           
     | 
| 
       1253 
     | 
    
         
            -
                            :tSTRING_DBEG,    "\#{",          
     | 
| 
       1254 
     | 
    
         
            -
                            :tSTRING_CONTENT, "x}\nblah2\n",  
     | 
| 
       1255 
     | 
    
         
            -
                            :tSTRING_END,     "",             
     | 
| 
       1256 
     | 
    
         
            -
                            :tNL,             nil,            
     | 
| 
      
 1257 
     | 
    
         
            +
                            :tSTRING_BEG,     "\"",          EXPR_BEG,
         
     | 
| 
      
 1258 
     | 
    
         
            +
                            :tSTRING_DBEG,    "\#{",         EXPR_BEG,
         
     | 
| 
      
 1259 
     | 
    
         
            +
                            :tSTRING_CONTENT, "x}\nblah2\n", EXPR_BEG,
         
     | 
| 
      
 1260 
     | 
    
         
            +
                            :tSTRING_END,     "",            EXPR_END,
         
     | 
| 
      
 1261 
     | 
    
         
            +
                            :tNL,             nil,           EXPR_BEG)
         
     | 
| 
       1257 
1262 
     | 
    
         
             
              end
         
     | 
| 
       1258 
1263 
     | 
    
         | 
| 
       1259 
1264 
     | 
    
         
             
              def test_yylex_heredoc_none
         
     | 
| 
       1260 
1265 
     | 
    
         
             
                assert_lex3("a = <<EOF\nblah\nblah\nEOF\n",
         
     | 
| 
       1261 
1266 
     | 
    
         
             
                            nil,
         
     | 
| 
       1262 
     | 
    
         
            -
                            :tIDENTIFIER,     "a",             
     | 
| 
       1263 
     | 
    
         
            -
                            :tEQL,            "=",             
     | 
| 
       1264 
     | 
    
         
            -
                            :tSTRING_BEG,     "\"",            
     | 
| 
       1265 
     | 
    
         
            -
                            :tSTRING_CONTENT, "blah\nblah\n",  
     | 
| 
       1266 
     | 
    
         
            -
                            :tSTRING_END,     "EOF",           
     | 
| 
       1267 
     | 
    
         
            -
                            :tNL,             nil,             
     | 
| 
      
 1267 
     | 
    
         
            +
                            :tIDENTIFIER,     "a",            EXPR_CMDARG,
         
     | 
| 
      
 1268 
     | 
    
         
            +
                            :tEQL,            "=",            EXPR_BEG,
         
     | 
| 
      
 1269 
     | 
    
         
            +
                            :tSTRING_BEG,     "\"",           EXPR_BEG,
         
     | 
| 
      
 1270 
     | 
    
         
            +
                            :tSTRING_CONTENT, "blah\nblah\n", EXPR_BEG,
         
     | 
| 
      
 1271 
     | 
    
         
            +
                            :tSTRING_END,     "EOF",          EXPR_END,
         
     | 
| 
      
 1272 
     | 
    
         
            +
                            :tNL,             nil,            EXPR_BEG)
         
     | 
| 
       1268 
1273 
     | 
    
         
             
              end
         
     | 
| 
       1269 
1274 
     | 
    
         | 
| 
       1270 
1275 
     | 
    
         
             
              def test_yylex_heredoc_none_bad_eos
         
     | 
| 
         @@ -1277,12 +1282,12 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1277 
1282 
     | 
    
         
             
              def test_yylex_heredoc_none_dash
         
     | 
| 
       1278 
1283 
     | 
    
         
             
                assert_lex3("a = <<-EOF\nblah\nblah\n  EOF\n",
         
     | 
| 
       1279 
1284 
     | 
    
         
             
                            nil,
         
     | 
| 
       1280 
     | 
    
         
            -
                            :tIDENTIFIER,     "a",             
     | 
| 
       1281 
     | 
    
         
            -
                            :tEQL,            "=",             
     | 
| 
       1282 
     | 
    
         
            -
                            :tSTRING_BEG,     "\"",            
     | 
| 
       1283 
     | 
    
         
            -
                            :tSTRING_CONTENT, "blah\nblah\n",  
     | 
| 
       1284 
     | 
    
         
            -
                            :tSTRING_END,     "EOF",           
     | 
| 
       1285 
     | 
    
         
            -
                            :tNL,             nil,             
     | 
| 
      
 1285 
     | 
    
         
            +
                            :tIDENTIFIER,     "a",            EXPR_CMDARG,
         
     | 
| 
      
 1286 
     | 
    
         
            +
                            :tEQL,            "=",            EXPR_BEG,
         
     | 
| 
      
 1287 
     | 
    
         
            +
                            :tSTRING_BEG,     "\"",           EXPR_BEG,
         
     | 
| 
      
 1288 
     | 
    
         
            +
                            :tSTRING_CONTENT, "blah\nblah\n", EXPR_BEG,
         
     | 
| 
      
 1289 
     | 
    
         
            +
                            :tSTRING_END,     "EOF",          EXPR_END,
         
     | 
| 
      
 1290 
     | 
    
         
            +
                            :tNL,             nil,            EXPR_BEG)
         
     | 
| 
       1286 
1291 
     | 
    
         
             
              end
         
     | 
| 
       1287 
1292 
     | 
    
         | 
| 
       1288 
1293 
     | 
    
         
             
              def test_yylex_heredoc_none_squiggly
         
     | 
| 
         @@ -1290,23 +1295,23 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1290 
1295 
     | 
    
         | 
| 
       1291 
1296 
     | 
    
         
             
                assert_lex3("a = <<~EOF\n  blah\n  blah\n  EOF\n",
         
     | 
| 
       1292 
1297 
     | 
    
         
             
                            nil,
         
     | 
| 
       1293 
     | 
    
         
            -
                            :tIDENTIFIER,     "a",             
     | 
| 
       1294 
     | 
    
         
            -
                            :tEQL,            "=",             
     | 
| 
       1295 
     | 
    
         
            -
                            :tSTRING_BEG,     "\"",            
     | 
| 
       1296 
     | 
    
         
            -
                            :tSTRING_CONTENT, "blah\nblah\n",  
     | 
| 
       1297 
     | 
    
         
            -
                            :tSTRING_END,     "EOF",           
     | 
| 
       1298 
     | 
    
         
            -
                            :tNL,             nil,             
     | 
| 
      
 1298 
     | 
    
         
            +
                            :tIDENTIFIER,     "a",            EXPR_CMDARG,
         
     | 
| 
      
 1299 
     | 
    
         
            +
                            :tEQL,            "=",            EXPR_BEG,
         
     | 
| 
      
 1300 
     | 
    
         
            +
                            :tSTRING_BEG,     "\"",           EXPR_BEG,
         
     | 
| 
      
 1301 
     | 
    
         
            +
                            :tSTRING_CONTENT, "blah\nblah\n", EXPR_BEG,
         
     | 
| 
      
 1302 
     | 
    
         
            +
                            :tSTRING_END,     "EOF",          EXPR_END,
         
     | 
| 
      
 1303 
     | 
    
         
            +
                            :tNL,             nil,            EXPR_BEG)
         
     | 
| 
       1299 
1304 
     | 
    
         
             
              end
         
     | 
| 
       1300 
1305 
     | 
    
         | 
| 
       1301 
1306 
     | 
    
         
             
              def test_yylex_heredoc_single
         
     | 
| 
       1302 
1307 
     | 
    
         
             
                assert_lex3("a = <<'EOF'\n  blah blah\nEOF\n\n",
         
     | 
| 
       1303 
1308 
     | 
    
         
             
                            nil,
         
     | 
| 
       1304 
     | 
    
         
            -
                            :tIDENTIFIER,     "a",              
     | 
| 
       1305 
     | 
    
         
            -
                            :tEQL,            "=",              
     | 
| 
       1306 
     | 
    
         
            -
                            :tSTRING_BEG,     "\"",             
     | 
| 
       1307 
     | 
    
         
            -
                            :tSTRING_CONTENT, "  blah blah\n",  
     | 
| 
       1308 
     | 
    
         
            -
                            :tSTRING_END,     "EOF",            
     | 
| 
       1309 
     | 
    
         
            -
                            :tNL,             nil,              
     | 
| 
      
 1309 
     | 
    
         
            +
                            :tIDENTIFIER,     "a",             EXPR_CMDARG,
         
     | 
| 
      
 1310 
     | 
    
         
            +
                            :tEQL,            "=",             EXPR_BEG,
         
     | 
| 
      
 1311 
     | 
    
         
            +
                            :tSTRING_BEG,     "\"",            EXPR_BEG,
         
     | 
| 
      
 1312 
     | 
    
         
            +
                            :tSTRING_CONTENT, "  blah blah\n", EXPR_BEG,
         
     | 
| 
      
 1313 
     | 
    
         
            +
                            :tSTRING_END,     "EOF",           EXPR_END,
         
     | 
| 
      
 1314 
     | 
    
         
            +
                            :tNL,             nil,             EXPR_BEG)
         
     | 
| 
       1310 
1315 
     | 
    
         
             
              end
         
     | 
| 
       1311 
1316 
     | 
    
         | 
| 
       1312 
1317 
     | 
    
         
             
              def test_yylex_heredoc_single_bad_eos_body
         
     | 
| 
         @@ -1340,12 +1345,12 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1340 
1345 
     | 
    
         
             
              def test_yylex_heredoc_single_dash
         
     | 
| 
       1341 
1346 
     | 
    
         
             
                assert_lex3("a = <<-'EOF'\n  blah blah\n  EOF\n\n",
         
     | 
| 
       1342 
1347 
     | 
    
         
             
                            nil,
         
     | 
| 
       1343 
     | 
    
         
            -
                            :tIDENTIFIER,     "a",              
     | 
| 
       1344 
     | 
    
         
            -
                            :tEQL,            "=",              
     | 
| 
       1345 
     | 
    
         
            -
                            :tSTRING_BEG,     "\"",             
     | 
| 
       1346 
     | 
    
         
            -
                            :tSTRING_CONTENT, "  blah blah\n",  
     | 
| 
       1347 
     | 
    
         
            -
                            :tSTRING_END,     "EOF",            
     | 
| 
       1348 
     | 
    
         
            -
                            :tNL,             nil,              
     | 
| 
      
 1348 
     | 
    
         
            +
                            :tIDENTIFIER,     "a",             EXPR_CMDARG,
         
     | 
| 
      
 1349 
     | 
    
         
            +
                            :tEQL,            "=",             EXPR_BEG,
         
     | 
| 
      
 1350 
     | 
    
         
            +
                            :tSTRING_BEG,     "\"",            EXPR_BEG,
         
     | 
| 
      
 1351 
     | 
    
         
            +
                            :tSTRING_CONTENT, "  blah blah\n", EXPR_BEG,
         
     | 
| 
      
 1352 
     | 
    
         
            +
                            :tSTRING_END,     "EOF",           EXPR_END,
         
     | 
| 
      
 1353 
     | 
    
         
            +
                            :tNL,             nil,             EXPR_BEG)
         
     | 
| 
       1349 
1354 
     | 
    
         
             
              end
         
     | 
| 
       1350 
1355 
     | 
    
         | 
| 
       1351 
1356 
     | 
    
         
             
              def test_yylex_heredoc_single_squiggly
         
     | 
| 
         @@ -1353,24 +1358,24 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1353 
1358 
     | 
    
         | 
| 
       1354 
1359 
     | 
    
         
             
                assert_lex3("a = <<~'EOF'\n  blah blah\n  EOF\n\n",
         
     | 
| 
       1355 
1360 
     | 
    
         
             
                            nil,
         
     | 
| 
       1356 
     | 
    
         
            -
                            :tIDENTIFIER,     "a",            
     | 
| 
       1357 
     | 
    
         
            -
                            :tEQL,            "=",            
     | 
| 
       1358 
     | 
    
         
            -
                            :tSTRING_BEG,     "\"",           
     | 
| 
       1359 
     | 
    
         
            -
                            :tSTRING_CONTENT, "blah blah\n",  
     | 
| 
       1360 
     | 
    
         
            -
                            :tSTRING_END,     "EOF",          
     | 
| 
       1361 
     | 
    
         
            -
                            :tNL,             nil,            
     | 
| 
      
 1361 
     | 
    
         
            +
                            :tIDENTIFIER,     "a",           EXPR_CMDARG,
         
     | 
| 
      
 1362 
     | 
    
         
            +
                            :tEQL,            "=",           EXPR_BEG,
         
     | 
| 
      
 1363 
     | 
    
         
            +
                            :tSTRING_BEG,     "\"",          EXPR_BEG,
         
     | 
| 
      
 1364 
     | 
    
         
            +
                            :tSTRING_CONTENT, "blah blah\n", EXPR_BEG,
         
     | 
| 
      
 1365 
     | 
    
         
            +
                            :tSTRING_END,     "EOF",         EXPR_END,
         
     | 
| 
      
 1366 
     | 
    
         
            +
                            :tNL,             nil,           EXPR_BEG)
         
     | 
| 
       1362 
1367 
     | 
    
         
             
              end
         
     | 
| 
       1363 
1368 
     | 
    
         | 
| 
       1364 
1369 
     | 
    
         
             
              def test_yylex_identifier
         
     | 
| 
       1365 
1370 
     | 
    
         
             
                assert_lex3("identifier",
         
     | 
| 
       1366 
1371 
     | 
    
         
             
                            nil,
         
     | 
| 
       1367 
     | 
    
         
            -
                            :tIDENTIFIER, "identifier",  
     | 
| 
      
 1372 
     | 
    
         
            +
                            :tIDENTIFIER, "identifier", EXPR_CMDARG)
         
     | 
| 
       1368 
1373 
     | 
    
         
             
              end
         
     | 
| 
       1369 
1374 
     | 
    
         | 
| 
       1370 
1375 
     | 
    
         
             
              def test_yylex_identifier_bang
         
     | 
| 
       1371 
1376 
     | 
    
         
             
                assert_lex3("identifier!",
         
     | 
| 
       1372 
1377 
     | 
    
         
             
                            nil,
         
     | 
| 
       1373 
     | 
    
         
            -
                            :tFID, "identifier!",  
     | 
| 
      
 1378 
     | 
    
         
            +
                            :tFID, "identifier!", EXPR_CMDARG)
         
     | 
| 
       1374 
1379 
     | 
    
         
             
              end
         
     | 
| 
       1375 
1380 
     | 
    
         | 
| 
       1376 
1381 
     | 
    
         
             
              def test_yylex_identifier_cmp
         
     | 
| 
         @@ -1380,34 +1385,34 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1380 
1385 
     | 
    
         
             
              def test_yylex_identifier_def__20
         
     | 
| 
       1381 
1386 
     | 
    
         
             
                setup_lexer_class RubyParser::V20
         
     | 
| 
       1382 
1387 
     | 
    
         | 
| 
       1383 
     | 
    
         
            -
                assert_lex_fname "identifier", :tIDENTIFIER,  
     | 
| 
      
 1388 
     | 
    
         
            +
                assert_lex_fname "identifier", :tIDENTIFIER, EXPR_ENDFN
         
     | 
| 
       1384 
1389 
     | 
    
         
             
              end
         
     | 
| 
       1385 
1390 
     | 
    
         | 
| 
       1386 
1391 
     | 
    
         
             
              def test_yylex_identifier_eh
         
     | 
| 
       1387 
     | 
    
         
            -
                assert_lex3("identifier?", nil, :tFID, "identifier?",  
     | 
| 
      
 1392 
     | 
    
         
            +
                assert_lex3("identifier?", nil, :tFID, "identifier?", EXPR_CMDARG)
         
     | 
| 
       1388 
1393 
     | 
    
         
             
              end
         
     | 
| 
       1389 
1394 
     | 
    
         | 
| 
       1390 
1395 
     | 
    
         
             
              def test_yylex_identifier_equals_arrow
         
     | 
| 
       1391 
1396 
     | 
    
         
             
                assert_lex3(":blah==>",
         
     | 
| 
       1392 
1397 
     | 
    
         
             
                            nil,
         
     | 
| 
       1393 
     | 
    
         
            -
                            :tSYMBOL, "blah=",  
     | 
| 
       1394 
     | 
    
         
            -
                            :tASSOC,  "=>",     
     | 
| 
      
 1398 
     | 
    
         
            +
                            :tSYMBOL, "blah=", EXPR_END,
         
     | 
| 
      
 1399 
     | 
    
         
            +
                            :tASSOC,  "=>",    EXPR_BEG)
         
     | 
| 
       1395 
1400 
     | 
    
         
             
              end
         
     | 
| 
       1396 
1401 
     | 
    
         | 
| 
       1397 
1402 
     | 
    
         
             
              def test_yylex_identifier_equals3
         
     | 
| 
       1398 
1403 
     | 
    
         
             
                assert_lex3(":a===b",
         
     | 
| 
       1399 
1404 
     | 
    
         
             
                            nil,
         
     | 
| 
       1400 
     | 
    
         
            -
                            :tSYMBOL,     "a",    
     | 
| 
       1401 
     | 
    
         
            -
                            :tEQQ,        "===",  
     | 
| 
       1402 
     | 
    
         
            -
                            :tIDENTIFIER, "b",    
     | 
| 
      
 1405 
     | 
    
         
            +
                            :tSYMBOL,     "a",   EXPR_END,
         
     | 
| 
      
 1406 
     | 
    
         
            +
                            :tEQQ,        "===", EXPR_BEG,
         
     | 
| 
      
 1407 
     | 
    
         
            +
                            :tIDENTIFIER, "b",   EXPR_ARG)
         
     | 
| 
       1403 
1408 
     | 
    
         
             
              end
         
     | 
| 
       1404 
1409 
     | 
    
         | 
| 
       1405 
1410 
     | 
    
         
             
              def test_yylex_identifier_equals_equals_arrow
         
     | 
| 
       1406 
1411 
     | 
    
         
             
                assert_lex3(":a==>b",
         
     | 
| 
       1407 
1412 
     | 
    
         
             
                            nil,
         
     | 
| 
       1408 
     | 
    
         
            -
                            :tSYMBOL, "a=",  
     | 
| 
       1409 
     | 
    
         
            -
                            :tASSOC, "=>",  
     | 
| 
       1410 
     | 
    
         
            -
                            :tIDENTIFIER, "b",  
     | 
| 
      
 1413 
     | 
    
         
            +
                            :tSYMBOL, "a=", EXPR_END,
         
     | 
| 
      
 1414 
     | 
    
         
            +
                            :tASSOC, "=>", EXPR_BEG,
         
     | 
| 
      
 1415 
     | 
    
         
            +
                            :tIDENTIFIER, "b", EXPR_ARG)
         
     | 
| 
       1411 
1416 
     | 
    
         
             
              end
         
     | 
| 
       1412 
1417 
     | 
    
         | 
| 
       1413 
1418 
     | 
    
         
             
              def test_yylex_identifier_equals_caret
         
     | 
| 
         @@ -1417,7 +1422,7 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1417 
1422 
     | 
    
         
             
              def test_yylex_identifier_equals_def__20
         
     | 
| 
       1418 
1423 
     | 
    
         
             
                setup_lexer_class RubyParser::V20
         
     | 
| 
       1419 
1424 
     | 
    
         | 
| 
       1420 
     | 
    
         
            -
                assert_lex_fname "identifier=", :tIDENTIFIER,  
     | 
| 
      
 1425 
     | 
    
         
            +
                assert_lex_fname "identifier=", :tIDENTIFIER, EXPR_ENDFN
         
     | 
| 
       1421 
1426 
     | 
    
         
             
              end
         
     | 
| 
       1422 
1427 
     | 
    
         | 
| 
       1423 
1428 
     | 
    
         
             
              def test_yylex_identifier_equals_def2
         
     | 
| 
         @@ -1425,12 +1430,12 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1425 
1430 
     | 
    
         
             
              end
         
     | 
| 
       1426 
1431 
     | 
    
         | 
| 
       1427 
1432 
     | 
    
         
             
              def test_yylex_identifier_equals_expr
         
     | 
| 
       1428 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 1433 
     | 
    
         
            +
                self.lex_state = EXPR_DOT
         
     | 
| 
       1429 
1434 
     | 
    
         
             
                assert_lex3("y = arg",
         
     | 
| 
       1430 
1435 
     | 
    
         
             
                            nil,
         
     | 
| 
       1431 
     | 
    
         
            -
                            :tIDENTIFIER, "y",    
     | 
| 
       1432 
     | 
    
         
            -
                            :tEQL,        "=",    
     | 
| 
       1433 
     | 
    
         
            -
                            :tIDENTIFIER, "arg",  
     | 
| 
      
 1436 
     | 
    
         
            +
                            :tIDENTIFIER, "y",   EXPR_CMDARG,
         
     | 
| 
      
 1437 
     | 
    
         
            +
                            :tEQL,        "=",   EXPR_BEG,
         
     | 
| 
      
 1438 
     | 
    
         
            +
                            :tIDENTIFIER, "arg", EXPR_ARG)
         
     | 
| 
       1434 
1439 
     | 
    
         
             
              end
         
     | 
| 
       1435 
1440 
     | 
    
         | 
| 
       1436 
1441 
     | 
    
         
             
              def test_yylex_identifier_equals_or
         
     | 
| 
         @@ -1442,12 +1447,12 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1442 
1447 
     | 
    
         
             
              end
         
     | 
| 
       1443 
1448 
     | 
    
         | 
| 
       1444 
1449 
     | 
    
         
             
              def test_yylex_identifier_equals_tilde
         
     | 
| 
       1445 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 1450 
     | 
    
         
            +
                self.lex_state = EXPR_FNAME # can only set via parser's defs
         
     | 
| 
       1446 
1451 
     | 
    
         | 
| 
       1447 
1452 
     | 
    
         
             
                assert_lex3("identifier=~",
         
     | 
| 
       1448 
1453 
     | 
    
         
             
                            nil,
         
     | 
| 
       1449 
     | 
    
         
            -
                            :tIDENTIFIER, "identifier",  
     | 
| 
       1450 
     | 
    
         
            -
                            :tMATCH,      "=~",          
     | 
| 
      
 1454 
     | 
    
         
            +
                            :tIDENTIFIER, "identifier", EXPR_ENDFN,
         
     | 
| 
      
 1455 
     | 
    
         
            +
                            :tMATCH,      "=~",         EXPR_BEG)
         
     | 
| 
       1451 
1456 
     | 
    
         
             
              end
         
     | 
| 
       1452 
1457 
     | 
    
         | 
| 
       1453 
1458 
     | 
    
         
             
              def test_yylex_identifier_gt
         
     | 
| 
         @@ -1475,11 +1480,11 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1475 
1480 
     | 
    
         
             
              end
         
     | 
| 
       1476 
1481 
     | 
    
         | 
| 
       1477 
1482 
     | 
    
         
             
              def test_yylex_integer
         
     | 
| 
       1478 
     | 
    
         
            -
                assert_lex3("42", nil, :tINTEGER, 42,  
     | 
| 
      
 1483 
     | 
    
         
            +
                assert_lex3("42", nil, :tINTEGER, 42, EXPR_NUM)
         
     | 
| 
       1479 
1484 
     | 
    
         
             
              end
         
     | 
| 
       1480 
1485 
     | 
    
         | 
| 
       1481 
1486 
     | 
    
         
             
              def test_yylex_integer_bin
         
     | 
| 
       1482 
     | 
    
         
            -
                assert_lex3("0b101010", nil, :tINTEGER, 42,  
     | 
| 
      
 1487 
     | 
    
         
            +
                assert_lex3("0b101010", nil, :tINTEGER, 42, EXPR_NUM)
         
     | 
| 
       1483 
1488 
     | 
    
         
             
              end
         
     | 
| 
       1484 
1489 
     | 
    
         | 
| 
       1485 
1490 
     | 
    
         
             
              def test_yylex_integer_bin_bad_none
         
     | 
| 
         @@ -1491,7 +1496,7 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1491 
1496 
     | 
    
         
             
              end
         
     | 
| 
       1492 
1497 
     | 
    
         | 
| 
       1493 
1498 
     | 
    
         
             
              def test_yylex_integer_dec
         
     | 
| 
       1494 
     | 
    
         
            -
                assert_lex3("42", nil, :tINTEGER, 42,  
     | 
| 
      
 1499 
     | 
    
         
            +
                assert_lex3("42", nil, :tINTEGER, 42, EXPR_NUM)
         
     | 
| 
       1495 
1500 
     | 
    
         
             
              end
         
     | 
| 
       1496 
1501 
     | 
    
         | 
| 
       1497 
1502 
     | 
    
         
             
              def test_yylex_integer_dec_bad_underscores
         
     | 
| 
         @@ -1499,7 +1504,7 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1499 
1504 
     | 
    
         
             
              end
         
     | 
| 
       1500 
1505 
     | 
    
         | 
| 
       1501 
1506 
     | 
    
         
             
              def test_yylex_integer_dec_d
         
     | 
| 
       1502 
     | 
    
         
            -
                assert_lex3("0d42", nil, :tINTEGER, 42,  
     | 
| 
      
 1507 
     | 
    
         
            +
                assert_lex3("0d42", nil, :tINTEGER, 42, EXPR_NUM)
         
     | 
| 
       1503 
1508 
     | 
    
         
             
              end
         
     | 
| 
       1504 
1509 
     | 
    
         | 
| 
       1505 
1510 
     | 
    
         
             
              def test_yylex_integer_dec_d_bad_none
         
     | 
| 
         @@ -1513,24 +1518,24 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1513 
1518 
     | 
    
         
             
              def test_yylex_integer_if_modifier
         
     | 
| 
       1514 
1519 
     | 
    
         
             
                assert_lex3("123if",
         
     | 
| 
       1515 
1520 
     | 
    
         
             
                            nil,
         
     | 
| 
       1516 
     | 
    
         
            -
                            :tINTEGER, 123,  
     | 
| 
       1517 
     | 
    
         
            -
                            :kIF_MOD, "if",  
     | 
| 
      
 1521 
     | 
    
         
            +
                            :tINTEGER, 123, EXPR_NUM,
         
     | 
| 
      
 1522 
     | 
    
         
            +
                            :kIF_MOD, "if", EXPR_PAR)
         
     | 
| 
       1518 
1523 
     | 
    
         
             
              end
         
     | 
| 
       1519 
1524 
     | 
    
         | 
| 
       1520 
1525 
     | 
    
         
             
              def test_yylex_question_eh_a__20
         
     | 
| 
       1521 
1526 
     | 
    
         
             
                setup_lexer_class RubyParser::V20
         
     | 
| 
       1522 
1527 
     | 
    
         | 
| 
       1523 
     | 
    
         
            -
                assert_lex3("?a", nil, :tSTRING, "a",  
     | 
| 
      
 1528 
     | 
    
         
            +
                assert_lex3("?a", nil, :tSTRING, "a", EXPR_END)
         
     | 
| 
       1524 
1529 
     | 
    
         
             
              end
         
     | 
| 
       1525 
1530 
     | 
    
         | 
| 
       1526 
1531 
     | 
    
         
             
              def test_yylex_question_eh_escape_M_escape_C__20
         
     | 
| 
       1527 
1532 
     | 
    
         
             
                setup_lexer_class RubyParser::V20
         
     | 
| 
       1528 
1533 
     | 
    
         | 
| 
       1529 
     | 
    
         
            -
                assert_lex3("?\\M-\\C-a", nil, :tSTRING, "\M-\C-a",  
     | 
| 
      
 1534 
     | 
    
         
            +
                assert_lex3("?\\M-\\C-a", nil, :tSTRING, "\M-\C-a", EXPR_END)
         
     | 
| 
       1530 
1535 
     | 
    
         
             
              end
         
     | 
| 
       1531 
1536 
     | 
    
         | 
| 
       1532 
1537 
     | 
    
         
             
              def test_yylex_integer_hex
         
     | 
| 
       1533 
     | 
    
         
            -
                assert_lex3 "0x2a", nil, :tINTEGER, 42,  
     | 
| 
      
 1538 
     | 
    
         
            +
                assert_lex3 "0x2a", nil, :tINTEGER, 42, EXPR_NUM
         
     | 
| 
       1534 
1539 
     | 
    
         
             
              end
         
     | 
| 
       1535 
1540 
     | 
    
         | 
| 
       1536 
1541 
     | 
    
         
             
              def test_yylex_integer_hex_bad_none
         
     | 
| 
         @@ -1542,7 +1547,7 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1542 
1547 
     | 
    
         
             
              end
         
     | 
| 
       1543 
1548 
     | 
    
         | 
| 
       1544 
1549 
     | 
    
         
             
              def test_yylex_integer_oct
         
     | 
| 
       1545 
     | 
    
         
            -
                assert_lex3("052", nil, :tINTEGER, 42,  
     | 
| 
      
 1550 
     | 
    
         
            +
                assert_lex3("052", nil, :tINTEGER, 42, EXPR_NUM)
         
     | 
| 
       1546 
1551 
     | 
    
         
             
              end
         
     | 
| 
       1547 
1552 
     | 
    
         | 
| 
       1548 
1553 
     | 
    
         
             
              def test_yylex_integer_oct_bad_range
         
     | 
| 
         @@ -1558,7 +1563,7 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1558 
1563 
     | 
    
         
             
              end
         
     | 
| 
       1559 
1564 
     | 
    
         | 
| 
       1560 
1565 
     | 
    
         
             
              def test_yylex_integer_oct_O
         
     | 
| 
       1561 
     | 
    
         
            -
                assert_lex3 "0O52", nil, :tINTEGER, 42,  
     | 
| 
      
 1566 
     | 
    
         
            +
                assert_lex3 "0O52", nil, :tINTEGER, 42, EXPR_NUM
         
     | 
| 
       1562 
1567 
     | 
    
         
             
              end
         
     | 
| 
       1563 
1568 
     | 
    
         | 
| 
       1564 
1569 
     | 
    
         
             
              def test_yylex_integer_oct_O_bad_range
         
     | 
| 
         @@ -1570,11 +1575,11 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1570 
1575 
     | 
    
         
             
              end
         
     | 
| 
       1571 
1576 
     | 
    
         | 
| 
       1572 
1577 
     | 
    
         
             
              def test_yylex_integer_oct_O_not_bad_none
         
     | 
| 
       1573 
     | 
    
         
            -
                assert_lex3 "0O ", nil, :tINTEGER, 0,  
     | 
| 
      
 1578 
     | 
    
         
            +
                assert_lex3 "0O ", nil, :tINTEGER, 0, EXPR_NUM
         
     | 
| 
       1574 
1579 
     | 
    
         
             
              end
         
     | 
| 
       1575 
1580 
     | 
    
         | 
| 
       1576 
1581 
     | 
    
         
             
              def test_yylex_integer_oct_o
         
     | 
| 
       1577 
     | 
    
         
            -
                assert_lex3 "0o52", nil, :tINTEGER, 42,  
     | 
| 
      
 1582 
     | 
    
         
            +
                assert_lex3 "0o52", nil, :tINTEGER, 42, EXPR_NUM
         
     | 
| 
       1578 
1583 
     | 
    
         
             
              end
         
     | 
| 
       1579 
1584 
     | 
    
         | 
| 
       1580 
1585 
     | 
    
         
             
              def test_yylex_integer_oct_o_bad_range
         
     | 
| 
         @@ -1586,19 +1591,19 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1586 
1591 
     | 
    
         
             
              end
         
     | 
| 
       1587 
1592 
     | 
    
         | 
| 
       1588 
1593 
     | 
    
         
             
              def test_yylex_integer_oct_o_not_bad_none
         
     | 
| 
       1589 
     | 
    
         
            -
                assert_lex3 "0o ", nil, :tINTEGER, 0,  
     | 
| 
      
 1594 
     | 
    
         
            +
                assert_lex3 "0o ", nil, :tINTEGER, 0, EXPR_NUM
         
     | 
| 
       1590 
1595 
     | 
    
         
             
              end
         
     | 
| 
       1591 
1596 
     | 
    
         | 
| 
       1592 
1597 
     | 
    
         
             
              def test_yylex_integer_trailing
         
     | 
| 
       1593 
1598 
     | 
    
         
             
                assert_lex3("1.to_s",
         
     | 
| 
       1594 
1599 
     | 
    
         
             
                            nil,
         
     | 
| 
       1595 
     | 
    
         
            -
                            :tINTEGER,    1,       
     | 
| 
       1596 
     | 
    
         
            -
                            :tDOT,        ".",     
     | 
| 
       1597 
     | 
    
         
            -
                            :tIDENTIFIER, "to_s",  
     | 
| 
      
 1600 
     | 
    
         
            +
                            :tINTEGER,    1,      EXPR_NUM,
         
     | 
| 
      
 1601 
     | 
    
         
            +
                            :tDOT,        ".",    EXPR_DOT,
         
     | 
| 
      
 1602 
     | 
    
         
            +
                            :tIDENTIFIER, "to_s", EXPR_ARG)
         
     | 
| 
       1598 
1603 
     | 
    
         
             
              end
         
     | 
| 
       1599 
1604 
     | 
    
         | 
| 
       1600 
1605 
     | 
    
         
             
              def test_yylex_integer_underscore
         
     | 
| 
       1601 
     | 
    
         
            -
                assert_lex3("4_2", nil, :tINTEGER, 42,  
     | 
| 
      
 1606 
     | 
    
         
            +
                assert_lex3("4_2", nil, :tINTEGER, 42, EXPR_NUM)
         
     | 
| 
       1602 
1607 
     | 
    
         
             
              end
         
     | 
| 
       1603 
1608 
     | 
    
         | 
| 
       1604 
1609 
     | 
    
         
             
              def test_yylex_integer_underscore_bad
         
     | 
| 
         @@ -1606,11 +1611,11 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1606 
1611 
     | 
    
         
             
              end
         
     | 
| 
       1607 
1612 
     | 
    
         | 
| 
       1608 
1613 
     | 
    
         
             
              def test_yylex_integer_zero
         
     | 
| 
       1609 
     | 
    
         
            -
                assert_lex3 "0", nil, :tINTEGER, 0, 
     | 
| 
      
 1614 
     | 
    
         
            +
                assert_lex3 "0", nil, :tINTEGER, 0,  EXPR_NUM
         
     | 
| 
       1610 
1615 
     | 
    
         
             
              end
         
     | 
| 
       1611 
1616 
     | 
    
         | 
| 
       1612 
1617 
     | 
    
         
             
              def test_yylex_ivar
         
     | 
| 
       1613 
     | 
    
         
            -
                assert_lex3("@blah", nil, :tIVAR, "@blah",  
     | 
| 
      
 1618 
     | 
    
         
            +
                assert_lex3("@blah", nil, :tIVAR, "@blah", EXPR_END)
         
     | 
| 
       1614 
1619 
     | 
    
         
             
              end
         
     | 
| 
       1615 
1620 
     | 
    
         | 
| 
       1616 
1621 
     | 
    
         
             
              def test_yylex_ivar_bad
         
     | 
| 
         @@ -1618,237 +1623,237 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1618 
1623 
     | 
    
         
             
              end
         
     | 
| 
       1619 
1624 
     | 
    
         | 
| 
       1620 
1625 
     | 
    
         
             
              def test_yylex_ivar_bad_0_length
         
     | 
| 
       1621 
     | 
    
         
            -
                refute_lex "1+@\n", :tINTEGER, 1, :tPLUS, "+", 
     | 
| 
      
 1626 
     | 
    
         
            +
                refute_lex "1+@\n", :tINTEGER, 1, :tPLUS, "+",  EXPR_NUM
         
     | 
| 
       1622 
1627 
     | 
    
         
             
              end
         
     | 
| 
       1623 
1628 
     | 
    
         | 
| 
       1624 
1629 
     | 
    
         
             
              def test_yylex_keyword_expr
         
     | 
| 
       1625 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 1630 
     | 
    
         
            +
                self.lex_state = EXPR_ENDARG
         
     | 
| 
       1626 
1631 
     | 
    
         | 
| 
       1627 
     | 
    
         
            -
                assert_lex3("if", nil, :kIF_MOD, "if",  
     | 
| 
      
 1632 
     | 
    
         
            +
                assert_lex3("if", nil, :kIF_MOD, "if", EXPR_PAR)
         
     | 
| 
       1628 
1633 
     | 
    
         
             
              end
         
     | 
| 
       1629 
1634 
     | 
    
         | 
| 
       1630 
1635 
     | 
    
         
             
              def test_yylex_lt
         
     | 
| 
       1631 
     | 
    
         
            -
                assert_lex3("<", nil, :tLT, "<",  
     | 
| 
      
 1636 
     | 
    
         
            +
                assert_lex3("<", nil, :tLT, "<", EXPR_BEG)
         
     | 
| 
       1632 
1637 
     | 
    
         
             
              end
         
     | 
| 
       1633 
1638 
     | 
    
         | 
| 
       1634 
1639 
     | 
    
         
             
              def test_yylex_lt2
         
     | 
| 
       1635 
1640 
     | 
    
         
             
                assert_lex3("a << b",
         
     | 
| 
       1636 
1641 
     | 
    
         
             
                            nil,
         
     | 
| 
       1637 
     | 
    
         
            -
                            :tIDENTIFIER, "a",   
     | 
| 
       1638 
     | 
    
         
            -
                            :tLSHFT,      "<<",  
     | 
| 
       1639 
     | 
    
         
            -
                            :tIDENTIFIER, "b",   
     | 
| 
      
 1642 
     | 
    
         
            +
                            :tIDENTIFIER, "a",  EXPR_CMDARG,
         
     | 
| 
      
 1643 
     | 
    
         
            +
                            :tLSHFT,      "<<", EXPR_BEG,
         
     | 
| 
      
 1644 
     | 
    
         
            +
                            :tIDENTIFIER, "b",  EXPR_ARG)
         
     | 
| 
       1640 
1645 
     | 
    
         
             
              end
         
     | 
| 
       1641 
1646 
     | 
    
         | 
| 
       1642 
1647 
     | 
    
         
             
              def test_yylex_lt2_equals
         
     | 
| 
       1643 
1648 
     | 
    
         
             
                assert_lex3("a <<= b",
         
     | 
| 
       1644 
1649 
     | 
    
         
             
                            nil,
         
     | 
| 
       1645 
     | 
    
         
            -
                            :tIDENTIFIER, "a",   
     | 
| 
       1646 
     | 
    
         
            -
                            :tOP_ASGN,    "<<",  
     | 
| 
       1647 
     | 
    
         
            -
                            :tIDENTIFIER, "b",   
     | 
| 
      
 1650 
     | 
    
         
            +
                            :tIDENTIFIER, "a",  EXPR_CMDARG,
         
     | 
| 
      
 1651 
     | 
    
         
            +
                            :tOP_ASGN,    "<<", EXPR_BEG,
         
     | 
| 
      
 1652 
     | 
    
         
            +
                            :tIDENTIFIER, "b",  EXPR_ARG)
         
     | 
| 
       1648 
1653 
     | 
    
         
             
              end
         
     | 
| 
       1649 
1654 
     | 
    
         | 
| 
       1650 
1655 
     | 
    
         
             
              def test_yylex_lt_equals
         
     | 
| 
       1651 
     | 
    
         
            -
                assert_lex3("<=", nil, :tLEQ, "<=",  
     | 
| 
      
 1656 
     | 
    
         
            +
                assert_lex3("<=", nil, :tLEQ, "<=", EXPR_BEG)
         
     | 
| 
       1652 
1657 
     | 
    
         
             
              end
         
     | 
| 
       1653 
1658 
     | 
    
         | 
| 
       1654 
1659 
     | 
    
         
             
              def test_yylex_minus
         
     | 
| 
       1655 
1660 
     | 
    
         
             
                assert_lex3("1 - 2",
         
     | 
| 
       1656 
1661 
     | 
    
         
             
                            nil,
         
     | 
| 
       1657 
     | 
    
         
            -
                            :tINTEGER, 1, 
     | 
| 
       1658 
     | 
    
         
            -
                            :tMINUS,   "-",  
     | 
| 
       1659 
     | 
    
         
            -
                            :tINTEGER, 2, 
     | 
| 
      
 1662 
     | 
    
         
            +
                            :tINTEGER, 1,    EXPR_NUM,
         
     | 
| 
      
 1663 
     | 
    
         
            +
                            :tMINUS,   "-", EXPR_BEG,
         
     | 
| 
      
 1664 
     | 
    
         
            +
                            :tINTEGER, 2,    EXPR_NUM)
         
     | 
| 
       1660 
1665 
     | 
    
         
             
              end
         
     | 
| 
       1661 
1666 
     | 
    
         | 
| 
       1662 
1667 
     | 
    
         
             
              def test_yylex_minus_equals
         
     | 
| 
       1663 
     | 
    
         
            -
                assert_lex3("-=", nil, :tOP_ASGN, "-",  
     | 
| 
      
 1668 
     | 
    
         
            +
                assert_lex3("-=", nil, :tOP_ASGN, "-", EXPR_BEG)
         
     | 
| 
       1664 
1669 
     | 
    
         
             
              end
         
     | 
| 
       1665 
1670 
     | 
    
         | 
| 
       1666 
1671 
     | 
    
         
             
              def test_yylex_minus_method
         
     | 
| 
       1667 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 1672 
     | 
    
         
            +
                self.lex_state = EXPR_FNAME
         
     | 
| 
       1668 
1673 
     | 
    
         | 
| 
       1669 
     | 
    
         
            -
                assert_lex3("-", nil, :tMINUS, "-",  
     | 
| 
      
 1674 
     | 
    
         
            +
                assert_lex3("-", nil, :tMINUS, "-", EXPR_ARG)
         
     | 
| 
       1670 
1675 
     | 
    
         
             
              end
         
     | 
| 
       1671 
1676 
     | 
    
         | 
| 
       1672 
1677 
     | 
    
         
             
              def test_yylex_minus_unary_method
         
     | 
| 
       1673 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 1678 
     | 
    
         
            +
                self.lex_state = EXPR_FNAME
         
     | 
| 
       1674 
1679 
     | 
    
         | 
| 
       1675 
     | 
    
         
            -
                assert_lex3("-@", nil, :tUMINUS, "-@",  
     | 
| 
      
 1680 
     | 
    
         
            +
                assert_lex3("-@", nil, :tUMINUS, "-@", EXPR_ARG)
         
     | 
| 
       1676 
1681 
     | 
    
         
             
              end
         
     | 
| 
       1677 
1682 
     | 
    
         | 
| 
       1678 
1683 
     | 
    
         
             
              def test_yylex_minus_unary_number
         
     | 
| 
       1679 
1684 
     | 
    
         
             
                assert_lex3("-42",
         
     | 
| 
       1680 
1685 
     | 
    
         
             
                            nil,
         
     | 
| 
       1681 
     | 
    
         
            -
                            :tUMINUS_NUM, "-",  
     | 
| 
       1682 
     | 
    
         
            -
                            :tINTEGER,    42, 
     | 
| 
      
 1686 
     | 
    
         
            +
                            :tUMINUS_NUM, "-", EXPR_BEG,
         
     | 
| 
      
 1687 
     | 
    
         
            +
                            :tINTEGER,    42,   EXPR_NUM)
         
     | 
| 
       1683 
1688 
     | 
    
         
             
              end
         
     | 
| 
       1684 
1689 
     | 
    
         | 
| 
       1685 
1690 
     | 
    
         
             
              def test_yylex_nth_ref
         
     | 
| 
       1686 
1691 
     | 
    
         
             
                assert_lex3("[$1, $2, $3, $4, $5, $6, $7, $8, $9]",
         
     | 
| 
       1687 
1692 
     | 
    
         
             
                           nil,
         
     | 
| 
       1688 
     | 
    
         
            -
                           :tLBRACK,  "[",  
     | 
| 
       1689 
     | 
    
         
            -
                           :tNTH_REF, 1,    
     | 
| 
       1690 
     | 
    
         
            -
                           :tNTH_REF, 2,    
     | 
| 
       1691 
     | 
    
         
            -
                           :tNTH_REF, 3,    
     | 
| 
       1692 
     | 
    
         
            -
                           :tNTH_REF, 4,    
     | 
| 
       1693 
     | 
    
         
            -
                           :tNTH_REF, 5,    
     | 
| 
       1694 
     | 
    
         
            -
                           :tNTH_REF, 6,    
     | 
| 
       1695 
     | 
    
         
            -
                           :tNTH_REF, 7,    
     | 
| 
       1696 
     | 
    
         
            -
                           :tNTH_REF, 8,    
     | 
| 
       1697 
     | 
    
         
            -
                           :tNTH_REF, 9,    
     | 
| 
       1698 
     | 
    
         
            -
                           :tRBRACK,  "]",  
     | 
| 
      
 1693 
     | 
    
         
            +
                           :tLBRACK,  "[", EXPR_PAR,
         
     | 
| 
      
 1694 
     | 
    
         
            +
                           :tNTH_REF, 1,   EXPR_END, :tCOMMA,   ",", EXPR_PAR,
         
     | 
| 
      
 1695 
     | 
    
         
            +
                           :tNTH_REF, 2,   EXPR_END, :tCOMMA,   ",", EXPR_PAR,
         
     | 
| 
      
 1696 
     | 
    
         
            +
                           :tNTH_REF, 3,   EXPR_END, :tCOMMA,   ",", EXPR_PAR,
         
     | 
| 
      
 1697 
     | 
    
         
            +
                           :tNTH_REF, 4,   EXPR_END, :tCOMMA,   ",", EXPR_PAR,
         
     | 
| 
      
 1698 
     | 
    
         
            +
                           :tNTH_REF, 5,   EXPR_END, :tCOMMA,   ",", EXPR_PAR,
         
     | 
| 
      
 1699 
     | 
    
         
            +
                           :tNTH_REF, 6,   EXPR_END, :tCOMMA,   ",", EXPR_PAR,
         
     | 
| 
      
 1700 
     | 
    
         
            +
                           :tNTH_REF, 7,   EXPR_END, :tCOMMA,   ",", EXPR_PAR,
         
     | 
| 
      
 1701 
     | 
    
         
            +
                           :tNTH_REF, 8,   EXPR_END, :tCOMMA,   ",", EXPR_PAR,
         
     | 
| 
      
 1702 
     | 
    
         
            +
                           :tNTH_REF, 9,   EXPR_END,
         
     | 
| 
      
 1703 
     | 
    
         
            +
                           :tRBRACK,  "]", EXPR_ENDARG)
         
     | 
| 
       1699 
1704 
     | 
    
         
             
              end
         
     | 
| 
       1700 
1705 
     | 
    
         | 
| 
       1701 
1706 
     | 
    
         
             
              def test_yylex_open_bracket
         
     | 
| 
       1702 
     | 
    
         
            -
                assert_lex3("(", nil, :tLPAREN, "(",  
     | 
| 
      
 1707 
     | 
    
         
            +
                assert_lex3("(", nil, :tLPAREN, "(", EXPR_PAR)
         
     | 
| 
       1703 
1708 
     | 
    
         
             
              end
         
     | 
| 
       1704 
1709 
     | 
    
         | 
| 
       1705 
1710 
     | 
    
         
             
              def test_yylex_open_bracket_cmdarg
         
     | 
| 
       1706 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 1711 
     | 
    
         
            +
                self.lex_state = EXPR_CMDARG
         
     | 
| 
       1707 
1712 
     | 
    
         | 
| 
       1708 
     | 
    
         
            -
                assert_lex3(" (", nil, :tLPAREN_ARG, "(",  
     | 
| 
      
 1713 
     | 
    
         
            +
                assert_lex3(" (", nil, :tLPAREN_ARG, "(", EXPR_PAR)
         
     | 
| 
       1709 
1714 
     | 
    
         
             
              end
         
     | 
| 
       1710 
1715 
     | 
    
         | 
| 
       1711 
1716 
     | 
    
         
             
              def test_yylex_open_bracket_exprarg__20
         
     | 
| 
       1712 
1717 
     | 
    
         
             
                setup_lexer_class RubyParser::V20
         
     | 
| 
       1713 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 1718 
     | 
    
         
            +
                self.lex_state = EXPR_ARG
         
     | 
| 
       1714 
1719 
     | 
    
         | 
| 
       1715 
     | 
    
         
            -
                assert_lex3(" (", nil, :tLPAREN_ARG, "(",  
     | 
| 
      
 1720 
     | 
    
         
            +
                assert_lex3(" (", nil, :tLPAREN_ARG, "(", EXPR_PAR)
         
     | 
| 
       1716 
1721 
     | 
    
         
             
              end
         
     | 
| 
       1717 
1722 
     | 
    
         | 
| 
       1718 
1723 
     | 
    
         
             
              def test_yylex_open_curly_bracket
         
     | 
| 
       1719 
     | 
    
         
            -
                assert_lex3("{", nil, :tLBRACE, "{",  
     | 
| 
      
 1724 
     | 
    
         
            +
                assert_lex3("{", nil, :tLBRACE, "{", EXPR_PAR)
         
     | 
| 
       1720 
1725 
     | 
    
         
             
              end
         
     | 
| 
       1721 
1726 
     | 
    
         | 
| 
       1722 
1727 
     | 
    
         
             
              def test_yylex_open_curly_bracket_arg
         
     | 
| 
       1723 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 1728 
     | 
    
         
            +
                self.lex_state = EXPR_ARG
         
     | 
| 
       1724 
1729 
     | 
    
         | 
| 
       1725 
1730 
     | 
    
         
             
                assert_lex3("m { 3 }",
         
     | 
| 
       1726 
1731 
     | 
    
         
             
                            nil,
         
     | 
| 
       1727 
     | 
    
         
            -
                            :tIDENTIFIER, "m",  
     | 
| 
       1728 
     | 
    
         
            -
                            :tLCURLY,     "{", 
     | 
| 
       1729 
     | 
    
         
            -
                            :tINTEGER,    3, 
     | 
| 
       1730 
     | 
    
         
            -
                            :tRCURLY,     "}",  
     | 
| 
      
 1732 
     | 
    
         
            +
                            :tIDENTIFIER, "m", EXPR_CMDARG,
         
     | 
| 
      
 1733 
     | 
    
         
            +
                            :tLCURLY,     "{",  EXPR_PAR,
         
     | 
| 
      
 1734 
     | 
    
         
            +
                            :tINTEGER,    3,    EXPR_NUM,
         
     | 
| 
      
 1735 
     | 
    
         
            +
                            :tRCURLY,     "}", EXPR_ENDARG)
         
     | 
| 
       1731 
1736 
     | 
    
         
             
              end
         
     | 
| 
       1732 
1737 
     | 
    
         | 
| 
       1733 
1738 
     | 
    
         
             
              def test_yylex_open_curly_bracket_block
         
     | 
| 
       1734 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 1739 
     | 
    
         
            +
                self.lex_state = EXPR_ENDARG # seen m(3)
         
     | 
| 
       1735 
1740 
     | 
    
         | 
| 
       1736 
1741 
     | 
    
         
             
                assert_lex3("{ 4 }",
         
     | 
| 
       1737 
1742 
     | 
    
         
             
                            nil,
         
     | 
| 
       1738 
     | 
    
         
            -
                            :tLBRACE_ARG, "{",  
     | 
| 
       1739 
     | 
    
         
            -
                            :tINTEGER,    4, 
     | 
| 
       1740 
     | 
    
         
            -
                            :tRCURLY,     "}",  
     | 
| 
      
 1743 
     | 
    
         
            +
                            :tLBRACE_ARG, "{", EXPR_BEG,
         
     | 
| 
      
 1744 
     | 
    
         
            +
                            :tINTEGER,    4,    EXPR_NUM,
         
     | 
| 
      
 1745 
     | 
    
         
            +
                            :tRCURLY,     "}", EXPR_ENDARG)
         
     | 
| 
       1741 
1746 
     | 
    
         
             
              end
         
     | 
| 
       1742 
1747 
     | 
    
         | 
| 
       1743 
1748 
     | 
    
         
             
              def test_yylex_open_square_bracket_arg
         
     | 
| 
       1744 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 1749 
     | 
    
         
            +
                self.lex_state = EXPR_ARG
         
     | 
| 
       1745 
1750 
     | 
    
         | 
| 
       1746 
1751 
     | 
    
         
             
                assert_lex3("m [ 3 ]",
         
     | 
| 
       1747 
1752 
     | 
    
         
             
                            nil,
         
     | 
| 
       1748 
     | 
    
         
            -
                            :tIDENTIFIER, "m",  
     | 
| 
       1749 
     | 
    
         
            -
                            :tLBRACK,     "[", 
     | 
| 
       1750 
     | 
    
         
            -
                            :tINTEGER,    3, 
     | 
| 
       1751 
     | 
    
         
            -
                            :tRBRACK,     "]",  
     | 
| 
      
 1753 
     | 
    
         
            +
                            :tIDENTIFIER, "m", EXPR_CMDARG,
         
     | 
| 
      
 1754 
     | 
    
         
            +
                            :tLBRACK,     "[",  EXPR_PAR,
         
     | 
| 
      
 1755 
     | 
    
         
            +
                            :tINTEGER,    3,    EXPR_NUM,
         
     | 
| 
      
 1756 
     | 
    
         
            +
                            :tRBRACK,     "]", EXPR_ENDARG)
         
     | 
| 
       1752 
1757 
     | 
    
         
             
              end
         
     | 
| 
       1753 
1758 
     | 
    
         | 
| 
       1754 
1759 
     | 
    
         
             
              def test_yylex_open_square_bracket_ary
         
     | 
| 
       1755 
1760 
     | 
    
         
             
                assert_lex3("[1, 2, 3]",
         
     | 
| 
       1756 
1761 
     | 
    
         
             
                            nil,
         
     | 
| 
       1757 
     | 
    
         
            -
                            :tLBRACK, "[", 
     | 
| 
       1758 
     | 
    
         
            -
                            :tINTEGER, 1, 
     | 
| 
       1759 
     | 
    
         
            -
                            :tINTEGER, 2, 
     | 
| 
       1760 
     | 
    
         
            -
                            :tINTEGER, 3, 
     | 
| 
       1761 
     | 
    
         
            -
                            :tRBRACK, "]",  
     | 
| 
      
 1762 
     | 
    
         
            +
                            :tLBRACK, "[",  EXPR_PAR,
         
     | 
| 
      
 1763 
     | 
    
         
            +
                            :tINTEGER, 1,   EXPR_NUM, :tCOMMA,  ",",  EXPR_PAR,
         
     | 
| 
      
 1764 
     | 
    
         
            +
                            :tINTEGER, 2,   EXPR_NUM, :tCOMMA,  ",",  EXPR_PAR,
         
     | 
| 
      
 1765 
     | 
    
         
            +
                            :tINTEGER, 3,   EXPR_NUM,
         
     | 
| 
      
 1766 
     | 
    
         
            +
                            :tRBRACK, "]", EXPR_ENDARG)
         
     | 
| 
       1762 
1767 
     | 
    
         
             
              end
         
     | 
| 
       1763 
1768 
     | 
    
         | 
| 
       1764 
1769 
     | 
    
         
             
              def test_yylex_open_square_bracket_meth
         
     | 
| 
       1765 
1770 
     | 
    
         
             
                assert_lex3("m[3]",
         
     | 
| 
       1766 
1771 
     | 
    
         
             
                           nil,
         
     | 
| 
       1767 
     | 
    
         
            -
                           :tIDENTIFIER, "m",  
     | 
| 
       1768 
     | 
    
         
            -
                           :tLBRACK2,    "[", 
     | 
| 
       1769 
     | 
    
         
            -
                           :tINTEGER,    3, 
     | 
| 
       1770 
     | 
    
         
            -
                           :tRBRACK,     "]",  
     | 
| 
      
 1772 
     | 
    
         
            +
                           :tIDENTIFIER, "m", EXPR_CMDARG,
         
     | 
| 
      
 1773 
     | 
    
         
            +
                           :tLBRACK2,    "[",  EXPR_PAR,
         
     | 
| 
      
 1774 
     | 
    
         
            +
                           :tINTEGER,    3,    EXPR_NUM,
         
     | 
| 
      
 1775 
     | 
    
         
            +
                           :tRBRACK,     "]", EXPR_ENDARG)
         
     | 
| 
       1771 
1776 
     | 
    
         
             
              end
         
     | 
| 
       1772 
1777 
     | 
    
         | 
| 
       1773 
1778 
     | 
    
         
             
              def test_yylex_or
         
     | 
| 
       1774 
     | 
    
         
            -
                assert_lex3("|", nil, :tPIPE, "|", 
     | 
| 
      
 1779 
     | 
    
         
            +
                assert_lex3("|", nil, :tPIPE, "|",  EXPR_PAR)
         
     | 
| 
       1775 
1780 
     | 
    
         
             
              end
         
     | 
| 
       1776 
1781 
     | 
    
         | 
| 
       1777 
1782 
     | 
    
         
             
              def test_yylex_or2
         
     | 
| 
       1778 
     | 
    
         
            -
                assert_lex3("||", nil, :tOROP, "||",  
     | 
| 
      
 1783 
     | 
    
         
            +
                assert_lex3("||", nil, :tOROP, "||", EXPR_BEG)
         
     | 
| 
       1779 
1784 
     | 
    
         
             
              end
         
     | 
| 
       1780 
1785 
     | 
    
         | 
| 
       1781 
1786 
     | 
    
         
             
              def test_yylex_or2_equals
         
     | 
| 
       1782 
     | 
    
         
            -
                assert_lex3("||=", nil, :tOP_ASGN, "||",  
     | 
| 
      
 1787 
     | 
    
         
            +
                assert_lex3("||=", nil, :tOP_ASGN, "||", EXPR_BEG)
         
     | 
| 
       1783 
1788 
     | 
    
         
             
              end
         
     | 
| 
       1784 
1789 
     | 
    
         | 
| 
       1785 
1790 
     | 
    
         
             
              def test_yylex_or_equals
         
     | 
| 
       1786 
     | 
    
         
            -
                assert_lex3("|=", nil, :tOP_ASGN, "|",  
     | 
| 
      
 1791 
     | 
    
         
            +
                assert_lex3("|=", nil, :tOP_ASGN, "|", EXPR_BEG)
         
     | 
| 
       1787 
1792 
     | 
    
         
             
              end
         
     | 
| 
       1788 
1793 
     | 
    
         | 
| 
       1789 
1794 
     | 
    
         
             
              def test_yylex_percent
         
     | 
| 
       1790 
1795 
     | 
    
         
             
                assert_lex3("a % 2",
         
     | 
| 
       1791 
1796 
     | 
    
         
             
                            nil,
         
     | 
| 
       1792 
     | 
    
         
            -
                            :tIDENTIFIER, "a",  
     | 
| 
       1793 
     | 
    
         
            -
                            :tPERCENT,    "%",  
     | 
| 
       1794 
     | 
    
         
            -
                            :tINTEGER,    2, 
     | 
| 
      
 1797 
     | 
    
         
            +
                            :tIDENTIFIER, "a", EXPR_CMDARG,
         
     | 
| 
      
 1798 
     | 
    
         
            +
                            :tPERCENT,    "%", EXPR_BEG,
         
     | 
| 
      
 1799 
     | 
    
         
            +
                            :tINTEGER,    2,    EXPR_NUM)
         
     | 
| 
       1795 
1800 
     | 
    
         
             
              end
         
     | 
| 
       1796 
1801 
     | 
    
         | 
| 
       1797 
1802 
     | 
    
         
             
              def test_yylex_percent_equals
         
     | 
| 
       1798 
1803 
     | 
    
         
             
                assert_lex3("a %= 2",
         
     | 
| 
       1799 
1804 
     | 
    
         
             
                            nil,
         
     | 
| 
       1800 
     | 
    
         
            -
                            :tIDENTIFIER, "a",  
     | 
| 
       1801 
     | 
    
         
            -
                            :tOP_ASGN,    "%",  
     | 
| 
       1802 
     | 
    
         
            -
                            :tINTEGER,    2, 
     | 
| 
      
 1805 
     | 
    
         
            +
                            :tIDENTIFIER, "a", EXPR_CMDARG,
         
     | 
| 
      
 1806 
     | 
    
         
            +
                            :tOP_ASGN,    "%", EXPR_BEG,
         
     | 
| 
      
 1807 
     | 
    
         
            +
                            :tINTEGER,    2,    EXPR_NUM)
         
     | 
| 
       1803 
1808 
     | 
    
         
             
              end
         
     | 
| 
       1804 
1809 
     | 
    
         | 
| 
       1805 
1810 
     | 
    
         
             
              def test_yylex_plus
         
     | 
| 
       1806 
1811 
     | 
    
         
             
                assert_lex3("1 + 1", # TODO lex_state?
         
     | 
| 
       1807 
1812 
     | 
    
         
             
                            nil,
         
     | 
| 
       1808 
     | 
    
         
            -
                            :tINTEGER, 1, 
     | 
| 
       1809 
     | 
    
         
            -
                            :tPLUS,    "+",  
     | 
| 
       1810 
     | 
    
         
            -
                            :tINTEGER, 1, 
     | 
| 
      
 1813 
     | 
    
         
            +
                            :tINTEGER, 1,    EXPR_NUM,
         
     | 
| 
      
 1814 
     | 
    
         
            +
                            :tPLUS,    "+", EXPR_BEG,
         
     | 
| 
      
 1815 
     | 
    
         
            +
                            :tINTEGER, 1,    EXPR_NUM)
         
     | 
| 
       1811 
1816 
     | 
    
         
             
              end
         
     | 
| 
       1812 
1817 
     | 
    
         | 
| 
       1813 
1818 
     | 
    
         
             
              def test_yylex_plus_equals
         
     | 
| 
       1814 
     | 
    
         
            -
                assert_lex3("+=", nil, :tOP_ASGN, "+",  
     | 
| 
      
 1819 
     | 
    
         
            +
                assert_lex3("+=", nil, :tOP_ASGN, "+", EXPR_BEG)
         
     | 
| 
       1815 
1820 
     | 
    
         
             
              end
         
     | 
| 
       1816 
1821 
     | 
    
         | 
| 
       1817 
1822 
     | 
    
         
             
              def test_yylex_plus_method
         
     | 
| 
       1818 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 1823 
     | 
    
         
            +
                self.lex_state = EXPR_FNAME
         
     | 
| 
       1819 
1824 
     | 
    
         | 
| 
       1820 
     | 
    
         
            -
                assert_lex3("+", nil, :tPLUS, "+",  
     | 
| 
      
 1825 
     | 
    
         
            +
                assert_lex3("+", nil, :tPLUS, "+", EXPR_ARG)
         
     | 
| 
       1821 
1826 
     | 
    
         
             
              end
         
     | 
| 
       1822 
1827 
     | 
    
         | 
| 
       1823 
1828 
     | 
    
         
             
              def test_yylex_plus_unary_method
         
     | 
| 
       1824 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 1829 
     | 
    
         
            +
                self.lex_state = EXPR_FNAME
         
     | 
| 
       1825 
1830 
     | 
    
         | 
| 
       1826 
     | 
    
         
            -
                assert_lex3("+@", nil, :tUPLUS, "+@",  
     | 
| 
      
 1831 
     | 
    
         
            +
                assert_lex3("+@", nil, :tUPLUS, "+@", EXPR_ARG)
         
     | 
| 
       1827 
1832 
     | 
    
         
             
              end
         
     | 
| 
       1828 
1833 
     | 
    
         | 
| 
       1829 
1834 
     | 
    
         
             
              def test_yylex_not_unary_method
         
     | 
| 
       1830 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 1835 
     | 
    
         
            +
                self.lex_state = EXPR_FNAME
         
     | 
| 
       1831 
1836 
     | 
    
         | 
| 
       1832 
     | 
    
         
            -
                assert_lex3("!@", nil, :tUBANG, "!@",  
     | 
| 
      
 1837 
     | 
    
         
            +
                assert_lex3("!@", nil, :tUBANG, "!@", EXPR_ARG)
         
     | 
| 
       1833 
1838 
     | 
    
         
             
              end
         
     | 
| 
       1834 
1839 
     | 
    
         | 
| 
       1835 
1840 
     | 
    
         
             
              def test_yylex_numbers
         
     | 
| 
       1836 
     | 
    
         
            -
                assert_lex3("0b10", nil, :tINTEGER, 2,   
     | 
| 
       1837 
     | 
    
         
            -
                assert_lex3("0B10", nil, :tINTEGER, 2,   
     | 
| 
      
 1841 
     | 
    
         
            +
                assert_lex3("0b10", nil, :tINTEGER, 2,  EXPR_NUM)
         
     | 
| 
      
 1842 
     | 
    
         
            +
                assert_lex3("0B10", nil, :tINTEGER, 2,  EXPR_NUM)
         
     | 
| 
       1838 
1843 
     | 
    
         | 
| 
       1839 
     | 
    
         
            -
                assert_lex3("0d10", nil, :tINTEGER, 10,  
     | 
| 
       1840 
     | 
    
         
            -
                assert_lex3("0D10", nil, :tINTEGER, 10,  
     | 
| 
      
 1844 
     | 
    
         
            +
                assert_lex3("0d10", nil, :tINTEGER, 10, EXPR_NUM)
         
     | 
| 
      
 1845 
     | 
    
         
            +
                assert_lex3("0D10", nil, :tINTEGER, 10, EXPR_NUM)
         
     | 
| 
       1841 
1846 
     | 
    
         | 
| 
       1842 
     | 
    
         
            -
                assert_lex3("0x10", nil, :tINTEGER, 16,  
     | 
| 
       1843 
     | 
    
         
            -
                assert_lex3("0X10", nil, :tINTEGER, 16,  
     | 
| 
      
 1847 
     | 
    
         
            +
                assert_lex3("0x10", nil, :tINTEGER, 16, EXPR_NUM)
         
     | 
| 
      
 1848 
     | 
    
         
            +
                assert_lex3("0X10", nil, :tINTEGER, 16, EXPR_NUM)
         
     | 
| 
       1844 
1849 
     | 
    
         | 
| 
       1845 
     | 
    
         
            -
                assert_lex3("0o10", nil, :tINTEGER, 8,   
     | 
| 
       1846 
     | 
    
         
            -
                assert_lex3("0O10", nil, :tINTEGER, 8,   
     | 
| 
      
 1850 
     | 
    
         
            +
                assert_lex3("0o10", nil, :tINTEGER, 8,  EXPR_NUM)
         
     | 
| 
      
 1851 
     | 
    
         
            +
                assert_lex3("0O10", nil, :tINTEGER, 8,  EXPR_NUM)
         
     | 
| 
       1847 
1852 
     | 
    
         | 
| 
       1848 
     | 
    
         
            -
                assert_lex3("0o",   nil, :tINTEGER, 0,   
     | 
| 
       1849 
     | 
    
         
            -
                assert_lex3("0O",   nil, :tINTEGER, 0,   
     | 
| 
      
 1853 
     | 
    
         
            +
                assert_lex3("0o",   nil, :tINTEGER, 0,  EXPR_NUM)
         
     | 
| 
      
 1854 
     | 
    
         
            +
                assert_lex3("0O",   nil, :tINTEGER, 0,  EXPR_NUM)
         
     | 
| 
       1850 
1855 
     | 
    
         | 
| 
       1851 
     | 
    
         
            -
                assert_lex3("0",    nil, :tINTEGER, 0,   
     | 
| 
      
 1856 
     | 
    
         
            +
                assert_lex3("0",    nil, :tINTEGER, 0,  EXPR_NUM)
         
     | 
| 
       1852 
1857 
     | 
    
         | 
| 
       1853 
1858 
     | 
    
         
             
                refute_lex "0x"
         
     | 
| 
       1854 
1859 
     | 
    
         
             
                refute_lex "0X"
         
     | 
| 
         @@ -1870,7 +1875,7 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1870 
1875 
     | 
    
         
             
              end
         
     | 
| 
       1871 
1876 
     | 
    
         | 
| 
       1872 
1877 
     | 
    
         
             
              def test_yylex_plus_unary_number
         
     | 
| 
       1873 
     | 
    
         
            -
                assert_lex3("+42", nil, :tINTEGER, 42, 
     | 
| 
      
 1878 
     | 
    
         
            +
                assert_lex3("+42", nil, :tINTEGER, 42,  EXPR_NUM)
         
     | 
| 
       1874 
1879 
     | 
    
         
             
              end
         
     | 
| 
       1875 
1880 
     | 
    
         | 
| 
       1876 
1881 
     | 
    
         
             
              def test_yylex_question_bad_eos
         
     | 
| 
         @@ -1878,31 +1883,31 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1878 
1883 
     | 
    
         
             
              end
         
     | 
| 
       1879 
1884 
     | 
    
         | 
| 
       1880 
1885 
     | 
    
         
             
              def test_yylex_question_ws
         
     | 
| 
       1881 
     | 
    
         
            -
                assert_lex3("? ",  nil, :tEH, "?",  
     | 
| 
       1882 
     | 
    
         
            -
                assert_lex3("?\n", nil, :tEH, "?",  
     | 
| 
       1883 
     | 
    
         
            -
                assert_lex3("?\t", nil, :tEH, "?",  
     | 
| 
       1884 
     | 
    
         
            -
                assert_lex3("?\v", nil, :tEH, "?",  
     | 
| 
       1885 
     | 
    
         
            -
                assert_lex3("?\r", nil, :tEH, "?",  
     | 
| 
       1886 
     | 
    
         
            -
                assert_lex3("?\f", nil, :tEH, "?",  
     | 
| 
      
 1886 
     | 
    
         
            +
                assert_lex3("? ",  nil, :tEH, "?", EXPR_BEG)
         
     | 
| 
      
 1887 
     | 
    
         
            +
                assert_lex3("?\n", nil, :tEH, "?", EXPR_BEG)
         
     | 
| 
      
 1888 
     | 
    
         
            +
                assert_lex3("?\t", nil, :tEH, "?", EXPR_BEG)
         
     | 
| 
      
 1889 
     | 
    
         
            +
                assert_lex3("?\v", nil, :tEH, "?", EXPR_BEG)
         
     | 
| 
      
 1890 
     | 
    
         
            +
                assert_lex3("?\r", nil, :tEH, "?", EXPR_BEG)
         
     | 
| 
      
 1891 
     | 
    
         
            +
                assert_lex3("?\f", nil, :tEH, "?", EXPR_BEG)
         
     | 
| 
       1887 
1892 
     | 
    
         
             
              end
         
     | 
| 
       1888 
1893 
     | 
    
         | 
| 
       1889 
1894 
     | 
    
         
             
              def test_yylex_question_ws_backslashed__20
         
     | 
| 
       1890 
1895 
     | 
    
         
             
                setup_lexer_class RubyParser::V20
         
     | 
| 
       1891 
1896 
     | 
    
         | 
| 
       1892 
     | 
    
         
            -
                assert_lex3("?\\ ", nil, :tSTRING, " ",   
     | 
| 
       1893 
     | 
    
         
            -
                assert_lex3("?\\n", nil, :tSTRING, "\n",  
     | 
| 
       1894 
     | 
    
         
            -
                assert_lex3("?\\t", nil, :tSTRING, "\t",  
     | 
| 
       1895 
     | 
    
         
            -
                assert_lex3("?\\v", nil, :tSTRING, "\v",  
     | 
| 
       1896 
     | 
    
         
            -
                assert_lex3("?\\r", nil, :tSTRING, "\r",  
     | 
| 
       1897 
     | 
    
         
            -
                assert_lex3("?\\f", nil, :tSTRING, "\f",  
     | 
| 
      
 1897 
     | 
    
         
            +
                assert_lex3("?\\ ", nil, :tSTRING, " ",  EXPR_END)
         
     | 
| 
      
 1898 
     | 
    
         
            +
                assert_lex3("?\\n", nil, :tSTRING, "\n", EXPR_END)
         
     | 
| 
      
 1899 
     | 
    
         
            +
                assert_lex3("?\\t", nil, :tSTRING, "\t", EXPR_END)
         
     | 
| 
      
 1900 
     | 
    
         
            +
                assert_lex3("?\\v", nil, :tSTRING, "\v", EXPR_END)
         
     | 
| 
      
 1901 
     | 
    
         
            +
                assert_lex3("?\\r", nil, :tSTRING, "\r", EXPR_END)
         
     | 
| 
      
 1902 
     | 
    
         
            +
                assert_lex3("?\\f", nil, :tSTRING, "\f", EXPR_END)
         
     | 
| 
       1898 
1903 
     | 
    
         
             
              end
         
     | 
| 
       1899 
1904 
     | 
    
         | 
| 
       1900 
1905 
     | 
    
         
             
              def test_yylex_rbracket
         
     | 
| 
       1901 
     | 
    
         
            -
                assert_lex3("]", nil, :tRBRACK, "]",  
     | 
| 
      
 1906 
     | 
    
         
            +
                assert_lex3("]", nil, :tRBRACK, "]", EXPR_ENDARG)
         
     | 
| 
       1902 
1907 
     | 
    
         
             
              end
         
     | 
| 
       1903 
1908 
     | 
    
         | 
| 
       1904 
1909 
     | 
    
         
             
              def test_yylex_rcurly
         
     | 
| 
       1905 
     | 
    
         
            -
                assert_lex("}", nil, :tRCURLY, "}",  
     | 
| 
      
 1910 
     | 
    
         
            +
                assert_lex("}", nil, :tRCURLY, "}", EXPR_ENDARG, 0, 1) do
         
     | 
| 
       1906 
1911 
     | 
    
         
             
                  lexer.brace_nest += 2
         
     | 
| 
       1907 
1912 
     | 
    
         
             
                end
         
     | 
| 
       1908 
1913 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1910,18 +1915,18 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1910 
1915 
     | 
    
         
             
              def test_yylex_regexp
         
     | 
| 
       1911 
1916 
     | 
    
         
             
                assert_lex3("/regexp/",
         
     | 
| 
       1912 
1917 
     | 
    
         
             
                            nil,
         
     | 
| 
       1913 
     | 
    
         
            -
                            :tREGEXP_BEG,     "/",       
     | 
| 
       1914 
     | 
    
         
            -
                            :tSTRING_CONTENT, "regexp",  
     | 
| 
       1915 
     | 
    
         
            -
                            :tREGEXP_END,     "",        
     | 
| 
      
 1918 
     | 
    
         
            +
                            :tREGEXP_BEG,     "/",      EXPR_BEG,
         
     | 
| 
      
 1919 
     | 
    
         
            +
                            :tSTRING_CONTENT, "regexp", EXPR_BEG,
         
     | 
| 
      
 1920 
     | 
    
         
            +
                            :tREGEXP_END,     "",       EXPR_END)
         
     | 
| 
       1916 
1921 
     | 
    
         
             
              end
         
     | 
| 
       1917 
1922 
     | 
    
         | 
| 
       1918 
1923 
     | 
    
         
             
              def test_yylex_regexp_ambiguous
         
     | 
| 
       1919 
1924 
     | 
    
         
             
                assert_lex3("method /regexp/",
         
     | 
| 
       1920 
1925 
     | 
    
         
             
                            nil,
         
     | 
| 
       1921 
     | 
    
         
            -
                            :tIDENTIFIER,     "method",  
     | 
| 
       1922 
     | 
    
         
            -
                            :tREGEXP_BEG,     "/",       
     | 
| 
       1923 
     | 
    
         
            -
                            :tSTRING_CONTENT, "regexp",  
     | 
| 
       1924 
     | 
    
         
            -
                            :tREGEXP_END,     "",        
     | 
| 
      
 1926 
     | 
    
         
            +
                            :tIDENTIFIER,     "method", EXPR_CMDARG,
         
     | 
| 
      
 1927 
     | 
    
         
            +
                            :tREGEXP_BEG,     "/",      EXPR_CMDARG,
         
     | 
| 
      
 1928 
     | 
    
         
            +
                            :tSTRING_CONTENT, "regexp", EXPR_CMDARG,
         
     | 
| 
      
 1929 
     | 
    
         
            +
                            :tREGEXP_END,     "",       EXPR_END)
         
     | 
| 
       1925 
1930 
     | 
    
         
             
              end
         
     | 
| 
       1926 
1931 
     | 
    
         | 
| 
       1927 
1932 
     | 
    
         
             
              def test_yylex_regexp_bad
         
     | 
| 
         @@ -1933,25 +1938,25 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1933 
1938 
     | 
    
         
             
              def test_yylex_regexp_escape_C
         
     | 
| 
       1934 
1939 
     | 
    
         
             
                assert_lex3("/regex\\C-x/",
         
     | 
| 
       1935 
1940 
     | 
    
         
             
                            nil,
         
     | 
| 
       1936 
     | 
    
         
            -
                            :tREGEXP_BEG,     "/",           
     | 
| 
       1937 
     | 
    
         
            -
                            :tSTRING_CONTENT, "regex\\C-x",  
     | 
| 
       1938 
     | 
    
         
            -
                            :tREGEXP_END,     "",            
     | 
| 
      
 1941 
     | 
    
         
            +
                            :tREGEXP_BEG,     "/",          EXPR_BEG,
         
     | 
| 
      
 1942 
     | 
    
         
            +
                            :tSTRING_CONTENT, "regex\\C-x", EXPR_BEG,
         
     | 
| 
      
 1943 
     | 
    
         
            +
                            :tREGEXP_END,     "",           EXPR_END)
         
     | 
| 
       1939 
1944 
     | 
    
         
             
              end
         
     | 
| 
       1940 
1945 
     | 
    
         | 
| 
       1941 
1946 
     | 
    
         
             
              def test_yylex_regexp_escape_C_M
         
     | 
| 
       1942 
1947 
     | 
    
         
             
                assert_lex3("/regex\\C-\\M-x/",
         
     | 
| 
       1943 
1948 
     | 
    
         
             
                            nil,
         
     | 
| 
       1944 
     | 
    
         
            -
                            :tREGEXP_BEG,     "/",               
     | 
| 
       1945 
     | 
    
         
            -
                            :tSTRING_CONTENT, "regex\\C-\\M-x",  
     | 
| 
       1946 
     | 
    
         
            -
                            :tREGEXP_END,     "",                
     | 
| 
      
 1949 
     | 
    
         
            +
                            :tREGEXP_BEG,     "/",              EXPR_BEG,
         
     | 
| 
      
 1950 
     | 
    
         
            +
                            :tSTRING_CONTENT, "regex\\C-\\M-x", EXPR_BEG,
         
     | 
| 
      
 1951 
     | 
    
         
            +
                            :tREGEXP_END,     "",               EXPR_END)
         
     | 
| 
       1947 
1952 
     | 
    
         
             
              end
         
     | 
| 
       1948 
1953 
     | 
    
         | 
| 
       1949 
1954 
     | 
    
         
             
              def test_yylex_regexp_escape_C_M_craaaazy
         
     | 
| 
       1950 
1955 
     | 
    
         
             
                assert_lex3("/regex\\C-\\\n\\M-x/",
         
     | 
| 
       1951 
1956 
     | 
    
         
             
                            nil,
         
     | 
| 
       1952 
     | 
    
         
            -
                            :tREGEXP_BEG,     "/",               
     | 
| 
       1953 
     | 
    
         
            -
                            :tSTRING_CONTENT, "regex\\C-\\M-x",  
     | 
| 
       1954 
     | 
    
         
            -
                            :tREGEXP_END,     "",                
     | 
| 
      
 1957 
     | 
    
         
            +
                            :tREGEXP_BEG,     "/",              EXPR_BEG,
         
     | 
| 
      
 1958 
     | 
    
         
            +
                            :tSTRING_CONTENT, "regex\\C-\\M-x", EXPR_BEG,
         
     | 
| 
      
 1959 
     | 
    
         
            +
                            :tREGEXP_END,     "",               EXPR_END)
         
     | 
| 
       1955 
1960 
     | 
    
         
             
              end
         
     | 
| 
       1956 
1961 
     | 
    
         | 
| 
       1957 
1962 
     | 
    
         
             
              def test_yylex_regexp_escape_C_bad_dash
         
     | 
| 
         @@ -1977,17 +1982,17 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       1977 
1982 
     | 
    
         
             
              def test_yylex_regexp_escape_M
         
     | 
| 
       1978 
1983 
     | 
    
         
             
                assert_lex3("/regex\\M-x/",
         
     | 
| 
       1979 
1984 
     | 
    
         
             
                            nil,
         
     | 
| 
       1980 
     | 
    
         
            -
                            :tREGEXP_BEG,     "/",           
     | 
| 
       1981 
     | 
    
         
            -
                            :tSTRING_CONTENT, "regex\\M-x",  
     | 
| 
       1982 
     | 
    
         
            -
                            :tREGEXP_END,     "",            
     | 
| 
      
 1985 
     | 
    
         
            +
                            :tREGEXP_BEG,     "/",          EXPR_BEG,
         
     | 
| 
      
 1986 
     | 
    
         
            +
                            :tSTRING_CONTENT, "regex\\M-x", EXPR_BEG,
         
     | 
| 
      
 1987 
     | 
    
         
            +
                            :tREGEXP_END,     "",           EXPR_END)
         
     | 
| 
       1983 
1988 
     | 
    
         
             
              end
         
     | 
| 
       1984 
1989 
     | 
    
         | 
| 
       1985 
1990 
     | 
    
         
             
              def test_yylex_regexp_escape_M_C
         
     | 
| 
       1986 
1991 
     | 
    
         
             
                assert_lex3("/regex\\M-\\C-x/",
         
     | 
| 
       1987 
1992 
     | 
    
         
             
                            nil,
         
     | 
| 
       1988 
     | 
    
         
            -
                            :tREGEXP_BEG,     "/",               
     | 
| 
       1989 
     | 
    
         
            -
                            :tSTRING_CONTENT, "regex\\M-\\C-x",  
     | 
| 
       1990 
     | 
    
         
            -
                            :tREGEXP_END,     "",                
     | 
| 
      
 1993 
     | 
    
         
            +
                            :tREGEXP_BEG,     "/",              EXPR_BEG,
         
     | 
| 
      
 1994 
     | 
    
         
            +
                            :tSTRING_CONTENT, "regex\\M-\\C-x", EXPR_BEG,
         
     | 
| 
      
 1995 
     | 
    
         
            +
                            :tREGEXP_END,     "",               EXPR_END)
         
     | 
| 
       1991 
1996 
     | 
    
         
             
              end
         
     | 
| 
       1992 
1997 
     | 
    
         | 
| 
       1993 
1998 
     | 
    
         
             
              def test_yylex_regexp_escape_M_bad_dash
         
     | 
| 
         @@ -2009,49 +2014,49 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       2009 
2014 
     | 
    
         
             
              def test_yylex_regexp_escape_backslash_slash
         
     | 
| 
       2010 
2015 
     | 
    
         
             
                assert_lex3("/\\//",
         
     | 
| 
       2011 
2016 
     | 
    
         
             
                            nil,
         
     | 
| 
       2012 
     | 
    
         
            -
                            :tREGEXP_BEG,     "/",    
     | 
| 
       2013 
     | 
    
         
            -
                            :tSTRING_CONTENT, "\\/",  
     | 
| 
       2014 
     | 
    
         
            -
                            :tREGEXP_END,     "",     
     | 
| 
      
 2017 
     | 
    
         
            +
                            :tREGEXP_BEG,     "/",   EXPR_BEG,
         
     | 
| 
      
 2018 
     | 
    
         
            +
                            :tSTRING_CONTENT, "\\/", EXPR_BEG,
         
     | 
| 
      
 2019 
     | 
    
         
            +
                            :tREGEXP_END,     "",    EXPR_END)
         
     | 
| 
       2015 
2020 
     | 
    
         
             
              end
         
     | 
| 
       2016 
2021 
     | 
    
         | 
| 
       2017 
2022 
     | 
    
         
             
              def test_yylex_regexp_escape_backslash_terminator
         
     | 
| 
       2018 
2023 
     | 
    
         
             
                assert_lex3("%r%blah\\%blah%",
         
     | 
| 
       2019 
2024 
     | 
    
         
             
                            nil,
         
     | 
| 
       2020 
     | 
    
         
            -
                            :tREGEXP_BEG,     "%r\000",       
     | 
| 
       2021 
     | 
    
         
            -
                            :tSTRING_CONTENT, "blah\\%blah",  
     | 
| 
       2022 
     | 
    
         
            -
                            :tREGEXP_END,     "",             
     | 
| 
      
 2025 
     | 
    
         
            +
                            :tREGEXP_BEG,     "%r\000",      EXPR_BEG,
         
     | 
| 
      
 2026 
     | 
    
         
            +
                            :tSTRING_CONTENT, "blah\\%blah", EXPR_BEG,
         
     | 
| 
      
 2027 
     | 
    
         
            +
                            :tREGEXP_END,     "",            EXPR_END)
         
     | 
| 
       2023 
2028 
     | 
    
         
             
              end
         
     | 
| 
       2024 
2029 
     | 
    
         | 
| 
       2025 
2030 
     | 
    
         
             
              def test_yylex_regexp_escaped_delim
         
     | 
| 
       2026 
2031 
     | 
    
         
             
                assert_lex3("%r!blah(?\\!blah)!",
         
     | 
| 
       2027 
2032 
     | 
    
         
             
                            nil,
         
     | 
| 
       2028 
     | 
    
         
            -
                            :tREGEXP_BEG,     "%r\000",        
     | 
| 
       2029 
     | 
    
         
            -
                            :tSTRING_CONTENT, "blah(?!blah)",  
     | 
| 
       2030 
     | 
    
         
            -
                            :tREGEXP_END,     "",              
     | 
| 
      
 2033 
     | 
    
         
            +
                            :tREGEXP_BEG,     "%r\000",       EXPR_BEG,
         
     | 
| 
      
 2034 
     | 
    
         
            +
                            :tSTRING_CONTENT, "blah(?!blah)", EXPR_BEG,
         
     | 
| 
      
 2035 
     | 
    
         
            +
                            :tREGEXP_END,     "",             EXPR_END)
         
     | 
| 
       2031 
2036 
     | 
    
         
             
              end
         
     | 
| 
       2032 
2037 
     | 
    
         | 
| 
       2033 
2038 
     | 
    
         
             
              def test_yylex_regexp_escape_backslash_terminator_meta1
         
     | 
| 
       2034 
2039 
     | 
    
         
             
                assert_lex3("%r{blah\\}blah}",
         
     | 
| 
       2035 
2040 
     | 
    
         
             
                            nil,
         
     | 
| 
       2036 
     | 
    
         
            -
                            :tREGEXP_BEG,     "%r{",          
     | 
| 
       2037 
     | 
    
         
            -
                            :tSTRING_CONTENT, "blah\\}blah",  
     | 
| 
       2038 
     | 
    
         
            -
                            :tREGEXP_END,     "",             
     | 
| 
      
 2041 
     | 
    
         
            +
                            :tREGEXP_BEG,     "%r{",         EXPR_BEG, # FIX ?!?
         
     | 
| 
      
 2042 
     | 
    
         
            +
                            :tSTRING_CONTENT, "blah\\}blah", EXPR_BEG,
         
     | 
| 
      
 2043 
     | 
    
         
            +
                            :tREGEXP_END,     "",            EXPR_END)
         
     | 
| 
       2039 
2044 
     | 
    
         
             
              end
         
     | 
| 
       2040 
2045 
     | 
    
         | 
| 
       2041 
2046 
     | 
    
         
             
              def test_yylex_regexp_escape_backslash_terminator_meta2
         
     | 
| 
       2042 
2047 
     | 
    
         
             
                assert_lex3("%r/blah\\/blah/",
         
     | 
| 
       2043 
2048 
     | 
    
         
             
                            nil,
         
     | 
| 
       2044 
     | 
    
         
            -
                            :tREGEXP_BEG,     "%r\000",       
     | 
| 
       2045 
     | 
    
         
            -
                            :tSTRING_CONTENT, "blah\\/blah",  
     | 
| 
       2046 
     | 
    
         
            -
                            :tREGEXP_END,     "",             
     | 
| 
      
 2049 
     | 
    
         
            +
                            :tREGEXP_BEG,     "%r\000",      EXPR_BEG,
         
     | 
| 
      
 2050 
     | 
    
         
            +
                            :tSTRING_CONTENT, "blah\\/blah", EXPR_BEG,
         
     | 
| 
      
 2051 
     | 
    
         
            +
                            :tREGEXP_END,     "",            EXPR_END)
         
     | 
| 
       2047 
2052 
     | 
    
         
             
              end
         
     | 
| 
       2048 
2053 
     | 
    
         | 
| 
       2049 
2054 
     | 
    
         
             
              def test_yylex_regexp_escape_backslash_terminator_meta3
         
     | 
| 
       2050 
2055 
     | 
    
         
             
                assert_lex3("%r/blah\\%blah/",
         
     | 
| 
       2051 
2056 
     | 
    
         
             
                            nil,
         
     | 
| 
       2052 
     | 
    
         
            -
                            :tREGEXP_BEG,     "%r\000",       
     | 
| 
       2053 
     | 
    
         
            -
                            :tSTRING_CONTENT, "blah\\%blah",  
     | 
| 
       2054 
     | 
    
         
            -
                            :tREGEXP_END,     "",             
     | 
| 
      
 2057 
     | 
    
         
            +
                            :tREGEXP_BEG,     "%r\000",      EXPR_BEG,
         
     | 
| 
      
 2058 
     | 
    
         
            +
                            :tSTRING_CONTENT, "blah\\%blah", EXPR_BEG,
         
     | 
| 
      
 2059 
     | 
    
         
            +
                            :tREGEXP_END,     "",            EXPR_END)
         
     | 
| 
       2055 
2060 
     | 
    
         
             
              end
         
     | 
| 
       2056 
2061 
     | 
    
         | 
| 
       2057 
2062 
     | 
    
         
             
              def test_yylex_regexp_escape_bad_eos
         
     | 
| 
         @@ -2061,50 +2066,50 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       2061 
2066 
     | 
    
         
             
              def test_yylex_regexp_escape_bs
         
     | 
| 
       2062 
2067 
     | 
    
         
             
                assert_lex3("/regex\\\\regex/",
         
     | 
| 
       2063 
2068 
     | 
    
         
             
                            nil,
         
     | 
| 
       2064 
     | 
    
         
            -
                            :tREGEXP_BEG,     "/",               
     | 
| 
       2065 
     | 
    
         
            -
                            :tSTRING_CONTENT, "regex\\\\regex",  
     | 
| 
       2066 
     | 
    
         
            -
                            :tREGEXP_END,     "",                
     | 
| 
      
 2069 
     | 
    
         
            +
                            :tREGEXP_BEG,     "/",              EXPR_BEG,
         
     | 
| 
      
 2070 
     | 
    
         
            +
                            :tSTRING_CONTENT, "regex\\\\regex", EXPR_BEG,
         
     | 
| 
      
 2071 
     | 
    
         
            +
                            :tREGEXP_END,     "",               EXPR_END)
         
     | 
| 
       2067 
2072 
     | 
    
         
             
              end
         
     | 
| 
       2068 
2073 
     | 
    
         | 
| 
       2069 
2074 
     | 
    
         
             
              def test_yylex_regexp_escape_c
         
     | 
| 
       2070 
2075 
     | 
    
         
             
                assert_lex3("/regex\\cxxx/",
         
     | 
| 
       2071 
2076 
     | 
    
         
             
                            nil,
         
     | 
| 
       2072 
     | 
    
         
            -
                            :tREGEXP_BEG,     "/",            
     | 
| 
       2073 
     | 
    
         
            -
                            :tSTRING_CONTENT, "regex\\cxxx",  
     | 
| 
       2074 
     | 
    
         
            -
                            :tREGEXP_END,     "",             
     | 
| 
      
 2077 
     | 
    
         
            +
                            :tREGEXP_BEG,     "/",           EXPR_BEG,
         
     | 
| 
      
 2078 
     | 
    
         
            +
                            :tSTRING_CONTENT, "regex\\cxxx", EXPR_BEG,
         
     | 
| 
      
 2079 
     | 
    
         
            +
                            :tREGEXP_END,     "",            EXPR_END)
         
     | 
| 
       2075 
2080 
     | 
    
         
             
              end
         
     | 
| 
       2076 
2081 
     | 
    
         | 
| 
       2077 
2082 
     | 
    
         
             
              def test_yylex_regexp_escape_c_backslash
         
     | 
| 
       2078 
2083 
     | 
    
         
             
                assert_lex3("/regex\\c\\n/",
         
     | 
| 
       2079 
2084 
     | 
    
         
             
                            nil,
         
     | 
| 
       2080 
     | 
    
         
            -
                            :tREGEXP_BEG,     "/",            
     | 
| 
       2081 
     | 
    
         
            -
                            :tSTRING_CONTENT, "regex\\c\\n",  
     | 
| 
       2082 
     | 
    
         
            -
                            :tREGEXP_END,     "",             
     | 
| 
      
 2085 
     | 
    
         
            +
                            :tREGEXP_BEG,     "/",           EXPR_BEG,
         
     | 
| 
      
 2086 
     | 
    
         
            +
                            :tSTRING_CONTENT, "regex\\c\\n", EXPR_BEG,
         
     | 
| 
      
 2087 
     | 
    
         
            +
                            :tREGEXP_END,     "",            EXPR_END)
         
     | 
| 
       2083 
2088 
     | 
    
         
             
              end
         
     | 
| 
       2084 
2089 
     | 
    
         | 
| 
       2085 
2090 
     | 
    
         
             
              def test_yylex_regexp_escape_chars
         
     | 
| 
       2086 
2091 
     | 
    
         
             
                assert_lex3("/re\\tge\\nxp/",
         
     | 
| 
       2087 
2092 
     | 
    
         
             
                            nil,
         
     | 
| 
       2088 
     | 
    
         
            -
                            :tREGEXP_BEG,     "/",             
     | 
| 
       2089 
     | 
    
         
            -
                            :tSTRING_CONTENT, "re\\tge\\nxp",  
     | 
| 
       2090 
     | 
    
         
            -
                            :tREGEXP_END,     "",              
     | 
| 
      
 2093 
     | 
    
         
            +
                            :tREGEXP_BEG,     "/",            EXPR_BEG,
         
     | 
| 
      
 2094 
     | 
    
         
            +
                            :tSTRING_CONTENT, "re\\tge\\nxp", EXPR_BEG,
         
     | 
| 
      
 2095 
     | 
    
         
            +
                            :tREGEXP_END,     "",             EXPR_END)
         
     | 
| 
       2091 
2096 
     | 
    
         
             
              end
         
     | 
| 
       2092 
2097 
     | 
    
         | 
| 
       2093 
2098 
     | 
    
         
             
              def test_yylex_regexp_escape_double_backslash
         
     | 
| 
       2094 
2099 
     | 
    
         
             
                regexp = '/[\\/\\\\]$/'
         
     | 
| 
       2095 
2100 
     | 
    
         
             
                assert_lex3(regexp.dup,
         
     | 
| 
       2096 
2101 
     | 
    
         
             
                            nil,
         
     | 
| 
       2097 
     | 
    
         
            -
                            :tREGEXP_BEG,     "/",           
     | 
| 
       2098 
     | 
    
         
            -
                            :tSTRING_CONTENT, "[\\/\\\\]$",  
     | 
| 
       2099 
     | 
    
         
            -
                            :tREGEXP_END,     "",            
     | 
| 
      
 2102 
     | 
    
         
            +
                            :tREGEXP_BEG,     "/",          EXPR_BEG,
         
     | 
| 
      
 2103 
     | 
    
         
            +
                            :tSTRING_CONTENT, "[\\/\\\\]$", EXPR_BEG,
         
     | 
| 
      
 2104 
     | 
    
         
            +
                            :tREGEXP_END,     "",           EXPR_END)
         
     | 
| 
       2100 
2105 
     | 
    
         
             
              end
         
     | 
| 
       2101 
2106 
     | 
    
         | 
| 
       2102 
2107 
     | 
    
         
             
              def test_yylex_regexp_escape_hex
         
     | 
| 
       2103 
2108 
     | 
    
         
             
                assert_lex3("/regex\\x61xp/",
         
     | 
| 
       2104 
2109 
     | 
    
         
             
                            nil,
         
     | 
| 
       2105 
     | 
    
         
            -
                            :tREGEXP_BEG,     "/",             
     | 
| 
       2106 
     | 
    
         
            -
                            :tSTRING_CONTENT, "regex\\x61xp",  
     | 
| 
       2107 
     | 
    
         
            -
                            :tREGEXP_END,     "",              
     | 
| 
      
 2110 
     | 
    
         
            +
                            :tREGEXP_BEG,     "/",            EXPR_BEG,
         
     | 
| 
      
 2111 
     | 
    
         
            +
                            :tSTRING_CONTENT, "regex\\x61xp", EXPR_BEG,
         
     | 
| 
      
 2112 
     | 
    
         
            +
                            :tREGEXP_END,     "",             EXPR_END)
         
     | 
| 
       2108 
2113 
     | 
    
         
             
              end
         
     | 
| 
       2109 
2114 
     | 
    
         | 
| 
       2110 
2115 
     | 
    
         
             
              def test_yylex_regexp_escape_hex_bad
         
     | 
| 
         @@ -2114,133 +2119,133 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       2114 
2119 
     | 
    
         
             
              def test_yylex_regexp_escape_hex_one
         
     | 
| 
       2115 
2120 
     | 
    
         
             
                assert_lex3("/^[\\xd\\xa]{2}/on",
         
     | 
| 
       2116 
2121 
     | 
    
         
             
                            nil,
         
     | 
| 
       2117 
     | 
    
         
            -
                            :tREGEXP_BEG,     "/",               
     | 
| 
       2118 
     | 
    
         
            -
                            :tSTRING_CONTENT, "^[\\xd\\xa]{2}",  
     | 
| 
       2119 
     | 
    
         
            -
                            :tREGEXP_END,     "on",              
     | 
| 
      
 2122 
     | 
    
         
            +
                            :tREGEXP_BEG,     "/",              EXPR_BEG,
         
     | 
| 
      
 2123 
     | 
    
         
            +
                            :tSTRING_CONTENT, "^[\\xd\\xa]{2}", EXPR_BEG,
         
     | 
| 
      
 2124 
     | 
    
         
            +
                            :tREGEXP_END,     "on",             EXPR_END)
         
     | 
| 
       2120 
2125 
     | 
    
         
             
              end
         
     | 
| 
       2121 
2126 
     | 
    
         | 
| 
       2122 
2127 
     | 
    
         
             
              def test_yylex_regexp_escape_oct1
         
     | 
| 
       2123 
2128 
     | 
    
         
             
                assert_lex3("/regex\\0xp/",
         
     | 
| 
       2124 
2129 
     | 
    
         
             
                            nil,
         
     | 
| 
       2125 
     | 
    
         
            -
                            :tREGEXP_BEG,     "/",           
     | 
| 
       2126 
     | 
    
         
            -
                            :tSTRING_CONTENT, "regex\\0xp",  
     | 
| 
       2127 
     | 
    
         
            -
                            :tREGEXP_END,     "",            
     | 
| 
      
 2130 
     | 
    
         
            +
                            :tREGEXP_BEG,     "/",          EXPR_BEG,
         
     | 
| 
      
 2131 
     | 
    
         
            +
                            :tSTRING_CONTENT, "regex\\0xp", EXPR_BEG,
         
     | 
| 
      
 2132 
     | 
    
         
            +
                            :tREGEXP_END,     "",           EXPR_END)
         
     | 
| 
       2128 
2133 
     | 
    
         
             
              end
         
     | 
| 
       2129 
2134 
     | 
    
         | 
| 
       2130 
2135 
     | 
    
         
             
              def test_yylex_regexp_escape_oct2
         
     | 
| 
       2131 
2136 
     | 
    
         
             
                assert_lex3("/regex\\07xp/",
         
     | 
| 
       2132 
2137 
     | 
    
         
             
                            nil,
         
     | 
| 
       2133 
     | 
    
         
            -
                            :tREGEXP_BEG,     "/",            
     | 
| 
       2134 
     | 
    
         
            -
                            :tSTRING_CONTENT, "regex\\07xp",  
     | 
| 
       2135 
     | 
    
         
            -
                            :tREGEXP_END,     "",             
     | 
| 
      
 2138 
     | 
    
         
            +
                            :tREGEXP_BEG,     "/",           EXPR_BEG,
         
     | 
| 
      
 2139 
     | 
    
         
            +
                            :tSTRING_CONTENT, "regex\\07xp", EXPR_BEG,
         
     | 
| 
      
 2140 
     | 
    
         
            +
                            :tREGEXP_END,     "",            EXPR_END)
         
     | 
| 
       2136 
2141 
     | 
    
         
             
              end
         
     | 
| 
       2137 
2142 
     | 
    
         | 
| 
       2138 
2143 
     | 
    
         
             
              def test_yylex_regexp_escape_oct3
         
     | 
| 
       2139 
2144 
     | 
    
         
             
                assert_lex3("/regex\\10142/",
         
     | 
| 
       2140 
2145 
     | 
    
         
             
                            nil,
         
     | 
| 
       2141 
     | 
    
         
            -
                            :tREGEXP_BEG,     "/",             
     | 
| 
       2142 
     | 
    
         
            -
                            :tSTRING_CONTENT, "regex\\10142",  
     | 
| 
       2143 
     | 
    
         
            -
                            :tREGEXP_END,     "",              
     | 
| 
      
 2146 
     | 
    
         
            +
                            :tREGEXP_BEG,     "/",            EXPR_BEG,
         
     | 
| 
      
 2147 
     | 
    
         
            +
                            :tSTRING_CONTENT, "regex\\10142", EXPR_BEG,
         
     | 
| 
      
 2148 
     | 
    
         
            +
                            :tREGEXP_END,     "",             EXPR_END)
         
     | 
| 
       2144 
2149 
     | 
    
         
             
              end
         
     | 
| 
       2145 
2150 
     | 
    
         | 
| 
       2146 
2151 
     | 
    
         
             
              def test_yylex_regexp_escape_return
         
     | 
| 
       2147 
2152 
     | 
    
         
             
                assert_lex3("/regex\\\nregex/",
         
     | 
| 
       2148 
2153 
     | 
    
         
             
                            nil,
         
     | 
| 
       2149 
     | 
    
         
            -
                            :tREGEXP_BEG,     "/",           
     | 
| 
       2150 
     | 
    
         
            -
                            :tSTRING_CONTENT, "regexregex",  
     | 
| 
       2151 
     | 
    
         
            -
                            :tREGEXP_END,     "",            
     | 
| 
      
 2154 
     | 
    
         
            +
                            :tREGEXP_BEG,     "/",          EXPR_BEG,
         
     | 
| 
      
 2155 
     | 
    
         
            +
                            :tSTRING_CONTENT, "regexregex", EXPR_BEG,
         
     | 
| 
      
 2156 
     | 
    
         
            +
                            :tREGEXP_END,     "",           EXPR_END)
         
     | 
| 
       2152 
2157 
     | 
    
         
             
              end
         
     | 
| 
       2153 
2158 
     | 
    
         | 
| 
       2154 
2159 
     | 
    
         
             
              def test_yylex_regexp_nm
         
     | 
| 
       2155 
2160 
     | 
    
         
             
                assert_lex3("/.*/nm",
         
     | 
| 
       2156 
2161 
     | 
    
         
             
                            nil,
         
     | 
| 
       2157 
     | 
    
         
            -
                            :tREGEXP_BEG,     "/",   
     | 
| 
       2158 
     | 
    
         
            -
                            :tSTRING_CONTENT, ".*",  
     | 
| 
       2159 
     | 
    
         
            -
                            :tREGEXP_END,     "nm",  
     | 
| 
      
 2162 
     | 
    
         
            +
                            :tREGEXP_BEG,     "/",  EXPR_BEG,
         
     | 
| 
      
 2163 
     | 
    
         
            +
                            :tSTRING_CONTENT, ".*", EXPR_BEG,
         
     | 
| 
      
 2164 
     | 
    
         
            +
                            :tREGEXP_END,     "nm", EXPR_END)
         
     | 
| 
       2160 
2165 
     | 
    
         
             
              end
         
     | 
| 
       2161 
2166 
     | 
    
         | 
| 
       2162 
2167 
     | 
    
         
             
              def test_yylex_rparen
         
     | 
| 
       2163 
     | 
    
         
            -
                assert_lex3(")", nil, :tRPAREN, ")",  
     | 
| 
      
 2168 
     | 
    
         
            +
                assert_lex3(")", nil, :tRPAREN, ")", EXPR_ENDFN)
         
     | 
| 
       2164 
2169 
     | 
    
         
             
              end
         
     | 
| 
       2165 
2170 
     | 
    
         | 
| 
       2166 
2171 
     | 
    
         
             
              def test_yylex_rshft
         
     | 
| 
       2167 
2172 
     | 
    
         
             
                assert_lex3("a >> 2",
         
     | 
| 
       2168 
2173 
     | 
    
         
             
                            nil,
         
     | 
| 
       2169 
     | 
    
         
            -
                            :tIDENTIFIER, "a",   
     | 
| 
       2170 
     | 
    
         
            -
                            :tRSHFT,      ">>",  
     | 
| 
       2171 
     | 
    
         
            -
                            :tINTEGER,    2, 
     | 
| 
      
 2174 
     | 
    
         
            +
                            :tIDENTIFIER, "a",  EXPR_CMDARG,
         
     | 
| 
      
 2175 
     | 
    
         
            +
                            :tRSHFT,      ">>", EXPR_BEG,
         
     | 
| 
      
 2176 
     | 
    
         
            +
                            :tINTEGER,    2,     EXPR_NUM)
         
     | 
| 
       2172 
2177 
     | 
    
         
             
              end
         
     | 
| 
       2173 
2178 
     | 
    
         | 
| 
       2174 
2179 
     | 
    
         
             
              def test_yylex_rshft_equals
         
     | 
| 
       2175 
2180 
     | 
    
         
             
                assert_lex3("a >>= 2",
         
     | 
| 
       2176 
2181 
     | 
    
         
             
                            nil,
         
     | 
| 
       2177 
     | 
    
         
            -
                            :tIDENTIFIER, "a",   
     | 
| 
       2178 
     | 
    
         
            -
                            :tOP_ASGN,    ">>",  
     | 
| 
       2179 
     | 
    
         
            -
                            :tINTEGER,    2, 
     | 
| 
      
 2182 
     | 
    
         
            +
                            :tIDENTIFIER, "a",  EXPR_CMDARG,
         
     | 
| 
      
 2183 
     | 
    
         
            +
                            :tOP_ASGN,    ">>", EXPR_BEG,
         
     | 
| 
      
 2184 
     | 
    
         
            +
                            :tINTEGER,    2,     EXPR_NUM)
         
     | 
| 
       2180 
2185 
     | 
    
         
             
              end
         
     | 
| 
       2181 
2186 
     | 
    
         | 
| 
       2182 
2187 
     | 
    
         
             
              def test_yylex_star
         
     | 
| 
       2183 
2188 
     | 
    
         
             
                assert_lex3("a * ",
         
     | 
| 
       2184 
2189 
     | 
    
         
             
                            nil,
         
     | 
| 
       2185 
     | 
    
         
            -
                            :tIDENTIFIER, "a",  
     | 
| 
       2186 
     | 
    
         
            -
                            :tSTAR2,      "*",  
     | 
| 
      
 2190 
     | 
    
         
            +
                            :tIDENTIFIER, "a", EXPR_CMDARG,
         
     | 
| 
      
 2191 
     | 
    
         
            +
                            :tSTAR2,      "*", EXPR_BEG)
         
     | 
| 
       2187 
2192 
     | 
    
         
             
              end
         
     | 
| 
       2188 
2193 
     | 
    
         | 
| 
       2189 
2194 
     | 
    
         
             
              def test_yylex_star2
         
     | 
| 
       2190 
2195 
     | 
    
         
             
                assert_lex3("a ** ",
         
     | 
| 
       2191 
2196 
     | 
    
         
             
                            nil,
         
     | 
| 
       2192 
     | 
    
         
            -
                            :tIDENTIFIER, "a",   
     | 
| 
       2193 
     | 
    
         
            -
                            :tPOW,        "**",  
     | 
| 
      
 2197 
     | 
    
         
            +
                            :tIDENTIFIER, "a",  EXPR_CMDARG,
         
     | 
| 
      
 2198 
     | 
    
         
            +
                            :tPOW,        "**", EXPR_BEG)
         
     | 
| 
       2194 
2199 
     | 
    
         
             
              end
         
     | 
| 
       2195 
2200 
     | 
    
         | 
| 
       2196 
2201 
     | 
    
         
             
              def test_yylex_star2_equals
         
     | 
| 
       2197 
2202 
     | 
    
         
             
                assert_lex3("a **= ",
         
     | 
| 
       2198 
2203 
     | 
    
         
             
                            nil,
         
     | 
| 
       2199 
     | 
    
         
            -
                            :tIDENTIFIER, "a",  
     | 
| 
       2200 
     | 
    
         
            -
                            :tOP_ASGN,    "**",  
     | 
| 
      
 2204 
     | 
    
         
            +
                            :tIDENTIFIER, "a", EXPR_CMDARG,
         
     | 
| 
      
 2205 
     | 
    
         
            +
                            :tOP_ASGN,    "**", EXPR_BEG)
         
     | 
| 
       2201 
2206 
     | 
    
         
             
              end
         
     | 
| 
       2202 
2207 
     | 
    
         | 
| 
       2203 
2208 
     | 
    
         
             
              def test_yylex_star_arg
         
     | 
| 
       2204 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 2209 
     | 
    
         
            +
                self.lex_state = EXPR_ARG
         
     | 
| 
       2205 
2210 
     | 
    
         | 
| 
       2206 
2211 
     | 
    
         
             
                assert_lex3(" *a",
         
     | 
| 
       2207 
2212 
     | 
    
         
             
                            nil,
         
     | 
| 
       2208 
     | 
    
         
            -
                            :tSTAR,       "*",  
     | 
| 
       2209 
     | 
    
         
            -
                            :tIDENTIFIER, "a",  
     | 
| 
      
 2213 
     | 
    
         
            +
                            :tSTAR,       "*", EXPR_BEG,
         
     | 
| 
      
 2214 
     | 
    
         
            +
                            :tIDENTIFIER, "a", EXPR_ARG)
         
     | 
| 
       2210 
2215 
     | 
    
         
             
              end
         
     | 
| 
       2211 
2216 
     | 
    
         | 
| 
       2212 
2217 
     | 
    
         
             
              def test_yylex_star_arg_beg
         
     | 
| 
       2213 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 2218 
     | 
    
         
            +
                self.lex_state = EXPR_BEG
         
     | 
| 
       2214 
2219 
     | 
    
         | 
| 
       2215 
2220 
     | 
    
         
             
                assert_lex3("*a",
         
     | 
| 
       2216 
2221 
     | 
    
         
             
                            nil,
         
     | 
| 
       2217 
     | 
    
         
            -
                            :tSTAR,       "*",  
     | 
| 
       2218 
     | 
    
         
            -
                            :tIDENTIFIER, "a",  
     | 
| 
      
 2222 
     | 
    
         
            +
                            :tSTAR,       "*", EXPR_BEG,
         
     | 
| 
      
 2223 
     | 
    
         
            +
                            :tIDENTIFIER, "a", EXPR_ARG)
         
     | 
| 
       2219 
2224 
     | 
    
         
             
              end
         
     | 
| 
       2220 
2225 
     | 
    
         | 
| 
       2221 
2226 
     | 
    
         
             
              def test_yylex_star_arg_beg_fname
         
     | 
| 
       2222 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 2227 
     | 
    
         
            +
                self.lex_state = EXPR_FNAME
         
     | 
| 
       2223 
2228 
     | 
    
         | 
| 
       2224 
2229 
     | 
    
         
             
                assert_lex3("*a",
         
     | 
| 
       2225 
2230 
     | 
    
         
             
                            nil,
         
     | 
| 
       2226 
     | 
    
         
            -
                            :tSTAR2,      "*",  
     | 
| 
       2227 
     | 
    
         
            -
                            :tIDENTIFIER, "a",  
     | 
| 
      
 2231 
     | 
    
         
            +
                            :tSTAR2,      "*", EXPR_ARG,
         
     | 
| 
      
 2232 
     | 
    
         
            +
                            :tIDENTIFIER, "a", EXPR_ARG)
         
     | 
| 
       2228 
2233 
     | 
    
         
             
              end
         
     | 
| 
       2229 
2234 
     | 
    
         | 
| 
       2230 
2235 
     | 
    
         
             
              def test_yylex_star_arg_beg_fname2
         
     | 
| 
       2231 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 2236 
     | 
    
         
            +
                self.lex_state = EXPR_FNAME
         
     | 
| 
       2232 
2237 
     | 
    
         | 
| 
       2233 
2238 
     | 
    
         
             
                assert_lex3("*a",
         
     | 
| 
       2234 
2239 
     | 
    
         
             
                            nil,
         
     | 
| 
       2235 
     | 
    
         
            -
                            :tSTAR2,      "*",  
     | 
| 
       2236 
     | 
    
         
            -
                            :tIDENTIFIER, "a",  
     | 
| 
      
 2240 
     | 
    
         
            +
                            :tSTAR2,      "*", EXPR_ARG,
         
     | 
| 
      
 2241 
     | 
    
         
            +
                            :tIDENTIFIER, "a", EXPR_ARG)
         
     | 
| 
       2237 
2242 
     | 
    
         
             
              end
         
     | 
| 
       2238 
2243 
     | 
    
         | 
| 
       2239 
2244 
     | 
    
         
             
              def test_yylex_star_equals
         
     | 
| 
       2240 
2245 
     | 
    
         
             
                assert_lex3("a *= ",
         
     | 
| 
       2241 
2246 
     | 
    
         
             
                            nil,
         
     | 
| 
       2242 
     | 
    
         
            -
                            :tIDENTIFIER, "a",  
     | 
| 
       2243 
     | 
    
         
            -
                            :tOP_ASGN, "*",  
     | 
| 
      
 2247 
     | 
    
         
            +
                            :tIDENTIFIER, "a", EXPR_CMDARG,
         
     | 
| 
      
 2248 
     | 
    
         
            +
                            :tOP_ASGN, "*", EXPR_BEG)
         
     | 
| 
       2244 
2249 
     | 
    
         
             
              end
         
     | 
| 
       2245 
2250 
     | 
    
         | 
| 
       2246 
2251 
     | 
    
         
             
              def test_yylex_string_bad_eos
         
     | 
| 
         @@ -2252,31 +2257,31 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       2252 
2257 
     | 
    
         
             
              end
         
     | 
| 
       2253 
2258 
     | 
    
         | 
| 
       2254 
2259 
     | 
    
         
             
              def test_yylex_string_double
         
     | 
| 
       2255 
     | 
    
         
            -
                assert_lex3("\"string\"", nil, :tSTRING, "string",  
     | 
| 
      
 2260 
     | 
    
         
            +
                assert_lex3("\"string\"", nil, :tSTRING, "string", EXPR_END)
         
     | 
| 
       2256 
2261 
     | 
    
         
             
              end
         
     | 
| 
       2257 
2262 
     | 
    
         | 
| 
       2258 
2263 
     | 
    
         
             
              def test_yylex_string_double_escape_C
         
     | 
| 
       2259 
     | 
    
         
            -
                assert_lex3("\"\\C-a\"", nil, :tSTRING, "\001",  
     | 
| 
      
 2264 
     | 
    
         
            +
                assert_lex3("\"\\C-a\"", nil, :tSTRING, "\001", EXPR_END)
         
     | 
| 
       2260 
2265 
     | 
    
         
             
              end
         
     | 
| 
       2261 
2266 
     | 
    
         | 
| 
       2262 
2267 
     | 
    
         
             
              def test_yylex_string_double_escape_C_backslash
         
     | 
| 
       2263 
2268 
     | 
    
         
             
                assert_lex3("\"\\C-\\\\\"",
         
     | 
| 
       2264 
2269 
     | 
    
         
             
                            nil,
         
     | 
| 
       2265 
     | 
    
         
            -
                            :tSTRING_BEG,     "\"",    
     | 
| 
       2266 
     | 
    
         
            -
                            :tSTRING_CONTENT, "\034",  
     | 
| 
       2267 
     | 
    
         
            -
                            :tSTRING_END,     "\"",    
     | 
| 
      
 2270 
     | 
    
         
            +
                            :tSTRING_BEG,     "\"",   EXPR_BEG,
         
     | 
| 
      
 2271 
     | 
    
         
            +
                            :tSTRING_CONTENT, "\034", EXPR_BEG,
         
     | 
| 
      
 2272 
     | 
    
         
            +
                            :tSTRING_END,     "\"",   EXPR_END)
         
     | 
| 
       2268 
2273 
     | 
    
         
             
              end
         
     | 
| 
       2269 
2274 
     | 
    
         | 
| 
       2270 
2275 
     | 
    
         
             
              def test_yylex_string_double_escape_C_escape
         
     | 
| 
       2271 
2276 
     | 
    
         
             
                assert_lex3("\"\\C-\\M-a\"",
         
     | 
| 
       2272 
2277 
     | 
    
         
             
                            nil,
         
     | 
| 
       2273 
     | 
    
         
            -
                            :tSTRING_BEG,     "\"",    
     | 
| 
       2274 
     | 
    
         
            -
                            :tSTRING_CONTENT, "\201",  
     | 
| 
       2275 
     | 
    
         
            -
                            :tSTRING_END,     "\"",    
     | 
| 
      
 2278 
     | 
    
         
            +
                            :tSTRING_BEG,     "\"",   EXPR_BEG,
         
     | 
| 
      
 2279 
     | 
    
         
            +
                            :tSTRING_CONTENT, "\201", EXPR_BEG,
         
     | 
| 
      
 2280 
     | 
    
         
            +
                            :tSTRING_END,     "\"",   EXPR_END)
         
     | 
| 
       2276 
2281 
     | 
    
         
             
              end
         
     | 
| 
       2277 
2282 
     | 
    
         | 
| 
       2278 
2283 
     | 
    
         
             
              def test_yylex_string_double_escape_C_question
         
     | 
| 
       2279 
     | 
    
         
            -
                assert_lex3("\"\\C-?\"", nil, :tSTRING, "\177",  
     | 
| 
      
 2284 
     | 
    
         
            +
                assert_lex3("\"\\C-?\"", nil, :tSTRING, "\177", EXPR_END)
         
     | 
| 
       2280 
2285 
     | 
    
         
             
              end
         
     | 
| 
       2281 
2286 
     | 
    
         | 
| 
       2282 
2287 
     | 
    
         
             
              def test_yylex_string_utf8_simple
         
     | 
| 
         @@ -2284,7 +2289,22 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       2284 
2289 
     | 
    
         | 
| 
       2285 
2290 
     | 
    
         
             
                assert_lex3('"\u{3024}"',
         
     | 
| 
       2286 
2291 
     | 
    
         
             
                            s(:str, chr),
         
     | 
| 
       2287 
     | 
    
         
            -
                            :tSTRING, chr,  
     | 
| 
      
 2292 
     | 
    
         
            +
                            :tSTRING, chr, EXPR_END)
         
     | 
| 
      
 2293 
     | 
    
         
            +
              end
         
     | 
| 
      
 2294 
     | 
    
         
            +
             
     | 
| 
      
 2295 
     | 
    
         
            +
              def test_yylex_string_utf8_trailing_hex
         
     | 
| 
      
 2296 
     | 
    
         
            +
                chr = [0x3024].pack("U")
         
     | 
| 
      
 2297 
     | 
    
         
            +
                str = "#{chr}abz"
         
     | 
| 
      
 2298 
     | 
    
         
            +
             
     | 
| 
      
 2299 
     | 
    
         
            +
                assert_lex3('"\u3024abz"',
         
     | 
| 
      
 2300 
     | 
    
         
            +
                            s(:str, str),
         
     | 
| 
      
 2301 
     | 
    
         
            +
                            :tSTRING, str, EXPR_END)
         
     | 
| 
      
 2302 
     | 
    
         
            +
              end
         
     | 
| 
      
 2303 
     | 
    
         
            +
             
     | 
| 
      
 2304 
     | 
    
         
            +
              def test_yylex_string_utf8_missing_hex
         
     | 
| 
      
 2305 
     | 
    
         
            +
                refute_lex('"\u3zzz"')
         
     | 
| 
      
 2306 
     | 
    
         
            +
                refute_lex('"\u30zzz"')
         
     | 
| 
      
 2307 
     | 
    
         
            +
                refute_lex('"\u302zzz"')
         
     | 
| 
       2288 
2308 
     | 
    
         
             
              end
         
     | 
| 
       2289 
2309 
     | 
    
         | 
| 
       2290 
2310 
     | 
    
         
             
              def test_yylex_string_utf8_complex
         
     | 
| 
         @@ -2292,234 +2312,282 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       2292 
2312 
     | 
    
         | 
| 
       2293 
2313 
     | 
    
         
             
                assert_lex3('"#@a\u{3024}"',
         
     | 
| 
       2294 
2314 
     | 
    
         
             
                            s(:dstr, "", s(:evstr, s(:ivar, :@a)), s(:str, chr)),
         
     | 
| 
       2295 
     | 
    
         
            -
                            :tSTRING_BEG,     '"',       
     | 
| 
       2296 
     | 
    
         
            -
                            :tSTRING_DVAR,    nil,       
     | 
| 
       2297 
     | 
    
         
            -
                            :tSTRING_CONTENT, "@a"+chr,  
     | 
| 
       2298 
     | 
    
         
            -
                            :tSTRING_END,     '"',       
     | 
| 
      
 2315 
     | 
    
         
            +
                            :tSTRING_BEG,     '"',      EXPR_BEG,
         
     | 
| 
      
 2316 
     | 
    
         
            +
                            :tSTRING_DVAR,    nil,      EXPR_BEG,
         
     | 
| 
      
 2317 
     | 
    
         
            +
                            :tSTRING_CONTENT, "@a"+chr, EXPR_BEG,
         
     | 
| 
      
 2318 
     | 
    
         
            +
                            :tSTRING_END,     '"',      EXPR_END)
         
     | 
| 
      
 2319 
     | 
    
         
            +
              end
         
     | 
| 
      
 2320 
     | 
    
         
            +
             
     | 
| 
      
 2321 
     | 
    
         
            +
              def test_yylex_string_utf8_complex_trailing_hex
         
     | 
| 
      
 2322 
     | 
    
         
            +
                chr = [0x3024].pack("U")
         
     | 
| 
      
 2323 
     | 
    
         
            +
                str = "#{chr}abz"
         
     | 
| 
      
 2324 
     | 
    
         
            +
             
     | 
| 
      
 2325 
     | 
    
         
            +
                assert_lex3('"#@a\u3024abz"',
         
     | 
| 
      
 2326 
     | 
    
         
            +
                            s(:dstr, "", s(:evstr, s(:ivar, :@a)), s(:str, str)),
         
     | 
| 
      
 2327 
     | 
    
         
            +
                            :tSTRING_BEG,     '"',      EXPR_BEG,
         
     | 
| 
      
 2328 
     | 
    
         
            +
                            :tSTRING_DVAR,    nil,      EXPR_BEG,
         
     | 
| 
      
 2329 
     | 
    
         
            +
                            :tSTRING_CONTENT, "@a"+str, EXPR_BEG,
         
     | 
| 
      
 2330 
     | 
    
         
            +
                            :tSTRING_END,     '"',      EXPR_END)
         
     | 
| 
      
 2331 
     | 
    
         
            +
              end
         
     | 
| 
      
 2332 
     | 
    
         
            +
             
     | 
| 
      
 2333 
     | 
    
         
            +
              def test_yylex_string_utf8_complex_missing_hex
         
     | 
| 
      
 2334 
     | 
    
         
            +
                chr = [0x302].pack("U")
         
     | 
| 
      
 2335 
     | 
    
         
            +
                str = "#{chr}zzz"
         
     | 
| 
      
 2336 
     | 
    
         
            +
             
     | 
| 
      
 2337 
     | 
    
         
            +
                refute_lex('"#@a\u302zzz"',
         
     | 
| 
      
 2338 
     | 
    
         
            +
                            :tSTRING_BEG,     '"',
         
     | 
| 
      
 2339 
     | 
    
         
            +
                            :tSTRING_DVAR,    nil,
         
     | 
| 
      
 2340 
     | 
    
         
            +
                            :tSTRING_CONTENT, "@a"+str,
         
     | 
| 
      
 2341 
     | 
    
         
            +
                            :tSTRING_END,     '"')
         
     | 
| 
      
 2342 
     | 
    
         
            +
             
     | 
| 
      
 2343 
     | 
    
         
            +
                chr = [0x30].pack("U")
         
     | 
| 
      
 2344 
     | 
    
         
            +
                str = "#{chr}zzz"
         
     | 
| 
      
 2345 
     | 
    
         
            +
             
     | 
| 
      
 2346 
     | 
    
         
            +
                refute_lex('"#@a\u30zzz"',
         
     | 
| 
      
 2347 
     | 
    
         
            +
                            :tSTRING_BEG,     '"',
         
     | 
| 
      
 2348 
     | 
    
         
            +
                            :tSTRING_DVAR,    nil,
         
     | 
| 
      
 2349 
     | 
    
         
            +
                            :tSTRING_CONTENT, "@a"+str,
         
     | 
| 
      
 2350 
     | 
    
         
            +
                            :tSTRING_END,     '"')
         
     | 
| 
      
 2351 
     | 
    
         
            +
             
     | 
| 
      
 2352 
     | 
    
         
            +
                chr = [0x3].pack("U")
         
     | 
| 
      
 2353 
     | 
    
         
            +
                str = "#{chr}zzz"
         
     | 
| 
      
 2354 
     | 
    
         
            +
             
     | 
| 
      
 2355 
     | 
    
         
            +
                refute_lex('"#@a\u3zzz"',
         
     | 
| 
      
 2356 
     | 
    
         
            +
                            :tSTRING_BEG,     '"',
         
     | 
| 
      
 2357 
     | 
    
         
            +
                            :tSTRING_DVAR,    nil,
         
     | 
| 
      
 2358 
     | 
    
         
            +
                            :tSTRING_CONTENT, "@a"+str,
         
     | 
| 
      
 2359 
     | 
    
         
            +
                            :tSTRING_END,     '"')
         
     | 
| 
       2299 
2360 
     | 
    
         
             
              end
         
     | 
| 
       2300 
2361 
     | 
    
         | 
| 
       2301 
2362 
     | 
    
         
             
              def test_yylex_string_double_escape_M
         
     | 
| 
       2302 
2363 
     | 
    
         
             
                chr = "\341"
         
     | 
| 
       2303 
     | 
    
         
            -
                chr.force_encoding("UTF-8") if RubyLexer::HAS_ENC
         
     | 
| 
       2304 
2364 
     | 
    
         | 
| 
       2305 
     | 
    
         
            -
                assert_lex3("\"\\M-a\"", nil, :tSTRING, chr,  
     | 
| 
      
 2365 
     | 
    
         
            +
                assert_lex3("\"\\M-a\"", nil, :tSTRING, chr, EXPR_END)
         
     | 
| 
       2306 
2366 
     | 
    
         
             
              end
         
     | 
| 
       2307 
2367 
     | 
    
         | 
| 
       2308 
2368 
     | 
    
         
             
              def test_why_does_ruby_hate_me?
         
     | 
| 
       2309 
2369 
     | 
    
         
             
                assert_lex3("\"Nl%\\000\\000A\\000\\999\"", # you should be ashamed
         
     | 
| 
       2310 
2370 
     | 
    
         
             
                            nil,
         
     | 
| 
       2311 
     | 
    
         
            -
                            :tSTRING, ["Nl%","\x00","\x00","A","\x00","999"].join,  
     | 
| 
      
 2371 
     | 
    
         
            +
                            :tSTRING, ["Nl%","\x00","\x00","A","\x00","999"].join, EXPR_END)
         
     | 
| 
       2312 
2372 
     | 
    
         
             
              end
         
     | 
| 
       2313 
2373 
     | 
    
         | 
| 
       2314 
2374 
     | 
    
         
             
              def test_yylex_string_double_escape_M_backslash
         
     | 
| 
       2315 
2375 
     | 
    
         
             
                assert_lex3("\"\\M-\\\\\"",
         
     | 
| 
       2316 
2376 
     | 
    
         
             
                            nil,
         
     | 
| 
       2317 
     | 
    
         
            -
                            :tSTRING_BEG,     "\"",    
     | 
| 
       2318 
     | 
    
         
            -
                            :tSTRING_CONTENT, "\334",  
     | 
| 
       2319 
     | 
    
         
            -
                            :tSTRING_END,     "\"",    
     | 
| 
      
 2377 
     | 
    
         
            +
                            :tSTRING_BEG,     "\"",   EXPR_BEG,
         
     | 
| 
      
 2378 
     | 
    
         
            +
                            :tSTRING_CONTENT, "\334", EXPR_BEG,
         
     | 
| 
      
 2379 
     | 
    
         
            +
                            :tSTRING_END,     "\"",   EXPR_END)
         
     | 
| 
       2320 
2380 
     | 
    
         
             
              end
         
     | 
| 
       2321 
2381 
     | 
    
         | 
| 
       2322 
2382 
     | 
    
         
             
              def test_yylex_string_double_escape_M_escape
         
     | 
| 
       2323 
2383 
     | 
    
         
             
                assert_lex3("\"\\M-\\C-a\"",
         
     | 
| 
       2324 
2384 
     | 
    
         
             
                            nil,
         
     | 
| 
       2325 
     | 
    
         
            -
                            :tSTRING_BEG,     "\"",    
     | 
| 
       2326 
     | 
    
         
            -
                            :tSTRING_CONTENT, "\201",  
     | 
| 
       2327 
     | 
    
         
            -
                            :tSTRING_END,     "\"",    
     | 
| 
      
 2385 
     | 
    
         
            +
                            :tSTRING_BEG,     "\"",   EXPR_BEG,
         
     | 
| 
      
 2386 
     | 
    
         
            +
                            :tSTRING_CONTENT, "\201", EXPR_BEG,
         
     | 
| 
      
 2387 
     | 
    
         
            +
                            :tSTRING_END,     "\"",   EXPR_END)
         
     | 
| 
       2328 
2388 
     | 
    
         
             
              end
         
     | 
| 
       2329 
2389 
     | 
    
         | 
| 
       2330 
2390 
     | 
    
         
             
              def test_yylex_string_double_escape_bs1
         
     | 
| 
       2331 
     | 
    
         
            -
                assert_lex3("\"a\\a\\a\"", nil, :tSTRING, "a\a\a",  
     | 
| 
      
 2391 
     | 
    
         
            +
                assert_lex3("\"a\\a\\a\"", nil, :tSTRING, "a\a\a", EXPR_END)
         
     | 
| 
       2332 
2392 
     | 
    
         
             
              end
         
     | 
| 
       2333 
2393 
     | 
    
         | 
| 
       2334 
2394 
     | 
    
         
             
              def test_yylex_string_double_escape_bs2
         
     | 
| 
       2335 
     | 
    
         
            -
                assert_lex3("\"a\\\\a\"", nil, :tSTRING, "a\\a",  
     | 
| 
      
 2395 
     | 
    
         
            +
                assert_lex3("\"a\\\\a\"", nil, :tSTRING, "a\\a", EXPR_END)
         
     | 
| 
       2336 
2396 
     | 
    
         
             
              end
         
     | 
| 
       2337 
2397 
     | 
    
         | 
| 
       2338 
2398 
     | 
    
         
             
              def test_yylex_string_double_escape_c
         
     | 
| 
       2339 
     | 
    
         
            -
                assert_lex3("\"\\ca\"", nil, :tSTRING, "\001",  
     | 
| 
      
 2399 
     | 
    
         
            +
                assert_lex3("\"\\ca\"", nil, :tSTRING, "\001", EXPR_END)
         
     | 
| 
       2340 
2400 
     | 
    
         
             
              end
         
     | 
| 
       2341 
2401 
     | 
    
         | 
| 
       2342 
2402 
     | 
    
         
             
              def test_yylex_string_double_escape_c_backslash
         
     | 
| 
       2343 
2403 
     | 
    
         
             
                assert_lex3("\"\\c\\\"",
         
     | 
| 
       2344 
2404 
     | 
    
         
             
                            nil,
         
     | 
| 
       2345 
     | 
    
         
            -
                            :tSTRING_BEG,     "\"",    
     | 
| 
       2346 
     | 
    
         
            -
                            :tSTRING_CONTENT, "\034",  
     | 
| 
       2347 
     | 
    
         
            -
                            :tSTRING_END,     "\"",    
     | 
| 
      
 2405 
     | 
    
         
            +
                            :tSTRING_BEG,     "\"",   EXPR_BEG,
         
     | 
| 
      
 2406 
     | 
    
         
            +
                            :tSTRING_CONTENT, "\034", EXPR_BEG,
         
     | 
| 
      
 2407 
     | 
    
         
            +
                            :tSTRING_END,     "\"",   EXPR_END)
         
     | 
| 
       2348 
2408 
     | 
    
         
             
              end
         
     | 
| 
       2349 
2409 
     | 
    
         | 
| 
       2350 
2410 
     | 
    
         
             
              def test_yylex_string_double_escape_c_escape
         
     | 
| 
       2351 
2411 
     | 
    
         
             
                assert_lex3("\"\\c\\M-a\"",
         
     | 
| 
       2352 
2412 
     | 
    
         
             
                            nil,
         
     | 
| 
       2353 
     | 
    
         
            -
                            :tSTRING_BEG,     "\"",    
     | 
| 
       2354 
     | 
    
         
            -
                            :tSTRING_CONTENT, "\201",  
     | 
| 
       2355 
     | 
    
         
            -
                            :tSTRING_END,     "\"",    
     | 
| 
      
 2413 
     | 
    
         
            +
                            :tSTRING_BEG,     "\"",   EXPR_BEG,
         
     | 
| 
      
 2414 
     | 
    
         
            +
                            :tSTRING_CONTENT, "\201", EXPR_BEG,
         
     | 
| 
      
 2415 
     | 
    
         
            +
                            :tSTRING_END,     "\"",   EXPR_END)
         
     | 
| 
       2356 
2416 
     | 
    
         
             
              end
         
     | 
| 
       2357 
2417 
     | 
    
         | 
| 
       2358 
2418 
     | 
    
         
             
              def test_yylex_string_double_escape_c_question
         
     | 
| 
       2359 
     | 
    
         
            -
                assert_lex3("\"\\c?\"", nil, :tSTRING, "\177",  
     | 
| 
      
 2419 
     | 
    
         
            +
                assert_lex3("\"\\c?\"", nil, :tSTRING, "\177", EXPR_END)
         
     | 
| 
       2360 
2420 
     | 
    
         
             
              end
         
     | 
| 
       2361 
2421 
     | 
    
         | 
| 
       2362 
2422 
     | 
    
         
             
              def test_yylex_string_double_escape_chars
         
     | 
| 
       2363 
     | 
    
         
            -
                assert_lex3("\"s\\tri\\ng\"", nil, :tSTRING, "s\tri\ng",  
     | 
| 
      
 2423 
     | 
    
         
            +
                assert_lex3("\"s\\tri\\ng\"", nil, :tSTRING, "s\tri\ng", EXPR_END)
         
     | 
| 
       2364 
2424 
     | 
    
         
             
              end
         
     | 
| 
       2365 
2425 
     | 
    
         | 
| 
       2366 
2426 
     | 
    
         
             
              def test_yylex_string_double_escape_hex
         
     | 
| 
       2367 
     | 
    
         
            -
                assert_lex3("\"n = \\x61\\x62\\x63\"", nil, :tSTRING, "n = abc",  
     | 
| 
      
 2427 
     | 
    
         
            +
                assert_lex3("\"n = \\x61\\x62\\x63\"", nil, :tSTRING, "n = abc", EXPR_END)
         
     | 
| 
       2368 
2428 
     | 
    
         
             
              end
         
     | 
| 
       2369 
2429 
     | 
    
         | 
| 
       2370 
2430 
     | 
    
         
             
              def test_yylex_string_double_escape_octal
         
     | 
| 
       2371 
     | 
    
         
            -
                assert_lex3("\"n = \\101\\102\\103\"", nil, :tSTRING, "n = ABC",  
     | 
| 
      
 2431 
     | 
    
         
            +
                assert_lex3("\"n = \\101\\102\\103\"", nil, :tSTRING, "n = ABC", EXPR_END)
         
     | 
| 
       2372 
2432 
     | 
    
         
             
              end
         
     | 
| 
       2373 
2433 
     | 
    
         | 
| 
       2374 
2434 
     | 
    
         
             
              def test_yylex_string_double_escape_octal_fucked
         
     | 
| 
       2375 
     | 
    
         
            -
                assert_lex3("\"n = \\444\"", nil, :tSTRING, "n = $",  
     | 
| 
      
 2435 
     | 
    
         
            +
                assert_lex3("\"n = \\444\"", nil, :tSTRING, "n = $", EXPR_END)
         
     | 
| 
       2376 
2436 
     | 
    
         
             
              end
         
     | 
| 
       2377 
2437 
     | 
    
         | 
| 
       2378 
2438 
     | 
    
         
             
              def test_yylex_string_double_interp
         
     | 
| 
       2379 
2439 
     | 
    
         
             
                assert_lex3("\"blah #x a \#@a b \#$b c \#{3} # \"",
         
     | 
| 
       2380 
2440 
     | 
    
         
             
                            nil,
         
     | 
| 
       2381 
     | 
    
         
            -
                            :tSTRING_BEG,     "\"",          
     | 
| 
       2382 
     | 
    
         
            -
                            :tSTRING_CONTENT, "blah #x a ",  
     | 
| 
       2383 
     | 
    
         
            -
                            :tSTRING_DVAR,    nil,           
     | 
| 
       2384 
     | 
    
         
            -
                            :tSTRING_CONTENT, "@a b ",       
     | 
| 
       2385 
     | 
    
         
            -
                            :tSTRING_DVAR,    nil,           
     | 
| 
       2386 
     | 
    
         
            -
                            :tSTRING_CONTENT, "$b c ",       
     | 
| 
       2387 
     | 
    
         
            -
                            :tSTRING_DBEG,    nil,           
     | 
| 
       2388 
     | 
    
         
            -
                            :tSTRING_CONTENT, "3} # ",       
     | 
| 
       2389 
     | 
    
         
            -
                            :tSTRING_END,     "\"",          
     | 
| 
      
 2441 
     | 
    
         
            +
                            :tSTRING_BEG,     "\"",         EXPR_BEG,
         
     | 
| 
      
 2442 
     | 
    
         
            +
                            :tSTRING_CONTENT, "blah #x a ", EXPR_BEG,
         
     | 
| 
      
 2443 
     | 
    
         
            +
                            :tSTRING_DVAR,    nil,          EXPR_BEG,
         
     | 
| 
      
 2444 
     | 
    
         
            +
                            :tSTRING_CONTENT, "@a b ",      EXPR_BEG,
         
     | 
| 
      
 2445 
     | 
    
         
            +
                            :tSTRING_DVAR,    nil,          EXPR_BEG,
         
     | 
| 
      
 2446 
     | 
    
         
            +
                            :tSTRING_CONTENT, "$b c ",      EXPR_BEG,
         
     | 
| 
      
 2447 
     | 
    
         
            +
                            :tSTRING_DBEG,    nil,          EXPR_BEG,
         
     | 
| 
      
 2448 
     | 
    
         
            +
                            :tSTRING_CONTENT, "3} # ",      EXPR_BEG,
         
     | 
| 
      
 2449 
     | 
    
         
            +
                            :tSTRING_END,     "\"",         EXPR_END)
         
     | 
| 
       2390 
2450 
     | 
    
         
             
              end
         
     | 
| 
       2391 
2451 
     | 
    
         | 
| 
       2392 
2452 
     | 
    
         
             
              def test_yylex_string_double_pound_dollar_bad
         
     | 
| 
       2393 
2453 
     | 
    
         
             
                assert_lex3('"#$%"', nil,
         
     | 
| 
       2394 
2454 
     | 
    
         | 
| 
       2395 
     | 
    
         
            -
                            :tSTRING_BEG,     "\"",   
     | 
| 
       2396 
     | 
    
         
            -
                            :tSTRING_CONTENT, '#$%',  
     | 
| 
       2397 
     | 
    
         
            -
                            :tSTRING_END,     "\"",   
     | 
| 
      
 2455 
     | 
    
         
            +
                            :tSTRING_BEG,     "\"",  EXPR_BEG,
         
     | 
| 
      
 2456 
     | 
    
         
            +
                            :tSTRING_CONTENT, '#$%', EXPR_BEG,
         
     | 
| 
      
 2457 
     | 
    
         
            +
                            :tSTRING_END,     "\"",  EXPR_END)
         
     | 
| 
       2398 
2458 
     | 
    
         
             
              end
         
     | 
| 
       2399 
2459 
     | 
    
         | 
| 
       2400 
2460 
     | 
    
         
             
              def test_yylex_string_double_nested_curlies
         
     | 
| 
       2401 
2461 
     | 
    
         
             
                assert_lex3("%{nest{one{two}one}nest}",
         
     | 
| 
       2402 
2462 
     | 
    
         
             
                            nil,
         
     | 
| 
       2403 
     | 
    
         
            -
                            :tSTRING_BEG,     "%}",                     
     | 
| 
       2404 
     | 
    
         
            -
                            :tSTRING_CONTENT, "nest{one{two}one}nest",  
     | 
| 
       2405 
     | 
    
         
            -
                            :tSTRING_END,     "}",                      
     | 
| 
      
 2463 
     | 
    
         
            +
                            :tSTRING_BEG,     "%}",                    EXPR_BEG,
         
     | 
| 
      
 2464 
     | 
    
         
            +
                            :tSTRING_CONTENT, "nest{one{two}one}nest", EXPR_BEG,
         
     | 
| 
      
 2465 
     | 
    
         
            +
                            :tSTRING_END,     "}",                     EXPR_END)
         
     | 
| 
       2406 
2466 
     | 
    
         
             
              end
         
     | 
| 
       2407 
2467 
     | 
    
         | 
| 
       2408 
2468 
     | 
    
         
             
              def test_yylex_string_double_no_interp
         
     | 
| 
       2409 
     | 
    
         
            -
                assert_lex3("\"# blah\"",      nil, :tSTRING, "# blah",       
     | 
| 
       2410 
     | 
    
         
            -
                assert_lex3("\"blah # blah\"", nil, :tSTRING, "blah # blah",  
     | 
| 
      
 2469 
     | 
    
         
            +
                assert_lex3("\"# blah\"",      nil, :tSTRING, "# blah",      EXPR_END)
         
     | 
| 
      
 2470 
     | 
    
         
            +
                assert_lex3("\"blah # blah\"", nil, :tSTRING, "blah # blah", EXPR_END)
         
     | 
| 
       2411 
2471 
     | 
    
         
             
              end
         
     | 
| 
       2412 
2472 
     | 
    
         | 
| 
       2413 
2473 
     | 
    
         
             
              def test_yylex_string_escape_x_single
         
     | 
| 
       2414 
     | 
    
         
            -
                assert_lex3("\"\\x0\"", nil, :tSTRING, "\000",  
     | 
| 
      
 2474 
     | 
    
         
            +
                assert_lex3("\"\\x0\"", nil, :tSTRING, "\000", EXPR_END)
         
     | 
| 
       2415 
2475 
     | 
    
         
             
              end
         
     | 
| 
       2416 
2476 
     | 
    
         | 
| 
       2417 
2477 
     | 
    
         
             
              def test_yylex_string_pct_i
         
     | 
| 
       2418 
2478 
     | 
    
         
             
                assert_lex3("%i[s1 s2\ns3]",
         
     | 
| 
       2419 
2479 
     | 
    
         
             
                            nil,
         
     | 
| 
       2420 
     | 
    
         
            -
                            :tQSYMBOLS_BEG,   "%i[",  
     | 
| 
       2421 
     | 
    
         
            -
                            :tSTRING_CONTENT, "s1",   
     | 
| 
       2422 
     | 
    
         
            -
                            :tSPACE,          nil,    
     | 
| 
       2423 
     | 
    
         
            -
                            :tSTRING_CONTENT, "s2",   
     | 
| 
       2424 
     | 
    
         
            -
                            :tSPACE,          nil,    
     | 
| 
       2425 
     | 
    
         
            -
                            :tSTRING_CONTENT, "s3",   
     | 
| 
       2426 
     | 
    
         
            -
                            :tSPACE,          nil,    
     | 
| 
       2427 
     | 
    
         
            -
                            :tSTRING_END,     nil,    
     | 
| 
      
 2480 
     | 
    
         
            +
                            :tQSYMBOLS_BEG,   "%i[", EXPR_BEG,
         
     | 
| 
      
 2481 
     | 
    
         
            +
                            :tSTRING_CONTENT, "s1",  EXPR_BEG,
         
     | 
| 
      
 2482 
     | 
    
         
            +
                            :tSPACE,          nil,   EXPR_BEG,
         
     | 
| 
      
 2483 
     | 
    
         
            +
                            :tSTRING_CONTENT, "s2",  EXPR_BEG,
         
     | 
| 
      
 2484 
     | 
    
         
            +
                            :tSPACE,          nil,   EXPR_BEG,
         
     | 
| 
      
 2485 
     | 
    
         
            +
                            :tSTRING_CONTENT, "s3",  EXPR_BEG,
         
     | 
| 
      
 2486 
     | 
    
         
            +
                            :tSPACE,          nil,   EXPR_BEG,
         
     | 
| 
      
 2487 
     | 
    
         
            +
                            :tSTRING_END,     nil,   EXPR_END)
         
     | 
| 
       2428 
2488 
     | 
    
         
             
              end
         
     | 
| 
       2429 
2489 
     | 
    
         | 
| 
       2430 
2490 
     | 
    
         
             
              def test_yylex_string_pct_I
         
     | 
| 
       2431 
2491 
     | 
    
         
             
                assert_lex3("%I[s1 s2\ns3]",
         
     | 
| 
       2432 
2492 
     | 
    
         
             
                            nil,
         
     | 
| 
       2433 
     | 
    
         
            -
                            :tSYMBOLS_BEG,    "%I[",  
     | 
| 
       2434 
     | 
    
         
            -
                            :tSTRING_CONTENT, "s1",   
     | 
| 
       2435 
     | 
    
         
            -
                            :tSPACE,          nil,    
     | 
| 
       2436 
     | 
    
         
            -
                            :tSTRING_CONTENT, "s2",   
     | 
| 
       2437 
     | 
    
         
            -
                            :tSPACE,          nil,    
     | 
| 
       2438 
     | 
    
         
            -
                            :tSTRING_CONTENT, "s3",   
     | 
| 
       2439 
     | 
    
         
            -
                            :tSPACE,          nil,    
     | 
| 
       2440 
     | 
    
         
            -
                            :tSTRING_END,     nil,    
     | 
| 
      
 2493 
     | 
    
         
            +
                            :tSYMBOLS_BEG,    "%I[", EXPR_BEG,
         
     | 
| 
      
 2494 
     | 
    
         
            +
                            :tSTRING_CONTENT, "s1",  EXPR_BEG,
         
     | 
| 
      
 2495 
     | 
    
         
            +
                            :tSPACE,          nil,   EXPR_BEG,
         
     | 
| 
      
 2496 
     | 
    
         
            +
                            :tSTRING_CONTENT, "s2",  EXPR_BEG,
         
     | 
| 
      
 2497 
     | 
    
         
            +
                            :tSPACE,          nil,   EXPR_BEG,
         
     | 
| 
      
 2498 
     | 
    
         
            +
                            :tSTRING_CONTENT, "s3",  EXPR_BEG,
         
     | 
| 
      
 2499 
     | 
    
         
            +
                            :tSPACE,          nil,   EXPR_BEG,
         
     | 
| 
      
 2500 
     | 
    
         
            +
                            :tSTRING_END,     nil,   EXPR_END)
         
     | 
| 
       2441 
2501 
     | 
    
         
             
              end
         
     | 
| 
       2442 
2502 
     | 
    
         | 
| 
       2443 
2503 
     | 
    
         
             
              def test_yylex_string_pct_i_extra_space
         
     | 
| 
       2444 
2504 
     | 
    
         
             
                assert_lex3("%i[ s1 s2\ns3 ]",
         
     | 
| 
       2445 
2505 
     | 
    
         
             
                            nil,
         
     | 
| 
       2446 
     | 
    
         
            -
                            :tQSYMBOLS_BEG,   "%i[",  
     | 
| 
       2447 
     | 
    
         
            -
                            :tSTRING_CONTENT, "s1",   
     | 
| 
       2448 
     | 
    
         
            -
                            :tSPACE,          nil,    
     | 
| 
       2449 
     | 
    
         
            -
                            :tSTRING_CONTENT, "s2",   
     | 
| 
       2450 
     | 
    
         
            -
                            :tSPACE,          nil,    
     | 
| 
       2451 
     | 
    
         
            -
                            :tSTRING_CONTENT, "s3",   
     | 
| 
       2452 
     | 
    
         
            -
                            :tSPACE,          nil,    
     | 
| 
       2453 
     | 
    
         
            -
                            :tSTRING_END,     nil,    
     | 
| 
      
 2506 
     | 
    
         
            +
                            :tQSYMBOLS_BEG,   "%i[", EXPR_BEG,
         
     | 
| 
      
 2507 
     | 
    
         
            +
                            :tSTRING_CONTENT, "s1",  EXPR_BEG,
         
     | 
| 
      
 2508 
     | 
    
         
            +
                            :tSPACE,          nil,   EXPR_BEG,
         
     | 
| 
      
 2509 
     | 
    
         
            +
                            :tSTRING_CONTENT, "s2",  EXPR_BEG,
         
     | 
| 
      
 2510 
     | 
    
         
            +
                            :tSPACE,          nil,   EXPR_BEG,
         
     | 
| 
      
 2511 
     | 
    
         
            +
                            :tSTRING_CONTENT, "s3",  EXPR_BEG,
         
     | 
| 
      
 2512 
     | 
    
         
            +
                            :tSPACE,          nil,   EXPR_BEG,
         
     | 
| 
      
 2513 
     | 
    
         
            +
                            :tSTRING_END,     nil,   EXPR_END)
         
     | 
| 
       2454 
2514 
     | 
    
         
             
              end
         
     | 
| 
       2455 
2515 
     | 
    
         | 
| 
       2456 
2516 
     | 
    
         
             
              def test_yylex_string_pct_I_extra_space
         
     | 
| 
       2457 
2517 
     | 
    
         
             
                assert_lex3("%I[ s1 s2\ns3 ]",
         
     | 
| 
       2458 
2518 
     | 
    
         
             
                            nil,
         
     | 
| 
       2459 
     | 
    
         
            -
                            :tSYMBOLS_BEG,    "%I[",  
     | 
| 
       2460 
     | 
    
         
            -
                            :tSTRING_CONTENT, "s1",   
     | 
| 
       2461 
     | 
    
         
            -
                            :tSPACE,          nil,    
     | 
| 
       2462 
     | 
    
         
            -
                            :tSTRING_CONTENT, "s2",   
     | 
| 
       2463 
     | 
    
         
            -
                            :tSPACE,          nil,    
     | 
| 
       2464 
     | 
    
         
            -
                            :tSTRING_CONTENT, "s3",   
     | 
| 
       2465 
     | 
    
         
            -
                            :tSPACE,          nil,    
     | 
| 
       2466 
     | 
    
         
            -
                            :tSTRING_END,     nil,    
     | 
| 
      
 2519 
     | 
    
         
            +
                            :tSYMBOLS_BEG,    "%I[", EXPR_BEG,
         
     | 
| 
      
 2520 
     | 
    
         
            +
                            :tSTRING_CONTENT, "s1",  EXPR_BEG,
         
     | 
| 
      
 2521 
     | 
    
         
            +
                            :tSPACE,          nil,   EXPR_BEG,
         
     | 
| 
      
 2522 
     | 
    
         
            +
                            :tSTRING_CONTENT, "s2",  EXPR_BEG,
         
     | 
| 
      
 2523 
     | 
    
         
            +
                            :tSPACE,          nil,   EXPR_BEG,
         
     | 
| 
      
 2524 
     | 
    
         
            +
                            :tSTRING_CONTENT, "s3",  EXPR_BEG,
         
     | 
| 
      
 2525 
     | 
    
         
            +
                            :tSPACE,          nil,   EXPR_BEG,
         
     | 
| 
      
 2526 
     | 
    
         
            +
                            :tSTRING_END,     nil,   EXPR_END)
         
     | 
| 
       2467 
2527 
     | 
    
         
             
              end
         
     | 
| 
       2468 
2528 
     | 
    
         | 
| 
       2469 
2529 
     | 
    
         
             
              def test_yylex_string_pct_q
         
     | 
| 
       2470 
2530 
     | 
    
         
             
                assert_lex3("%q[s1 s2]",
         
     | 
| 
       2471 
2531 
     | 
    
         
             
                            nil,
         
     | 
| 
       2472 
     | 
    
         
            -
                            :tSTRING_BEG,     "%q[",    
     | 
| 
       2473 
     | 
    
         
            -
                            :tSTRING_CONTENT, "s1 s2",  
     | 
| 
       2474 
     | 
    
         
            -
                            :tSTRING_END,     "]",      
     | 
| 
      
 2532 
     | 
    
         
            +
                            :tSTRING_BEG,     "%q[",   EXPR_BEG,
         
     | 
| 
      
 2533 
     | 
    
         
            +
                            :tSTRING_CONTENT, "s1 s2", EXPR_BEG,
         
     | 
| 
      
 2534 
     | 
    
         
            +
                            :tSTRING_END,     "]",     EXPR_END)
         
     | 
| 
       2475 
2535 
     | 
    
         
             
              end
         
     | 
| 
       2476 
2536 
     | 
    
         | 
| 
       2477 
2537 
     | 
    
         
             
              def test_yylex_string_pct_Q
         
     | 
| 
       2478 
2538 
     | 
    
         
             
                assert_lex3("%Q[s1 s2]",
         
     | 
| 
       2479 
2539 
     | 
    
         
             
                            nil,
         
     | 
| 
       2480 
     | 
    
         
            -
                            :tSTRING_BEG,     "%Q[",    
     | 
| 
       2481 
     | 
    
         
            -
                            :tSTRING_CONTENT, "s1 s2",  
     | 
| 
       2482 
     | 
    
         
            -
                            :tSTRING_END,     "]",      
     | 
| 
      
 2540 
     | 
    
         
            +
                            :tSTRING_BEG,     "%Q[",   EXPR_BEG,
         
     | 
| 
      
 2541 
     | 
    
         
            +
                            :tSTRING_CONTENT, "s1 s2", EXPR_BEG,
         
     | 
| 
      
 2542 
     | 
    
         
            +
                            :tSTRING_END,     "]",     EXPR_END)
         
     | 
| 
      
 2543 
     | 
    
         
            +
              end
         
     | 
| 
      
 2544 
     | 
    
         
            +
             
     | 
| 
      
 2545 
     | 
    
         
            +
              def test_yylex_string_pct_s
         
     | 
| 
      
 2546 
     | 
    
         
            +
                assert_lex3("%s[s1 s2]",
         
     | 
| 
      
 2547 
     | 
    
         
            +
                            nil,
         
     | 
| 
      
 2548 
     | 
    
         
            +
                            :tSYMBEG,         "%s[",   EXPR_FNAME, # TODO: :tSYM_BEG ?
         
     | 
| 
      
 2549 
     | 
    
         
            +
                            :tSTRING_CONTENT, "s1 s2", EXPR_FNAME, # man... I don't like this
         
     | 
| 
      
 2550 
     | 
    
         
            +
                            :tSTRING_END,     "]",     EXPR_END)
         
     | 
| 
       2483 
2551 
     | 
    
         
             
              end
         
     | 
| 
       2484 
2552 
     | 
    
         | 
| 
       2485 
2553 
     | 
    
         
             
              def test_yylex_string_pct_W
         
     | 
| 
       2486 
2554 
     | 
    
         
             
                assert_lex3("%W[s1 s2\ns3]", # TODO: add interpolation to these
         
     | 
| 
       2487 
2555 
     | 
    
         
             
                            nil,
         
     | 
| 
       2488 
     | 
    
         
            -
                            :tWORDS_BEG,      "%W[",  
     | 
| 
       2489 
     | 
    
         
            -
                            :tSTRING_CONTENT, "s1",   
     | 
| 
       2490 
     | 
    
         
            -
                            :tSPACE,          nil,    
     | 
| 
       2491 
     | 
    
         
            -
                            :tSTRING_CONTENT, "s2",   
     | 
| 
       2492 
     | 
    
         
            -
                            :tSPACE,          nil,    
     | 
| 
       2493 
     | 
    
         
            -
                            :tSTRING_CONTENT, "s3",   
     | 
| 
       2494 
     | 
    
         
            -
                            :tSPACE,          nil,    
     | 
| 
       2495 
     | 
    
         
            -
                            :tSTRING_END,     nil,    
     | 
| 
      
 2556 
     | 
    
         
            +
                            :tWORDS_BEG,      "%W[", EXPR_BEG,
         
     | 
| 
      
 2557 
     | 
    
         
            +
                            :tSTRING_CONTENT, "s1",  EXPR_BEG,
         
     | 
| 
      
 2558 
     | 
    
         
            +
                            :tSPACE,          nil,   EXPR_BEG,
         
     | 
| 
      
 2559 
     | 
    
         
            +
                            :tSTRING_CONTENT, "s2",  EXPR_BEG,
         
     | 
| 
      
 2560 
     | 
    
         
            +
                            :tSPACE,          nil,   EXPR_BEG,
         
     | 
| 
      
 2561 
     | 
    
         
            +
                            :tSTRING_CONTENT, "s3",  EXPR_BEG,
         
     | 
| 
      
 2562 
     | 
    
         
            +
                            :tSPACE,          nil,   EXPR_BEG,
         
     | 
| 
      
 2563 
     | 
    
         
            +
                            :tSTRING_END,     nil,   EXPR_END)
         
     | 
| 
       2496 
2564 
     | 
    
         
             
              end
         
     | 
| 
       2497 
2565 
     | 
    
         | 
| 
       2498 
2566 
     | 
    
         
             
              def test_yylex_string_pct_W_bs_nl
         
     | 
| 
       2499 
2567 
     | 
    
         
             
                assert_lex3("%W[s1 \\\ns2]", # TODO: add interpolation to these
         
     | 
| 
       2500 
2568 
     | 
    
         
             
                            nil,
         
     | 
| 
       2501 
     | 
    
         
            -
                            :tWORDS_BEG,      "%W[",   
     | 
| 
       2502 
     | 
    
         
            -
                            :tSTRING_CONTENT, "s1",    
     | 
| 
       2503 
     | 
    
         
            -
                            :tSPACE,          nil,     
     | 
| 
       2504 
     | 
    
         
            -
                            :tSTRING_CONTENT, "\ns2",  
     | 
| 
       2505 
     | 
    
         
            -
                            :tSPACE,          nil,     
     | 
| 
       2506 
     | 
    
         
            -
                            :tSTRING_END,     nil,     
     | 
| 
      
 2569 
     | 
    
         
            +
                            :tWORDS_BEG,      "%W[",  EXPR_BEG,
         
     | 
| 
      
 2570 
     | 
    
         
            +
                            :tSTRING_CONTENT, "s1",   EXPR_BEG,
         
     | 
| 
      
 2571 
     | 
    
         
            +
                            :tSPACE,          nil,    EXPR_BEG,
         
     | 
| 
      
 2572 
     | 
    
         
            +
                            :tSTRING_CONTENT, "\ns2", EXPR_BEG,
         
     | 
| 
      
 2573 
     | 
    
         
            +
                            :tSPACE,          nil,    EXPR_BEG,
         
     | 
| 
      
 2574 
     | 
    
         
            +
                            :tSTRING_END,     nil,    EXPR_END)
         
     | 
| 
       2507 
2575 
     | 
    
         
             
              end
         
     | 
| 
       2508 
2576 
     | 
    
         | 
| 
       2509 
2577 
     | 
    
         
             
              def test_yylex_string_pct_angle
         
     | 
| 
       2510 
2578 
     | 
    
         
             
                assert_lex3("%<blah>",
         
     | 
| 
       2511 
2579 
     | 
    
         
             
                            nil,
         
     | 
| 
       2512 
     | 
    
         
            -
                            :tSTRING_BEG,     "%>",    
     | 
| 
       2513 
     | 
    
         
            -
                            :tSTRING_CONTENT, "blah",  
     | 
| 
       2514 
     | 
    
         
            -
                            :tSTRING_END,     ">",     
     | 
| 
      
 2580 
     | 
    
         
            +
                            :tSTRING_BEG,     "%>",   EXPR_BEG,
         
     | 
| 
      
 2581 
     | 
    
         
            +
                            :tSTRING_CONTENT, "blah", EXPR_BEG,
         
     | 
| 
      
 2582 
     | 
    
         
            +
                            :tSTRING_END,     ">",    EXPR_END)
         
     | 
| 
       2515 
2583 
     | 
    
         
             
              end
         
     | 
| 
       2516 
2584 
     | 
    
         | 
| 
       2517 
2585 
     | 
    
         
             
              def test_yylex_string_pct_other
         
     | 
| 
       2518 
2586 
     | 
    
         
             
                assert_lex3("%%blah%",
         
     | 
| 
       2519 
2587 
     | 
    
         
             
                            nil,
         
     | 
| 
       2520 
     | 
    
         
            -
                            :tSTRING_BEG,     "%%",    
     | 
| 
       2521 
     | 
    
         
            -
                            :tSTRING_CONTENT, "blah",  
     | 
| 
       2522 
     | 
    
         
            -
                            :tSTRING_END,     "%",     
     | 
| 
      
 2588 
     | 
    
         
            +
                            :tSTRING_BEG,     "%%",   EXPR_BEG,
         
     | 
| 
      
 2589 
     | 
    
         
            +
                            :tSTRING_CONTENT, "blah", EXPR_BEG,
         
     | 
| 
      
 2590 
     | 
    
         
            +
                            :tSTRING_END,     "%",    EXPR_END)
         
     | 
| 
       2523 
2591 
     | 
    
         
             
              end
         
     | 
| 
       2524 
2592 
     | 
    
         | 
| 
       2525 
2593 
     | 
    
         
             
              def test_yylex_string_pct_w
         
     | 
| 
         @@ -2534,130 +2602,130 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       2534 
2602 
     | 
    
         
             
              def test_yylex_string_pct_w_bs_nl
         
     | 
| 
       2535 
2603 
     | 
    
         
             
                assert_lex3("%w[s1 \\\ns2]",
         
     | 
| 
       2536 
2604 
     | 
    
         
             
                            nil,
         
     | 
| 
       2537 
     | 
    
         
            -
                            :tQWORDS_BEG,     "%w[",   
     | 
| 
       2538 
     | 
    
         
            -
                            :tSTRING_CONTENT, "s1",    
     | 
| 
       2539 
     | 
    
         
            -
                            :tSPACE,          nil,     
     | 
| 
       2540 
     | 
    
         
            -
                            :tSTRING_CONTENT, "\ns2",  
     | 
| 
       2541 
     | 
    
         
            -
                            :tSPACE,          nil,     
     | 
| 
       2542 
     | 
    
         
            -
                            :tSTRING_END,     nil,     
     | 
| 
      
 2605 
     | 
    
         
            +
                            :tQWORDS_BEG,     "%w[",  EXPR_BEG,
         
     | 
| 
      
 2606 
     | 
    
         
            +
                            :tSTRING_CONTENT, "s1",   EXPR_BEG,
         
     | 
| 
      
 2607 
     | 
    
         
            +
                            :tSPACE,          nil,    EXPR_BEG,
         
     | 
| 
      
 2608 
     | 
    
         
            +
                            :tSTRING_CONTENT, "\ns2", EXPR_BEG,
         
     | 
| 
      
 2609 
     | 
    
         
            +
                            :tSPACE,          nil,    EXPR_BEG,
         
     | 
| 
      
 2610 
     | 
    
         
            +
                            :tSTRING_END,     nil,    EXPR_END)
         
     | 
| 
       2543 
2611 
     | 
    
         
             
              end
         
     | 
| 
       2544 
2612 
     | 
    
         | 
| 
       2545 
2613 
     | 
    
         
             
              def test_yylex_string_pct_w_bs_sp
         
     | 
| 
       2546 
2614 
     | 
    
         
             
                assert_lex3("%w[s\\ 1 s\\ 2]",
         
     | 
| 
       2547 
2615 
     | 
    
         
             
                            nil,
         
     | 
| 
       2548 
     | 
    
         
            -
                            :tQWORDS_BEG,     "%w[",  
     | 
| 
       2549 
     | 
    
         
            -
                            :tSTRING_CONTENT, "s 1",  
     | 
| 
       2550 
     | 
    
         
            -
                            :tSPACE,          nil,    
     | 
| 
       2551 
     | 
    
         
            -
                            :tSTRING_CONTENT, "s 2",  
     | 
| 
       2552 
     | 
    
         
            -
                            :tSPACE,          nil,    
     | 
| 
       2553 
     | 
    
         
            -
                            :tSTRING_END,     nil,    
     | 
| 
      
 2616 
     | 
    
         
            +
                            :tQWORDS_BEG,     "%w[", EXPR_BEG,
         
     | 
| 
      
 2617 
     | 
    
         
            +
                            :tSTRING_CONTENT, "s 1", EXPR_BEG,
         
     | 
| 
      
 2618 
     | 
    
         
            +
                            :tSPACE,          nil,   EXPR_BEG,
         
     | 
| 
      
 2619 
     | 
    
         
            +
                            :tSTRING_CONTENT, "s 2", EXPR_BEG,
         
     | 
| 
      
 2620 
     | 
    
         
            +
                            :tSPACE,          nil,   EXPR_BEG,
         
     | 
| 
      
 2621 
     | 
    
         
            +
                            :tSTRING_END,     nil,   EXPR_END)
         
     | 
| 
       2554 
2622 
     | 
    
         
             
              end
         
     | 
| 
       2555 
2623 
     | 
    
         | 
| 
       2556 
2624 
     | 
    
         
             
              def test_yylex_string_single
         
     | 
| 
       2557 
     | 
    
         
            -
                assert_lex3("'string'", nil, :tSTRING, "string",  
     | 
| 
      
 2625 
     | 
    
         
            +
                assert_lex3("'string'", nil, :tSTRING, "string", EXPR_END)
         
     | 
| 
       2558 
2626 
     | 
    
         
             
              end
         
     | 
| 
       2559 
2627 
     | 
    
         | 
| 
       2560 
2628 
     | 
    
         
             
              def test_yylex_string_single_escape_chars
         
     | 
| 
       2561 
     | 
    
         
            -
                assert_lex3("'s\\tri\\ng'", nil, :tSTRING, "s\\tri\\ng",  
     | 
| 
      
 2629 
     | 
    
         
            +
                assert_lex3("'s\\tri\\ng'", nil, :tSTRING, "s\\tri\\ng", EXPR_END)
         
     | 
| 
       2562 
2630 
     | 
    
         
             
              end
         
     | 
| 
       2563 
2631 
     | 
    
         | 
| 
       2564 
2632 
     | 
    
         
             
              def test_yylex_string_single_nl
         
     | 
| 
       2565 
     | 
    
         
            -
                assert_lex3("'blah\\\nblah'", nil, :tSTRING, "blah\\\nblah",  
     | 
| 
      
 2633 
     | 
    
         
            +
                assert_lex3("'blah\\\nblah'", nil, :tSTRING, "blah\\\nblah", EXPR_END)
         
     | 
| 
       2566 
2634 
     | 
    
         
             
              end
         
     | 
| 
       2567 
2635 
     | 
    
         | 
| 
       2568 
2636 
     | 
    
         
             
              def test_yylex_string_single_escaped_quote
         
     | 
| 
       2569 
     | 
    
         
            -
                assert_lex3("'foo\\'bar'", nil, :tSTRING, "foo'bar",  
     | 
| 
      
 2637 
     | 
    
         
            +
                assert_lex3("'foo\\'bar'", nil, :tSTRING, "foo'bar", EXPR_END)
         
     | 
| 
       2570 
2638 
     | 
    
         
             
              end
         
     | 
| 
       2571 
2639 
     | 
    
         | 
| 
       2572 
2640 
     | 
    
         
             
              def test_yylex_symbol
         
     | 
| 
       2573 
     | 
    
         
            -
                assert_lex3(":symbol", nil, :tSYMBOL, "symbol",  
     | 
| 
      
 2641 
     | 
    
         
            +
                assert_lex3(":symbol", nil, :tSYMBOL, "symbol", EXPR_END)
         
     | 
| 
       2574 
2642 
     | 
    
         
             
              end
         
     | 
| 
       2575 
2643 
     | 
    
         | 
| 
       2576 
2644 
     | 
    
         
             
              def test_yylex_symbol_zero_byte
         
     | 
| 
       2577 
2645 
     | 
    
         
             
                assert_lex(":\"symbol\0\"", nil,
         
     | 
| 
       2578 
     | 
    
         
            -
                            :tSYMBOL,         "symbol\0",  
     | 
| 
      
 2646 
     | 
    
         
            +
                            :tSYMBOL,         "symbol\0", EXPR_END)
         
     | 
| 
       2579 
2647 
     | 
    
         
             
              end
         
     | 
| 
       2580 
2648 
     | 
    
         | 
| 
       2581 
2649 
     | 
    
         
             
              def test_yylex_symbol_double
         
     | 
| 
       2582 
2650 
     | 
    
         
             
                assert_lex3(":\"symbol\"",
         
     | 
| 
       2583 
2651 
     | 
    
         
             
                            nil,
         
     | 
| 
       2584 
     | 
    
         
            -
                            :tSYMBOL,         "symbol",  
     | 
| 
      
 2652 
     | 
    
         
            +
                            :tSYMBOL,         "symbol", EXPR_END)
         
     | 
| 
       2585 
2653 
     | 
    
         
             
              end
         
     | 
| 
       2586 
2654 
     | 
    
         | 
| 
       2587 
2655 
     | 
    
         
             
              def test_yylex_symbol_double_interp
         
     | 
| 
       2588 
2656 
     | 
    
         
             
                assert_lex3(':"symbol#{1+1}"',
         
     | 
| 
       2589 
2657 
     | 
    
         
             
                            nil,
         
     | 
| 
       2590 
     | 
    
         
            -
                            :tSYMBEG,         ":",       
     | 
| 
       2591 
     | 
    
         
            -
                            :tSTRING_CONTENT, "symbol",  
     | 
| 
       2592 
     | 
    
         
            -
                            :tSTRING_DBEG,    nil,       
     | 
| 
       2593 
     | 
    
         
            -
                            :tSTRING_CONTENT, "1+1}",    
     | 
| 
       2594 
     | 
    
         
            -
                            :tSTRING_END,     "\"",      
     | 
| 
      
 2658 
     | 
    
         
            +
                            :tSYMBEG,         ":",      EXPR_FNAME,
         
     | 
| 
      
 2659 
     | 
    
         
            +
                            :tSTRING_CONTENT, "symbol", EXPR_FNAME,
         
     | 
| 
      
 2660 
     | 
    
         
            +
                            :tSTRING_DBEG,    nil,      EXPR_FNAME,
         
     | 
| 
      
 2661 
     | 
    
         
            +
                            :tSTRING_CONTENT, "1+1}",   EXPR_FNAME, # HUH? this is BS
         
     | 
| 
      
 2662 
     | 
    
         
            +
                            :tSTRING_END,     "\"",     EXPR_END)
         
     | 
| 
       2595 
2663 
     | 
    
         
             
              end
         
     | 
| 
       2596 
2664 
     | 
    
         | 
| 
       2597 
2665 
     | 
    
         
             
              def test_yylex_symbol_single
         
     | 
| 
       2598 
2666 
     | 
    
         
             
                assert_lex3(":'symbol'",
         
     | 
| 
       2599 
2667 
     | 
    
         
             
                            nil,
         
     | 
| 
       2600 
     | 
    
         
            -
                            :tSYMBOL,         "symbol",  
     | 
| 
      
 2668 
     | 
    
         
            +
                            :tSYMBOL,         "symbol", EXPR_END)
         
     | 
| 
       2601 
2669 
     | 
    
         
             
              end
         
     | 
| 
       2602 
2670 
     | 
    
         | 
| 
       2603 
2671 
     | 
    
         
             
              def test_yylex_symbol_single_noninterp
         
     | 
| 
       2604 
2672 
     | 
    
         
             
                assert_lex3(':\'symbol#{1+1}\'',
         
     | 
| 
       2605 
2673 
     | 
    
         
             
                            nil,
         
     | 
| 
       2606 
     | 
    
         
            -
                            :tSYMBOL,   'symbol#{1+1}',  
     | 
| 
      
 2674 
     | 
    
         
            +
                            :tSYMBOL,   'symbol#{1+1}', EXPR_END)
         
     | 
| 
       2607 
2675 
     | 
    
         
             
              end
         
     | 
| 
       2608 
2676 
     | 
    
         | 
| 
       2609 
2677 
     | 
    
         
             
              def test_yylex_symbol_single_escape_chars
         
     | 
| 
       2610 
2678 
     | 
    
         
             
                assert_lex3(":'s\\tri\\ng'",
         
     | 
| 
       2611 
2679 
     | 
    
         
             
                            nil,
         
     | 
| 
       2612 
     | 
    
         
            -
                            :tSYMBOL,   "s\\tri\\ng",  
     | 
| 
      
 2680 
     | 
    
         
            +
                            :tSYMBOL,   "s\\tri\\ng", EXPR_END)
         
     | 
| 
       2613 
2681 
     | 
    
         
             
              end
         
     | 
| 
       2614 
2682 
     | 
    
         | 
| 
       2615 
2683 
     | 
    
         
             
              def test_yylex_string_single_escape_quote_and_backslash
         
     | 
| 
       2616 
     | 
    
         
            -
                assert_lex3(":'foo\\'bar\\\\baz'", nil, :tSYMBOL, "foo'bar\\baz",  
     | 
| 
      
 2684 
     | 
    
         
            +
                assert_lex3(":'foo\\'bar\\\\baz'", nil, :tSYMBOL, "foo'bar\\baz", EXPR_END)
         
     | 
| 
       2617 
2685 
     | 
    
         
             
              end
         
     | 
| 
       2618 
2686 
     | 
    
         | 
| 
       2619 
2687 
     | 
    
         
             
              def test_yylex_ternary1
         
     | 
| 
       2620 
2688 
     | 
    
         
             
                assert_lex3("a ? b : c",
         
     | 
| 
       2621 
2689 
     | 
    
         
             
                            nil,
         
     | 
| 
       2622 
     | 
    
         
            -
                            :tIDENTIFIER, "a",  
     | 
| 
       2623 
     | 
    
         
            -
                            :tEH,         "?",  
     | 
| 
       2624 
     | 
    
         
            -
                            :tIDENTIFIER, "b",  
     | 
| 
       2625 
     | 
    
         
            -
                            :tCOLON,      ":",  
     | 
| 
       2626 
     | 
    
         
            -
                            :tIDENTIFIER, "c",  
     | 
| 
      
 2690 
     | 
    
         
            +
                            :tIDENTIFIER, "a", EXPR_CMDARG,
         
     | 
| 
      
 2691 
     | 
    
         
            +
                            :tEH,         "?", EXPR_BEG,
         
     | 
| 
      
 2692 
     | 
    
         
            +
                            :tIDENTIFIER, "b", EXPR_ARG,
         
     | 
| 
      
 2693 
     | 
    
         
            +
                            :tCOLON,      ":", EXPR_BEG,
         
     | 
| 
      
 2694 
     | 
    
         
            +
                            :tIDENTIFIER, "c", EXPR_ARG)
         
     | 
| 
       2627 
2695 
     | 
    
         | 
| 
       2628 
2696 
     | 
    
         
             
                assert_lex3("a ?bb : c", # GAH! MATZ!!!
         
     | 
| 
       2629 
2697 
     | 
    
         
             
                            nil,
         
     | 
| 
       2630 
     | 
    
         
            -
                            :tIDENTIFIER, "a",   
     | 
| 
       2631 
     | 
    
         
            -
                            :tEH,         "?",   
     | 
| 
       2632 
     | 
    
         
            -
                            :tIDENTIFIER, "bb",  
     | 
| 
       2633 
     | 
    
         
            -
                            :tCOLON,      ":",   
     | 
| 
       2634 
     | 
    
         
            -
                            :tIDENTIFIER, "c",   
     | 
| 
      
 2698 
     | 
    
         
            +
                            :tIDENTIFIER, "a",  EXPR_CMDARG,
         
     | 
| 
      
 2699 
     | 
    
         
            +
                            :tEH,         "?",  EXPR_BEG,
         
     | 
| 
      
 2700 
     | 
    
         
            +
                            :tIDENTIFIER, "bb", EXPR_ARG,
         
     | 
| 
      
 2701 
     | 
    
         
            +
                            :tCOLON,      ":",  EXPR_BEG,
         
     | 
| 
      
 2702 
     | 
    
         
            +
                            :tIDENTIFIER, "c",  EXPR_ARG)
         
     | 
| 
       2635 
2703 
     | 
    
         | 
| 
       2636 
2704 
     | 
    
         
             
                assert_lex3("42 ?",
         
     | 
| 
       2637 
2705 
     | 
    
         
             
                            nil,
         
     | 
| 
       2638 
     | 
    
         
            -
                            :tINTEGER, 42, 
     | 
| 
       2639 
     | 
    
         
            -
                            :tEH,      "?",  
     | 
| 
      
 2706 
     | 
    
         
            +
                            :tINTEGER, 42,   EXPR_NUM,
         
     | 
| 
      
 2707 
     | 
    
         
            +
                            :tEH,      "?", EXPR_BEG)
         
     | 
| 
       2640 
2708 
     | 
    
         
             
              end
         
     | 
| 
       2641 
2709 
     | 
    
         | 
| 
       2642 
2710 
     | 
    
         
             
              def test_yylex_tilde
         
     | 
| 
       2643 
     | 
    
         
            -
                assert_lex3("~", nil, :tTILDE, "~",  
     | 
| 
      
 2711 
     | 
    
         
            +
                assert_lex3("~", nil, :tTILDE, "~", EXPR_BEG)
         
     | 
| 
       2644 
2712 
     | 
    
         
             
              end
         
     | 
| 
       2645 
2713 
     | 
    
         | 
| 
       2646 
2714 
     | 
    
         
             
              def test_yylex_tilde_unary
         
     | 
| 
       2647 
     | 
    
         
            -
                self.lex_state =  
     | 
| 
      
 2715 
     | 
    
         
            +
                self.lex_state = EXPR_FNAME
         
     | 
| 
       2648 
2716 
     | 
    
         | 
| 
       2649 
     | 
    
         
            -
                assert_lex3("~@", nil, :tTILDE, "~",  
     | 
| 
      
 2717 
     | 
    
         
            +
                assert_lex3("~@", nil, :tTILDE, "~", EXPR_ARG)
         
     | 
| 
       2650 
2718 
     | 
    
         
             
              end
         
     | 
| 
       2651 
2719 
     | 
    
         | 
| 
       2652 
2720 
     | 
    
         
             
              def test_yylex_uminus
         
     | 
| 
       2653 
2721 
     | 
    
         
             
                assert_lex3("-blah",
         
     | 
| 
       2654 
2722 
     | 
    
         
             
                            nil,
         
     | 
| 
       2655 
     | 
    
         
            -
                            :tUMINUS,     "-",     
     | 
| 
       2656 
     | 
    
         
            -
                            :tIDENTIFIER, "blah",  
     | 
| 
      
 2723 
     | 
    
         
            +
                            :tUMINUS,     "-",    EXPR_BEG,
         
     | 
| 
      
 2724 
     | 
    
         
            +
                            :tIDENTIFIER, "blah", EXPR_ARG)
         
     | 
| 
       2657 
2725 
     | 
    
         
             
              end
         
     | 
| 
       2658 
2726 
     | 
    
         | 
| 
       2659 
2727 
     | 
    
         
             
              def test_yylex_underscore
         
     | 
| 
       2660 
     | 
    
         
            -
                assert_lex3("_var", nil, :tIDENTIFIER, "_var",  
     | 
| 
      
 2728 
     | 
    
         
            +
                assert_lex3("_var", nil, :tIDENTIFIER, "_var", EXPR_CMDARG)
         
     | 
| 
       2661 
2729 
     | 
    
         
             
              end
         
     | 
| 
       2662 
2730 
     | 
    
         | 
| 
       2663 
2731 
     | 
    
         
             
              def test_yylex_underscore_end
         
     | 
| 
         @@ -2669,46 +2737,46 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       2669 
2737 
     | 
    
         
             
              def test_yylex_uplus
         
     | 
| 
       2670 
2738 
     | 
    
         
             
                assert_lex3("+blah",
         
     | 
| 
       2671 
2739 
     | 
    
         
             
                            nil,
         
     | 
| 
       2672 
     | 
    
         
            -
                            :tUPLUS,      "+",     
     | 
| 
       2673 
     | 
    
         
            -
                            :tIDENTIFIER, "blah",  
     | 
| 
      
 2740 
     | 
    
         
            +
                            :tUPLUS,      "+",    EXPR_BEG,
         
     | 
| 
      
 2741 
     | 
    
         
            +
                            :tIDENTIFIER, "blah", EXPR_ARG)
         
     | 
| 
       2674 
2742 
     | 
    
         
             
              end
         
     | 
| 
       2675 
2743 
     | 
    
         | 
| 
       2676 
2744 
     | 
    
         
             
              def test_zbug_float_in_decl
         
     | 
| 
       2677 
2745 
     | 
    
         
             
                assert_lex3("def initialize(u = 0.0, s = 0.0",
         
     | 
| 
       2678 
2746 
     | 
    
         
             
                            nil,
         
     | 
| 
       2679 
     | 
    
         
            -
                            :kDEF,        "def",         
     | 
| 
       2680 
     | 
    
         
            -
                            :tIDENTIFIER, "initialize",  
     | 
| 
       2681 
     | 
    
         
            -
                            :tLPAREN2,    "(", 
     | 
| 
       2682 
     | 
    
         
            -
                            :tIDENTIFIER, "u",           
     | 
| 
       2683 
     | 
    
         
            -
                            :tEQL,        "=",           
     | 
| 
       2684 
     | 
    
         
            -
                            :tFLOAT,      0.0, 
     | 
| 
       2685 
     | 
    
         
            -
                            :tCOMMA,      ",", 
     | 
| 
       2686 
     | 
    
         
            -
                            :tIDENTIFIER, "s",           
     | 
| 
       2687 
     | 
    
         
            -
                            :tEQL,        "=",           
     | 
| 
       2688 
     | 
    
         
            -
                            :tFLOAT,      0.0, 
     | 
| 
      
 2747 
     | 
    
         
            +
                            :kDEF,        "def",        EXPR_FNAME,
         
     | 
| 
      
 2748 
     | 
    
         
            +
                            :tIDENTIFIER, "initialize", EXPR_ENDFN,
         
     | 
| 
      
 2749 
     | 
    
         
            +
                            :tLPAREN2,    "(",           EXPR_PAR,
         
     | 
| 
      
 2750 
     | 
    
         
            +
                            :tIDENTIFIER, "u",          EXPR_ARG,
         
     | 
| 
      
 2751 
     | 
    
         
            +
                            :tEQL,        "=",          EXPR_BEG,
         
     | 
| 
      
 2752 
     | 
    
         
            +
                            :tFLOAT,      0.0,           EXPR_NUM,
         
     | 
| 
      
 2753 
     | 
    
         
            +
                            :tCOMMA,      ",",           EXPR_PAR,
         
     | 
| 
      
 2754 
     | 
    
         
            +
                            :tIDENTIFIER, "s",          EXPR_ARG,
         
     | 
| 
      
 2755 
     | 
    
         
            +
                            :tEQL,        "=",          EXPR_BEG,
         
     | 
| 
      
 2756 
     | 
    
         
            +
                            :tFLOAT,      0.0,           EXPR_NUM)
         
     | 
| 
       2689 
2757 
     | 
    
         
             
              end
         
     | 
| 
       2690 
2758 
     | 
    
         | 
| 
       2691 
2759 
     | 
    
         
             
              def test_zbug_id_equals
         
     | 
| 
       2692 
2760 
     | 
    
         
             
                assert_lex3("a = 0.0",
         
     | 
| 
       2693 
2761 
     | 
    
         
             
                            nil,
         
     | 
| 
       2694 
     | 
    
         
            -
                            :tIDENTIFIER, "a",  
     | 
| 
       2695 
     | 
    
         
            -
                            :tEQL,        "=",  
     | 
| 
       2696 
     | 
    
         
            -
                            :tFLOAT,      0.0, 
     | 
| 
      
 2762 
     | 
    
         
            +
                            :tIDENTIFIER, "a", EXPR_CMDARG,
         
     | 
| 
      
 2763 
     | 
    
         
            +
                            :tEQL,        "=", EXPR_BEG,
         
     | 
| 
      
 2764 
     | 
    
         
            +
                            :tFLOAT,      0.0,  EXPR_NUM)
         
     | 
| 
       2697 
2765 
     | 
    
         
             
              end
         
     | 
| 
       2698 
2766 
     | 
    
         | 
| 
       2699 
2767 
     | 
    
         
             
              def test_zbug_no_spaces_in_decl
         
     | 
| 
       2700 
2768 
     | 
    
         
             
                assert_lex3("def initialize(u=0.0,s=0.0",
         
     | 
| 
       2701 
2769 
     | 
    
         
             
                            nil,
         
     | 
| 
       2702 
     | 
    
         
            -
                            :kDEF,        "def",         
     | 
| 
       2703 
     | 
    
         
            -
                            :tIDENTIFIER, "initialize",  
     | 
| 
       2704 
     | 
    
         
            -
                            :tLPAREN2,    "(", 
     | 
| 
       2705 
     | 
    
         
            -
                            :tIDENTIFIER, "u",           
     | 
| 
       2706 
     | 
    
         
            -
                            :tEQL,        "=",           
     | 
| 
       2707 
     | 
    
         
            -
                            :tFLOAT,      0.0, 
     | 
| 
       2708 
     | 
    
         
            -
                            :tCOMMA,      ",", 
     | 
| 
       2709 
     | 
    
         
            -
                            :tIDENTIFIER, "s",           
     | 
| 
       2710 
     | 
    
         
            -
                            :tEQL,        "=",           
     | 
| 
       2711 
     | 
    
         
            -
                            :tFLOAT,      0.0, 
     | 
| 
      
 2770 
     | 
    
         
            +
                            :kDEF,        "def",        EXPR_FNAME,
         
     | 
| 
      
 2771 
     | 
    
         
            +
                            :tIDENTIFIER, "initialize", EXPR_ENDFN,
         
     | 
| 
      
 2772 
     | 
    
         
            +
                            :tLPAREN2,    "(",           EXPR_PAR,
         
     | 
| 
      
 2773 
     | 
    
         
            +
                            :tIDENTIFIER, "u",          EXPR_ARG,
         
     | 
| 
      
 2774 
     | 
    
         
            +
                            :tEQL,        "=",          EXPR_BEG,
         
     | 
| 
      
 2775 
     | 
    
         
            +
                            :tFLOAT,      0.0,           EXPR_NUM,
         
     | 
| 
      
 2776 
     | 
    
         
            +
                            :tCOMMA,      ",",           EXPR_PAR,
         
     | 
| 
      
 2777 
     | 
    
         
            +
                            :tIDENTIFIER, "s",          EXPR_ARG,
         
     | 
| 
      
 2778 
     | 
    
         
            +
                            :tEQL,        "=",          EXPR_BEG,
         
     | 
| 
      
 2779 
     | 
    
         
            +
                            :tFLOAT,      0.0,           EXPR_NUM)
         
     | 
| 
       2712 
2780 
     | 
    
         
             
              end
         
     | 
| 
       2713 
2781 
     | 
    
         | 
| 
       2714 
2782 
     | 
    
         
             
              def test_pct_w_backslashes
         
     | 
| 
         @@ -2718,12 +2786,12 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       2718 
2786 
     | 
    
         
             
                  assert_lex("%w[foo#{char}bar]",
         
     | 
| 
       2719 
2787 
     | 
    
         
             
                             s(:array, s(:str, "foo"), s(:str, "bar")),
         
     | 
| 
       2720 
2788 
     | 
    
         | 
| 
       2721 
     | 
    
         
            -
                             :tQWORDS_BEG,     "%w[",  
     | 
| 
       2722 
     | 
    
         
            -
                             :tSTRING_CONTENT, "foo",  
     | 
| 
       2723 
     | 
    
         
            -
                             :tSPACE,          nil,    
     | 
| 
       2724 
     | 
    
         
            -
                             :tSTRING_CONTENT, "bar",  
     | 
| 
       2725 
     | 
    
         
            -
                             :tSPACE,          nil,    
     | 
| 
       2726 
     | 
    
         
            -
                             :tSTRING_END,     nil,    
     | 
| 
      
 2789 
     | 
    
         
            +
                             :tQWORDS_BEG,     "%w[", EXPR_BEG, 0, 0,
         
     | 
| 
      
 2790 
     | 
    
         
            +
                             :tSTRING_CONTENT, "foo", EXPR_BEG, 0, 0,
         
     | 
| 
      
 2791 
     | 
    
         
            +
                             :tSPACE,          nil,   EXPR_BEG, 0, 0,
         
     | 
| 
      
 2792 
     | 
    
         
            +
                             :tSTRING_CONTENT, "bar", EXPR_BEG, 0, 0,
         
     | 
| 
      
 2793 
     | 
    
         
            +
                             :tSPACE,          nil,   EXPR_BEG, 0, 0,
         
     | 
| 
      
 2794 
     | 
    
         
            +
                             :tSTRING_END,     nil,   EXPR_END, 0, 0)
         
     | 
| 
       2727 
2795 
     | 
    
         
             
                end
         
     | 
| 
       2728 
2796 
     | 
    
         
             
              end
         
     | 
| 
       2729 
2797 
     | 
    
         | 
| 
         @@ -2731,17 +2799,17 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       2731 
2799 
     | 
    
         
             
                assert_lex(":'a'",
         
     | 
| 
       2732 
2800 
     | 
    
         
             
                           s(:lit, :a),
         
     | 
| 
       2733 
2801 
     | 
    
         | 
| 
       2734 
     | 
    
         
            -
                           :tSYMBOL, "a",  
     | 
| 
      
 2802 
     | 
    
         
            +
                           :tSYMBOL, "a", EXPR_END, 0, 0)
         
     | 
| 
       2735 
2803 
     | 
    
         
             
              end
         
     | 
| 
       2736 
2804 
     | 
    
         | 
| 
       2737 
2805 
     | 
    
         
             
              def test_yylex_hash_colon
         
     | 
| 
       2738 
2806 
     | 
    
         
             
                assert_lex("{a:1}",
         
     | 
| 
       2739 
2807 
     | 
    
         
             
                           s(:hash, s(:lit, :a), s(:lit, 1)),
         
     | 
| 
       2740 
2808 
     | 
    
         | 
| 
       2741 
     | 
    
         
            -
                           :tLBRACE, "{", 
     | 
| 
       2742 
     | 
    
         
            -
                           :tLABEL,  "a", 
     | 
| 
       2743 
     | 
    
         
            -
                           :tINTEGER, 1, 
     | 
| 
       2744 
     | 
    
         
            -
                           :tRCURLY, "}",  
     | 
| 
      
 2809 
     | 
    
         
            +
                           :tLBRACE, "{",  EXPR_PAR,    0, 1,
         
     | 
| 
      
 2810 
     | 
    
         
            +
                           :tLABEL,  "a",  EXPR_LAB,    0, 1,
         
     | 
| 
      
 2811 
     | 
    
         
            +
                           :tINTEGER, 1,   EXPR_NUM,    0, 1,
         
     | 
| 
      
 2812 
     | 
    
         
            +
                           :tRCURLY, "}", EXPR_ENDARG, 0, 0)
         
     | 
| 
       2745 
2813 
     | 
    
         
             
              end
         
     | 
| 
       2746 
2814 
     | 
    
         | 
| 
       2747 
2815 
     | 
    
         
             
              def test_yylex_hash_colon_quoted_22
         
     | 
| 
         @@ -2750,10 +2818,10 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       2750 
2818 
     | 
    
         
             
                assert_lex("{'a':1}",
         
     | 
| 
       2751 
2819 
     | 
    
         
             
                           s(:hash, s(:lit, :a), s(:lit, 1)),
         
     | 
| 
       2752 
2820 
     | 
    
         | 
| 
       2753 
     | 
    
         
            -
                           :tLBRACE, "{", 
     | 
| 
       2754 
     | 
    
         
            -
                           :tLABEL,  "a", 
     | 
| 
       2755 
     | 
    
         
            -
                           :tINTEGER, 1, 
     | 
| 
       2756 
     | 
    
         
            -
                           :tRCURLY, "}",  
     | 
| 
      
 2821 
     | 
    
         
            +
                           :tLBRACE, "{",  EXPR_PAR,    0, 1,
         
     | 
| 
      
 2822 
     | 
    
         
            +
                           :tLABEL,  "a",  EXPR_LAB,    0, 1,
         
     | 
| 
      
 2823 
     | 
    
         
            +
                           :tINTEGER, 1,   EXPR_NUM,    0, 1,
         
     | 
| 
      
 2824 
     | 
    
         
            +
                           :tRCURLY, "}", EXPR_ENDARG, 0, 0)
         
     | 
| 
       2757 
2825 
     | 
    
         
             
              end
         
     | 
| 
       2758 
2826 
     | 
    
         | 
| 
       2759 
2827 
     | 
    
         
             
              def test_yylex_hash_colon_quoted_symbol_22
         
     | 
| 
         @@ -2762,10 +2830,10 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       2762 
2830 
     | 
    
         
             
                assert_lex("{'abc': :b}",
         
     | 
| 
       2763 
2831 
     | 
    
         
             
                           s(:hash, s(:lit, :abc), s(:lit, :b)),
         
     | 
| 
       2764 
2832 
     | 
    
         | 
| 
       2765 
     | 
    
         
            -
                           :tLBRACE, "{", 
     | 
| 
       2766 
     | 
    
         
            -
                           :tLABEL,  "abc", 
     | 
| 
       2767 
     | 
    
         
            -
                           :tSYMBOL, "b", 
     | 
| 
       2768 
     | 
    
         
            -
                           :tRCURLY, "}",  
     | 
| 
      
 2833 
     | 
    
         
            +
                           :tLBRACE, "{",    EXPR_PAR,    0, 1,
         
     | 
| 
      
 2834 
     | 
    
         
            +
                           :tLABEL,  "abc",  EXPR_LAB,    0, 1,
         
     | 
| 
      
 2835 
     | 
    
         
            +
                           :tSYMBOL, "b",   EXPR_END,    0, 1,
         
     | 
| 
      
 2836 
     | 
    
         
            +
                           :tRCURLY, "}",   EXPR_ENDARG, 0, 0)
         
     | 
| 
       2769 
2837 
     | 
    
         
             
              end
         
     | 
| 
       2770 
2838 
     | 
    
         | 
| 
       2771 
2839 
     | 
    
         
             
              def test_yylex_hash_colon_double_quoted_symbol_22
         
     | 
| 
         @@ -2774,10 +2842,10 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       2774 
2842 
     | 
    
         
             
                assert_lex('{"abc": :b}',
         
     | 
| 
       2775 
2843 
     | 
    
         
             
                           s(:hash, s(:lit, :abc), s(:lit, :b)),
         
     | 
| 
       2776 
2844 
     | 
    
         | 
| 
       2777 
     | 
    
         
            -
                           :tLBRACE, "{", 
     | 
| 
       2778 
     | 
    
         
            -
                           :tLABEL,  "abc", 
     | 
| 
       2779 
     | 
    
         
            -
                           :tSYMBOL, "b", 
     | 
| 
       2780 
     | 
    
         
            -
                           :tRCURLY, "}",  
     | 
| 
      
 2845 
     | 
    
         
            +
                           :tLBRACE, "{",    EXPR_PAR,    0, 1,
         
     | 
| 
      
 2846 
     | 
    
         
            +
                           :tLABEL,  "abc",  EXPR_LAB,    0, 1,
         
     | 
| 
      
 2847 
     | 
    
         
            +
                           :tSYMBOL, "b",   EXPR_END,    0, 1,
         
     | 
| 
      
 2848 
     | 
    
         
            +
                           :tRCURLY, "}",   EXPR_ENDARG, 0, 0)
         
     | 
| 
       2781 
2849 
     | 
    
         
             
              end
         
     | 
| 
       2782 
2850 
     | 
    
         | 
| 
       2783 
2851 
     | 
    
         
             
              def test_yylex_required_kwarg_no_value_22
         
     | 
| 
         @@ -2785,12 +2853,12 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       2785 
2853 
     | 
    
         | 
| 
       2786 
2854 
     | 
    
         
             
                assert_lex3("def foo a:, b:\nend",
         
     | 
| 
       2787 
2855 
     | 
    
         
             
                            nil,
         
     | 
| 
       2788 
     | 
    
         
            -
                            :kDEF, 
     | 
| 
       2789 
     | 
    
         
            -
                            :tIDENTIFIER, "foo",  
     | 
| 
       2790 
     | 
    
         
            -
                            :tLABEL, 
     | 
| 
       2791 
     | 
    
         
            -
                            :tCOMMA, 
     | 
| 
       2792 
     | 
    
         
            -
                            :tLABEL, 
     | 
| 
       2793 
     | 
    
         
            -
                            :kEND, 
     | 
| 
      
 2856 
     | 
    
         
            +
                            :kDEF,        "def", EXPR_FNAME,
         
     | 
| 
      
 2857 
     | 
    
         
            +
                            :tIDENTIFIER, "foo", EXPR_ENDFN,
         
     | 
| 
      
 2858 
     | 
    
         
            +
                            :tLABEL,      "a",    EXPR_LAB,
         
     | 
| 
      
 2859 
     | 
    
         
            +
                            :tCOMMA,      ",",    EXPR_PAR,
         
     | 
| 
      
 2860 
     | 
    
         
            +
                            :tLABEL,      "b",    EXPR_LAB,
         
     | 
| 
      
 2861 
     | 
    
         
            +
                            :kEND,        "end", EXPR_END)
         
     | 
| 
       2794 
2862 
     | 
    
         
             
              end
         
     | 
| 
       2795 
2863 
     | 
    
         | 
| 
       2796 
2864 
     | 
    
         
             
              def test_yylex_hash_colon_double_quoted_with_escapes
         
     | 
| 
         @@ -2799,10 +2867,10 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       2799 
2867 
     | 
    
         
             
                assert_lex3("{\"s\\tr\\i\\ng\\\\foo\\'bar\":1}",
         
     | 
| 
       2800 
2868 
     | 
    
         
             
                           nil,
         
     | 
| 
       2801 
2869 
     | 
    
         | 
| 
       2802 
     | 
    
         
            -
                           :tLBRACE, "{", 
     | 
| 
       2803 
     | 
    
         
            -
                           :tLABEL,  "s\tr\i\ng\\foo'bar",  
     | 
| 
       2804 
     | 
    
         
            -
                           :tINTEGER, 1, 
     | 
| 
       2805 
     | 
    
         
            -
                           :tRCURLY, "}", 
     | 
| 
      
 2870 
     | 
    
         
            +
                           :tLBRACE, "{",                  EXPR_PAR,
         
     | 
| 
      
 2871 
     | 
    
         
            +
                           :tLABEL,  "s\tr\i\ng\\foo'bar", EXPR_LAB,
         
     | 
| 
      
 2872 
     | 
    
         
            +
                           :tINTEGER, 1,                   EXPR_NUM,
         
     | 
| 
      
 2873 
     | 
    
         
            +
                           :tRCURLY, "}",                 EXPR_ENDARG)
         
     | 
| 
       2806 
2874 
     | 
    
         
             
              end
         
     | 
| 
       2807 
2875 
     | 
    
         | 
| 
       2808 
2876 
     | 
    
         
             
              def test_yylex_hash_colon_quoted_with_escapes
         
     | 
| 
         @@ -2811,87 +2879,80 @@ class TestRubyLexer < Minitest::Test 
     | 
|
| 
       2811 
2879 
     | 
    
         
             
                assert_lex3("{'s\\tr\\i\\ng\\\\foo\\'bar':1}",
         
     | 
| 
       2812 
2880 
     | 
    
         
             
                           nil,
         
     | 
| 
       2813 
2881 
     | 
    
         | 
| 
       2814 
     | 
    
         
            -
                           :tLBRACE, "{", 
     | 
| 
       2815 
     | 
    
         
            -
                           :tLABEL,  "s\\tr\\i\\ng\\foo'bar",  
     | 
| 
       2816 
     | 
    
         
            -
                           :tINTEGER, 1, 
     | 
| 
       2817 
     | 
    
         
            -
                           :tRCURLY, "}", 
     | 
| 
      
 2882 
     | 
    
         
            +
                           :tLBRACE, "{",                     EXPR_PAR,
         
     | 
| 
      
 2883 
     | 
    
         
            +
                           :tLABEL,  "s\\tr\\i\\ng\\foo'bar", EXPR_LAB,
         
     | 
| 
      
 2884 
     | 
    
         
            +
                           :tINTEGER, 1,                      EXPR_NUM,
         
     | 
| 
      
 2885 
     | 
    
         
            +
                           :tRCURLY, "}",                    EXPR_ENDARG)
         
     | 
| 
       2818 
2886 
     | 
    
         
             
              end
         
     | 
| 
       2819 
2887 
     | 
    
         | 
| 
       2820 
2888 
     | 
    
         
             
              def test_ruby21_rational_literal
         
     | 
| 
       2821 
2889 
     | 
    
         
             
                setup_lexer_class RubyParser::V21
         
     | 
| 
       2822 
2890 
     | 
    
         | 
| 
       2823 
     | 
    
         
            -
                assert_lex3("10r", 
     | 
| 
       2824 
     | 
    
         
            -
                assert_lex3("0x10r", 
     | 
| 
       2825 
     | 
    
         
            -
                assert_lex3("0o10r", 
     | 
| 
       2826 
     | 
    
         
            -
                assert_lex3("0or", 
     | 
| 
       2827 
     | 
    
         
            -
                assert_lex3("0b10r", 
     | 
| 
       2828 
     | 
    
         
            -
                assert_lex3("1.5r",    nil, :tRATIONAL, Rational(15, 10), 
     | 
| 
       2829 
     | 
    
         
            -
                assert_lex3("15e3r", 
     | 
| 
       2830 
     | 
    
         
            -
                assert_lex3("15e-3r", 
     | 
| 
       2831 
     | 
    
         
            -
                assert_lex3("1.5e3r", 
     | 
| 
       2832 
     | 
    
         
            -
                assert_lex3("1.5e-3r", 
     | 
| 
      
 2891 
     | 
    
         
            +
                assert_lex3("10r",     nil, :tRATIONAL, Rational(10),        EXPR_NUM)
         
     | 
| 
      
 2892 
     | 
    
         
            +
                assert_lex3("0x10r",   nil, :tRATIONAL, Rational(16),        EXPR_NUM)
         
     | 
| 
      
 2893 
     | 
    
         
            +
                assert_lex3("0o10r",   nil, :tRATIONAL, Rational(8),         EXPR_NUM)
         
     | 
| 
      
 2894 
     | 
    
         
            +
                assert_lex3("0or",     nil, :tRATIONAL, Rational(0),         EXPR_NUM)
         
     | 
| 
      
 2895 
     | 
    
         
            +
                assert_lex3("0b10r",   nil, :tRATIONAL, Rational(2),         EXPR_NUM)
         
     | 
| 
      
 2896 
     | 
    
         
            +
                assert_lex3("1.5r",    nil, :tRATIONAL, Rational(15, 10),    EXPR_NUM)
         
     | 
| 
      
 2897 
     | 
    
         
            +
                assert_lex3("15e3r",   nil, :tRATIONAL, Rational(15000),     EXPR_NUM)
         
     | 
| 
      
 2898 
     | 
    
         
            +
                assert_lex3("15e-3r",  nil, :tRATIONAL, Rational(15, 1000),  EXPR_NUM)
         
     | 
| 
      
 2899 
     | 
    
         
            +
                assert_lex3("1.5e3r",  nil, :tRATIONAL, Rational(1500),      EXPR_NUM)
         
     | 
| 
      
 2900 
     | 
    
         
            +
                assert_lex3("1.5e-3r", nil, :tRATIONAL, Rational(15, 10000), EXPR_NUM)
         
     | 
| 
       2833 
2901 
     | 
    
         | 
| 
       2834 
2902 
     | 
    
         
             
                assert_lex3("-10r", nil,
         
     | 
| 
       2835 
     | 
    
         
            -
                            :tUMINUS_NUM, "-",  
     | 
| 
       2836 
     | 
    
         
            -
                            :tRATIONAL, Rational(10),  
     | 
| 
      
 2903 
     | 
    
         
            +
                            :tUMINUS_NUM, "-", EXPR_BEG,
         
     | 
| 
      
 2904 
     | 
    
         
            +
                            :tRATIONAL, Rational(10), EXPR_NUM)
         
     | 
| 
       2837 
2905 
     | 
    
         
             
              end
         
     | 
| 
       2838 
2906 
     | 
    
         | 
| 
       2839 
2907 
     | 
    
         
             
              def test_ruby21_imaginary_literal
         
     | 
| 
       2840 
2908 
     | 
    
         
             
                setup_lexer_class RubyParser::V21
         
     | 
| 
       2841 
2909 
     | 
    
         | 
| 
       2842 
     | 
    
         
            -
                assert_lex3("1i", 
     | 
| 
       2843 
     | 
    
         
            -
                assert_lex3("0x10i", 
     | 
| 
       2844 
     | 
    
         
            -
                assert_lex3("0o10i", 
     | 
| 
       2845 
     | 
    
         
            -
                assert_lex3("0oi", 
     | 
| 
       2846 
     | 
    
         
            -
                assert_lex3("0b10i", 
     | 
| 
       2847 
     | 
    
         
            -
                assert_lex3("1.5i",    nil, :tIMAGINARY, Complex(0, 1.5), 
     | 
| 
       2848 
     | 
    
         
            -
                assert_lex3("15e3i", 
     | 
| 
       2849 
     | 
    
         
            -
                assert_lex3("15e-3i", 
     | 
| 
       2850 
     | 
    
         
            -
                assert_lex3("1.5e3i", 
     | 
| 
       2851 
     | 
    
         
            -
                assert_lex3("1.5e-3i", 
     | 
| 
      
 2910 
     | 
    
         
            +
                assert_lex3("1i",      nil, :tIMAGINARY, Complex(0, 1),      EXPR_NUM)
         
     | 
| 
      
 2911 
     | 
    
         
            +
                assert_lex3("0x10i",   nil, :tIMAGINARY, Complex(0, 16),     EXPR_NUM)
         
     | 
| 
      
 2912 
     | 
    
         
            +
                assert_lex3("0o10i",   nil, :tIMAGINARY, Complex(0, 8),      EXPR_NUM)
         
     | 
| 
      
 2913 
     | 
    
         
            +
                assert_lex3("0oi",     nil, :tIMAGINARY, Complex(0, 0),      EXPR_NUM)
         
     | 
| 
      
 2914 
     | 
    
         
            +
                assert_lex3("0b10i",   nil, :tIMAGINARY, Complex(0, 2),      EXPR_NUM)
         
     | 
| 
      
 2915 
     | 
    
         
            +
                assert_lex3("1.5i",    nil, :tIMAGINARY, Complex(0, 1.5),    EXPR_NUM)
         
     | 
| 
      
 2916 
     | 
    
         
            +
                assert_lex3("15e3i",   nil, :tIMAGINARY, Complex(0, 15000),  EXPR_NUM)
         
     | 
| 
      
 2917 
     | 
    
         
            +
                assert_lex3("15e-3i",  nil, :tIMAGINARY, Complex(0, 0.015),  EXPR_NUM)
         
     | 
| 
      
 2918 
     | 
    
         
            +
                assert_lex3("1.5e3i",  nil, :tIMAGINARY, Complex(0, 1500),   EXPR_NUM)
         
     | 
| 
      
 2919 
     | 
    
         
            +
                assert_lex3("1.5e-3i", nil, :tIMAGINARY, Complex(0, 0.0015), EXPR_NUM)
         
     | 
| 
       2852 
2920 
     | 
    
         | 
| 
       2853 
2921 
     | 
    
         
             
                assert_lex3("-10i", nil,
         
     | 
| 
       2854 
     | 
    
         
            -
                            :tUMINUS_NUM, "-",  
     | 
| 
       2855 
     | 
    
         
            -
                            :tIMAGINARY, Complex(0, 10),  
     | 
| 
      
 2922 
     | 
    
         
            +
                            :tUMINUS_NUM, "-", EXPR_BEG,
         
     | 
| 
      
 2923 
     | 
    
         
            +
                            :tIMAGINARY, Complex(0, 10), EXPR_NUM)
         
     | 
| 
       2856 
2924 
     | 
    
         
             
              end
         
     | 
| 
       2857 
2925 
     | 
    
         | 
| 
       2858 
2926 
     | 
    
         
             
              def test_ruby21_rational_imaginary_literal
         
     | 
| 
       2859 
2927 
     | 
    
         
             
                setup_lexer_class RubyParser::V21
         
     | 
| 
       2860 
2928 
     | 
    
         | 
| 
       2861 
     | 
    
         
            -
                assert_lex3 
     | 
| 
       2862 
     | 
    
         
            -
                assert_lex3 
     | 
| 
       2863 
     | 
    
         
            -
                assert_lex3 
     | 
| 
       2864 
     | 
    
         
            -
                assert_lex3 
     | 
| 
       2865 
     | 
    
         
            -
                assert_lex3 
     | 
| 
       2866 
     | 
    
         
            -
                assert_lex3 
     | 
| 
       2867 
     | 
    
         
            -
                assert_lex3 
     | 
| 
       2868 
     | 
    
         
            -
                assert_lex3 
     | 
| 
       2869 
     | 
    
         
            -
                assert_lex3 
     | 
| 
       2870 
     | 
    
         
            -
                assert_lex3 
     | 
| 
      
 2929 
     | 
    
         
            +
                assert_lex3 "1ri",      nil, :tIMAGINARY, Complex(0, Rational(1)),        EXPR_NUM
         
     | 
| 
      
 2930 
     | 
    
         
            +
                assert_lex3 "0x10ri",   nil, :tIMAGINARY, Complex(0, Rational(16)),       EXPR_NUM
         
     | 
| 
      
 2931 
     | 
    
         
            +
                assert_lex3 "0o10ri",   nil, :tIMAGINARY, Complex(0, Rational(8)),        EXPR_NUM
         
     | 
| 
      
 2932 
     | 
    
         
            +
                assert_lex3 "0ori",     nil, :tIMAGINARY, Complex(0, Rational(0)),        EXPR_NUM
         
     | 
| 
      
 2933 
     | 
    
         
            +
                assert_lex3 "0b10ri",   nil, :tIMAGINARY, Complex(0, Rational(2)),        EXPR_NUM
         
     | 
| 
      
 2934 
     | 
    
         
            +
                assert_lex3 "1.5ri",    nil, :tIMAGINARY, Complex(0, Rational("1.5")),    EXPR_NUM
         
     | 
| 
      
 2935 
     | 
    
         
            +
                assert_lex3 "15e3ri",   nil, :tIMAGINARY, Complex(0, Rational("15e3")),   EXPR_NUM
         
     | 
| 
      
 2936 
     | 
    
         
            +
                assert_lex3 "15e-3ri",  nil, :tIMAGINARY, Complex(0, Rational("15e-3")),  EXPR_NUM
         
     | 
| 
      
 2937 
     | 
    
         
            +
                assert_lex3 "1.5e3ri",  nil, :tIMAGINARY, Complex(0, Rational("1.5e3")),  EXPR_NUM
         
     | 
| 
      
 2938 
     | 
    
         
            +
                assert_lex3 "1.5e-3ri", nil, :tIMAGINARY, Complex(0, Rational("1.5e-3")), EXPR_NUM
         
     | 
| 
       2871 
2939 
     | 
    
         | 
| 
       2872 
2940 
     | 
    
         
             
                assert_lex3("-10ri", nil,
         
     | 
| 
       2873 
     | 
    
         
            -
                            :tUMINUS_NUM, "-",  
     | 
| 
       2874 
     | 
    
         
            -
                            :tIMAGINARY, Complex(0, Rational(10)),  
     | 
| 
      
 2941 
     | 
    
         
            +
                            :tUMINUS_NUM, "-", EXPR_BEG,
         
     | 
| 
      
 2942 
     | 
    
         
            +
                            :tIMAGINARY, Complex(0, Rational(10)), EXPR_NUM)
         
     | 
| 
       2875 
2943 
     | 
    
         
             
              end
         
     | 
| 
       2876 
2944 
     | 
    
         | 
| 
       2877 
2945 
     | 
    
         
             
              def test_ruby21_imaginary_literal_with_succeeding_keyword
         
     | 
| 
       2878 
     | 
    
         
            -
                skip "Currently does not tokenize correctly"
         
     | 
| 
       2879 
     | 
    
         
            -
             
     | 
| 
       2880 
2946 
     | 
    
         
             
                setup_lexer_class RubyParser::V21
         
     | 
| 
       2881 
2947 
     | 
    
         | 
| 
      
 2948 
     | 
    
         
            +
                # 2/4 scenarios are syntax errors on all tested versions so I
         
     | 
| 
      
 2949 
     | 
    
         
            +
                # deleted them.
         
     | 
| 
      
 2950 
     | 
    
         
            +
             
     | 
| 
       2882 
2951 
     | 
    
         
             
                assert_lex3("1if", nil,
         
     | 
| 
       2883 
     | 
    
         
            -
                            :tINTEGER, 1, 
     | 
| 
       2884 
     | 
    
         
            -
                            :kIF_MOD, 
     | 
| 
       2885 
     | 
    
         
            -
                assert_lex3("1rif", nil,
         
     | 
| 
       2886 
     | 
    
         
            -
                            :tRATIONAL, Rational(1), :expr_end,
         
     | 
| 
       2887 
     | 
    
         
            -
                            :kIF_MOD, "if", :expr_beg)
         
     | 
| 
      
 2952 
     | 
    
         
            +
                            :tINTEGER, 1,    EXPR_NUM,
         
     | 
| 
      
 2953 
     | 
    
         
            +
                            :kIF_MOD,  "if", EXPR_PAR)
         
     | 
| 
       2888 
2954 
     | 
    
         
             
                assert_lex3("1.0if", nil,
         
     | 
| 
       2889 
     | 
    
         
            -
                            :tFLOAT, 
     | 
| 
       2890 
     | 
    
         
            -
                            :kIF_MOD, "if",  
     | 
| 
       2891 
     | 
    
         
            -
                assert_lex3("1.0rif", nil,
         
     | 
| 
       2892 
     | 
    
         
            -
                            :tRATIONAL, Rational("1.0"), :expr_end,
         
     | 
| 
       2893 
     | 
    
         
            -
                            :kIF_MOD, "if", :expr_beg)
         
     | 
| 
       2894 
     | 
    
         
            -
             
     | 
| 
       2895 
     | 
    
         
            -
                flunk
         
     | 
| 
      
 2955 
     | 
    
         
            +
                            :tFLOAT,  1.0,  EXPR_NUM,
         
     | 
| 
      
 2956 
     | 
    
         
            +
                            :kIF_MOD, "if", EXPR_PAR)
         
     | 
| 
       2896 
2957 
     | 
    
         
             
              end
         
     | 
| 
       2897 
2958 
     | 
    
         
             
            end
         
     |