Author: fperrad
Date: Thu Jan 26 23:56:36 2006
New Revision: 11357

Modified:
   trunk/languages/lua/Lua/build.pm
   trunk/languages/lua/Lua/lua50.yp
   trunk/languages/lua/Lua/opcode.pm
   trunk/languages/lua/Lua/parser.pm
   trunk/languages/lua/Lua/pir.pm
   trunk/languages/lua/doc/lua50.y
   trunk/languages/lua/lib/luapir.pir
   trunk/languages/lua/t/function.t
   trunk/languages/lua/t/if.t
Log:
Lua :
- fix function.t with a minimalist scoping

Modified: trunk/languages/lua/Lua/build.pm
==============================================================================
--- trunk/languages/lua/Lua/build.pm    (original)
+++ trunk/languages/lua/Lua/build.pm    Thu Jan 26 23:56:36 2006
@@ -27,7 +27,7 @@ sub new_fct {

 sub get_global {

        my ($parser) = @_;

        my @opcodes = ();

-       unless (exists $parser->YYData->{_G}) {

+       unless ($parser->YYData->{_G}) {

                $parser->YYData->{_G} = new_tmp($parser, "pmc");

                push @opcodes, new LocalDir($parser,

                        'result'                                =>      
$parser->YYData->{_G},

@@ -62,6 +62,29 @@ sub get_void {

        return $opcodes;

 }

 

+sub PushScope {

+       my ($parser) = @_;

+

+#      push @{$parser->YYData->{scope}}, $parser->YYData->{_G};

+       delete $parser->YYData->{_G};

+       push @{$parser->YYData->{scope}}, $parser->YYData->{symbtab};

+       $parser->YYData->{symbtab} = new SymbTabVar($parser);

+       push @{$parser->YYData->{scope}}, $parser->YYData->{symbtab_cst};

+       $parser->YYData->{symbtab_cst} = new SymbTabConst($parser);

+}

+

+sub PopScope {                 

+       my ($parser) = @_;

+

+       my $symbtab = pop @{$parser->YYData->{scope}};

+       $parser->YYData->{symbtab_cst} = $symbtab;

+       $symbtab = pop @{$parser->YYData->{scope}};

+       $parser->YYData->{symbtab} = $symbtab;

+#      my $g = pop @{$parser->YYData->{scope}};

+#      $parser->YYData->{_G} = $g if ($g); 

+       delete $parser->YYData->{_G};

+}

+

 sub BuildLiteral {

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

 

@@ -805,6 +828,7 @@ sub  BuildParam {

 

 sub BuildFunctionBody {

        my ($parser, $params, $block) = @_;

+       PopScope($parser);

        my @opcodes1 = ();

        my @opcodes2 = ();

        my $fct = new_fct($parser);


Modified: trunk/languages/lua/Lua/lua50.yp
==============================================================================
--- trunk/languages/lua/Lua/lua50.yp    (original)
+++ trunk/languages/lua/Lua/lua50.yp    Thu Jan 26 23:56:36 2006
@@ -135,16 +135,24 @@ stat

                {

                        BuildForList($_[0], $_[2], $_[4], $_[6]);

                }

-|      FUNCTION        funcname        funcbody

+|      FUNCTION

                {

-                       my $var = BuildVariable($_[0], $_[2]); 

-                       BuildAssigns($_[0], [$var], [$_[3]])

+                       PushScope($_[0]);

                }

-|      LOCAL   FUNCTION        NAME    funcbody

+                               funcname        funcbody

                {

-                       my $var = BuildLocalVariable($_[0], $_[3]); 

+                       my $var = BuildVariable($_[0], $_[3]); 

                        BuildAssigns($_[0], [$var], [$_[4]])

                }

+|      LOCAL   FUNCTION

+               {

+                       PushScope($_[0]);

+               }

+                                               NAME    funcbody

+               {

+                       my $var = BuildLocalVariable($_[0], $_[4]); 

+                       BuildAssigns($_[0], [$var], [$_[5]])

+               }

 |      LOCAL   namelist        '='     explist1

                {

                        BuildAssigns($_[0], $_[2], $_[4])

@@ -527,6 +535,7 @@ sub Run {

        $parser->YYData->{srcname_mtime} = $st[9];

        $parser->_InitLexico();

        $parser->YYData->{functs} = [];

+       $parser->YYData->{scope} = [];

        $parser->YYData->{symbtab} = new SymbTabVar($parser);

        $parser->YYData->{symbtab_cst} = new SymbTabConst($parser);

        $parser->YYData->{idx_tmp} = 0;


Modified: trunk/languages/lua/Lua/opcode.pm
==============================================================================
--- trunk/languages/lua/Lua/opcode.pm   (original)
+++ trunk/languages/lua/Lua/opcode.pm   Thu Jan 26 23:56:36 2006
@@ -70,6 +70,9 @@ use base qw(Lua::opcode);

 package FindGlobalOp;

 use base qw(Lua::opcode);

 

+package NewOp;

+use base qw(Lua::opcode);

+

 package CloneOp;

 use base qw(Lua::opcode);

 


Modified: trunk/languages/lua/Lua/parser.pm
==============================================================================
--- trunk/languages/lua/Lua/parser.pm   (original)
+++ trunk/languages/lua/Lua/parser.pm   Thu Jan 26 23:56:36 2006
@@ -547,7 +547,7 @@ sub new {

                }

        },

        {#State 4

-               DEFAULT => -34

+               DEFAULT => -36

        },

        {#State 5

                DEFAULT => -4,

@@ -644,7 +644,7 @@ sub new {

                        "[" => 45,

                        "." => 47

                },

-               DEFAULT => -33,

+               DEFAULT => -35,

                GOTOS => {

                        'tableconstructor' => 44,

                        'args' => 50,

@@ -652,34 +652,31 @@ sub new {

                }

        },

        {#State 12

-               ACTIONS => {

-                       'NAME' => 52

-               },

+               DEFAULT => -22,

                GOTOS => {

-                       'funcname' => 53,

-                       '_funcname' => 54

+                       '@1-1' => 52

                }

        },

        {#State 13

                ACTIONS => {

-                       "," => 55,

-                       "=" => 56

+                       "," => 53,

+                       "=" => 54

                }

        },

        {#State 14

                DEFAULT => -4,

                GOTOS => {

-                       'block' => 57,

+                       'block' => 55,

                        'chunk' => 18

                }

        },

        {#State 15

                ACTIONS => {

-                       'NAME' => 59,

-                       'FUNCTION' => 58

+                       'NAME' => 57,

+                       'FUNCTION' => 56

                },

                GOTOS => {

-                       'namelist' => 60

+                       'namelist' => 58

                }

        },

        {#State 16

@@ -697,7 +694,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 61,

+                       'exp' => 59,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -711,12 +708,12 @@ sub new {

        {#State 18

                ACTIONS => {

                        'NAME' => 4,

-                       'BREAK' => 62,

+                       'BREAK' => 60,

                        'REPEAT' => 5,

                        'FOR' => 6,

                        "(" => 8,

                        'IF' => 10,

-                       'RETURN' => 64,

+                       'RETURN' => 62,

                        'FUNCTION' => 12,

                        'DO' => 14,

                        'LOCAL' => 15,

@@ -726,26 +723,26 @@ sub new {

                GOTOS => {

                        'functioncall' => 9,

                        'var' => 11,

-                       '_end_block' => 63,

+                       '_end_block' => 61,

                        'varlist1' => 13,

                        'stat' => 7

                }

        },

        {#State 19

                ACTIONS => {

-                       'UNTIL' => 65

+                       'UNTIL' => 63

                }

        },

        {#State 20

                ACTIONS => {

-                       "=" => 66

+                       "=" => 64

                },

-               DEFAULT => -41

+               DEFAULT => -43

        },

        {#State 21

                ACTIONS => {

-                       "," => 67,

-                       'IN' => 68

+                       "," => 65,

+                       'IN' => 66

                }

        },

        {#State 22

@@ -769,7 +766,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 69,

+                       'exp' => 67,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -778,10 +775,10 @@ sub new {

                }

        },

        {#State 25

-               DEFAULT => -65

+               DEFAULT => -67

        },

        {#State 26

-               DEFAULT => -68

+               DEFAULT => -70

        },

        {#State 27

                ACTIONS => {

@@ -798,7 +795,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 70,

+                       'exp' => 68,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -807,13 +804,13 @@ sub new {

                }

        },

        {#State 28

-               DEFAULT => -44

+               DEFAULT => -46

        },

        {#State 29

-               DEFAULT => -67

+               DEFAULT => -69

        },

        {#State 30

-               DEFAULT => -63

+               DEFAULT => -65

        },

        {#State 31

                ACTIONS => {

@@ -824,7 +821,7 @@ sub new {

                        'LITERAL' => 42,

                        "{" => 38

                },

-               DEFAULT => -46,

+               DEFAULT => -48,

                GOTOS => {

                        'tableconstructor' => 44,

                        'args' => 41,

@@ -832,17 +829,17 @@ sub new {

                }

        },

        {#State 32

-               DEFAULT => -69

+               DEFAULT => -71

        },

        {#State 33

-               DEFAULT => -64

+               DEFAULT => -66

        },

        {#State 34

                ACTIONS => {

-                       "(" => 72

+                       "(" => 70

                },

                GOTOS => {

-                       'funcbody' => 71

+                       'funcbody' => 69

                }

        },

        {#State 35

@@ -854,7 +851,7 @@ sub new {

                        'LITERAL' => 42,

                        "{" => 38

                },

-               DEFAULT => -45,

+               DEFAULT => -47,

                GOTOS => {

                        'tableconstructor' => 44,

                        'args' => 50,

@@ -862,32 +859,32 @@ sub new {

                }

        },

        {#State 36

-               DEFAULT => -66

+               DEFAULT => -68

        },

        {#State 37

                ACTIONS => {

-                       "-" => 74,

-                       ".." => 73,

-                       "<" => 76,

-                       "~=" => 75,

-                       "+" => 77,

-                       "/" => 83,

-                       "==" => 78,

-                       ">=" => 79,

-                       'AND' => 84,

-                       "^" => 80,

-                       "*" => 81,

-                       "<=" => 86,

-                       'OR' => 85,

-                       ")" => 82,

-                       ">" => 87

+                       "-" => 72,

+                       ".." => 71,

+                       "<" => 74,

+                       "~=" => 73,

+                       "+" => 75,

+                       "/" => 81,

+                       "==" => 76,

+                       ">=" => 77,

+                       'AND' => 82,

+                       "^" => 78,

+                       "*" => 79,

+                       "<=" => 84,

+                       'OR' => 83,

+                       ")" => 80,

+                       ">" => 85

                }

        },

        {#State 38

                ACTIONS => {

-                       "}" => 88,

+                       "}" => 86,

                        "-" => 24,

-                       'NAME' => 92,

+                       'NAME' => 90,

                        'TRUE' => 25,

                        "{" => 38,

                        'NOT' => 27,

@@ -896,19 +893,19 @@ sub new {

                        'NIL' => 30,

                        'FALSE' => 33,

                        'FUNCTION' => 34,

-                       "[" => 89,

+                       "[" => 87,

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 91,

+                       'exp' => 89,

                        'function' => 26,

                        'primary' => 28,

-                       'fieldlist' => 93,

+                       'fieldlist' => 91,

                        'functioncall' => 31,

                        'tableconstructor' => 32,

                        'var' => 35,

-                       '_field_plus' => 94,

-                       'field' => 90

+                       '_field_plus' => 92,

+                       'field' => 88

                }

        },

        {#State 39

@@ -926,7 +923,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 95,

+                       'exp' => 93,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -936,20 +933,20 @@ sub new {

        },

        {#State 40

                ACTIONS => {

-                       'NAME' => 96

+                       'NAME' => 94

                }

        },

        {#State 41

-               DEFAULT => -75

+               DEFAULT => -77

        },

        {#State 42

-               DEFAULT => -80

+               DEFAULT => -82

        },

        {#State 43

-               DEFAULT => -36

+               DEFAULT => -38

        },

        {#State 44

-               DEFAULT => -79

+               DEFAULT => -81

        },

        {#State 45

                ACTIONS => {

@@ -966,7 +963,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 97,

+                       'exp' => 95,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -987,12 +984,12 @@ sub new {

                        'FALSE' => 33,

                        'FUNCTION' => 34,

                        'NUMBER' => 36,

-                       ")" => 99

+                       ")" => 97

                },

                GOTOS => {

-                       'exp' => 100,

+                       'exp' => 98,

                        'functioncall' => 31,

-                       'explist1' => 98,

+                       'explist1' => 96,

                        'function' => 26,

                        'tableconstructor' => 32,

                        'var' => 35,

@@ -1001,68 +998,59 @@ sub new {

        },

        {#State 47

                ACTIONS => {

-                       'NAME' => 101

+                       'NAME' => 99

                }

        },

        {#State 48

                ACTIONS => {

-                       "-" => 74,

-                       ".." => 73,

-                       "<" => 76,

-                       "~=" => 75,

-                       "+" => 77,

-                       "/" => 83,

-                       "==" => 78,

-                       ">=" => 79,

-                       'AND' => 84,

-                       "^" => 80,

-                       "*" => 81,

-                       'THEN' => 102,

-                       "<=" => 86,

-                       'OR' => 85,

-                       ">" => 87

+                       "-" => 72,

+                       ".." => 71,

+                       "<" => 74,

+                       "~=" => 73,

+                       "+" => 75,

+                       "/" => 81,

+                       "==" => 76,

+                       ">=" => 77,

+                       'AND' => 82,

+                       "^" => 78,

+                       "*" => 79,

+                       'THEN' => 100,

+                       "<=" => 84,

+                       'OR' => 83,

+                       ">" => 85

                }

        },

        {#State 49

                ACTIONS => {

-                       'NAME' => 103

+                       'NAME' => 101

                }

        },

        {#State 50

-               DEFAULT => -73

+               DEFAULT => -75

        },

        {#State 51

-               DEFAULT => -37

+               DEFAULT => -39

        },

        {#State 52

-               DEFAULT => -31

-       },

-       {#State 53

                ACTIONS => {

-                       "(" => 72

+                       'NAME' => 102

                },

                GOTOS => {

-                       'funcbody' => 104

+                       'funcname' => 103,

+                       '_funcname' => 104

                }

        },

-       {#State 54

-               ACTIONS => {

-                       ":" => 105,

-                       "." => 106

-               },

-               DEFAULT => -28

-       },

-       {#State 55

+       {#State 53

                ACTIONS => {

                        "(" => 8,

                        'NAME' => 4

                },

                GOTOS => {

-                       'functioncall' => 107,

-                       'var' => 108

+                       'functioncall' => 105,

+                       'var' => 106

                }

        },

-       {#State 56

+       {#State 54

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -1077,67 +1065,68 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 100,

+                       'exp' => 98,

                        'functioncall' => 31,

-                       'explist1' => 109,

+                       'explist1' => 107,

                        'function' => 26,

                        'tableconstructor' => 32,

                        'var' => 35,

                        'primary' => 28

                }

        },

-       {#State 57

+       {#State 55

                ACTIONS => {

-                       'END' => 110

+                       'END' => 108

                }

        },

-       {#State 58

-               ACTIONS => {

-                       'NAME' => 111

+       {#State 56

+               DEFAULT => -24,

+               GOTOS => {

+                       '@2-2' => 109

                }

        },

-       {#State 59

-               DEFAULT => -41

+       {#State 57

+               DEFAULT => -43

        },

-       {#State 60

+       {#State 58

                ACTIONS => {

-                       "," => 67,

-                       "=" => 112

+                       "," => 65,

+                       "=" => 110

                },

-               DEFAULT => -25

+               DEFAULT => -27

        },

-       {#State 61

+       {#State 59

                ACTIONS => {

-                       "-" => 74,

-                       ".." => 73,

-                       "<" => 76,

-                       "~=" => 75,

-                       "+" => 77,

-                       "/" => 83,

-                       "==" => 78,

-                       ">=" => 79,

-                       'AND' => 84,

-                       "^" => 80,

-                       "*" => 81,

-                       'DO' => 113,

-                       "<=" => 86,

-                       'OR' => 85,

-                       ">" => 87

+                       "-" => 72,

+                       ".." => 71,

+                       "<" => 74,

+                       "~=" => 73,

+                       "+" => 75,

+                       "/" => 81,

+                       "==" => 76,

+                       ">=" => 77,

+                       'AND' => 82,

+                       "^" => 78,

+                       "*" => 79,

+                       'DO' => 111,

+                       "<=" => 84,

+                       'OR' => 83,

+                       ">" => 85

                }

        },

-       {#State 62

+       {#State 60

                DEFAULT => -11

        },

-       {#State 63

+       {#State 61

                ACTIONS => {

                        ";" => 22

                },

                DEFAULT => -6,

                GOTOS => {

-                       '_semicolon_opt' => 114

+                       '_semicolon_opt' => 112

                }

        },

-       {#State 64

+       {#State 62

                ACTIONS => {

                        "-" => 24,

                        'TRUE' => 25,

@@ -1153,16 +1142,16 @@ sub new {

                },

                DEFAULT => -10,

                GOTOS => {

-                       'exp' => 100,

+                       'exp' => 98,

                        'functioncall' => 31,

-                       'explist1' => 115,

+                       'explist1' => 113,

                        'function' => 26,

                        'tableconstructor' => 32,

                        'var' => 35,

                        'primary' => 28

                }

        },

-       {#State 65

+       {#State 63

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -1177,7 +1166,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 116,

+                       'exp' => 114,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -1185,7 +1174,7 @@ sub new {

                        'primary' => 28

                }

        },

-       {#State 66

+       {#State 64

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -1200,7 +1189,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 117,

+                       'exp' => 115,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -1208,12 +1197,12 @@ sub new {

                        'primary' => 28

                }

        },

-       {#State 67

+       {#State 65

                ACTIONS => {

-                       'NAME' => 118

+                       'NAME' => 116

                }

        },

-       {#State 68

+       {#State 66

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -1228,42 +1217,42 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 100,

+                       'exp' => 98,

                        'functioncall' => 31,

-                       'explist1' => 119,

+                       'explist1' => 117,

                        'function' => 26,

                        'tableconstructor' => 32,

                        'var' => 35,

                        'primary' => 28

                }

        },

-       {#State 69

+       {#State 67

                ACTIONS => {

-                       "^" => 80

+                       "^" => 78

                },

-               DEFAULT => -61

+               DEFAULT => -63

        },

-       {#State 70

+       {#State 68

                ACTIONS => {

-                       "^" => 80

+                       "^" => 78

                },

-               DEFAULT => -62

+               DEFAULT => -64

        },

-       {#State 71

-               DEFAULT => -81

+       {#State 69

+               DEFAULT => -83

        },

-       {#State 72

+       {#State 70

                ACTIONS => {

-                       'NAME' => 122,

-                       "..." => 123,

-                       ")" => 121

+                       'NAME' => 120,

+                       "..." => 121,

+                       ")" => 119

                },

                GOTOS => {

-                       'parlist' => 120,

-                       'parlist1' => 124

+                       'parlist' => 118,

+                       'parlist1' => 122

                }

        },

-       {#State 73

+       {#State 71

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -1278,7 +1267,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 125,

+                       'exp' => 123,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -1286,7 +1275,7 @@ sub new {

                        'primary' => 28

                }

        },

-       {#State 74

+       {#State 72

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -1301,7 +1290,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 126,

+                       'exp' => 124,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -1309,7 +1298,7 @@ sub new {

                        'primary' => 28

                }

        },

-       {#State 75

+       {#State 73

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -1324,7 +1313,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 127,

+                       'exp' => 125,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -1332,7 +1321,7 @@ sub new {

                        'primary' => 28

                }

        },

-       {#State 76

+       {#State 74

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -1347,7 +1336,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 128,

+                       'exp' => 126,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -1355,7 +1344,7 @@ sub new {

                        'primary' => 28

                }

        },

-       {#State 77

+       {#State 75

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -1370,7 +1359,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 129,

+                       'exp' => 127,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -1378,7 +1367,7 @@ sub new {

                        'primary' => 28

                }

        },

-       {#State 78

+       {#State 76

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -1393,7 +1382,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 130,

+                       'exp' => 128,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -1401,7 +1390,7 @@ sub new {

                        'primary' => 28

                }

        },

-       {#State 79

+       {#State 77

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -1416,7 +1405,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 131,

+                       'exp' => 129,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -1424,7 +1413,7 @@ sub new {

                        'primary' => 28

                }

        },

-       {#State 80

+       {#State 78

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -1439,7 +1428,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 132,

+                       'exp' => 130,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -1447,7 +1436,7 @@ sub new {

                        'primary' => 28

                }

        },

-       {#State 81

+       {#State 79

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -1462,7 +1451,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 133,

+                       'exp' => 131,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -1470,9 +1459,9 @@ sub new {

                        'primary' => 28

                }

        },

-       {#State 82

+       {#State 80

                ACTIONS => {

-                       ":" => 134,

+                       ":" => 132,

                        "(" => 46,

                        "{" => 38,

                        "[" => 45,

@@ -1481,11 +1470,11 @@ sub new {

                },

                GOTOS => {

                        'tableconstructor' => 44,

-                       'args' => 135,

-                       'key' => 136

+                       'args' => 133,

+                       'key' => 134

                }

        },

-       {#State 83

+       {#State 81

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -1500,7 +1489,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 137,

+                       'exp' => 135,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -1508,7 +1497,7 @@ sub new {

                        'primary' => 28

                }

        },

-       {#State 84

+       {#State 82

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -1523,7 +1512,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 138,

+                       'exp' => 136,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -1531,7 +1520,7 @@ sub new {

                        'primary' => 28

                }

        },

-       {#State 85

+       {#State 83

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -1546,7 +1535,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 139,

+                       'exp' => 137,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -1554,7 +1543,7 @@ sub new {

                        'primary' => 28

                }

        },

-       {#State 86

+       {#State 84

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -1569,7 +1558,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 140,

+                       'exp' => 138,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -1577,7 +1566,7 @@ sub new {

                        'primary' => 28

                }

        },

-       {#State 87

+       {#State 85

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -1592,7 +1581,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 141,

+                       'exp' => 139,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -1600,10 +1589,10 @@ sub new {

                        'primary' => 28

                }

        },

-       {#State 88

-               DEFAULT => -90

+       {#State 86

+               DEFAULT => -92

        },

-       {#State 89

+       {#State 87

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -1618,7 +1607,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 142,

+                       'exp' => 140,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -1626,69 +1615,69 @@ sub new {

                        'primary' => 28

                }

        },

-       {#State 90

-               DEFAULT => -94

+       {#State 88

+               DEFAULT => -96

        },

-       {#State 91

+       {#State 89

                ACTIONS => {

-                       "-" => 74,

-                       ".." => 73,

-                       "<" => 76,

-                       "~=" => 75,

-                       "+" => 77,

-                       "==" => 78,

-                       ">=" => 79,

-                       "^" => 80,

-                       "*" => 81,

-                       "/" => 83,

-                       'AND' => 84,

-                       'OR' => 85,

-                       "<=" => 86,

-                       ">" => 87

+                       "-" => 72,

+                       ".." => 71,

+                       "<" => 74,

+                       "~=" => 73,

+                       "+" => 75,

+                       "==" => 76,

+                       ">=" => 77,

+                       "^" => 78,

+                       "*" => 79,

+                       "/" => 81,

+                       'AND' => 82,

+                       'OR' => 83,

+                       "<=" => 84,

+                       ">" => 85

                },

-               DEFAULT => -97

+               DEFAULT => -99

        },

-       {#State 92

+       {#State 90

                ACTIONS => {

-                       "=" => 143

+                       "=" => 141

                },

-               DEFAULT => -34

+               DEFAULT => -36

        },

-       {#State 93

+       {#State 91

                ACTIONS => {

-                       "}" => 144

+                       "}" => 142

                }

        },

-       {#State 94

+       {#State 92

                ACTIONS => {

-                       ";" => 146,

-                       "," => 147

+                       ";" => 144,

+                       "," => 145

                },

-               DEFAULT => -92,

+               DEFAULT => -94,

                GOTOS => {

-                       'fieldsep' => 145

+                       'fieldsep' => 143

                }

        },

-       {#State 95

+       {#State 93

                ACTIONS => {

-                       "-" => 74,

-                       ".." => 73,

-                       "<" => 76,

-                       "~=" => 75,

-                       "+" => 77,

-                       "/" => 83,

-                       "==" => 78,

-                       ">=" => 79,

-                       'AND' => 84,

-                       "^" => 80,

-                       "*" => 81,

-                       "<=" => 86,

-                       'OR' => 85,

-                       ")" => 148,

-                       ">" => 87

+                       "-" => 72,

+                       ".." => 71,

+                       "<" => 74,

+                       "~=" => 73,

+                       "+" => 75,

+                       "/" => 81,

+                       "==" => 76,

+                       ">=" => 77,

+                       'AND' => 82,

+                       "^" => 78,

+                       "*" => 79,

+                       "<=" => 84,

+                       'OR' => 83,

+                       ")" => 146,

+                       ">" => 85

                }

        },

-       {#State 96

+       {#State 94

                ACTIONS => {

                        "(" => 46,

                        "{" => 38,

@@ -1696,67 +1685,67 @@ sub new {

                },

                GOTOS => {

                        'tableconstructor' => 44,

-                       'args' => 149

+                       'args' => 147

                }

        },

-       {#State 97

+       {#State 95

                ACTIONS => {

-                       "-" => 74,

-                       ".." => 73,

-                       "<" => 76,

-                       "~=" => 75,

-                       "+" => 77,

-                       "/" => 83,

-                       "==" => 78,

-                       ">=" => 79,

-                       'AND' => 84,

-                       "^" => 80,

-                       "*" => 81,

-                       "<=" => 86,

-                       'OR' => 85,

-                       "]" => 150,

-                       ">" => 87

+                       "-" => 72,

+                       ".." => 71,

+                       "<" => 74,

+                       "~=" => 73,

+                       "+" => 75,

+                       "/" => 81,

+                       "==" => 76,

+                       ">=" => 77,

+                       'AND' => 82,

+                       "^" => 78,

+                       "*" => 79,

+                       "<=" => 84,

+                       'OR' => 83,

+                       "]" => 148,

+                       ">" => 85

                }

        },

-       {#State 98

+       {#State 96

                ACTIONS => {

-                       "," => 151,

-                       ")" => 152

+                       "," => 149,

+                       ")" => 150

                }

        },

-       {#State 99

-               DEFAULT => -78

+       {#State 97

+               DEFAULT => -80

        },

-       {#State 100

+       {#State 98

                ACTIONS => {

-                       "-" => 74,

-                       "<" => 76,

-                       "==" => 78,

-                       ">=" => 79,

-                       "*" => 81,

-                       'AND' => 84,

-                       'OR' => 85,

-                       "<=" => 86,

-                       ">" => 87,

-                       ".." => 73,

-                       "~=" => 75,

-                       "+" => 77,

-                       "^" => 80,

-                       "/" => 83

+                       "-" => 72,

+                       "<" => 74,

+                       "==" => 76,

+                       ">=" => 77,

+                       "*" => 79,

+                       'AND' => 82,

+                       'OR' => 83,

+                       "<=" => 84,

+                       ">" => 85,

+                       ".." => 71,

+                       "~=" => 73,

+                       "+" => 75,

+                       "^" => 78,

+                       "/" => 81

                },

-               DEFAULT => -43

+               DEFAULT => -45

        },

-       {#State 101

-               DEFAULT => -39

+       {#State 99

+               DEFAULT => -41

        },

-       {#State 102

+       {#State 100

                DEFAULT => -4,

                GOTOS => {

-                       'block' => 153,

+                       'block' => 151,

                        'chunk' => 18

                }

        },

-       {#State 103

+       {#State 101

                ACTIONS => {

                        "(" => 46,

                        "{" => 38,

@@ -1764,23 +1753,28 @@ sub new {

                },

                GOTOS => {

                        'tableconstructor' => 44,

-                       'args' => 154

+                       'args' => 152

                }

        },

-       {#State 104

-               DEFAULT => -22

+       {#State 102

+               DEFAULT => -33

        },

-       {#State 105

+       {#State 103

                ACTIONS => {

-                       'NAME' => 155

+                       "(" => 70

+               },

+               GOTOS => {

+                       'funcbody' => 153

                }

        },

-       {#State 106

+       {#State 104

                ACTIONS => {

-                       'NAME' => 156

-               }

+                       ":" => 154,

+                       "." => 155

+               },

+               DEFAULT => -30

        },

-       {#State 107

+       {#State 105

                ACTIONS => {

                        ":" => 40,

                        "(" => 46,

@@ -1795,7 +1789,7 @@ sub new {

                        'key' => 43

                }

        },

-       {#State 108

+       {#State 106

                ACTIONS => {

                        ":" => 49,

                        "{" => 38,

@@ -1804,31 +1798,28 @@ sub new {

                        "[" => 45,

                        "." => 47

                },

-               DEFAULT => -32,

+               DEFAULT => -34,

                GOTOS => {

                        'tableconstructor' => 44,

                        'args' => 50,

                        'key' => 51

                }

        },

-       {#State 109

+       {#State 107

                ACTIONS => {

-                       "," => 151

+                       "," => 149

                },

                DEFAULT => -12

        },

-       {#State 110

+       {#State 108

                DEFAULT => -14

        },

-       {#State 111

+       {#State 109

                ACTIONS => {

-                       "(" => 72

-               },

-               GOTOS => {

-                       'funcbody' => 157

+                       'NAME' => 156

                }

        },

-       {#State 112

+       {#State 110

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -1843,277 +1834,277 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 100,

+                       'exp' => 98,

                        'functioncall' => 31,

-                       'explist1' => 158,

+                       'explist1' => 157,

                        'function' => 26,

                        'tableconstructor' => 32,

                        'var' => 35,

                        'primary' => 28

                }

        },

-       {#State 113

+       {#State 111

                DEFAULT => -4,

                GOTOS => {

-                       'block' => 159,

+                       'block' => 158,

                        'chunk' => 18

                }

        },

-       {#State 114

+       {#State 112

                DEFAULT => -8

        },

-       {#State 115

+       {#State 113

                ACTIONS => {

-                       "," => 151

+                       "," => 149

                },

                DEFAULT => -9

        },

-       {#State 116

+       {#State 114

                ACTIONS => {

-                       "-" => 74,

-                       "<" => 76,

-                       "==" => 78,

-                       ">=" => 79,

-                       "*" => 81,

-                       'AND' => 84,

-                       'OR' => 85,

-                       "<=" => 86,

-                       ">" => 87,

-                       ".." => 73,

-                       "~=" => 75,

-                       "+" => 77,

-                       "^" => 80,

-                       "/" => 83

+                       "-" => 72,

+                       "<" => 74,

+                       "==" => 76,

+                       ">=" => 77,

+                       "*" => 79,

+                       'AND' => 82,

+                       'OR' => 83,

+                       "<=" => 84,

+                       ">" => 85,

+                       ".." => 71,

+                       "~=" => 73,

+                       "+" => 75,

+                       "^" => 78,

+                       "/" => 81

                },

                DEFAULT => -16

        },

-       {#State 117

+       {#State 115

                ACTIONS => {

-                       "-" => 74,

-                       ".." => 73,

-                       "<" => 76,

-                       "~=" => 75,

-                       "+" => 77,

-                       "/" => 83,

-                       "," => 160,

-                       "==" => 78,

-                       ">=" => 79,

-                       'AND' => 84,

-                       "^" => 80,

-                       "*" => 81,

-                       "<=" => 86,

-                       'OR' => 85,

-                       ">" => 87

+                       "-" => 72,

+                       ".." => 71,

+                       "<" => 74,

+                       "~=" => 73,

+                       "+" => 75,

+                       "/" => 81,

+                       "," => 159,

+                       "==" => 76,

+                       ">=" => 77,

+                       'AND' => 82,

+                       "^" => 78,

+                       "*" => 79,

+                       "<=" => 84,

+                       'OR' => 83,

+                       ">" => 85

                }

        },

-       {#State 118

-               DEFAULT => -40

+       {#State 116

+               DEFAULT => -42

        },

-       {#State 119

+       {#State 117

                ACTIONS => {

-                       "," => 151,

-                       'DO' => 161

+                       "," => 149,

+                       'DO' => 160

                }

        },

-       {#State 120

+       {#State 118

                ACTIONS => {

-                       "," => 162

+                       "," => 161

                },

-               DEFAULT => -85

+               DEFAULT => -87

        },

-       {#State 121

+       {#State 119

                DEFAULT => -4,

                GOTOS => {

-                       'block' => 163,

+                       'block' => 162,

                        'chunk' => 18

                }

        },

-       {#State 122

+       {#State 120

+               DEFAULT => -90

+       },

+       {#State 121

                DEFAULT => -88

        },

+       {#State 122

+               ACTIONS => {

+                       ")" => 163

+               }

+       },

        {#State 123

-               DEFAULT => -86

+               ACTIONS => {

+                       "-" => 72,

+                       "*" => 79,

+                       "+" => 75,

+                       "^" => 78,

+                       "/" => 81

+               },

+               DEFAULT => -54

        },

        {#State 124

                ACTIONS => {

-                       ")" => 164

-               }

+                       "*" => 79,

+                       "^" => 78,

+                       "/" => 81

+               },

+               DEFAULT => -50

        },

        {#State 125

                ACTIONS => {

-                       "-" => 74,

-                       "*" => 81,

-                       "+" => 77,

-                       "^" => 80,

-                       "/" => 83

+                       "-" => 72,

+                       "*" => 79,

+                       ".." => 71,

+                       "+" => 75,

+                       "^" => 78,

+                       "/" => 81

                },

-               DEFAULT => -52

+               DEFAULT => -60

        },

        {#State 126

                ACTIONS => {

-                       "*" => 81,

-                       "^" => 80,

-                       "/" => 83

+                       "-" => 72,

+                       "*" => 79,

+                       ".." => 71,

+                       "+" => 75,

+                       "^" => 78,

+                       "/" => 81

                },

-               DEFAULT => -48

+               DEFAULT => -55

        },

        {#State 127

                ACTIONS => {

-                       "-" => 74,

-                       "*" => 81,

-                       ".." => 73,

-                       "+" => 77,

-                       "^" => 80,

-                       "/" => 83

+                       "*" => 79,

+                       "^" => 78,

+                       "/" => 81

                },

-               DEFAULT => -58

+               DEFAULT => -49

        },

        {#State 128

                ACTIONS => {

-                       "-" => 74,

-                       "*" => 81,

-                       ".." => 73,

-                       "+" => 77,

-                       "^" => 80,

-                       "/" => 83

+                       "-" => 72,

+                       "*" => 79,

+                       ".." => 71,

+                       "+" => 75,

+                       "^" => 78,

+                       "/" => 81

                },

-               DEFAULT => -53

+               DEFAULT => -59

        },

        {#State 129

                ACTIONS => {

-                       "*" => 81,

-                       "^" => 80,

-                       "/" => 83

+                       "-" => 72,

+                       "*" => 79,

+                       ".." => 71,

+                       "+" => 75,

+                       "^" => 78,

+                       "/" => 81

                },

-               DEFAULT => -47

+               DEFAULT => -58

        },

        {#State 130

                ACTIONS => {

-                       "-" => 74,

-                       "*" => 81,

-                       ".." => 73,

-                       "+" => 77,

-                       "^" => 80,

-                       "/" => 83

+                       "^" => 78

                },

-               DEFAULT => -57

+               DEFAULT => -53

        },

        {#State 131

                ACTIONS => {

-                       "-" => 74,

-                       "*" => 81,

-                       ".." => 73,

-                       "+" => 77,

-                       "^" => 80,

-                       "/" => 83

+                       "^" => 78

                },

-               DEFAULT => -56

+               DEFAULT => -51

        },

        {#State 132

                ACTIONS => {

-                       "^" => 80

-               },

-               DEFAULT => -51

+                       'NAME' => 164

+               }

        },

        {#State 133

-               ACTIONS => {

-                       "^" => 80

-               },

-               DEFAULT => -49

+               DEFAULT => -73

        },

        {#State 134

-               ACTIONS => {

-                       'NAME' => 165

-               }

+               DEFAULT => -37

        },

        {#State 135

-               DEFAULT => -71

+               ACTIONS => {

+                       "^" => 78

+               },

+               DEFAULT => -52

        },

        {#State 136

-               DEFAULT => -35

+               ACTIONS => {

+                       "-" => 72,

+                       "<" => 74,

+                       "==" => 76,

+                       ">=" => 77,

+                       "*" => 79,

+                       "<=" => 84,

+                       ">" => 85,

+                       ".." => 71,

+                       "~=" => 73,

+                       "+" => 75,

+                       "^" => 78,

+                       "/" => 81

+               },

+               DEFAULT => -61

        },

        {#State 137

                ACTIONS => {

-                       "^" => 80

+                       "-" => 72,

+                       "<" => 74,

+                       "==" => 76,

+                       ">=" => 77,

+                       "*" => 79,

+                       "<=" => 84,

+                       ">" => 85,

+                       ".." => 71,

+                       "~=" => 73,

+                       "+" => 75,

+                       "^" => 78,

+                       "/" => 81

                },

-               DEFAULT => -50

+               DEFAULT => -62

        },

        {#State 138

                ACTIONS => {

-                       "-" => 74,

-                       "<" => 76,

-                       "==" => 78,

-                       ">=" => 79,

-                       "*" => 81,

-                       "<=" => 86,

-                       ">" => 87,

-                       ".." => 73,

-                       "~=" => 75,

-                       "+" => 77,

-                       "^" => 80,

-                       "/" => 83

+                       "-" => 72,

+                       "*" => 79,

+                       ".." => 71,

+                       "+" => 75,

+                       "^" => 78,

+                       "/" => 81

                },

-               DEFAULT => -59

+               DEFAULT => -56

        },

        {#State 139

                ACTIONS => {

-                       "-" => 74,

-                       "<" => 76,

-                       "==" => 78,

-                       ">=" => 79,

-                       "*" => 81,

-                       "<=" => 86,

-                       ">" => 87,

-                       ".." => 73,

-                       "~=" => 75,

-                       "+" => 77,

-                       "^" => 80,

-                       "/" => 83

+                       "-" => 72,

+                       "*" => 79,

+                       ".." => 71,

+                       "+" => 75,

+                       "^" => 78,

+                       "/" => 81

                },

-               DEFAULT => -60

+               DEFAULT => -57

        },

        {#State 140

                ACTIONS => {

-                       "-" => 74,

-                       "*" => 81,

-                       ".." => 73,

-                       "+" => 77,

-                       "^" => 80,

-                       "/" => 83

-               },

-               DEFAULT => -54

-       },

-       {#State 141

-               ACTIONS => {

-                       "-" => 74,

-                       "*" => 81,

-                       ".." => 73,

-                       "+" => 77,

-                       "^" => 80,

-                       "/" => 83

-               },

-               DEFAULT => -55

-       },

-       {#State 142

-               ACTIONS => {

-                       "-" => 74,

-                       ".." => 73,

-                       "<" => 76,

-                       "~=" => 75,

-                       "+" => 77,

-                       "/" => 83,

-                       "==" => 78,

-                       ">=" => 79,

-                       'AND' => 84,

-                       "^" => 80,

-                       "*" => 81,

-                       "<=" => 86,

-                       'OR' => 85,

-                       "]" => 166,

-                       ">" => 87

+                       "-" => 72,

+                       ".." => 71,

+                       "<" => 74,

+                       "~=" => 73,

+                       "+" => 75,

+                       "/" => 81,

+                       "==" => 76,

+                       ">=" => 77,

+                       'AND' => 82,

+                       "^" => 78,

+                       "*" => 79,

+                       "<=" => 84,

+                       'OR' => 83,

+                       "]" => 165,

+                       ">" => 85

                }

        },

-       {#State 143

+       {#State 141

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -2128,7 +2119,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 167,

+                       'exp' => 166,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -2136,13 +2127,13 @@ sub new {

                        'primary' => 28

                }

        },

-       {#State 144

-               DEFAULT => -89

+       {#State 142

+               DEFAULT => -91

        },

-       {#State 145

+       {#State 143

                ACTIONS => {

                        "-" => 24,

-                       'NAME' => 92,

+                       'NAME' => 90,

                        'TRUE' => 25,

                        "{" => 38,

                        'NOT' => 27,

@@ -2151,49 +2142,49 @@ sub new {

                        'NIL' => 30,

                        'FALSE' => 33,

                        'FUNCTION' => 34,

-                       "[" => 89,

+                       "[" => 87,

                        'NUMBER' => 36

                },

-               DEFAULT => -91,

+               DEFAULT => -93,

                GOTOS => {

-                       'exp' => 91,

+                       'exp' => 89,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

                        'var' => 35,

                        'primary' => 28,

-                       'field' => 168

+                       'field' => 167

                }

        },

-       {#State 146

-               DEFAULT => -99

+       {#State 144

+               DEFAULT => -101

        },

-       {#State 147

-               DEFAULT => -98

+       {#State 145

+               DEFAULT => -100

        },

-       {#State 148

+       {#State 146

                ACTIONS => {

-                       ":" => 134,

+                       ":" => 132,

                        "[" => 45,

                        "(" => 46,

                        "." => 47,

                        'LITERAL' => 42,

                        "{" => 38

                },

-               DEFAULT => -70,

+               DEFAULT => -72,

                GOTOS => {

                        'tableconstructor' => 44,

-                       'args' => 135,

-                       'key' => 136

+                       'args' => 133,

+                       'key' => 134

                }

        },

-       {#State 149

-               DEFAULT => -76

+       {#State 147

+               DEFAULT => -78

        },

-       {#State 150

-               DEFAULT => -38

+       {#State 148

+               DEFAULT => -40

        },

-       {#State 151

+       {#State 149

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -2208,7 +2199,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 169,

+                       'exp' => 168,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -2216,39 +2207,51 @@ sub new {

                        'primary' => 28

                }

        },

-       {#State 152

-               DEFAULT => -77

+       {#State 150

+               DEFAULT => -79

        },

-       {#State 153

-               DEFAULT => -27,

+       {#State 151

+               DEFAULT => -29,

                GOTOS => {

-                       '_elseif_star' => 170

+                       '_elseif_star' => 169

                }

        },

+       {#State 152

+               DEFAULT => -76

+       },

+       {#State 153

+               DEFAULT => -23

+       },

        {#State 154

-               DEFAULT => -74

+               ACTIONS => {

+                       'NAME' => 170

+               }

        },

        {#State 155

-               DEFAULT => -29

+               ACTIONS => {

+                       'NAME' => 171

+               }

        },

        {#State 156

-               DEFAULT => -30

+               ACTIONS => {

+                       "(" => 70

+               },

+               GOTOS => {

+                       'funcbody' => 172

+               }

        },

        {#State 157

-               DEFAULT => -23

-       },

-       {#State 158

                ACTIONS => {

-                       "," => 151

+                       "," => 149

                },

-               DEFAULT => -24

+               DEFAULT => -26

        },

-       {#State 159

+       {#State 158

                ACTIONS => {

-                       'END' => 171

+                       'END' => 173

                }

        },

-       {#State 160

+       {#State 159

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -2263,7 +2266,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 172,

+                       'exp' => 174,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -2271,32 +2274,32 @@ sub new {

                        'primary' => 28

                }

        },

-       {#State 161

+       {#State 160

                DEFAULT => -4,

                GOTOS => {

-                       'block' => 173,

+                       'block' => 175,

                        'chunk' => 18

                }

        },

-       {#State 162

+       {#State 161

                ACTIONS => {

-                       'NAME' => 174,

-                       "..." => 175

+                       'NAME' => 176,

+                       "..." => 177

                }

        },

-       {#State 163

+       {#State 162

                ACTIONS => {

-                       'END' => 176

+                       'END' => 178

                }

        },

-       {#State 164

+       {#State 163

                DEFAULT => -4,

                GOTOS => {

-                       'block' => 177,

+                       'block' => 179,

                        'chunk' => 18

                }

        },

-       {#State 165

+       {#State 164

                ACTIONS => {

                        "(" => 46,

                        "{" => 38,

@@ -2304,109 +2307,118 @@ sub new {

                },

                GOTOS => {

                        'tableconstructor' => 44,

-                       'args' => 178

+                       'args' => 180

                }

        },

-       {#State 166

+       {#State 165

                ACTIONS => {

-                       "=" => 179

+                       "=" => 181

                }

        },

-       {#State 167

+       {#State 166

                ACTIONS => {

-                       "-" => 74,

-                       ".." => 73,

-                       "<" => 76,

-                       "~=" => 75,

-                       "+" => 77,

-                       "==" => 78,

-                       ">=" => 79,

-                       "^" => 80,

-                       "*" => 81,

-                       "/" => 83,

-                       'AND' => 84,

-                       'OR' => 85,

-                       "<=" => 86,

-                       ">" => 87

+                       "-" => 72,

+                       ".." => 71,

+                       "<" => 74,

+                       "~=" => 73,

+                       "+" => 75,

+                       "==" => 76,

+                       ">=" => 77,

+                       "^" => 78,

+                       "*" => 79,

+                       "/" => 81,

+                       'AND' => 82,

+                       'OR' => 83,

+                       "<=" => 84,

+                       ">" => 85

                },

-               DEFAULT => -96

+               DEFAULT => -98

        },

-       {#State 168

-               DEFAULT => -93

+       {#State 167

+               DEFAULT => -95

        },

-       {#State 169

+       {#State 168

                ACTIONS => {

-                       "-" => 74,

-                       "<" => 76,

-                       "==" => 78,

-                       ">=" => 79,

-                       "*" => 81,

-                       'AND' => 84,

-                       'OR' => 85,

-                       "<=" => 86,

-                       ">" => 87,

-                       ".." => 73,

-                       "~=" => 75,

-                       "+" => 77,

-                       "^" => 80,

-                       "/" => 83

+                       "-" => 72,

+                       "<" => 74,

+                       "==" => 76,

+                       ">=" => 77,

+                       "*" => 79,

+                       'AND' => 82,

+                       'OR' => 83,

+                       "<=" => 84,

+                       ">" => 85,

+                       ".." => 71,

+                       "~=" => 73,

+                       "+" => 75,

+                       "^" => 78,

+                       "/" => 81

                },

-               DEFAULT => -42

+               DEFAULT => -44

        },

-       {#State 170

+       {#State 169

                ACTIONS => {

-                       'ELSE' => 180,

-                       'ELSEIF' => 182,

-                       'END' => 181

+                       'ELSE' => 182,

+                       'ELSEIF' => 184,

+                       'END' => 183

                }

        },

+       {#State 170

+               DEFAULT => -31

+       },

        {#State 171

-               DEFAULT => -15

+               DEFAULT => -32

        },

        {#State 172

-               ACTIONS => {

-                       "-" => 74,

-                       ".." => 73,

-                       "<" => 76,

-                       "~=" => 75,

-                       "+" => 77,

-                       "/" => 83,

-                       "," => 183,

-                       "==" => 78,

-                       ">=" => 79,

-                       'AND' => 84,

-                       "^" => 80,

-                       "*" => 81,

-                       'DO' => 184,

-                       "<=" => 86,

-                       'OR' => 85,

-                       ">" => 87

-               }

+               DEFAULT => -25

        },

        {#State 173

-               ACTIONS => {

-                       'END' => 185

-               }

+               DEFAULT => -15

        },

        {#State 174

-               DEFAULT => -87

+               ACTIONS => {

+                       "-" => 72,

+                       ".." => 71,

+                       "<" => 74,

+                       "~=" => 73,

+                       "+" => 75,

+                       "/" => 81,

+                       "," => 185,

+                       "==" => 76,

+                       ">=" => 77,

+                       'AND' => 82,

+                       "^" => 78,

+                       "*" => 79,

+                       'DO' => 186,

+                       "<=" => 84,

+                       'OR' => 83,

+                       ">" => 85

+               }

        },

        {#State 175

-               DEFAULT => -84

+               ACTIONS => {

+                       'END' => 187

+               }

        },

        {#State 176

-               DEFAULT => -83

+               DEFAULT => -89

        },

        {#State 177

-               ACTIONS => {

-                       'END' => 186

-               }

+               DEFAULT => -86

        },

        {#State 178

-               DEFAULT => -72

+               DEFAULT => -85

        },

        {#State 179

                ACTIONS => {

+                       'END' => 188

+               }

+       },

+       {#State 180

+               DEFAULT => -74

+       },

+       {#State 181

+               ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

                        'TRUE' => 25,

@@ -2420,7 +2432,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 187,

+                       'exp' => 189,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -2428,17 +2440,17 @@ sub new {

                        'primary' => 28

                }

        },

-       {#State 180

+       {#State 182

                DEFAULT => -4,

                GOTOS => {

-                       'block' => 188,

+                       'block' => 190,

                        'chunk' => 18

                }

        },

-       {#State 181

+       {#State 183

                DEFAULT => -18

        },

-       {#State 182

+       {#State 184

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -2453,7 +2465,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 189,

+                       'exp' => 191,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -2461,7 +2473,7 @@ sub new {

                        'primary' => 28

                }

        },

-       {#State 183

+       {#State 185

                ACTIONS => {

                        "-" => 24,

                        'NAME' => 4,

@@ -2476,7 +2488,7 @@ sub new {

                        'NUMBER' => 36

                },

                GOTOS => {

-                       'exp' => 190,

+                       'exp' => 192,

                        'functioncall' => 31,

                        'function' => 26,

                        'tableconstructor' => 32,

@@ -2484,115 +2496,115 @@ sub new {

                        'primary' => 28

                }

        },

-       {#State 184

+       {#State 186

                DEFAULT => -4,

                GOTOS => {

-                       'block' => 191,

+                       'block' => 193,

                        'chunk' => 18

                }

        },

-       {#State 185

+       {#State 187

                DEFAULT => -21

        },

-       {#State 186

-               DEFAULT => -82

+       {#State 188

+               DEFAULT => -84

        },

-       {#State 187

+       {#State 189

                ACTIONS => {

-                       "-" => 74,

-                       ".." => 73,

-                       "<" => 76,

-                       "~=" => 75,

-                       "+" => 77,

-                       "==" => 78,

-                       ">=" => 79,

-                       "^" => 80,

-                       "*" => 81,

-                       "/" => 83,

-                       'AND' => 84,

-                       'OR' => 85,

-                       "<=" => 86,

-                       ">" => 87

+                       "-" => 72,

+                       ".." => 71,

+                       "<" => 74,

+                       "~=" => 73,

+                       "+" => 75,

+                       "==" => 76,

+                       ">=" => 77,

+                       "^" => 78,

+                       "*" => 79,

+                       "/" => 81,

+                       'AND' => 82,

+                       'OR' => 83,

+                       "<=" => 84,

+                       ">" => 85

                },

-               DEFAULT => -95

+               DEFAULT => -97

        },

-       {#State 188

+       {#State 190

                ACTIONS => {

-                       'END' => 192

+                       'END' => 194

                }

        },

-       {#State 189

+       {#State 191

                ACTIONS => {

-                       "-" => 74,

-                       ".." => 73,

-                       "<" => 76,

-                       "~=" => 75,

-                       "+" => 77,

-                       "/" => 83,

-                       "==" => 78,

-                       ">=" => 79,

-                       'AND' => 84,

-                       "^" => 80,

-                       "*" => 81,

-                       'THEN' => 193,

-                       "<=" => 86,

-                       'OR' => 85,

-                       ">" => 87

+                       "-" => 72,

+                       ".." => 71,

+                       "<" => 74,

+                       "~=" => 73,

+                       "+" => 75,

+                       "/" => 81,

+                       "==" => 76,

+                       ">=" => 77,

+                       'AND' => 82,

+                       "^" => 78,

+                       "*" => 79,

+                       'THEN' => 195,

+                       "<=" => 84,

+                       'OR' => 83,

+                       ">" => 85

                }

        },

-       {#State 190

+       {#State 192

                ACTIONS => {

-                       "-" => 74,

-                       ".." => 73,

-                       "<" => 76,

-                       "~=" => 75,

-                       "+" => 77,

-                       "/" => 83,

-                       "==" => 78,

-                       ">=" => 79,

-                       'AND' => 84,

-                       "^" => 80,

-                       "*" => 81,

-                       'DO' => 194,

-                       "<=" => 86,

-                       'OR' => 85,

-                       ">" => 87

+                       "-" => 72,

+                       ".." => 71,

+                       "<" => 74,

+                       "~=" => 73,

+                       "+" => 75,

+                       "/" => 81,

+                       "==" => 76,

+                       ">=" => 77,

+                       'AND' => 82,

+                       "^" => 78,

+                       "*" => 79,

+                       'DO' => 196,

+                       "<=" => 84,

+                       'OR' => 83,

+                       ">" => 85

                }

        },

-       {#State 191

+       {#State 193

                ACTIONS => {

-                       'END' => 195

+                       'END' => 197

                }

        },

-       {#State 192

+       {#State 194

                DEFAULT => -17

        },

-       {#State 193

+       {#State 195

                DEFAULT => -4,

                GOTOS => {

-                       'block' => 196,

+                       'block' => 198,

                        'chunk' => 18

                }

        },

-       {#State 194

+       {#State 196

                DEFAULT => -4,

                GOTOS => {

-                       'block' => 197,

+                       'block' => 199,

                        'chunk' => 18

                }

        },

-       {#State 195

+       {#State 197

                DEFAULT => -20

        },

-       {#State 196

-               DEFAULT => -26

+       {#State 198

+               DEFAULT => -28

        },

-       {#State 197

+       {#State 199

                ACTIONS => {

-                       'END' => 198

+                       'END' => 200

                }

        },

-       {#State 198

+       {#State 200

                DEFAULT => -19

        }

 ],

@@ -2755,81 +2767,97 @@ sub

                }

        ],

        [#Rule 22

-                'stat', 3,

+                '@1-1', 0,

 sub

 #line 139 "Lua\lua50.yp"

 {

-                       my $var = BuildVariable($_[0], $_[2]); 

-                       BuildAssigns($_[0], [$var], [$_[3]])

+                       PushScope($_[0]);

                }

        ],

        [#Rule 23

                 'stat', 4,

 sub

-#line 144 "Lua\lua50.yp"

+#line 143 "Lua\lua50.yp"

 {

-                       my $var = BuildLocalVariable($_[0], $_[3]); 

+                       my $var = BuildVariable($_[0], $_[3]); 

                        BuildAssigns($_[0], [$var], [$_[4]])

                }

        ],

        [#Rule 24

+                '@2-2', 0,

+sub

+#line 148 "Lua\lua50.yp"

+{

+                       PushScope($_[0]);

+               }

+       ],

+       [#Rule 25

+                'stat', 5,

+sub

+#line 152 "Lua\lua50.yp"

+{

+                       my $var = BuildLocalVariable($_[0], $_[4]); 

+                       BuildAssigns($_[0], [$var], [$_[5]])

+               }

+       ],

+       [#Rule 26

                 'stat', 4,

 sub

-#line 149 "Lua\lua50.yp"

+#line 157 "Lua\lua50.yp"

 {

                        BuildAssigns($_[0], $_[2], $_[4])

                }

        ],

-       [#Rule 25

+       [#Rule 27

                 'stat', 2,

 sub

-#line 153 "Lua\lua50.yp"

+#line 161 "Lua\lua50.yp"

 {

                        BuildAssigns($_[0], $_[2], [])

                }

        ],

-       [#Rule 26

+       [#Rule 28

                 '_elseif_star', 5,

 sub

-#line 160 "Lua\lua50.yp"

+#line 168 "Lua\lua50.yp"

 {

                        [EMAIL PROTECTED], [$_[3], $_[5]]];

                }

        ],

-       [#Rule 27

+       [#Rule 29

                 '_elseif_star', 0,

 sub

-#line 164 "Lua\lua50.yp"

+#line 172 "Lua\lua50.yp"

 {

                        [];

                }

        ],

-       [#Rule 28

+       [#Rule 30

                 'funcname', 1, undef

        ],

-       [#Rule 29

+       [#Rule 31

                 'funcname', 3, undef

        ],

-       [#Rule 30

+       [#Rule 32

                 '_funcname', 3,

 sub

-#line 177 "Lua\lua50.yp"

+#line 185 "Lua\lua50.yp"

 {

                        [EMAIL PROTECTED], $_[3]];

                }

        ],

-       [#Rule 31

+       [#Rule 33

                 '_funcname', 1,

 sub

-#line 181 "Lua\lua50.yp"

+#line 189 "Lua\lua50.yp"

 {

                        [$_[1]];

                }

        ],

-       [#Rule 32

+       [#Rule 34

                 'varlist1', 3,

 sub

-#line 188 "Lua\lua50.yp"

+#line 196 "Lua\lua50.yp"

 {

                        [

                                @{$_[1]}, 

@@ -2837,58 +2865,58 @@ sub

                        ]

                }

        ],

-       [#Rule 33

+       [#Rule 35

                 'varlist1', 1,

 sub

-#line 195 "Lua\lua50.yp"

+#line 203 "Lua\lua50.yp"

 {

                        [

                                BuildVariable($_[0], $_[1])

                        ]

                }

        ],

-       [#Rule 34

+       [#Rule 36

                 'var', 1,

 sub

-#line 204 "Lua\lua50.yp"

+#line 212 "Lua\lua50.yp"

 {

                        [$_[1]];

                }

        ],

-       [#Rule 35

+       [#Rule 37

                 'var', 4, undef

        ],

-       [#Rule 36

+       [#Rule 38

                 'var', 2, undef

        ],

-       [#Rule 37

+       [#Rule 39

                 'var', 2,

 sub

-#line 210 "Lua\lua50.yp"

+#line 218 "Lua\lua50.yp"

 {

                        [EMAIL PROTECTED], $_[2]];

                }

        ],

-       [#Rule 38

+       [#Rule 40

                 'key', 3,

 sub

-#line 217 "Lua\lua50.yp"

+#line 225 "Lua\lua50.yp"

 {

                        $_[2];

                }

        ],

-       [#Rule 39

+       [#Rule 41

                 'key', 2,

 sub

-#line 221 "Lua\lua50.yp"

+#line 229 "Lua\lua50.yp"

 {

                        BuildLiteral($_[0], $_[2], 'key');

                }

        ],

-       [#Rule 40

+       [#Rule 42

                 'namelist', 3,

 sub

-#line 228 "Lua\lua50.yp"

+#line 236 "Lua\lua50.yp"

 {

                        [

                                @{$_[1]},

@@ -2896,61 +2924,45 @@ sub

                        ];

                }

        ],

-       [#Rule 41

+       [#Rule 43

                 'namelist', 1,

 sub

-#line 235 "Lua\lua50.yp"

+#line 243 "Lua\lua50.yp"

 {

                        [

                                BuildLocalVariable($_[0], $_[1])

                        ]

                }

        ],

-       [#Rule 42

+       [#Rule 44

                 'explist1', 3,

 sub

-#line 244 "Lua\lua50.yp"

+#line 252 "Lua\lua50.yp"

 {

                        [EMAIL PROTECTED], $_[3]];

                }

        ],

-       [#Rule 43

+       [#Rule 45

                 'explist1', 1,

 sub

-#line 248 "Lua\lua50.yp"

+#line 256 "Lua\lua50.yp"

 {

                        [$_[1]];

                }

        ],

-       [#Rule 44

-                'exp', 1, undef

-       ],

-       [#Rule 45

-                'exp', 1,

-sub

-#line 257 "Lua\lua50.yp"

-{

-                       BuildCallVariable($_[0], $_[1]);

-               }

-       ],

        [#Rule 46

                 'exp', 1, undef

        ],

        [#Rule 47

-                'exp', 3,

+                'exp', 1,

 sub

-#line 263 "Lua\lua50.yp"

+#line 265 "Lua\lua50.yp"

 {

-                       BuildBinop($_[0], $_[1], $_[2], $_[3]);

+                       BuildCallVariable($_[0], $_[1]);

                }

        ],

        [#Rule 48

-                'exp', 3,

-sub

-#line 267 "Lua\lua50.yp"

-{

-                       BuildBinop($_[0], $_[1], $_[2], $_[3]);

-               }

+                'exp', 1, undef

        ],

        [#Rule 49

                 'exp', 3,

@@ -2989,7 +3001,7 @@ sub

 sub

 #line 287 "Lua\lua50.yp"

 {

-                       BuildRelop($_[0], $_[1], $_[2], $_[3]);

+                       BuildBinop($_[0], $_[1], $_[2], $_[3]);

                }

        ],

        [#Rule 54

@@ -2997,7 +3009,7 @@ sub

 sub

 #line 291 "Lua\lua50.yp"

 {

-                       BuildRelop($_[0], $_[1], $_[2], $_[3]);

+                       BuildBinop($_[0], $_[1], $_[2], $_[3]);

                }

        ],

        [#Rule 55

@@ -3037,7 +3049,7 @@ sub

 sub

 #line 311 "Lua\lua50.yp"

 {

-                       BuildLogop($_[0], $_[1], $_[2], $_[3]);

+                       BuildRelop($_[0], $_[1], $_[2], $_[3]);

                }

        ],

        [#Rule 60

@@ -3045,39 +3057,39 @@ sub

 sub

 #line 315 "Lua\lua50.yp"

 {

-                       BuildLogop($_[0], $_[1], $_[2], $_[3]);

+                       BuildRelop($_[0], $_[1], $_[2], $_[3]);

                }

        ],

        [#Rule 61

-                'exp', 2,

+                'exp', 3,

 sub

 #line 319 "Lua\lua50.yp"

 {

-                       BuildUnop($_[0], $_[1], $_[2]);

+                       BuildLogop($_[0], $_[1], $_[2], $_[3]);

                }

        ],

        [#Rule 62

-                'exp', 2,

+                'exp', 3,

 sub

 #line 323 "Lua\lua50.yp"

 {

-                       BuildUnop($_[0], $_[1], $_[2]);

+                       BuildLogop($_[0], $_[1], $_[2], $_[3]);

                }

        ],

        [#Rule 63

-                'primary', 1,

+                'exp', 2,

 sub

-#line 330 "Lua\lua50.yp"

+#line 327 "Lua\lua50.yp"

 {

-                       BuildLiteral($_[0], $_[1], 'nil');

+                       BuildUnop($_[0], $_[1], $_[2]);

                }

        ],

        [#Rule 64

-                'primary', 1,

+                'exp', 2,

 sub

-#line 334 "Lua\lua50.yp"

+#line 331 "Lua\lua50.yp"

 {

-                       BuildLiteral($_[0], $_[1], 'boolean');

+                       BuildUnop($_[0], $_[1], $_[2]);

                }

        ],

        [#Rule 65

@@ -3085,7 +3097,7 @@ sub

 sub

 #line 338 "Lua\lua50.yp"

 {

-                       BuildLiteral($_[0], $_[1], 'boolean');

+                       BuildLiteral($_[0], $_[1], 'nil');

                }

        ],

        [#Rule 66

@@ -3093,7 +3105,7 @@ sub

 sub

 #line 342 "Lua\lua50.yp"

 {

-                       BuildLiteral($_[0], $_[1], 'number');

+                       BuildLiteral($_[0], $_[1], 'boolean');

                }

        ],

        [#Rule 67

@@ -3101,121 +3113,137 @@ sub

 sub

 #line 346 "Lua\lua50.yp"

 {

-                       BuildLiteral($_[0], $_[1], 'string');

+                       BuildLiteral($_[0], $_[1], 'boolean');

                }

        ],

        [#Rule 68

-                'primary', 1, undef

+                'primary', 1,

+sub

+#line 350 "Lua\lua50.yp"

+{

+                       BuildLiteral($_[0], $_[1], 'number');

+               }

        ],

        [#Rule 69

-                'primary', 1, undef

+                'primary', 1,

+sub

+#line 354 "Lua\lua50.yp"

+{

+                       BuildLiteral($_[0], $_[1], 'string');

+               }

        ],

        [#Rule 70

+                'primary', 1, undef

+       ],

+       [#Rule 71

+                'primary', 1, undef

+       ],

+       [#Rule 72

                 'primary', 3,

 sub

-#line 354 "Lua\lua50.yp"

+#line 362 "Lua\lua50.yp"

 {

                        BuildParenthesedExpression($_[0], $_[2]);

                }

        ],

-       [#Rule 71

+       [#Rule 73

                 'functioncall', 4,

 sub

-#line 361 "Lua\lua50.yp"

+#line 369 "Lua\lua50.yp"

 {

                        BuildCallFunction($_[0], $_[2], $_[4]);

                }

        ],

-       [#Rule 72

+       [#Rule 74

                 'functioncall', 6, undef

        ],

-       [#Rule 73

+       [#Rule 75

                 'functioncall', 2,

 sub

-#line 366 "Lua\lua50.yp"

+#line 374 "Lua\lua50.yp"

 {

                        my $fct = BuildCallVariable($_[0], $_[1]);

                        BuildCallFunction($_[0], $fct, $_[2]);

                }

        ],

-       [#Rule 74

+       [#Rule 76

                 'functioncall', 4, undef

        ],

-       [#Rule 75

+       [#Rule 77

                 'functioncall', 2,

 sub

-#line 372 "Lua\lua50.yp"

+#line 380 "Lua\lua50.yp"

 {

                        BuildCallFunction($_[0], $_[1], $_[2]);

                }

        ],

-       [#Rule 76

+       [#Rule 78

                 'functioncall', 4, undef

        ],

-       [#Rule 77

+       [#Rule 79

                 'args', 3,

 sub

-#line 380 "Lua\lua50.yp"

+#line 388 "Lua\lua50.yp"

 {

                        $_[2];

                }

        ],

-       [#Rule 78

+       [#Rule 80

                 'args', 2,

 sub

-#line 384 "Lua\lua50.yp"

+#line 392 "Lua\lua50.yp"

 {

                        [];

                }

        ],

-       [#Rule 79

+       [#Rule 81

                 'args', 1,

 sub

-#line 388 "Lua\lua50.yp"

+#line 396 "Lua\lua50.yp"

 {

                        [

                                $_[1]

                        ]

                }

        ],

-       [#Rule 80

+       [#Rule 82

                 'args', 1,

 sub

-#line 394 "Lua\lua50.yp"

+#line 402 "Lua\lua50.yp"

 {

                        [

                                BuildLiteral($_[0], $_[1], 'string')

                        ]

                }

        ],

-       [#Rule 81

+       [#Rule 83

                 'function', 2,

 sub

-#line 403 "Lua\lua50.yp"

+#line 411 "Lua\lua50.yp"

 {

                        $_[2];

                }

        ],

-       [#Rule 82

+       [#Rule 84

                 'funcbody', 5,

 sub

-#line 410 "Lua\lua50.yp"

+#line 418 "Lua\lua50.yp"

 {

                        BuildFunctionBody($_[0], $_[2], $_[4]);

                }

        ],

-       [#Rule 83

+       [#Rule 85

                 'funcbody', 4,

 sub

-#line 414 "Lua\lua50.yp"

+#line 422 "Lua\lua50.yp"

 {

                        BuildFunctionBody($_[0], [], $_[3]);

                }

        ],

-       [#Rule 84

+       [#Rule 86

                 'parlist1', 3,

 sub

-#line 421 "Lua\lua50.yp"

+#line 429 "Lua\lua50.yp"

 {

                        [

                                @{$_[1]},

@@ -3223,23 +3251,23 @@ sub

                        ];

                }

        ],

-       [#Rule 85

+       [#Rule 87

                 'parlist1', 1, undef

        ],

-       [#Rule 86

+       [#Rule 88

                 'parlist1', 1,

 sub

-#line 430 "Lua\lua50.yp"

+#line 438 "Lua\lua50.yp"

 {

                        [

                                BuildParam($_[0], $_[1])

                        ];

                }

        ],

-       [#Rule 87

+       [#Rule 89

                 'parlist', 3,

 sub

-#line 439 "Lua\lua50.yp"

+#line 447 "Lua\lua50.yp"

 {

                        [

                                @{$_[1]},

@@ -3247,82 +3275,82 @@ sub

                        ];

                }

        ],

-       [#Rule 88

+       [#Rule 90

                 'parlist', 1,

 sub

-#line 446 "Lua\lua50.yp"

+#line 454 "Lua\lua50.yp"

 {

                        [

                                BuildParam($_[0], $_[1])

                        ]

                }

        ],

-       [#Rule 89

+       [#Rule 91

                 'tableconstructor', 3,

 sub

-#line 455 "Lua\lua50.yp"

+#line 463 "Lua\lua50.yp"

 {

                        BuildTable($_[0], $_[2]);

                }

        ],

-       [#Rule 90

+       [#Rule 92

                 'tableconstructor', 2,

 sub

-#line 459 "Lua\lua50.yp"

+#line 467 "Lua\lua50.yp"

 {

                        BuildTable($_[0], []);

                }

        ],

-       [#Rule 91

+       [#Rule 93

                 'fieldlist', 2, undef

        ],

-       [#Rule 92

+       [#Rule 94

                 'fieldlist', 1, undef

        ],

-       [#Rule 93

+       [#Rule 95

                 '_field_plus', 3,

 sub

-#line 473 "Lua\lua50.yp"

+#line 481 "Lua\lua50.yp"

 {

                        [EMAIL PROTECTED], $_[3]];

                }

        ],

-       [#Rule 94

+       [#Rule 96

                 '_field_plus', 1,

 sub

-#line 477 "Lua\lua50.yp"

+#line 485 "Lua\lua50.yp"

 {

                        [$_[1]];

                }

        ],

-       [#Rule 95

+       [#Rule 97

                 'field', 5,

 sub

-#line 484 "Lua\lua50.yp"

+#line 492 "Lua\lua50.yp"

 {

                        [$_[2], $_[5]]

                }

        ],

-       [#Rule 96

+       [#Rule 98

                 'field', 3,

 sub

-#line 488 "Lua\lua50.yp"

+#line 496 "Lua\lua50.yp"

 {

                        [BuildLiteral($_[0], $_[1], 'key'), $_[3]]

                }

        ],

-       [#Rule 97

+       [#Rule 99

                 'field', 1,

 sub

-#line 492 "Lua\lua50.yp"

+#line 500 "Lua\lua50.yp"

 {

                        [$_[1]]

                }

        ],

-       [#Rule 98

+       [#Rule 100

                 'fieldsep', 1, undef

        ],

-       [#Rule 99

+       [#Rule 101

                 'fieldsep', 1, undef

        ]

 ],

@@ -3330,7 +3358,7 @@ sub

     bless($self,$class);

 }

 

-#line 504 "Lua\lua50.yp"

+#line 512 "Lua\lua50.yp"

 

 

 package Lua::parser;

@@ -3357,6 +3385,7 @@ sub Run {

        $parser->YYData->{srcname_mtime} = $st[9];

        $parser->_InitLexico();

        $parser->YYData->{functs} = [];

+       $parser->YYData->{scope} = [];

        $parser->YYData->{symbtab} = new SymbTabVar($parser);

        $parser->YYData->{symbtab_cst} = new SymbTabConst($parser);

        $parser->YYData->{idx_tmp} = 0;


Modified: trunk/languages/lua/Lua/pir.pm
==============================================================================
--- trunk/languages/lua/Lua/pir.pm      (original)
+++ trunk/languages/lua/Lua/pir.pm      Thu Jan 26 23:56:36 2006
@@ -94,6 +94,13 @@ sub visitCloneOp {

        print $FH "    $op->{result}->{symbol} = clone $op->{arg1}->{symbol}\n";

 }

 

+sub visitNewOp {

+       my $self = shift;

+       my ($op) = @_;

+       my $FH = $self->{fh};

+       print $FH "    $op->{result}->{symbol} = new $op->{arg1}\n";

+}

+

 sub visitNoOp {

        my $self = shift;

        my ($op) = @_;


Modified: trunk/languages/lua/doc/lua50.y
==============================================================================
--- trunk/languages/lua/doc/lua50.y     (original)
+++ trunk/languages/lua/doc/lua50.y     Thu Jan 26 23:56:36 2006
@@ -73,8 +73,10 @@ stat

 |      FOR     NAME    '='     exp     ','     exp     ','     exp     DO      
block   END

 |      FOR     NAME    '='     exp     ','     exp     DO      block   END

 |      FOR     namelist        IN      explist1        DO      block   END

-|      FUNCTION        funcname        funcbody

-|      LOCAL   FUNCTION        NAME    funcbody

+|      FUNCTION

+                               funcname        funcbody

+|      LOCAL   FUNCTION

+                                               NAME    funcbody

 |      LOCAL   namelist        '='     explist1

 |      LOCAL   namelist

 ;


Modified: trunk/languages/lua/lib/luapir.pir
==============================================================================
--- trunk/languages/lua/lib/luapir.pir  (original)
+++ trunk/languages/lua/lib/luapir.pir  Thu Jan 26 23:56:36 2006
@@ -150,6 +150,8 @@ Support variable number of arguments fun
     .local int i
     new ret, .LuaTable
     new key, .LuaNumber
+    key = 0
+    if_null argv, L2
     argc = argv
     i = 0
 L1:

Modified: trunk/languages/lua/t/function.t
==============================================================================
--- trunk/languages/lua/t/function.t    (original)
+++ trunk/languages/lua/t/function.t    Thu Jan 26 23:56:36 2006
@@ -53,10 +53,10 @@ OUT

 

 

 language_output_is( 'lua', <<'CODE', <<'OUT', 'var args' );

-local function f() return 1, 2 end

-local function g() return "a", f() end

-local function h() return f(), "b" end

-local function k() return "c", (f()) end

+function f() return 1, 2 end

+function g() return "a", f() end

+function h() return f(), "b" end

+function k() return "c", (f()) end

 

 print(f())

 print(g())


Modified: trunk/languages/lua/t/if.t
==============================================================================
--- trunk/languages/lua/t/if.t  (original)
+++ trunk/languages/lua/t/if.t  Thu Jan 26 23:56:36 2006
@@ -1,5 +1,5 @@
 #! perl -w

-# Copyright: 2005 The Perl Foundation.  All Rights Reserved.

+# Copyright: 2005-2006 The Perl Foundation.  All Rights Reserved.

 # $Id$

 

 =head1 NAME

@@ -64,7 +64,7 @@ language_output_is( 'lua', <<'CODE', <<'
 a = 3

 b = 7

 op = "*"

-r = 0

+r = 0 -- fix

 if op == "+" then

     r = a + b

 elseif op == "-" then

Reply via email to