60 lines · 1.3 KB · Standard ML
RawDownload
(* The type of primitives *) local  open Const;in datatype primitive =    Pidentity  | Pget_global of QualifiedIdent * int  | Pset_global of QualifiedIdent * int  | Pdummy of int  | Pupdate  | Ptest of bool_test  | Pmakeblock of BlockTag  | Ptag_of  | Pfield of int  | Psetfield of int  | Pccall of string * int  | Praise  | Pnot  (* The next five are unsigned operations: *)  | Paddint | Psubint | Pmulint | Pdivint | Pmodint  | Pandint | Porint | Pxorint  | Pshiftleftint | Pshiftrightintsigned | Pshiftrightintunsigned  | Pintoffloat  | Pfloatprim of float_primitive  | Pstringlength | Pgetstringchar | Psetstringchar  | Pmakevector | Pvectlength | Pgetvectitem | Psetvectitem  | Psmlnegint | Psmlsuccint | Psmlpredint  | Psmladdint | Psmlsubint | Psmlmulint | Psmldivint | Psmlmodint  | Pmakerefvector  | Patom of int  | Psmlquotint | Psmlremint  | Pclosure of int * int  | Pswap and float_primitive =    Pfloatofint  | Psmlnegfloat | Psmladdfloat | Psmlsubfloat | Psmlmulfloat | Psmldivfloat and bool_test =    Peq_test  | Pnoteq_test  | Pint_test of int prim_test  | Pfloat_test of real prim_test  | Pstring_test of string prim_test  | Pword_test of word prim_test  | Pnoteqtag_test of BlockTag and 'a prim_test =    PTeq  | PTnoteq  | PTnoteqimm of 'a  | PTlt  | PTle  | PTgt  | PTge; end;