public static void main(String args[]) {
        // Print each token with line number
        Token tok;
        try {
            Lexer lex = new Lexer(args[0]);
            while (true) {
                tok = lex.nextToken();
                String p = "";
                if ((tok.getKind() == Tokens.Identifier) ||
                    (tok.getKind() == Tokens.INTeger) ||
                    (tok.getKind() == Tokens.Float)) {
                    p = tok.toString();
                } else {
                    p += TokenType.tokens.get(tok.getKind());
                }
                p += "\t" + "left: " + tok.getLeftPosition()
                          + " right: " + tok.getRightPosition() + " ";
                System.out.println(p + "line: " + lex.source.getLineno());
            }
        } catch (Exception e) {}
        
        // Output the source program with line numbers
        SourceReader s = null;
        try {
            s = new SourceReader(args[0]);
            while (true) {
                char ch = s.read();
                System.out.print(ch);
            }
        } catch (Exception e) {}

        if (s != null) {
            s.close();
        }
    }