Skip to content

Commit 7deaaa6

Browse files
committed
Remove duplication in lexer for string endings
1 parent 03fda15 commit 7deaaa6

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

lib/opal/parser/lexer.rb

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -220,14 +220,12 @@ def next_string_token
220220

221221
if check(eos_regx)
222222
scan(/[ \t]*#{Regexp.escape(str_parse[:end])}/)
223-
self.strterm = nil
224223

225224
if str_parse[:scanner]
226225
@scanner_stack << str_parse[:scanner]
227226
@scanner = str_parse[:scanner]
228227
end
229228

230-
@lex_state = :expr_end
231229
return :tSTRING_END
232230
end
233231
end
@@ -241,11 +239,9 @@ def next_string_token
241239
self.yylval = ' '
242240
return :tSPACE
243241
end
244-
self.strterm = nil
245242

246243
if str_parse[:balance]
247244
if str_parse[:nesting] == 0
248-
@lex_state = :expr_end
249245

250246
if str_parse[:type] == :regexp
251247
self.yylval = scan(/\w+/)
@@ -259,11 +255,9 @@ def next_string_token
259255
end
260256

261257
elsif ['"', "'"].include? str_parse[:beg]
262-
@lex_state = :expr_end
263258
return :tSTRING_END
264259

265260
elsif str_parse[:beg] == '`'
266-
@lex_state = :expr_end
267261
return :tSTRING_END
268262

269263
elsif str_parse[:beg] == '/' || str_parse[:type] == :regexp
@@ -277,7 +271,6 @@ def next_string_token
277271
@scanner = str_parse[:scanner]
278272
end
279273

280-
@lex_state = :expr_end
281274
return :tSTRING_END
282275
end
283276
end
@@ -571,7 +564,14 @@ def yylex
571564
c = ''
572565

573566
if self.strterm
574-
return next_string_token
567+
token = next_string_token
568+
569+
if token == :tSTRING_END or token == :tREGEXP_END
570+
self.strterm = nil
571+
@lex_state = :expr_end
572+
end
573+
574+
return token
575575
end
576576

577577
while true

0 commit comments

Comments
 (0)