@@ -31,7 +31,7 @@ class Go < Scanner
31
31
'nil' , 'iota' ,
32
32
'true' , 'false' ,
33
33
] # :nodoc:
34
-
34
+
35
35
PREDEFINED_FUNCTIONS = %w[
36
36
append cap close complex copy delete imag len
37
37
make new panic print println real recover
@@ -73,7 +73,7 @@ def scan_tokens encoder, options
73
73
elsif match = scan ( %r! // [^\n \\ ]* (?: \\ . [^\n \\ ]* )* | /\* (?: .*? \* / | .* ) !mx )
74
74
encoder . text_token match , :comment
75
75
76
- elsif match = scan ( / [- +*=<>?:;,!&^|()\[ \] {}~%]+ | \/ =? | \. (?!\d ) /x )
76
+ elsif match = scan ( / <?- (?![ \d .]) | [ +*=<>?:;,!&^|()\[ \] {}~%]+ | \/ =? | \. (?!\d ) /x )
77
77
if case_expected
78
78
label_expected = true if match == ':'
79
79
case_expected = false
@@ -129,24 +129,24 @@ def scan_tokens encoder, options
129
129
130
130
elsif match = scan ( /\$ / )
131
131
encoder . text_token match , :ident
132
-
133
- elsif match = scan ( /\d *(\. \d *)?([eE][+-]?\d +)?i/ )
132
+
133
+ elsif match = scan ( /-? \d *(\. \d *)?([eE][+-]?\d +)?i/ )
134
134
label_expected = false
135
135
encoder . text_token match , :imaginary
136
-
137
- elsif match = scan ( /0[xX][0-9A-Fa-f]+/ )
136
+
137
+ elsif match = scan ( /-? 0[xX][0-9A-Fa-f]+/ )
138
138
label_expected = false
139
139
encoder . text_token match , :hex
140
140
141
- elsif match = scan ( /(?:0[0-7]+)(?![89.eEfF])/ )
141
+ elsif match = scan ( /-? (?:0[0-7]+)(?![89.eEfF])/ )
142
142
label_expected = false
143
143
encoder . text_token match , :octal
144
144
145
- elsif match = scan ( /\d | \d *\. \d +(?:[eE][+-]?\d +)?|\d +[eE][+-]?\d +/ )
145
+ elsif match = scan ( /-?(?: \d *\. \d +| \d + \. ) (?:[eE][+-]?\d +)?|\d +[eE][+-]?\d +/ )
146
146
label_expected = false
147
147
encoder . text_token match , :float
148
-
149
- elsif match = scan ( /(?:\d +)(?![.eEfF])L?L?/ )
148
+
149
+ elsif match = scan ( /-? (?:\d +)(?![.eEfF])L?L?/ )
150
150
label_expected = false
151
151
encoder . text_token match , :integer
152
152
0 commit comments