<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Mu - apps/rpn.mu</title>
<meta name="Generator" content="Vim/8.1">
<meta name="plugin-version" content="vim8.1_v1">
<meta name="syntax" content="none">
<meta name="settings" content="number_lines,use_css,pre_wrap,no_foldcolumn,expand_tabs,line_ids,prevent_copy=">
<meta name="colorscheme" content="minimal-light">
<style type="text/css">
<!--
pre { white-space: pre-wrap; font-family: monospace; color: #000000; background-color: #c6c6c6; }
body { font-size:12pt; font-family: monospace; color: #000000; background-color: #c6c6c6; }
a { color:inherit; }
* { font-size:12pt; font-size: 1em; }
.muComment { color: #005faf; }
.LineNr { }
.SpecialChar { color: #d70000; }
.Constant { color: #008787; }
.muFunction { color: #af5f00; text-decoration: underline; }
.Delimiter { color: #c000c0; }
.PreProc { color: #c000c0; }
-->
</style>
<script type='text/javascript'>
<!--
/* function to open any folds containing a jumped-to line before jumping to it */
function JumpToLine()
{
var lineNum;
lineNum = window.location.hash;
lineNum = lineNum.substr(1); /* strip off '#' */
if (lineNum.indexOf('L') == -1) {
lineNum = 'L'+lineNum;
}
var lineElem = document.getElementById(lineNum);
/* Always jump to new location even if the line was hidden inside a fold, or
* we corrected the raw number to a line ID.
*/
if (lineElem) {
lineElem.scrollIntoView(true);
}
return true;
}
if ('onhashchange' in window) {
window.onhashchange = JumpToLine;
}
-->
</script>
</head>
<body onload='JumpToLine();'>
<a href='https://github.com/akkartik/mu/blob/master/apps/rpn.mu'>https://github.com/akkartik/mu/blob/master/apps/rpn.mu</a>
<pre id='vimCodeElement'>
<span id="L1" class="LineNr"> 1 </span><span class="muComment"># Integer arithmetic using postfix notation</span>
<span id="L2" class="LineNr"> 2 </span><span class="muComment">#</span>
<span id="L3" class="LineNr"> 3 </span><span class="muComment"># Limitations:</span>
<span id="L4" class="LineNr"> 4 </span><span class="muComment"># No division yet.</span>
<span id="L5" class="LineNr"> 5 </span><span class="muComment">#</span>
<span id="L6" class="LineNr"> 6 </span><span class="muComment"># To build:</span>
<span id="L7" class="LineNr"> 7 </span><span class="muComment"># $ ./translate_mu apps/rpn.mu</span>
<span id="L8" class="LineNr"> 8 </span><span class="muComment">#</span>
<span id="L9" class="LineNr"> 9 </span><span class="muComment"># Example session:</span>
<span id="L10" class="LineNr"> 10 </span><span class="muComment"># $ ./a.elf</span>
<span id="L11" class="LineNr"> 11 </span><span class="muComment"># press ctrl-c or ctrl-d to exit</span>
<span id="L12" class="LineNr"> 12 </span><span class="muComment"># > 1</span>
<span id="L13" class="LineNr"> 13 </span><span class="muComment"># 1</span>
<span id="L14" class="LineNr"> 14 </span><span class="muComment"># > 1 1 +</span>
<span id="L15" class="LineNr"> 15 </span><span class="muComment"># 2</span>
<span id="L16" class="LineNr"> 16 </span><span class="muComment"># > 1 2 3 + +</span>
<span id="L17" class="LineNr"> 17 </span><span class="muComment"># 6</span>
<span id="L18" class="LineNr"> 18 </span><span class="muComment"># > 1 2 3 * +</span>
<span id="L19" class="LineNr"> 19 </span><span class="muComment"># 7</span>
<span id="L20" class="LineNr"> 20 </span><span class="muComment"># > 1 2 + 3 *</span>
<span id="L21" class="LineNr"> 21 </span><span class="muComment"># 9</span>
<span id="L22" class="LineNr"> 22 </span><span class="muComment"># > 1 3 4 * +</span>
<span id="L23" class="LineNr"> 23 </span><span class="muComment"># 13</span>
<span id="L24" class="LineNr"> 24 </span><span class="muComment"># > ^D</span>
<span id="L25" class="LineNr"> 25 </span><span class="muComment"># $</span>
<span id="L26" class="LineNr"> 26 </span><span class="muComment">#</span>
<span id="L27" class="LineNr"> 27 </span><span class="muComment"># Error handling is non-existent. This is just a prototype.</span>
<span id="L28" class="LineNr"> 28 </span>
<span id="L29" class="LineNr"> 29 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='rpn.mu.html#L29'>main</a></span><span class="PreProc"> -> </span>_/<span class="Constant">ebx</span>: int <span class="Delimiter">{</span>
<span id="L30" class="LineNr"> 30 </span> <span class="PreProc">var</span> in-storage: (stream byte <span class="Constant">0x100</span>)
<span id="L31" class="LineNr"> 31 </span> <span class="PreProc">var</span> in/<span class="Constant">esi</span>: (addr stream byte) <span class="SpecialChar"><-</span> address in-storage
<span id="L32" class="LineNr"> 32 </span> <a href='../405screen.mu.html#L169'>print-string</a> <span class="Constant">0</span>, <span class="Constant">"press ctrl-c or ctrl-d to exit\n"</span>
<span id="L33" class="LineNr"> 33 </span> <span class="muComment"># read-eval-print loop</span>
<span id="L34" class="LineNr"> 34 </span> <span class="Delimiter">{</span>
<span id="L35" class="LineNr"> 35 </span> <span class="muComment"># print prompt</span>
<span id="L36" class="LineNr"> 36 </span> <a href='../405screen.mu.html#<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module test.tc_ui</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom> <br>
<font color="#ffffff" face="helvetica, arial"> <br><big><big><strong><a href="test.html"><font color="#ffffff">test</font></a>.tc_ui</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/home/hut/ranger/test/tc_ui.py">/home/hut/ranger/test/tc_ui.py</a></font></td></tr></table>
<p></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom> <br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
<tr><td bgcolor="#aa55cc"><tt> </tt></td><td> </td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="curses.html">curses</a><br>
</td><td width="25%" valign=top><a href="ranger.gui.ui.html">ranger.gui.ui</a><br>
</td><td width="25%" valign=top><a href="unittest.html">unittest</a><br>
</td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ee77aa">
<td colspan=3 valign=bottom> <br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
<tr><td bgcolor="#ee77aa"><tt> </tt></td><td> </td>
<td width="100%"><dl>
<dt><font face="helvetica, arial"><a href="unittest.html#TestCase">unittest.TestCase</a>(<a href="__builtin__.html#object">__builtin__.object</a>)
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="test.tc_ui.html#Test">Test</a>
</font></dt></dl>
</dd>
</dl>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom> <br>
<font color="#000000" face="helvetica, arial"><a name="Test">class <strong>Test</strong></a>(<a href="unittest.html#TestCase">unittest.TestCase</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt> </tt></td><td> </td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="test.tc_ui.html#Test">Test</a></dd>
<dd><a href="unittest.html#TestCase">unittest.TestCase</a></dd>
<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
</dl>
<hr>
Methods defined here:<br>
<dl><dt><a name="Test-setUp"><strong>setUp</strong></a>(self)</dt></dl>
<dl><dt><a name="Test-tearDown"><strong>tearDown</strong></a>(self)</dt></dl>
<dl><dt><a name="Test-test_passing"><strong>test_passing</strong></a>(self)</dt></dl>
<hr>
Methods inherited from <a href="unittest.html#TestCase">unittest.TestCase</a>:<br>
<dl><dt><a name="Test-__call__"><strong>__call__</strong></a>(self, *args, **kwds)</dt></dl>
<dl><dt><a name="Test-__eq__"><strong>__eq__</strong></a>(self, other)</dt></dl>
<dl><dt><a name="Test-__hash__"><strong>__hash__</strong></a>(self)</dt></dl>
<dl><dt><a name="Test-__init__"><strong>__init__</strong></a>(self, methodName<font color="#909090">='runTest'</font>)</dt><dd><tt>Create an instance of the class that will use the named test<br>
method when executed. Raises a ValueError if the instance does<br>
not have a method with the specified name.</tt></dd></dl>
<dl><dt><a name="Test-__ne__"><strong>__ne__</strong></a>(self, other)</dt></dl>
<dl><dt><a name="Test-__repr__"><strong>__repr__</strong></a>(self)</dt></dl>
<dl><dt><a name="Test-__str__"><strong>__str__</strong></a>(self)</dt></dl>
<dl><dt><a name="Test-assertAlmostEqual"><strong>assertAlmostEqual</strong></a> = failUnlessAlmostEqual(self, first, second, places<font color="#909090">=7</font>, msg<font color="#909090">=None</font>)</dt><dd><tt>Fail if the two objects are unequal as determined by their<br>
difference rounded to the given number of decimal places<br>
(default 7) and comparing to zero.<br>
<br>
Note that decimal places (from zero) are usually not the same<br>
as significant digits (measured from the most signficant digit).</tt></dd></dl>
<dl><dt><a name="Test-assertAlmostEquals"><strong>assertAlmostEquals</strong></a> = failUnlessAlmostEqual(self, first, second, places<font color="#909090">=7</font>, msg<font color="#909090">=None</font>)</dt><dd><tt>Fail if the two objects are unequal as determined by their<br>
difference rounded to the given number of decimal places<br>
(default 7) and comparing to zero.<br>
<br>
Note that decimal places (from zero) are usually not the same<br>
as significant digits (measured from the most signficant digit).</tt></dd></dl>
<dl><dt><a name="Test-assertEqual"><strong>assertEqual</strong></a> = failUnlessEqual(self, first, second, msg<font color="#909090">=None</font>)</dt><dd><tt>Fail if the two objects are unequal as determined by the '=='<br>
operator.</tt></dd></dl>
<dl><dt><a name="Test-assertEquals"><strong>assertEquals</strong></a> = failUnlessEqual(self, first, second, msg<font color="#909090">=None</font>)</dt><dd><tt>Fail if the two objects are unequal as determined by the '=='<br>
operator.</tt></dd></dl>
<dl><dt><a name="Test-assertFalse"><strong>assertFalse</strong></a> = failIf(self, expr, msg<font color="#909090">=None</font>)</dt><dd><tt>Fail the test if the expression is true.</tt></dd></dl>
<dl><dt><a name="Test-assertNotAlmostEqual"><strong>assertNotAlmostEqual</strong></a> = failIfAlmostEqual(self, first, second, places<font color="#909090">=7</font>, msg<font color="#909090">=None</font>)</dt><dd><tt>Fail if the two objects are equal as determined by their<br>
difference rounded to the given number of decimal places<br>
(default 7) and comparing to zero.<br>
<br>
Note that decimal places (from zero) are usually not the same<br>
as significant digits (measured from the most signficant digit).</tt></dd></dl>
<dl><dt><a name="Test-assertNotAlmostEquals"><strong>assertNotAlmostEquals</strong></a> = failIfAlmostEqual(self, first, second, places<font color="#909090">=7</font>, msg<font color="#909090">=None</font>)</dt><dd><tt>Fail if the two objects are equal as determined by their<br>
difference rounded to the given number of decimal places<br>
(default 7) and comparing to zero.<br>
<br>
Note that decimal places (from zero) are usually not the same<br>
as significant digits (measured from the most signficant digit).</tt></dd></dl>
<dl><dt><a name="Test-assertNotEqual"><strong>assertNotEqual</strong></a> = failIfEqual(self, first, second, msg<font color="#909090">=None</font>)</dt><dd><tt>Fail if the two objects are equal as determined by the '=='<br>
operator.</tt></dd></dl>
<dl><dt><a name="Test-assertNotEquals"><strong>assertNotEquals</strong></a> = failIfEqual(self, first, second, msg<font color="#909090">=None</font>)</dt><dd><tt>Fail if the two objects are equal as determined by the '=='<br>
operator.</tt></dd></dl>
<dl><dt><a name="Test-assertRaises"><strong>assertRaises</strong></a> = failUnlessRaises(self, excClass, callableObj, *args, **kwargs)</dt><dd><tt>Fail unless an exception of class excClass is thrown<br>
by callableObj when invoked with arguments args and keyword<br>
arguments kwargs. If a different type of exception is<br>
thrown, it will not be caught, and the test case will be<br>
deemed to have suffered an error, exactly as for an<br>
unexpected exception.</tt></dd></dl>
<dl><dt><a name="Test-assertTrue"><strong>assertTrue</strong></a> = failUnless(self, expr, msg<font color="#909090">=None</font>)</dt><dd><tt>Fail the test unless the expression is true.</tt></dd></dl>
<dl><dt><a name="Test-assert_"><strong>assert_</strong></a> = failUnless(self, expr, msg<font color="#909090">=None</font>)</dt><dd><tt>Fail the test unless the expression is true.</tt></dd></dl>
<dl><dt><a name="Test-countTestCases"><strong>countTestCases</strong></a>(self)</dt></dl>
<dl><dt><a name="Test-debug"><strong>debug</strong></a>(self)</dt><dd><tt>Run the test without collecting errors in a TestResult</tt></dd></dl>
<dl><dt><a name="Test-defaultTestResult"><strong>defaultTestResult</strong></a>(self)</dt></dl>
<dl><dt><a name="Test-fail"><strong>fail</strong></a>(self, msg<font color="#909090">=None</font>)</dt><dd><tt>Fail immediately, with the given message.</tt></dd></dl>
<dl><dt><a name="Test-failIf"><strong>failIf</strong></a>(self, expr, msg<font color="#909090">=None</font>)</dt><dd><tt>Fail the test if the expression is true.</tt></dd></dl>
<dl><dt><a name="Test-failIfAlmostEqual"><strong>failIfAlmostEqual</strong></a>(self, first, second, places<font color="#909090">=7</font>, msg<font color="#909090">=None</font>)</dt><dd><tt>Fail if the two objects are equal as determined by their<br>
difference rounded to the given number of decimal places<br>
(default 7) and comparing to zero.<br>
<br>
Note that decimal places (from zero) are usually not the same<br>
as significant digits (measured from the most signficant digit).</tt></dd></dl>
<dl><dt><a name="Test-failIfEqual"><strong>failIfEqual</strong></a>(self, first, second, msg<font color="#909090">=None</font>)</dt><dd><tt>Fail if the two objects are equal as determined by the '=='<br>
operator.</tt></dd></dl>
<dl><dt><a name="Test-failUnless"><strong>failUnless</strong></a>(self, expr, msg<font color="#909090">=None</font>)</dt><dd><tt>Fail the test unless the expression is true.</tt></dd></dl>
<dl><dt><a name="Test-failUnlessAlmostEqual"><strong>failUnlessAlmostEqual</strong></a>(self, first, second, places<font color="#909090">=7</font>, msg<font color="#909090">=None</font>)</dt><dd><tt>Fail if the two objects are unequal as determined by their<br>
difference rounded to the given number of decimal places<br>
(default 7) and comparing to zero.<br>
<br>
Note that decimal places (from zero) are usually not the same<br>
as significant digits (measured from the most signficant digit).</tt></dd></dl>
<dl><dt><a name="Test-failUnlessEqual"><strong>failUnlessEqual</strong></a>(self, first, second, msg<font color="#909090">=None</font>)</dt><dd><tt>Fail if the two objects are unequal as determined by the '=='<br>
operator.</tt></dd></dl>
<dl><dt><a name="Test-failUnlessRaises"><strong>failUnlessRaises</strong></a>(self, excClass, callableObj, *args, **kwargs)</dt><dd><tt>Fail unless an exception of class excClass is thrown<br>
by callableObj when invoked with arguments args and keyword<br>
arguments kwargs. If a different type of exception is<br>
thrown, it will not be caught, and the test case will be<br>
deemed to have suffered an error, exactly as for an<br>
unexpected exception.</tt></dd></dl>
<dl><dt><a name="Test-id"><strong>id</strong></a>(self)</dt></dl>
<dl><dt><a name="Test-run"><strong>run</strong></a>(self, result<font color="#909090">=None</font>)</dt></dl>
<dl><dt><a name="Test-shortDescription"><strong>shortDescription</strong></a>(self)</dt><dd><tt>Returns a one-line description of the test, or None if no<br>
description has been provided.<br>
<br>
The default implementation of this method returns the first line of<br>
the specified test method's docstring.</tt></dd></dl>
<hr>
Data descriptors inherited from <a href="unittest.html#TestCase">unittest.TestCase</a>:<br>
<dl><dt><strong>__dict__</strong></dt>
<dd><tt>dictionary for instance variables (if defined)</tt></dd>
</dl>
<dl><dt><strong>__weakref__</strong></dt>
<dd><tt>list of weak references to the object (if defined)</tt></dd>
</dl>
<hr>
Data and other attributes inherited from <a href="unittest.html#TestCase">unittest.TestCase</a>:<br>
<dl><dt><strong>failureException</strong> = <type 'exceptions.AssertionError'><dd><tt>Assertion failed.</tt></dl>
</td></tr></table></td></tr></table>
</body></html>