added exponential and hex numbers

This commit is contained in:
Jeremy Ashkenas
2009-12-17 20:59:19 -05:00
parent 955d01a302
commit 58ecfeb815
3 changed files with 11 additions and 4 deletions

6
TODO
View File

@@ -1,5 +1,11 @@
TODO:
* Add TextMate syntax highlighter to the download.
* Code Cleanup.
* Add JS-style exponential number literals.
* Is it possible to close blocks (functions, ifs, trys) without an explicit
block delimiter or significant whitespace?

View File

@@ -19,7 +19,9 @@ spaced_out_multiline_object: {
pi: 3.14159
list: [1, 2, 3, 4]
a_googol: 1e100
list: [-1, 0, 1, 2, 3, 4]
regex: /match[ing](every|thing|\/)/gi

View File

@@ -11,7 +11,7 @@ class Lexer
"super"]
IDENTIFIER = /\A([a-zA-Z$_]\w*)/
NUMBER = /\A([0-9]+(\.[0-9]+)?)/
NUMBER = /\A\b((0(x|X)[0-9a-fA-F]+)|([0-9]+(\.[0-9]+)?(e[+\-]?[0-9]+)?))\b/i
STRING = /\A("(.*?)[^\\]"|'(.*?)[^\\]')/m
JS = /\A(`(.*?)`)/
OPERATOR = /\A([+\*&|\/\-%=<>]+)/
@@ -65,8 +65,7 @@ class Lexer
def number_token
return false unless number = @chunk[NUMBER, 1]
float = number.include?('.')
token(:NUMBER, float ? number.to_f : number.to_i)
token(:NUMBER, number)
@i += number.length
end