]> granicus.if.org Git - yasm/commitdiff
Fix #161: Don't require 0d/0e/0f/0t prefix on floating point numbers.
authorPeter Johnson <peter@tortall.net>
Thu, 30 Oct 2008 07:36:25 +0000 (07:36 -0000)
committerPeter Johnson <peter@tortall.net>
Thu, 30 Oct 2008 07:36:25 +0000 (07:36 -0000)
While this is not mentioned in the GAS documentation, GAS doesn't require it.

svn path=/trunk/yasm/; revision=2158

modules/parsers/gas/gas-token.re
modules/parsers/gas/tests/Makefile.inc
modules/parsers/gas/tests/gas-float.asm [new file with mode: 0644]
modules/parsers/gas/tests/gas-float.hex [new file with mode: 0644]

index c08da11a1afeb6f22c1bfd0e0ad36c88b64dee8a..0ac61f128306a17e708e412bf55a92d4be126a55 100644 (file)
@@ -350,7 +350,21 @@ scan:
         }
 
         /* floating point value */
-        "0" [DdEeFfTt] [-+]? (digit+)? ("." digit*)? ('e' [-+]? digit+)? {
+        [-+]? digit* "." digit+ ('e' [-+]? digit+)? {
+            savech = s->tok[TOKLEN];
+            s->tok[TOKLEN] = '\0';
+            lvalp->flt = yasm_floatnum_create(TOK);
+            s->tok[TOKLEN] = savech;
+            RETURN(FLTNUM);
+        }
+        [-+]? digit+ "." digit* ('e' [-+]? digit+)? {
+            savech = s->tok[TOKLEN];
+            s->tok[TOKLEN] = '\0';
+            lvalp->flt = yasm_floatnum_create(TOK);
+            s->tok[TOKLEN] = savech;
+            RETURN(FLTNUM);
+        }
+        "0" [DdEeFfTt] [-+]? digit* ("." digit*)? ('e' [-+]? digit+)? {
             savech = s->tok[TOKLEN];
             s->tok[TOKLEN] = '\0';
             lvalp->flt = yasm_floatnum_create(TOK+2);
index 4482733447381c54f5c70db4f0524d87bedfaed6..756e32512619b663b40ee8bd5690347e22900d7a 100644 (file)
@@ -14,6 +14,8 @@ EXTRA_DIST += modules/parsers/gas/tests/execsect.asm
 EXTRA_DIST += modules/parsers/gas/tests/execsect.hex
 EXTRA_DIST += modules/parsers/gas/tests/gas-fill.asm
 EXTRA_DIST += modules/parsers/gas/tests/gas-fill.hex
+EXTRA_DIST += modules/parsers/gas/tests/gas-float.asm
+EXTRA_DIST += modules/parsers/gas/tests/gas-float.hex
 EXTRA_DIST += modules/parsers/gas/tests/gas-instlabel.asm
 EXTRA_DIST += modules/parsers/gas/tests/gas-instlabel.hex
 EXTRA_DIST += modules/parsers/gas/tests/gas-line-err.asm
diff --git a/modules/parsers/gas/tests/gas-float.asm b/modules/parsers/gas/tests/gas-float.asm
new file mode 100644 (file)
index 0000000..7101eed
--- /dev/null
@@ -0,0 +1,2 @@
+.double 0.1
+.double -.0
diff --git a/modules/parsers/gas/tests/gas-float.hex b/modules/parsers/gas/tests/gas-float.hex
new file mode 100644 (file)
index 0000000..4daadf4
--- /dev/null
@@ -0,0 +1,376 @@
+7f 
+45 
+4c 
+46 
+01 
+01 
+01 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+01 
+00 
+03 
+00 
+01 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+b0 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+34 
+00 
+00 
+00 
+00 
+00 
+28 
+00 
+05 
+00 
+01 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+9a 
+99 
+99 
+99 
+99 
+99 
+b9 
+3f 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+80 
+00 
+2e 
+74 
+65 
+78 
+74 
+00 
+2e 
+73 
+74 
+72 
+74 
+61 
+62 
+00 
+2e 
+73 
+79 
+6d 
+74 
+61 
+62 
+00 
+2e 
+73 
+68 
+73 
+74 
+72 
+74 
+61 
+62 
+00 
+00 
+00 
+00 
+00 
+2d 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+01 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+04 
+00 
+f1 
+ff 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+03 
+00 
+04 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+17 
+00 
+00 
+00 
+03 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+50 
+00 
+00 
+00 
+21 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+07 
+00 
+00 
+00 
+03 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+74 
+00 
+00 
+00 
+03 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+0f 
+00 
+00 
+00 
+02 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+78 
+00 
+00 
+00 
+30 
+00 
+00 
+00 
+02 
+00 
+00 
+00 
+03 
+00 
+00 
+00 
+04 
+00 
+00 
+00 
+10 
+00 
+00 
+00 
+01 
+00 
+00 
+00 
+01 
+00 
+00 
+00 
+06 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+40 
+00 
+00 
+00 
+10 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+00 
+10 
+00 
+00 
+00 
+00 
+00 
+00 
+00