diff options
Diffstat (limited to 'ShowSyntax.sml')
| -rw-r--r-- | ShowSyntax.sml | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/ShowSyntax.sml b/ShowSyntax.sml new file mode 100644 index 0000000..645ef84 --- /dev/null +++ b/ShowSyntax.sml @@ -0,0 +1,190 @@ +(* + This file was generated by generate-show-syntax.sml. Do not edit manually. + To regenerate, use + + sml generate-show-syntax.sml -o ShowSyntax.sml Syntax.sml +*) + +structure ShowSyntax = struct +fun intToStringI (_ : string) (i : int) : string = Int.toString i + +fun varToStringI (_ : string) (v : Syntax.var) : string = "Var " ^ Int.toString v + +fun stringToStringI (_ : string) (s : string) : string = "\"" ^ String.toString s ^ "\"" + +fun optionToString (_ : string -> 'a -> string) (_ : string) NONE : string = "NONE" + | optionToString show indent (SOME x) = "SOME (" ^ show indent x ^ ")" + +fun listToString (_ : string -> 'a -> string) (_ : string) ([] : 'a list) : string = "[]" + | listToString show indent [x] = "[" ^ show indent x ^ "]" + | listToString show indent xs = + let val indent' = indent ^ " " in + "[\n" ^ indent' ^ String.concatWith (",\n" ^ indent') (map (show indent') xs) ^ "\n" ^ indent ^ "]" + end + +fun etypeToStringI (indent : string) (Syntax.Tyvar x : Syntax.etype) : string = + "Tyvar " ^ stringToStringI indent x + | etypeToStringI (indent : string) (Syntax.Tycon x : Syntax.etype) : string = + "Tycon " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ listToString (etypeToStringI) indent' x0 ^ ",\n" ^ indent' ^ stringToStringI indent' x1 ^ "\n" ^ indent ^ ")" end) indent x + | etypeToStringI (indent : string) (Syntax.TyTuple x : Syntax.etype) : string = + "TyTuple " ^ listToString (etypeToStringI) indent x + | etypeToStringI (indent : string) (Syntax.Tyfun x : Syntax.etype) : string = + "Tyfun " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ etypeToStringI indent' x0 ^ ",\n" ^ indent' ^ etypeToStringI indent' x1 ^ "\n" ^ indent ^ ")" end) indent x +and etypeToString (x : Syntax.etype) : string = etypeToStringI "" x + +and patToStringI (indent : string) (Syntax.PWild : Syntax.pat) : string = + "PWild" + | patToStringI (indent : string) (Syntax.PVar x : Syntax.pat) : string = + "PVar " ^ stringToStringI indent x + | patToStringI (indent : string) (Syntax.PInt x : Syntax.pat) : string = + "PInt " ^ intToStringI indent x + | patToStringI (indent : string) (Syntax.PTuple x : Syntax.pat) : string = + "PTuple " ^ listToString (patToStringI) indent x + | patToStringI (indent : string) (Syntax.PCon x : Syntax.pat) : string = + "PCon " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ listToString (stringToStringI) indent' x0 ^ ",\n" ^ indent' ^ patToStringI indent' x1 ^ "\n" ^ indent ^ ")" end) indent x +and patToString (x : Syntax.pat) : string = patToStringI "" x + +and exprToStringI (indent : string) (Syntax.EIdent x : Syntax.expr) : string = + "EIdent " ^ listToString (stringToStringI) indent x + | exprToStringI (indent : string) (Syntax.EBuiltin x : Syntax.expr) : string = + "EBuiltin " ^ stringToStringI indent x + | exprToStringI (indent : string) (Syntax.EInt x : Syntax.expr) : string = + "EInt " ^ intToStringI indent x + | exprToStringI (indent : string) (Syntax.EStr x : Syntax.expr) : string = + "EStr " ^ stringToStringI indent x + | exprToStringI (indent : string) (Syntax.ETuple x : Syntax.expr) : string = + "ETuple " ^ listToString (exprToStringI) indent x + | exprToStringI (indent : string) (Syntax.EList x : Syntax.expr) : string = + "EList " ^ listToString (exprToStringI) indent x + | exprToStringI (indent : string) (Syntax.EApp x : Syntax.expr) : string = + "EApp " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ exprToStringI indent' x0 ^ ",\n" ^ indent' ^ exprToStringI indent' x1 ^ "\n" ^ indent ^ ")" end) indent x + | exprToStringI (indent : string) (Syntax.ETyped x : Syntax.expr) : string = + "ETyped " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ exprToStringI indent' x0 ^ ",\n" ^ indent' ^ etypeToStringI indent' x1 ^ "\n" ^ indent ^ ")" end) indent x + | exprToStringI (indent : string) (Syntax.EAndAlso x : Syntax.expr) : string = + "EAndAlso " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ exprToStringI indent' x0 ^ ",\n" ^ indent' ^ exprToStringI indent' x1 ^ "\n" ^ indent ^ ")" end) indent x + | exprToStringI (indent : string) (Syntax.EOrElse x : Syntax.expr) : string = + "EOrElse " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ exprToStringI indent' x0 ^ ",\n" ^ indent' ^ exprToStringI indent' x1 ^ "\n" ^ indent ^ ")" end) indent x + | exprToStringI (indent : string) (Syntax.ELet x : Syntax.expr) : string = + "ELet " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ listToString (decToStringI) indent' x0 ^ ",\n" ^ indent' ^ exprToStringI indent' x1 ^ "\n" ^ indent ^ ")" end) indent x + | exprToStringI (indent : string) (Syntax.ELambda x : Syntax.expr) : string = + "ELambda " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ patToStringI indent' x0 ^ ",\n" ^ indent' ^ exprToStringI indent' x1 ^ "\n" ^ indent ^ ")" end) indent x + | exprToStringI (indent : string) (Syntax.ECase x : Syntax.expr) : string = + "ECase " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ exprToStringI indent' x0 ^ ",\n" ^ indent' ^ listToString ((fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ patToStringI indent' x0 ^ ",\n" ^ indent' ^ exprToStringI indent' x1 ^ "\n" ^ indent ^ ")" end)) indent' x1 ^ "\n" ^ indent ^ ")" end) indent x +and exprToString (x : Syntax.expr) : string = exprToStringI "" x + +and decToStringI (indent : string) (Syntax.DVal x : Syntax.dec) : string = + "DVal " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ patToStringI indent' x0 ^ ",\n" ^ indent' ^ exprToStringI indent' x1 ^ "\n" ^ indent ^ ")" end) indent x + | decToStringI (indent : string) (Syntax.DValRec x : Syntax.dec) : string = + "DValRec " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ patToStringI indent' x0 ^ ",\n" ^ indent' ^ exprToStringI indent' x1 ^ "\n" ^ indent ^ ")" end) indent x + | decToStringI (indent : string) (Syntax.DFun x : Syntax.dec) : string = + "DFun " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ stringToStringI indent' x0 ^ ",\n" ^ indent' ^ listToString ((fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ listToString (patToStringI) indent' x0 ^ ",\n" ^ indent' ^ exprToStringI indent' x1 ^ "\n" ^ indent ^ ")" end)) indent' x1 ^ "\n" ^ indent ^ ")" end) indent x + | decToStringI (indent : string) (Syntax.DDatatype x : Syntax.dec) : string = + "DDatatype " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ stringToStringI indent' x0 ^ ",\n" ^ indent' ^ listToString ((fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ stringToStringI indent' x0 ^ ",\n" ^ indent' ^ optionToString (etypeToStringI) indent' x1 ^ "\n" ^ indent ^ ")" end)) indent' x1 ^ "\n" ^ indent ^ ")" end) indent x + | decToStringI (indent : string) (Syntax.DType x : Syntax.dec) : string = + "DType " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ stringToStringI indent' x0 ^ ",\n" ^ indent' ^ etypeToStringI indent' x1 ^ "\n" ^ indent ^ ")" end) indent x + | decToStringI (indent : string) (Syntax.DStruct x : Syntax.dec) : string = + "DStruct " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ stringToStringI indent' x0 ^ ",\n" ^ indent' ^ listToString (decToStringI) indent' x1 ^ "\n" ^ indent ^ ")" end) indent x +and decToString (x : Syntax.dec) : string = decToStringI "" x + +and primopToStringI (indent : string) (Syntax.PExit : Syntax.primop) : string = + "PExit" + | primopToStringI (indent : string) (Syntax.PAdd : Syntax.primop) : string = + "PAdd" + | primopToStringI (indent : string) (Syntax.PSub : Syntax.primop) : string = + "PSub" + | primopToStringI (indent : string) (Syntax.PMul : Syntax.primop) : string = + "PMul" + | primopToStringI (indent : string) (Syntax.PDiv : Syntax.primop) : string = + "PDiv" + | primopToStringI (indent : string) (Syntax.PLess : Syntax.primop) : string = + "PLess" + | primopToStringI (indent : string) (Syntax.PEq : Syntax.primop) : string = + "PEq" + | primopToStringI (indent : string) (Syntax.PIf : Syntax.primop) : string = + "PIf" + | primopToStringI (indent : string) (Syntax.PRead : Syntax.primop) : string = + "PRead" + | primopToStringI (indent : string) (Syntax.PWrite : Syntax.primop) : string = + "PWrite" + | primopToStringI (indent : string) (Syntax.PWriteErr : Syntax.primop) : string = + "PWriteErr" +and primopToString (x : Syntax.primop) : string = primopToStringI "" x + +and lexpToStringI (indent : string) (Syntax.LVar x : Syntax.lexp) : string = + "LVar " ^ varToStringI indent x + | lexpToStringI (indent : string) (Syntax.LFn x : Syntax.lexp) : string = + "LFn " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ varToStringI indent' x0 ^ ",\n" ^ indent' ^ lexpToStringI indent' x1 ^ "\n" ^ indent ^ ")" end) indent x + | lexpToStringI (indent : string) (Syntax.LFix x : Syntax.lexp) : string = + "LFix " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ listToString ((fn indent => fn (x0, x1, x2) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ varToStringI indent' x0 ^ ",\n" ^ indent' ^ varToStringI indent' x1 ^ ",\n" ^ indent' ^ lexpToStringI indent' x2 ^ "\n" ^ indent ^ ")" end)) indent' x0 ^ ",\n" ^ indent' ^ lexpToStringI indent' x1 ^ "\n" ^ indent ^ ")" end) indent x + | lexpToStringI (indent : string) (Syntax.LApp x : Syntax.lexp) : string = + "LApp " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ lexpToStringI indent' x0 ^ ",\n" ^ indent' ^ lexpToStringI indent' x1 ^ "\n" ^ indent ^ ")" end) indent x + | lexpToStringI (indent : string) (Syntax.LInt x : Syntax.lexp) : string = + "LInt " ^ intToStringI indent x + | lexpToStringI (indent : string) (Syntax.LString x : Syntax.lexp) : string = + "LString " ^ stringToStringI indent x + | lexpToStringI (indent : string) (Syntax.LRecord x : Syntax.lexp) : string = + "LRecord " ^ listToString (lexpToStringI) indent x + | lexpToStringI (indent : string) (Syntax.LSelect x : Syntax.lexp) : string = + "LSelect " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ intToStringI indent' x0 ^ ",\n" ^ indent' ^ lexpToStringI indent' x1 ^ "\n" ^ indent ^ ")" end) indent x + | lexpToStringI (indent : string) (Syntax.LPrim x : Syntax.lexp) : string = + "LPrim " ^ primopToStringI indent x + | lexpToStringI (indent : string) (Syntax.LSwitch x : Syntax.lexp) : string = + "LSwitch " ^ (fn indent => fn (x0, x1, x2) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ lexpToStringI indent' x0 ^ ",\n" ^ indent' ^ listToString ((fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ intToStringI indent' x0 ^ ",\n" ^ indent' ^ lexpToStringI indent' x1 ^ "\n" ^ indent ^ ")" end)) indent' x1 ^ ",\n" ^ indent' ^ optionToString (lexpToStringI) indent' x2 ^ "\n" ^ indent ^ ")" end) indent x +and lexpToString (x : Syntax.lexp) : string = lexpToStringI "" x + +and valueToStringI (indent : string) (Syntax.VVar x : Syntax.value) : string = + "VVar " ^ varToStringI indent x + | valueToStringI (indent : string) (Syntax.VLabel x : Syntax.value) : string = + "VLabel " ^ varToStringI indent x + | valueToStringI (indent : string) (Syntax.VInt x : Syntax.value) : string = + "VInt " ^ intToStringI indent x +and valueToString (x : Syntax.value) : string = valueToStringI "" x + +and cexpToStringI (indent : string) (Syntax.CRecord x : Syntax.cexp) : string = + "CRecord " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ listToString ((fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ listToString ((fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ valueToStringI indent' x0 ^ ",\n" ^ indent' ^ listToString (intToStringI) indent' x1 ^ "\n" ^ indent ^ ")" end)) indent' x0 ^ ",\n" ^ indent' ^ varToStringI indent' x1 ^ "\n" ^ indent ^ ")" end)) indent' x0 ^ ",\n" ^ indent' ^ cexpToStringI indent' x1 ^ "\n" ^ indent ^ ")" end) indent x + | cexpToStringI (indent : string) (Syntax.CSelect x : Syntax.cexp) : string = + "CSelect " ^ (fn indent => fn (x0, x1, x2, x3) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ intToStringI indent' x0 ^ ",\n" ^ indent' ^ valueToStringI indent' x1 ^ ",\n" ^ indent' ^ varToStringI indent' x2 ^ ",\n" ^ indent' ^ cexpToStringI indent' x3 ^ "\n" ^ indent ^ ")" end) indent x + | cexpToStringI (indent : string) (Syntax.CApp x : Syntax.cexp) : string = + "CApp " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ valueToStringI indent' x0 ^ ",\n" ^ indent' ^ listToString (valueToStringI) indent' x1 ^ "\n" ^ indent ^ ")" end) indent x + | cexpToStringI (indent : string) (Syntax.CFix x : Syntax.cexp) : string = + "CFix " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ listToString ((fn indent => fn (x0, x1, x2) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ varToStringI indent' x0 ^ ",\n" ^ indent' ^ listToString (varToStringI) indent' x1 ^ ",\n" ^ indent' ^ cexpToStringI indent' x2 ^ "\n" ^ indent ^ ")" end)) indent' x0 ^ ",\n" ^ indent' ^ cexpToStringI indent' x1 ^ "\n" ^ indent ^ ")" end) indent x + | cexpToStringI (indent : string) (Syntax.CPrimop x : Syntax.cexp) : string = + "CPrimop " ^ (fn indent => fn (x0, x1, x2, x3) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ primopToStringI indent' x0 ^ ",\n" ^ indent' ^ listToString (valueToStringI) indent' x1 ^ ",\n" ^ indent' ^ listToString (varToStringI) indent' x2 ^ ",\n" ^ indent' ^ listToString (cexpToStringI) indent' x3 ^ "\n" ^ indent ^ ")" end) indent x +and cexpToString (x : Syntax.cexp) : string = cexpToStringI "" x + +and opcodeToStringI (indent : string) (Syntax.OAlloc x : Syntax.opcode) : string = + "OAlloc " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ varToStringI indent' x0 ^ ",\n" ^ indent' ^ valueToStringI indent' x1 ^ "\n" ^ indent ^ ")" end) indent x + | opcodeToStringI (indent : string) (Syntax.OCall : Syntax.opcode) : string = + "OCall" + | opcodeToStringI (indent : string) (Syntax.OPoke x : Syntax.opcode) : string = + "OPoke " ^ (fn indent => fn (x0, x1, x2) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ intToStringI indent' x0 ^ ",\n" ^ indent' ^ varToStringI indent' x1 ^ ",\n" ^ indent' ^ valueToStringI indent' x2 ^ "\n" ^ indent ^ ")" end) indent x + | opcodeToStringI (indent : string) (Syntax.OPeek x : Syntax.opcode) : string = + "OPeek " ^ (fn indent => fn (x0, x1, x2) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ varToStringI indent' x0 ^ ",\n" ^ indent' ^ intToStringI indent' x1 ^ ",\n" ^ indent' ^ valueToStringI indent' x2 ^ "\n" ^ indent ^ ")" end) indent x + | opcodeToStringI (indent : string) (Syntax.OShuf x : Syntax.opcode) : string = + "OShuf " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ varToStringI indent' x0 ^ ",\n" ^ indent' ^ valueToStringI indent' x1 ^ "\n" ^ indent ^ ")" end) indent x + | opcodeToStringI (indent : string) (Syntax.OExit x : Syntax.opcode) : string = + "OExit " ^ valueToStringI indent x + | opcodeToStringI (indent : string) (Syntax.OAdd x : Syntax.opcode) : string = + "OAdd " ^ (fn indent => fn (x0, x1, x2) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ varToStringI indent' x0 ^ ",\n" ^ indent' ^ valueToStringI indent' x1 ^ ",\n" ^ indent' ^ valueToStringI indent' x2 ^ "\n" ^ indent ^ ")" end) indent x + | opcodeToStringI (indent : string) (Syntax.OSub x : Syntax.opcode) : string = + "OSub " ^ (fn indent => fn (x0, x1, x2) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ varToStringI indent' x0 ^ ",\n" ^ indent' ^ valueToStringI indent' x1 ^ ",\n" ^ indent' ^ valueToStringI indent' x2 ^ "\n" ^ indent ^ ")" end) indent x + | opcodeToStringI (indent : string) (Syntax.OMul x : Syntax.opcode) : string = + "OMul " ^ (fn indent => fn (x0, x1, x2) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ varToStringI indent' x0 ^ ",\n" ^ indent' ^ valueToStringI indent' x1 ^ ",\n" ^ indent' ^ valueToStringI indent' x2 ^ "\n" ^ indent ^ ")" end) indent x + | opcodeToStringI (indent : string) (Syntax.ODiv x : Syntax.opcode) : string = + "ODiv " ^ (fn indent => fn (x0, x1, x2) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ varToStringI indent' x0 ^ ",\n" ^ indent' ^ valueToStringI indent' x1 ^ ",\n" ^ indent' ^ valueToStringI indent' x2 ^ "\n" ^ indent ^ ")" end) indent x + | opcodeToStringI (indent : string) (Syntax.OLess x : Syntax.opcode) : string = + "OLess " ^ (fn indent => fn (x0, x1, x2) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ varToStringI indent' x0 ^ ",\n" ^ indent' ^ valueToStringI indent' x1 ^ ",\n" ^ indent' ^ valueToStringI indent' x2 ^ "\n" ^ indent ^ ")" end) indent x + | opcodeToStringI (indent : string) (Syntax.OEq x : Syntax.opcode) : string = + "OEq " ^ (fn indent => fn (x0, x1, x2) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ varToStringI indent' x0 ^ ",\n" ^ indent' ^ valueToStringI indent' x1 ^ ",\n" ^ indent' ^ valueToStringI indent' x2 ^ "\n" ^ indent ^ ")" end) indent x + | opcodeToStringI (indent : string) (Syntax.OIf x : Syntax.opcode) : string = + "OIf " ^ (fn indent => fn (x0, x1) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ valueToStringI indent' x0 ^ ",\n" ^ indent' ^ varToStringI indent' x1 ^ "\n" ^ indent ^ ")" end) indent x + | opcodeToStringI (indent : string) (Syntax.OLabel x : Syntax.opcode) : string = + "OLabel " ^ varToStringI indent x + | opcodeToStringI (indent : string) (Syntax.ORead x : Syntax.opcode) : string = + "ORead " ^ (fn indent => fn (x0, x1, x2, x3) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ varToStringI indent' x0 ^ ",\n" ^ indent' ^ varToStringI indent' x1 ^ ",\n" ^ indent' ^ valueToStringI indent' x2 ^ ",\n" ^ indent' ^ valueToStringI indent' x3 ^ "\n" ^ indent ^ ")" end) indent x + | opcodeToStringI (indent : string) (Syntax.OWrite x : Syntax.opcode) : string = + "OWrite " ^ (fn indent => fn (x0, x1, x2) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ varToStringI indent' x0 ^ ",\n" ^ indent' ^ valueToStringI indent' x1 ^ ",\n" ^ indent' ^ valueToStringI indent' x2 ^ "\n" ^ indent ^ ")" end) indent x + | opcodeToStringI (indent : string) (Syntax.OWriteErr x : Syntax.opcode) : string = + "OWriteErr " ^ (fn indent => fn (x0, x1, x2) => let val indent' = indent ^ " " in "(\n" ^ indent' ^ varToStringI indent' x0 ^ ",\n" ^ indent' ^ valueToStringI indent' x1 ^ ",\n" ^ indent' ^ valueToStringI indent' x2 ^ "\n" ^ indent ^ ")" end) indent x +and opcodeToString (x : Syntax.opcode) : string = opcodeToStringI "" x +end |
