]> granicus.if.org Git - yasm/commitdiff
EQU's should not affect local label mechanism.
authorPeter Johnson <peter@tortall.net>
Thu, 3 Oct 2002 07:48:12 +0000 (07:48 -0000)
committerPeter Johnson <peter@tortall.net>
Thu, 3 Oct 2002 07:48:12 +0000 (07:48 -0000)
svn path=/trunk/yasm/; revision=726

modules/parsers/nasm/nasm-bison.y
src/parsers/nasm/nasm-bison.y

index d29a611a219330624ffec693c6e59a27cbe79d67..d2cfd55d0240043d2cea6235b0a0300555eeefe5 100644 (file)
@@ -107,7 +107,7 @@ static bytecode *nasm_parser_temp_bc;
 %type <ea> memaddr
 %type <exp> dvexpr expr direxpr
 %type <sym> explabel
-%type <str_val> label_id
+%type <str_val> label_id label_id_equ
 %type <data> dataval
 %type <datahead> datavals
 %type <dir_valparams> directive_valparams
@@ -164,7 +164,7 @@ lineexp: exp
     | label                            { $$ = (bytecode *)NULL; }
     | label exp                                { $$ = $2; }
     | label TIMES expr exp             { $$ = $4; bc_set_multiple($$, $3); }
-    | label_id EQU expr                        {
+    | label_id_equ EQU expr            {
        symrec_define_equ($1, $3);
        xfree($1);
        $$ = (bytecode *)NULL;
@@ -240,6 +240,11 @@ label_id: ID           {
     | LOCAL_ID
 ;
 
+label_id_equ: ID
+    | SPECIAL_ID
+    | LOCAL_ID
+;
+
 /* directives */
 directive: DIRECTIVE_NAME directive_val        {
        xfree($1);
index d29a611a219330624ffec693c6e59a27cbe79d67..d2cfd55d0240043d2cea6235b0a0300555eeefe5 100644 (file)
@@ -107,7 +107,7 @@ static bytecode *nasm_parser_temp_bc;
 %type <ea> memaddr
 %type <exp> dvexpr expr direxpr
 %type <sym> explabel
-%type <str_val> label_id
+%type <str_val> label_id label_id_equ
 %type <data> dataval
 %type <datahead> datavals
 %type <dir_valparams> directive_valparams
@@ -164,7 +164,7 @@ lineexp: exp
     | label                            { $$ = (bytecode *)NULL; }
     | label exp                                { $$ = $2; }
     | label TIMES expr exp             { $$ = $4; bc_set_multiple($$, $3); }
-    | label_id EQU expr                        {
+    | label_id_equ EQU expr            {
        symrec_define_equ($1, $3);
        xfree($1);
        $$ = (bytecode *)NULL;
@@ -240,6 +240,11 @@ label_id: ID           {
     | LOCAL_ID
 ;
 
+label_id_equ: ID
+    | SPECIAL_ID
+    | LOCAL_ID
+;
+
 /* directives */
 directive: DIRECTIVE_NAME directive_val        {
        xfree($1);