diff options
Diffstat (limited to 'assignment-13/C.icl')
-rw-r--r-- | assignment-13/C.icl | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/assignment-13/C.icl b/assignment-13/C.icl index 328802f..5091def 100644 --- a/assignment-13/C.icl +++ b/assignment-13/C.icl @@ -1,6 +1,7 @@ implementation module C from StdFunc import id, o +import StdList import StdString import StdTuple @@ -60,13 +61,17 @@ where print (CEButton b) = print b print (CEGlobal g) = print g print (CEInfix op a b) = print "(" o print a o print ") " o print op o print " (" o print b o print ")" - print (CEApp f ps) = print f o print "(" o prsperse ", " ps o print ")" + print (CEApp f ps) = print f o print "(" o prsperse (print ", ") ps o print ")" print (CEBool b) = print (if b "true" "false") print (CEInt i) = print i print (CEChar c) = print "'" o print (toString c) o print "'" print (CEIf b t e) = print "(" o print b o print " ? " o print t o print " : " o print e o print ")" print (CERef e) = print "&(" o print e o print ")" print (CEDeref e) = print "*(" o print e o print ")" + print (CEStruct m) = print "{" o indent o nl o prsperse (print "," o nl) (map pr m) o unindent o nl o print "}" + where + pr :: (String, CExpr) -> String + pr (s, e) = "." +++ s +++ " = " +++ printToString e instance print CBody where @@ -89,5 +94,5 @@ where instance print CFun where print cf = print cf.CFun.type o print " " o print cf.CFun.name - o print "(" o prsperse ", " cf.params o print ") {" o indent o nl + o print "(" o prsperse (print ", ") cf.params o print ") {" o indent o nl o print cf.body o unindent o nl o print "}" |