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.
----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------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);
}
}
解决方案
You may have a look at ANTLR[^] , it is a powerful tool for such tasks.
See here[^] for the definition of class files.