include "lib.cd"; package asm; Asm = OpList. //EOF. Opcode: MathOp | MemOp | ControlOp. MathOp: Plus | Minus | Times | Divide | Less | Greater | Equal | And | Or. MemOp: Push | Pop | Def | Undef | Load. ControlOp: Label | Jmp | IfZ. Less = "less". Greater = "greater". Equal = "equal". And = "and". Or = "or". Plus = "plus". Minus = "minus". Times = "times". Divide = "divide". Push = "push" *s int. Pop = "pop". Def = "def". Undef = "undef". Load = "load" *s int. Label = "label" *s ident. Jmp = "jump" *s ident. IfZ = "ifzero" *s ident. IfNZ = "ifnzero" *s ident. OpList: OpCons | OpEmpty. OpCons = *s*s*s*s*s*s*s Opcode *l OpList. OpEmpty = . ExecStack = . Entry =