Summary Files Commits Branches @commit @diff @stats
path: root / Year 3 / Compilers, Introduction / coolc-spim / my-code / factorial2.cl
diff options
context:
space:
mode:
Commitc43a57130601e63ccdd70b0dfd0a5d2bf5bef3a6 (patch)
Author
 Syndamia <kamen@syndamia.com>
2023-10-18 18:26:05 +0300
Committer
 Syndamia <kamen@syndamia.com>
2023-10-18 18:26:05 +0300
Filesc47c0efa808971c2569bb6ed25707747853b380e /Year 3/Compilers, Introduction/coolc-spim/my-code/factorial2.cl
uni-projects-c43a57130601e63ccdd70b0dfd0a5d2bf5bef3a6.tar
uni-projects-c43a57130601e63ccdd70b0dfd0a5d2bf5bef3a6.tar.gz
uni-projects-c43a57130601e63ccdd70b0dfd0a5d2bf5bef3a6.zip
Parent3ba593c0c4da762969a48a5c89c4a096e93680a5 (diff)
[CI] Added docker setup
1 files changed, 24 insertions, 0 deletions
-rw-r--r--Year 3/Compilers, Introduction/coolc-spim/my-code/factorial2.cl24
diff --git a/Year 3/Compilers, Introduction/coolc-spim/my-code/factorial2.cl b/Year 3/Compilers, Introduction/coolc-spim/my-code/factorial2.cl
new file mode 100644
index 0000000..699acfc
--- /dev/null
+++ b/Year 3/Compilers, Introduction/coolc-spim/my-code/factorial2.cl
@@ -0,0 +1,24 @@
+(* Although this is written from scratch, it is hard to end up with something
+ much different from what is presented in the original Stanford cs143 course.
+ So credit for this code goes to Alex Aiken, creator of that course. *)
+class Main inherits A2I {
+ main(): Object {
+ (new IO).out_string(
+ i2a(
+ fact(
+ a2i((new IO).in_string())
+ )
+ ).concat("\n")
+ )
+ };
+
+ fact(i: Int): Int {
+ let fact: Int <- 1 in {
+ while not (i = 0) loop {
+ fact <- fact * i;
+ i <- i - 1;
+ } pool;
+ fact;
+ }
+ };
+};