]> granicus.if.org Git - yasm/commitdiff
Allow overrides (a32/a16/rep/etc) to appear on their own line. The way this
authorPeter Johnson <peter@tortall.net>
Sun, 2 Dec 2001 21:18:04 +0000 (21:18 -0000)
committerPeter Johnson <peter@tortall.net>
Sun, 2 Dec 2001 21:18:04 +0000 (21:18 -0000)
is done in the grammer causes 1 shift/reduce and 1 reduce/reduce conflict, but
yacc's default resolution gives correct results, and as the generated grammer
is smaller this way than specifically handling each prefix, we do it this way.

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

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

index 66d913c785400f6509be42047f42962392203194..26eaeb9d66bf8d7796d1217e623a88f189e96756 100644 (file)
@@ -647,7 +647,11 @@ explabel: ID               {
     }
 ;
 
-instr: instrbase
+instr: /* empty */     {
+       idata.opersize=0; idata.op_len=0; idata.ea=NULL; idata.imm=NULL;
+       $$ = x86_bc_new_insn(&idata);
+    }
+    | instrbase
     | OPERSIZE instr   { $$ = $2; x86_bc_insn_opersize_override($$, $1); }
     | ADDRSIZE instr   { $$ = $2; x86_bc_insn_addrsize_override($$, $1); }
     | REG_CS instr     {
index 66d913c785400f6509be42047f42962392203194..26eaeb9d66bf8d7796d1217e623a88f189e96756 100644 (file)
@@ -647,7 +647,11 @@ explabel: ID               {
     }
 ;
 
-instr: instrbase
+instr: /* empty */     {
+       idata.opersize=0; idata.op_len=0; idata.ea=NULL; idata.imm=NULL;
+       $$ = x86_bc_new_insn(&idata);
+    }
+    | instrbase
     | OPERSIZE instr   { $$ = $2; x86_bc_insn_opersize_override($$, $1); }
     | ADDRSIZE instr   { $$ = $2; x86_bc_insn_addrsize_override($$, $1); }
     | REG_CS instr     {
index 66d913c785400f6509be42047f42962392203194..26eaeb9d66bf8d7796d1217e623a88f189e96756 100644 (file)
@@ -647,7 +647,11 @@ explabel: ID               {
     }
 ;
 
-instr: instrbase
+instr: /* empty */     {
+       idata.opersize=0; idata.op_len=0; idata.ea=NULL; idata.imm=NULL;
+       $$ = x86_bc_new_insn(&idata);
+    }
+    | instrbase
     | OPERSIZE instr   { $$ = $2; x86_bc_insn_opersize_override($$, $1); }
     | ADDRSIZE instr   { $$ = $2; x86_bc_insn_addrsize_override($$, $1); }
     | REG_CS instr     {
index 66d913c785400f6509be42047f42962392203194..26eaeb9d66bf8d7796d1217e623a88f189e96756 100644 (file)
@@ -647,7 +647,11 @@ explabel: ID               {
     }
 ;
 
-instr: instrbase
+instr: /* empty */     {
+       idata.opersize=0; idata.op_len=0; idata.ea=NULL; idata.imm=NULL;
+       $$ = x86_bc_new_insn(&idata);
+    }
+    | instrbase
     | OPERSIZE instr   { $$ = $2; x86_bc_insn_opersize_override($$, $1); }
     | ADDRSIZE instr   { $$ = $2; x86_bc_insn_addrsize_override($$, $1); }
     | REG_CS instr     {