From: Peter Johnson Date: Sun, 2 Dec 2001 21:18:04 +0000 (-0000) Subject: Allow overrides (a32/a16/rep/etc) to appear on their own line. The way this X-Git-Tag: v0.1.0~153 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=758edc89e70362f686fcfbdc110b43f7f4a3d2bd;p=yasm Allow overrides (a32/a16/rep/etc) to appear on their own line. The way this 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 --- diff --git a/modules/parsers/nasm/bison.y.in b/modules/parsers/nasm/bison.y.in index 66d913c7..26eaeb9d 100644 --- a/modules/parsers/nasm/bison.y.in +++ b/modules/parsers/nasm/bison.y.in @@ -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 { diff --git a/modules/parsers/nasm/nasm-bison.y b/modules/parsers/nasm/nasm-bison.y index 66d913c7..26eaeb9d 100644 --- a/modules/parsers/nasm/nasm-bison.y +++ b/modules/parsers/nasm/nasm-bison.y @@ -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 { diff --git a/src/parsers/nasm/bison.y.in b/src/parsers/nasm/bison.y.in index 66d913c7..26eaeb9d 100644 --- a/src/parsers/nasm/bison.y.in +++ b/src/parsers/nasm/bison.y.in @@ -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 { diff --git a/src/parsers/nasm/nasm-bison.y b/src/parsers/nasm/nasm-bison.y index 66d913c7..26eaeb9d 100644 --- a/src/parsers/nasm/nasm-bison.y +++ b/src/parsers/nasm/nasm-bison.y @@ -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 {