@@ -290,20 +290,20 @@ func (p *parser) parsePrimaryExpression() Node {
290290 case Number :
291291 p .next ()
292292 value := strings .Replace (token .Value , "_" , "" , - 1 )
293- if strings .ContainsAny (value , ".eE " ) {
294- number , err := strconv .ParseFloat (value , 64 )
293+ if strings .Contains (value , "x " ) {
294+ number , err := strconv .ParseInt (value , 0 , 64 )
295295 if err != nil {
296- p .error ("invalid float literal: %v" , err )
296+ p .error ("invalid hex literal: %v" , err )
297297 }
298- node := & FloatNode {Value : number }
298+ node := & IntegerNode {Value : int ( number ) }
299299 node .SetLocation (token .Location )
300300 return node
301- } else if strings .Contains (value , "x " ) {
302- number , err := strconv .ParseInt (value , 0 , 64 )
301+ } else if strings .ContainsAny (value , ".eE " ) {
302+ number , err := strconv .ParseFloat (value , 64 )
303303 if err != nil {
304- p .error ("invalid hex literal: %v" , err )
304+ p .error ("invalid float literal: %v" , err )
305305 }
306- node := & IntegerNode {Value : int ( number ) }
306+ node := & FloatNode {Value : number }
307307 node .SetLocation (token .Location )
308308 return node
309309 } else {
0 commit comments