diff options
Diffstat (limited to 'asm/asmpars.mly')
-rw-r--r-- | asm/asmpars.mly | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/asm/asmpars.mly b/asm/asmpars.mly index 76b5ce2..258396e 100644 --- a/asm/asmpars.mly +++ b/asm/asmpars.mly @@ -58,23 +58,23 @@ program: lbls = !lbls2 } } data: - DATA d=datas* { d } - + DATA d=datas* { d } + datas: | labeld datas { () } | BYTE n=INT { add ram n } | WORD n=INT { add ram (2*n) } labeli: - id=ID COLON { lbls2 := Imap.add id (!pc,true) !lbls2 } + id=ID COLON { lbls2 := Imap.add id (!pc,true) !lbls2 } labeld: - id=ID COLON { lbls2 := Imap.add id (!ram,false) !lbls2 } + id=ID COLON { lbls2 := Imap.add id (!ram,false) !lbls2 } instr: - | labeli i=instr { i } - | i=_instr { i } - + | labeli i=instr { i } + | i=_instr { i } + _instr: | o=ROP r1=REG r2=REG r3=REG { add pc 2; [R (o,r1,r2,r3)] } | o=RIOP r1=REG r2=REG imm=imm @@ -129,9 +129,9 @@ _instr: | MOVE r1=REG r2=REG { add pc 2; [R (Add,r1,r2,0)] } | NOT r1=REG r2=REG { add pc 2; [R (Nor,r1,r2,0)] } | JZ r=REG l=ID { let l = li false 5 (Lab l) in - add pc 2; l @ [R (Jer,r,5,0)] } + add pc 2; l @ [R (Jer,5,r,0)] } | JNZ r=REG l=ID { let l = li false 5 (Lab l) in - add pc 2; l @ [R (Jner,r,5,0)] } + add pc 2; l @ [R (Jner,5,r,0)] } | POP r=REG { add pc 4; [Lw (r,7,0); Incri (7,2)] } | PUSH r=REG { add pc 4; [Incri (7,-2); Sw (r,7,0)] } | BYTE bs=int+ SEMIC { List.map (fun b -> add pc 1; Byte b) bs } @@ -140,9 +140,9 @@ _instr: | ASCII s=STR { List.map (fun c -> add pc 1; Byte (Char.code c)) s } imm: - | id=ID { Lab id } - | n=int { Imm n } + | id=ID { Lab id } + | n=int { Imm n } int: - | n=INT { n } - | MINUS n=INT { - n } + | n=INT { n } + | MINUS n=INT { - n } |