Author: fperrad
Date: Mon Feb 20 23:29:48 2006
New Revision: 11694

Modified:
   trunk/languages/lua/Lua/build.pm
   trunk/languages/lua/Lua/lexer.pm
   trunk/languages/lua/pmc/luanumber.pmc
   trunk/languages/lua/t/number.t
Log:
Lua :
- format number as original Lua
- fix in lexer
- and tests

Modified: trunk/languages/lua/Lua/build.pm
==============================================================================
--- trunk/languages/lua/Lua/build.pm    (original)
+++ trunk/languages/lua/Lua/build.pm    Mon Feb 20 23:29:48 2006
@@ -114,11 +114,11 @@ sub InsertList {

 sub BuildLiteral {

        my ($parser, $value, $type) = @_;

 

-       my $name = "cst_" . $parser->YYData->{idx_cst}++;

        my $defn = $parser->YYData->{symbtab_cst}->Lookup($type . $value);

        if ($defn) {

                return [$defn, []];

        } else {

+               my $name = "cst_" . $parser->YYData->{idx_cst}++;

                my @opcodes = ();

                $defn = new defn($name, "const", "pmc", $type);

                $parser->YYData->{symbtab_cst}->Insert($type . $value, $defn);


Modified: trunk/languages/lua/Lua/lexer.pm
==============================================================================
--- trunk/languages/lua/Lua/lexer.pm    (original)
+++ trunk/languages/lua/Lua/lexer.pm    Mon Feb 20 23:29:48 2006
@@ -266,7 +266,7 @@ sub _Lexer {

 

                        s/^(\d+(\.\d*)?|\.\d+)([Ee][+\-]?\d+)?//

 #                                      and return ('NUMBER', new 
Math::BigFloat($1));

-                                       and return ('NUMBER', $1);

+                                       and return ('NUMBER', $1 . ($3 || ""));

 

                        s/^\"//

                                        and return 
$parser->_DoubleQuoteStringLexer();


Modified: trunk/languages/lua/pmc/luanumber.pmc
==============================================================================
--- trunk/languages/lua/pmc/luanumber.pmc       (original)
+++ trunk/languages/lua/pmc/luanumber.pmc       Mon Feb 20 23:29:48 2006
@@ -22,6 +22,8 @@ the Lua C<Number> type.

 #include "parrot/parrot.h"

 #include "pmc_luastring.h"

 

+#define LUA_NUMBER_FMT         "%.14g"

+

 static STRING *luanumber_name;

 static INTVAL dynpmc_LuaString;

 

@@ -138,7 +140,8 @@ Returns a Parrot string representation o
 

 */

     STRING* get_string () {

-        return string_from_num(INTERP, PMC_num_val(SELF));

+        FLOATVAL f = PMC_num_val(SELF); 

+        return Parrot_sprintf_c(INTERP, LUA_NUMBER_FMT, f);

     }

 

 /*


Modified: trunk/languages/lua/t/number.t
==============================================================================
--- trunk/languages/lua/t/number.t      (original)
+++ trunk/languages/lua/t/number.t      Mon Feb 20 23:29:48 2006
@@ -18,7 +18,7 @@ use strict;

 use FindBin;

 use lib "$FindBin::Bin";

 

-use Parrot::Test tests => 44;

+use Parrot::Test tests => 45;

 use Test::More;

 

 language_output_is( 'lua', <<'CODE', <<'OUT', '-1' );

@@ -286,3 +286,13 @@ CODE

 /attempt to compare \w+ with \w+/

 OUT

 

+language_output_is( 'lua', <<'CODE', <<'OUT', '1e9' );

+print(1000000000)

+print(1e9)

+print(1.0e+9)

+CODE

+1000000000

+1000000000

+1000000000

+OUT

+

Reply via email to