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

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

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

<!-- Test Code -->
<script type="text/javascript">
    var TLexer = function() {
        TLexer.superclass.constructor.apply(this, arguments);
    };
    org.antlr.lang.extend(TLexer, t038lexerRuleLabel, {
        recover: function(input, re) { throw re; }
    });

    function testValid1() {
        var stream = new org.antlr.runtime.ANTLRStringStream("a  2"),
            lexer = new TLexer(stream),
            token;

        while (true) {
            token = lexer.nextToken();
            if (token.getType()===org.antlr.runtime.Token.EOF) {
                break;
            }
        }
    }
</script>

</head>
<body>
    <h1>t038lexerRuleLabel</h1>
</body>
</html>
