<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <title>t015calc</title> <!-- ANTLR includes --> <script type="text/javascript" src="../../lib/antlr3-all.js"></script> <script type="text/javascript" src="t015calcLexer.js"></script> <script type="text/javascript" src="t015calcParser.js"></script> <!-- JsUnit include --> <script type="text/javascript" src="../jsunit/app/jsUnitCore.js"></script> <!-- Test Code --> <script type="text/javascript"> function _evaluate(expr, expected, errors) { var cstream = new org.antlr.runtime.ANTLRStringStream(expr), lexer = new t015calcLexer(cstream), tstream = new org.antlr.runtime.CommonTokenStream(lexer), parser = new t015calcParser(tstream); var result = parser.evaluate(); assertEquals(result, expected); if (!errors) { assertUndefined(parser.reportedErrors); } else { assertEquals(parser.reportedErrors.length, errors.length); } } function testValid01() { _evaluate("1 + 2", 3); } function testValid02() { _evaluate("1 + 2 * 3", 7); } function testValid03() { _evaluate("10 / 2", 5); } function testValid04() { _evaluate("6 + 2*(3+1) - 4", 10); } function testMalformedInput() { _evaluate("6 - (2*1", 4, ["mismatched token at pos 8"]); } // FIXME: most parse errors result in TypeErrors in action code, because // rules return None, which is then added/multiplied... to integers. // evaluate("6 - foo 2", 4, ["some error"]) </script> </head> <body> <h1>t015calc</h1> </body> </html>