com.jasml.compiler
Class SourceCodeParser
java.lang.Object
com.jasml.compiler.SourceCodeParser
- All Implemented Interfaces:
- Scannable
- public class SourceCodeParser
- extends java.lang.Object
- implements Scannable
Fields inherited from interface com.jasml.compiler.Scannable |
AccessFlag, Attribute, Bracket_Left, Bracket_Right, Char, Colon, Comma, Defualt, EOF, Equal, Instruction, JavaName, Number_Double, Number_Double_NaN, Number_Double_Negativ_Infinity, Number_Double_Positive_Infinity, Number_Float, Number_Float_NaN, Number_Float_Negativ_Infinity, Number_Float_Positive_Infinity, Number_Integer, Number_Long, Pointer, SBracket_Left, SBracket_Right, String, WhiteSpace |
Method Summary |
private static void |
exception(Scanner sc,
java.lang.String msg)
|
private int |
getOffset(java.lang.String label,
java.util.Hashtable map,
boolean countingInstructionLength)
|
static void |
main(java.lang.String[] args)
|
JavaClass |
parse()
|
private Attribute |
parseAttribute()
|
private void |
parseClass()
|
private void |
parseClassAttributes()
|
private void |
parseClassSignature()
|
private static double |
parseDouble(java.lang.String s)
|
private Attribute_Code.ExceptionTableItem[] |
parseExceptionTable(java.lang.String s,
java.util.Hashtable map)
like :
[Exception Table:
start=line73 , end=line78 , handler=line78 , catch_type=java.lang.Exception] |
private Field |
parseField()
|
private void |
parseFields()
|
private static float |
parseFloat(java.lang.String s)
|
private Attribute_InnerClasses |
parseInnerClasses(java.lang.String s)
like :
[Inner Classes :
access = final class , name = 0 , fullname = jce.TestClass$1 , outername = 0] |
private static int |
parseInteger(java.lang.String s)
|
private Attribute |
parseLineNumbers(java.lang.String s)
|
private Attribute_LocalVariableTable |
parseLocalVariableTable(java.lang.String s,
java.util.Hashtable map)
like:jce.TestClass this start=line0, end=line0, index=0 |
private static long |
parseLong(java.lang.String s)
|
private void |
parseMajorOrMinor()
|
private void |
parseMaxStackOrLocals(Attribute_Code code)
|
private Method |
parseMethod()
|
private void |
parseMethodAttributes(Method method,
java.util.ArrayList attributes,
SourceCodeParser.LabeledInstructions li,
Attribute_Code code,
java.util.ArrayList codeAttributes)
this method will parse method attribute: Deprecated, Synthetic
and some of the attributes belongs to code: Max Locals, Max Stack,Local variale table, Exception table |
private SourceCodeParser.LabeledInstructions |
parseMethodInstructions(Method method)
|
private void |
parseMethods()
|
private void |
parseMethodSignature(Method method,
java.util.ArrayList attributes)
parse method declaration, and the throws clause , if any. |
private void |
preprocessConstantValues()
|
private void |
updateLabelLinks(java.util.Hashtable labels,
java.util.ArrayList toUpdate)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
scanner
private Scanner scanner
javaClass
JavaClass javaClass
cpl
ConstantPoolGenerator cpl
precompile
boolean precompile
SourceCodeParser
public SourceCodeParser(java.io.File file)
throws ParsingException
SourceCodeParser
public SourceCodeParser(java.lang.String content)
throws ParsingException
parse
public JavaClass parse()
throws ParsingException
- Throws:
ParsingException
preprocessConstantValues
private void preprocessConstantValues()
throws ParsingException
- Throws:
ParsingException
parseClass
private void parseClass()
throws ParsingException,
GrammerException
- Throws:
ParsingException
GrammerException
parseClassSignature
private void parseClassSignature()
throws ParsingException
- Throws:
ParsingException
parseFields
private void parseFields()
throws ParsingException,
GrammerException
- Throws:
ParsingException
GrammerException
parseField
private Field parseField()
throws ParsingException,
GrammerException
- Throws:
ParsingException
GrammerException
parseMethods
private void parseMethods()
throws ParsingException,
GrammerException
- Throws:
ParsingException
GrammerException
parseMethod
private Method parseMethod()
throws ParsingException,
GrammerException
- Throws:
ParsingException
GrammerException
parseMethodAttributes
private void parseMethodAttributes(Method method,
java.util.ArrayList attributes,
SourceCodeParser.LabeledInstructions li,
Attribute_Code code,
java.util.ArrayList codeAttributes)
throws GrammerException,
ParsingException
- this method will parse method attribute: Deprecated, Synthetic
and some of the attributes belongs to code: Max Locals, Max Stack,Local variale table, Exception table
- Parameters:
method
- attributes
-
- Throws:
GrammerException
ParsingException
parseLineNumbers
private Attribute parseLineNumbers(java.lang.String s)
parseMethodInstructions
private SourceCodeParser.LabeledInstructions parseMethodInstructions(Method method)
throws ParsingException,
GrammerException
- Throws:
ParsingException
GrammerException
updateLabelLinks
private void updateLabelLinks(java.util.Hashtable labels,
java.util.ArrayList toUpdate)
throws GrammerException
- Throws:
GrammerException
parseMethodSignature
private void parseMethodSignature(Method method,
java.util.ArrayList attributes)
throws ParsingException,
GrammerException
- parse method declaration, and the throws clause , if any.
- Parameters:
method
-
- Throws:
ParsingException
GrammerException
parseLocalVariableTable
private Attribute_LocalVariableTable parseLocalVariableTable(java.lang.String s,
java.util.Hashtable map)
throws ParsingException,
GrammerException
- like:jce.TestClass this start=line0, end=line0, index=0
- Parameters:
s
- map
-
- Throws:
ParsingException
GrammerException
parseExceptionTable
private Attribute_Code.ExceptionTableItem[] parseExceptionTable(java.lang.String s,
java.util.Hashtable map)
throws ParsingException,
GrammerException
- like :
[Exception Table:
start=line73 , end=line78 , handler=line78 , catch_type=java.lang.Exception]
- Parameters:
s
- map
-
- Returns:
-
- Throws:
ParsingException
GrammerException
- TODO: error reporting missing labels
getOffset
private int getOffset(java.lang.String label,
java.util.Hashtable map,
boolean countingInstructionLength)
throws GrammerException
- Parameters:
label
- map
- countingInstructionLength
- if false, will return the starting offset of this insctruction.
else will return the end offset of this instruction
- Returns:
-
- Throws:
GrammerException
parseAttribute
private Attribute parseAttribute()
throws GrammerException,
ParsingException
- Throws:
GrammerException
ParsingException
parseInnerClasses
private Attribute_InnerClasses parseInnerClasses(java.lang.String s)
throws ParsingException,
GrammerException
- like :
[Inner Classes :
access = final class , name = 0 , fullname = jce.TestClass$1 , outername = 0]
- Parameters:
s
-
- Returns:
-
- Throws:
ParsingException
GrammerException
parseClassAttributes
private void parseClassAttributes()
throws GrammerException,
ParsingException
- Throws:
GrammerException
ParsingException
parseMaxStackOrLocals
private void parseMaxStackOrLocals(Attribute_Code code)
throws ParsingException
- Throws:
ParsingException
parseMajorOrMinor
private void parseMajorOrMinor()
throws GrammerException,
ParsingException
- Throws:
GrammerException
ParsingException
parseInteger
private static int parseInteger(java.lang.String s)
parseLong
private static long parseLong(java.lang.String s)
parseFloat
private static float parseFloat(java.lang.String s)
parseDouble
private static double parseDouble(java.lang.String s)
exception
private static void exception(Scanner sc,
java.lang.String msg)
throws ParsingException
- Throws:
ParsingException
main
public static void main(java.lang.String[] args)
throws java.lang.Exception
- Throws:
java.lang.Exception