class Bytecode

pri next : Bytecode;

pri previous : Bytecode;

pri code : Int;

meth SetNext =^ ( val n: Bytecode

next:= n;

)

end

meth GetNext =^ ( res n: Bytecode

n:= next;

)

end

meth SetPrevious =^ ( val p: bytecode

Previous:= p;

)

end

meth GetPrevious =^ ( res p: bytecode

p:= previous;

)

end

meth Setcode =^ ( val c: Int

code:= c;

)

end

meth Getcode =^ ( res c: Int

c:= code;

)

end

 

meth GetOp =^ (res op: Int

op:= code;

)

end

meth GetNextBytecode =^ (res n: bytecode

n:= next;

)

end

meth Branch =^ (vres bc: Bytecode; val branchoffset: Int

If [] branchoffset > 0

bc.GetNext(bc);

bc.Branch(bc, branchoffset –1);

[] branchoffset < 0

bc.GetPrevious(bc);

bc.Branch(bc, branchoffset +1);

[] branchoffset = 0 skip;

fi

)

end

end