Skip to content

Commit d3c5dc0

Browse files
committedSep 5, 2014
Fix octal numbers with leading 0 lexing
fixes #581
1 parent 9115f84 commit d3c5dc0

File tree

3 files changed

+4
-64
lines changed

3 files changed

+4
-64
lines changed
 

‎lib/opal/parser/lexer.rb

+3-3
Original file line numberDiff line numberDiff line change
@@ -176,10 +176,10 @@ def new_op_asgn(value)
176176
def process_numeric
177177
@lex_state = :expr_end
178178

179-
if scan(/0b?(0|1|_)+/)
179+
if scan(/0[bB](0|1|_)+/)
180180
self.yylval = scanner.matched.to_i(2)
181181
return :tINTEGER
182-
elsif scan(/0o?([0-7]|_)+/)
182+
elsif scan(/0[oO]?([0-7]|_)+/)
183183
self.yylval = scanner.matched.to_i(8)
184184
return :tINTEGER
185185
elsif scan(/[\d_]+\.[\d_]+\b|[\d_]+(\.[\d_]+)?[eE][-+]?[\d_]+\b/)
@@ -188,7 +188,7 @@ def process_numeric
188188
elsif scan(/[\d_]+\b/)
189189
self.yylval = scanner.matched.gsub(/_/, '').to_i
190190
return :tINTEGER
191-
elsif scan(/0(x|X)(\d|[a-f]|[A-F]|_)+/)
191+
elsif scan(/0[xX](\d|[a-f]|[A-F]|_)+/)
192192
self.yylval = scanner.matched.to_i(16)
193193
return :tINTEGER
194194
else

‎spec/opal/core/language/numbers_spec.rb

-60
This file was deleted.

‎spec/rubyspecs

+1-1
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ corelib/language/metaclass_spec
228228
corelib/language/module_spec
229229
# corelib/language/next_spec - can't parse break expr with block
230230
corelib/language/not_spec
231-
# corelib/language/numbers_spec - can't parse numbers using control characters
231+
corelib/language/numbers_spec
232232
corelib/language/or_spec
233233
corelib/language/order_spec
234234
corelib/language/precedence_spec

0 commit comments

Comments
 (0)