Click here to Skip to main content
15,890,512 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I have to create a java parser which should give the follwing outputs;

Class name –
Method Name –
Parameter count of that method –
Return count of that method –
Number of override methods –
Number of new methods –
Number of descends –
Polymorphism factor –

I have to use several test cases & retrive outputs. I have given the followin ClassFile.java code. What I have to do is modify the code to get above outputs. Help me if any one knows how to do this.


----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

Java
ClassFile.java

import java.io.*;

/**
 * Parses and stores a Java .class file. Parsing is currently incomplete.
 *
 * @author David Cooper
 */
public class ClassFile
{
    private String filename;
    private long magic;
    private int minorVersion;
    private int majorVersion;
    private ConstantPool constantPool;

    // ...

    /**
     * Parses a class file an constructs a ClassFile object. At present, this
     * only parses the header and constant pool.
     */

    public ClassFile(String filename) throws ClassFileParserException,
                                             IOException
    {
        DataInputStream dis =
            new DataInputStream(new FileInputStream(filename));

        this.filename = filename;
        magic = (long)dis.readUnsignedShort() << 16 | dis.readUnsignedShort();
        minorVersion = dis.readUnsignedShort();
        majorVersion = dis.readUnsignedShort();
        constantPool = new ConstantPool(dis);

        // Parse the rest of the class file
        // ...
        // THIS WHERE I SHOULD PUT THE CODE TO GET THOSE OUTPUTS

    }

    /** Returns the contents of the class file as a formatted String. */
    public String toString()
    {
        return String.format(
            "Filename: %s\n" +
            "Magic: 0x%08x\n" +
            "Class file format version: %d.%d\n\n" +
            "Constant pool:\n\n%s",
            filename, magic, majorVersion, minorVersion, constantPool);
    }
}
Posted
Updated 1-Nov-12 23:11pm
v2

You may have a look at ANTLR[^] , it is a powerful tool for such tasks.
 
Share this answer
 
See here[^] for the definition of class files.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900