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
}
;
-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 {
}
;
-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 {
}
;
-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 {
}
;
-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 {