Author: tene
Date: Tue Feb 26 13:35:26 2008
New Revision: 26078

Added:
   trunk/languages/lolcode/src/builtins/math.pir
Modified:
   trunk/MANIFEST

Log:
Oops.  Forgot to add builtins/math.pir for lolcode.
kj++


Modified: trunk/MANIFEST
==============================================================================
--- trunk/MANIFEST      (original)
+++ trunk/MANIFEST      Tue Feb 26 13:35:26 2008
@@ -1,7 +1,7 @@
 # ex: set ro:
 # $Id$
 #
-# generated by tools/dev/mk_manifest_and_skip.pl Mon Feb 25 19:58:30 2008 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Tue Feb 26 21:33:49 2008 UT
 #
 # See tools/dev/install_files.pl for documentation on the
 # format of this file.
@@ -1512,6 +1512,7 @@
 languages/lolcode/config/makefiles/root.in                  [lolcode]
 languages/lolcode/lolcode.pir                               [lolcode]
 languages/lolcode/src/builtins/expr_parse.pir               [lolcode]
+languages/lolcode/src/builtins/math.pir                     [lolcode]
 languages/lolcode/src/builtins/say.pir                      [lolcode]
 languages/lolcode/src/builtins/var_or_function.pir          [lolcode]
 languages/lolcode/src/parser/actions.pm                     [lolcode]

Added: trunk/languages/lolcode/src/builtins/math.pir
==============================================================================
--- (empty file)
+++ trunk/languages/lolcode/src/builtins/math.pir       Tue Feb 26 13:35:26 2008
@@ -0,0 +1,81 @@
+.sub 'SUM OF'
+    .param pmc x
+    .param pmc y
+    $P0 = n_add x, y
+    .return ($P0)
+.end
+
+.sub 'DIFF OF'
+    .param pmc x
+    .param pmc y
+    $P0 = n_sub x, y
+    .return ($P0)
+.end
+
+.sub 'PRODUKT OF'
+    .param pmc x
+    .param pmc y
+    $P0 = n_mul x, y
+    .return ($P0)
+.end
+
+.sub 'QUOSHUNT OF'
+    .param pmc x
+    .param pmc y
+    $P0 = n_div x, y
+    .return ($P0)
+.end
+
+.sub 'MOD OF'
+    .param num x
+    .param num y
+    $N0 = mod x, y
+    .return ($N0)
+.end
+
+.sub 'BIGGR OF'
+    .param pmc x
+    .param pmc y
+    $I0 = islt x, y
+    if $I0 goto y_biggr
+    .return (x)
+  y_biggr:
+    .return (y)
+.end
+
+.sub 'SMALLR OF'
+    .param pmc x
+    .param pmc y
+    $I0 = isgt x, y
+    if $I0 goto y_smallr
+    .return (x)
+  y_smallr:
+    .return (y)
+.end
+
+.sub 'FAKTORIAL OF'
+    # Get input parameter.
+    .param int n
+
+    # return (n > 1 ? n * factorial(n - 1) : 1)
+    .local int result
+
+    if n > 1 goto recurse
+    result = 1
+    goto return
+
+recurse:
+    $I0 = n - 1
+    result = 'FAKTORIAL OF'($I0)
+    result *= n
+
+return:
+    .return (result)
+.end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:
+

Reply via email to