forked from GitHub/gf-core
now (+) in the abstract syntax works, i.e. it knows how to deal with partial sums
This commit is contained in:
@@ -177,7 +177,11 @@ instance Binary Instr where
|
||||
put (DROP n ) = putWord8 64 >> put n
|
||||
put (JUMP l ) = putWord8 68 >> put l
|
||||
put (FAIL ) = putWord8 72
|
||||
put (ADD ) = putWord8 76
|
||||
put (PUSH_ACCUM (LInt n)) = putWord8 76 >> put n
|
||||
put (PUSH_ACCUM (LStr s)) = putWord8 77 >> put s
|
||||
put (PUSH_ACCUM (LFlt d)) = putWord8 78 >> put d
|
||||
put (POP_ACCUM ) = putWord8 80
|
||||
put (ADD ) = putWord8 84
|
||||
|
||||
instance Binary Type where
|
||||
put (DTyp hypos cat exps) = put (hypos,cat,exps)
|
||||
|
||||
@@ -32,6 +32,8 @@ data Instr
|
||||
| DROP {-# UNPACK #-} !Int
|
||||
| JUMP {-# UNPACK #-} !CodeLabel
|
||||
| FAIL
|
||||
| PUSH_ACCUM Literal
|
||||
| POP_ACCUM
|
||||
| ADD
|
||||
|
||||
data IVal
|
||||
@@ -71,6 +73,8 @@ ppInstr (TUCK v n ) = text "TUCK " <+> ppIVal v <+> int n
|
||||
ppInstr (DROP n ) = text "DROP " <+> int n
|
||||
ppInstr (JUMP l ) = text "JUMP " <+> ppLabel l
|
||||
ppInstr (FAIL ) = text "FAIL"
|
||||
ppInstr (PUSH_ACCUM lit) = text "PUSH_ACCUM " <+> ppLit lit
|
||||
ppInstr (POP_ACCUM ) = text "POP_ACCUM"
|
||||
ppInstr (ADD ) = text "ADD"
|
||||
|
||||
ppIVal (HEAP n) = text "hp" <> parens (int n)
|
||||
|
||||
Reference in New Issue
Block a user