<!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>t024finally</title>

<!-- ANTLR includes -->
<script type="text/javascript" src="../../lib/antlr3-all.js"></script>
<script type="text/javascript" src="t024finallyLexer.js"></script>
<script type="text/javascript" src="t024finallyParser.js"></script>


<!-- JsUnit include -->
<script type="text/javascript" src="../jsunit/app/jsUnitCore.js"></script>

<!-- Test Code -->
<script type="text/javascript">
    var TParser = function() {
        TParser.superclass.constructor.apply(this, arguments);
    }
    org.antlr.lang.extend(TParser, t024finallyParser);


    function testValid1() {
        var cstream = new org.antlr.runtime.ANTLRStringStream("foobar"),
            lexer = new t024finallyLexer(cstream),
            tstream = new org.antlr.runtime.CommonTokenStream(lexer),
            parser = new TParser(tstream);

        var events = parser.prog();
        assertArrayEquals(events, ["catch", "finally"]);
    }
</script>

</head>
<body>
    <h1>t024finally</h1>
</body>
</html>
