Class Parser
- java.lang.Object
-
- org.glassfish.rmic.tools.java.Scanner
-
- org.glassfish.rmic.tools.java.Parser
-
- All Implemented Interfaces:
Constants,ParserActions,RuntimeConstants
- Direct Known Subclasses:
BatchParser
public class Parser extends Scanner implements ParserActions, Constants
This class is used to parse Java statements and expressions. The result is a parse tree.This class implements an operator precedence parser. Errors are reported to the Environment object, if the error can't be resolved immediately, a SyntaxError exception is thrown.
Error recovery is implemented by catching SyntaxError exceptions and discarding input tokens until an input token is reached that is possibly a legal continuation.
The parse tree that is constructed represents the input exactly (no rewrites to simpler forms). This is important if the resulting tree is to be used for code formatting in a programming environment. Currently only documentation comments are retained.
The parsing algorithm does NOT use any type information. Changes in the type system do not affect the structure of the parse tree. This restriction does introduce an ambiguity an expression of the form: (e1) e2 is assumed to be a cast if e2 does not start with an operator. That means that (a) - b is interpreted as subtract b from a and not cast negative b to type a. However, if a is a simple type (byte, int, ...) then it is assumed to be a cast.
WARNING: The contents of this source file are not part of any supported API. Code that depends on them does so at its own risk: they are subject to change or removal without notice.
-
-
Field Summary
Fields Modifier and Type Field Description private intaCount(package private) ParserActionsactionsUsuallythis.actions == (ParserActions)this.private IdentifierToken[]aNamesprotected intargIndexprivate Node[]argsprivate Type[]aTypesprivate ClassDefinitioncurClassprivate intFPstateprotected ScannerscannerUsuallythis.scanner == (Scanner)this.-
Fields inherited from class org.glassfish.rmic.tools.java.Scanner
ch, charValue, docComment, doubleValue, env, EOF, floatValue, idValue, in, intValue, LINEINC, longValue, OFFSETINC, pos, prevPos, radix, scanComments, stringValue, token
-
Fields inherited from interface org.glassfish.rmic.tools.java.Constants
ABSTRACT, ACCM_CLASS, ACCM_FIELD, ACCM_INNERCLASS, ACCM_MEMBER, ACCM_METHOD, ADD, AND, ARRAY, ARRAYACCESS, ASGADD, ASGBITAND, ASGBITOR, ASGBITXOR, ASGDIV, ASGLSHIFT, ASGMUL, ASGREM, ASGRSHIFT, ASGSUB, ASGURSHIFT, ASSIGN, ATT_ALL, ATT_ALLCLASSES, ATT_CODE, BITAND, BITNOT, BITOR, BITXOR, BOOLEAN, BOOLEANVAL, BREAK, BYTE, BYTEVAL, CASE, CAST, CATCH, CHAR, CHARVAL, CLASS, COLON, COMMA, COMMENT, COND, CONST, CONTINUE, CONVERT, CS_BINARY, CS_CHECKED, CS_COMPILED, CS_NOTFOUND, CS_PARSED, CS_SOURCE, CS_UNDECIDED, CS_UNDEFINED, CT_BLOCK, CT_BRANCH_FALSE, CT_BRANCH_TRUE, CT_CASE, CT_FIKT_METHOD, CT_FIKT_RET, CT_FIRST_KIND, CT_LAST_KIND, CT_METHOD, CT_SWITH_WO_DEF, DEC, DECLARATION, DEFAULT, DIV, DO, DOUBLE, DOUBLEVAL, ELSE, EQ, ERROR, EXPR, EXPRESSION, EXTENDS, F_COVDATA, F_COVERAGE, F_DEBUG_LINES, F_DEBUG_SOURCE, F_DEBUG_VARS, F_DEPENDENCIES, F_DEPRECATION, F_DUMP, F_ERRORSREPORTED, F_OPT, F_OPT_INTERCLASS, F_PRINT_DEPENDENCIES, F_STRICTDEFAULT, F_VERBOSE, F_VERSION12, F_WARNINGS, FALSE, FIELD, FINAL, FINALLY, FLOAT, FLOATVAL, FOR, GE, GOTO, GT, idAppend, idClass, idClassInit, idClone, idCode, idConstantValue, idCoverageTable, idDeprecated, idDocumentation, IDENT, idExceptions, idFinallyReturnValue, idGetClass, idInit, idInnerClasses, idJavaIoSerializable, idJavaLang, idJavaLangClass, idJavaLangCloneable, idJavaLangError, idJavaLangException, idJavaLangObject, idJavaLangRuntimeException, idJavaLangString, idJavaLangStringBuffer, idJavaLangThrowable, idLength, idLineNumberTable, idLocalVariableTable, idNew, idNull, idSourceFile, idStar, idSuper, idSynthetic, idThis, idToString, idTYPE, idValueOf, IF, IMPLEMENTS, IMPORT, INC, INLINEMETHOD, INLINENEWINSTANCE, INLINERETURN, INSTANCEOF, INT, INTERFACE, INTVAL, LBRACE, LE, LENGTH, LONG, LONGVAL, LPAREN, LSHIFT, LSQBRACKET, LT, M_ABSTRACT, M_ANONYMOUS, M_DEPRECATED, M_FINAL, M_INLINEABLE, M_INTERFACE, M_LOCAL, M_NATIVE, M_PRIVATE, M_PROTECTED, M_PUBLIC, M_STATIC, M_STRICTFP, M_SYNCHRONIZED, M_SYNTHETIC, M_TRANSIENT, M_VOLATILE, MAXFILESIZE, MAXLINENUMBER, METHOD, MM_CLASS, MM_FIELD, MM_MEMBER, MM_METHOD, MUL, NATIVE, NE, NEG, NEW, NEWARRAY, NEWFROMNAME, NEWINSTANCE, NOT, NULL, opNames, opPrecedence, OR, PACKAGE, paraDeprecated, POS, POSTDEC, POSTINC, PREDEC, prefixAccess, prefixArray, prefixClass, prefixLoc, prefixThis, prefixVal, PREINC, PRIVATE, PROTECTED, PUBLIC, QUESTIONMARK, RBRACE, REM, RETURN, RPAREN, RSHIFT, RSQBRACKET, SEMICOLON, SHORT, SHORTVAL, SIG_INNERCLASS, SIGC_INNERCLASS, STAT, STATIC, STRICTFP, STRINGVAL, SUB, SUPER, SWITCH, SYNCHRONIZED, TC_ARRAY, TC_BOOLEAN, TC_BYTE, TC_CHAR, TC_CLASS, TC_DOUBLE, TC_ERROR, TC_FLOAT, TC_INT, TC_LONG, TC_METHOD, TC_NULL, TC_SHORT, TC_VOID, THIS, THROW, THROWS, TM_ARRAY, TM_BOOLEAN, TM_BYTE, TM_CHAR, TM_CLASS, TM_DOUBLE, TM_ERROR, TM_FLOAT, TM_INT, TM_INT32, TM_INTEGER, TM_LONG, TM_METHOD, TM_NULL, TM_NUM32, TM_NUM64, TM_NUMBER, TM_REAL, TM_REFERENCE, TM_SHORT, TM_VOID, tracing, TRANSIENT, TRUE, TRY, TYPE, URSHIFT, VARDECLARATION, VOID, VOLATILE, WHEREOFFSETBITS, WHILE
-
Fields inherited from interface org.glassfish.rmic.tools.java.RuntimeConstants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, CONSTANT_CLASS, CONSTANT_DOUBLE, CONSTANT_FIELD, CONSTANT_FLOAT, CONSTANT_INTEGER, CONSTANT_INTERFACEMETHOD, CONSTANT_INVOKEDYNAMIC, CONSTANT_LONG, CONSTANT_METHOD, CONSTANT_METHODHANDLE, CONSTANT_METHODTYPE, CONSTANT_NAMEANDTYPE, CONSTANT_STRING, CONSTANT_UNICODE, CONSTANT_UTF8, JAVA_DEFAULT_MINOR_VERSION, JAVA_DEFAULT_VERSION, JAVA_MAGIC, JAVA_MAX_SUPPORTED_MINOR_VERSION, JAVA_MAX_SUPPORTED_VERSION, JAVA_MIN_SUPPORTED_VERSION, opc_aaload, opc_aastore, opc_aconst_null, opc_aload, opc_aload_0, opc_aload_1, opc_aload_2, opc_aload_3, opc_anewarray, opc_areturn, opc_arraylength, opc_astore, opc_astore_0, opc_astore_1, opc_astore_2, opc_astore_3, opc_athrow, opc_baload, opc_bastore, opc_bipush, opc_breakpoint, opc_caload, opc_castore, opc_checkcast, opc_d2f, opc_d2i, opc_d2l, opc_dadd, opc_daload, opc_dastore, opc_dcmpg, opc_dcmpl, opc_dconst_0, opc_dconst_1, opc_ddiv, opc_dead, opc_dload, opc_dload_0, opc_dload_1, opc_dload_2, opc_dload_3, opc_dmul, opc_dneg, opc_drem, opc_dreturn, opc_dstore, opc_dstore_0, opc_dstore_1, opc_dstore_2, opc_dstore_3, opc_dsub, opc_dup, opc_dup_x1, opc_dup_x2, opc_dup2, opc_dup2_x1, opc_dup2_x2, opc_f2d, opc_f2i, opc_f2l, opc_fadd, opc_faload, opc_fastore, opc_fcmpg, opc_fcmpl, opc_fconst_0, opc_fconst_1, opc_fconst_2, opc_fdiv, opc_fload, opc_fload_0, opc_fload_1, opc_fload_2, opc_fload_3, opc_fmul, opc_fneg, opc_frem, opc_freturn, opc_fstore, opc_fstore_0, opc_fstore_1, opc_fstore_2, opc_fstore_3, opc_fsub, opc_getfield, opc_getstatic, opc_goto, opc_goto_w, opc_i2b, opc_i2c, opc_i2d, opc_i2f, opc_i2l, opc_i2s, opc_iadd, opc_iaload, opc_iand, opc_iastore, opc_iconst_0, opc_iconst_1, opc_iconst_2, opc_iconst_3, opc_iconst_4, opc_iconst_5, opc_iconst_m1, opc_idiv, opc_if_acmpeq, opc_if_acmpne, opc_if_icmpeq, opc_if_icmpge, opc_if_icmpgt, opc_if_icmple, opc_if_icmplt, opc_if_icmpne, opc_ifeq, opc_ifge, opc_ifgt, opc_ifle, opc_iflt, opc_ifne, opc_ifnonnull, opc_ifnull, opc_iinc, opc_iload, opc_iload_0, opc_iload_1, opc_iload_2, opc_iload_3, opc_imul, opc_ineg, opc_instanceof, opc_invokedynamic, opc_invokeinterface, opc_invokespecial, opc_invokestatic, opc_invokevirtual, opc_ior, opc_irem, opc_ireturn, opc_ishl, opc_ishr, opc_istore, opc_istore_0, opc_istore_1, opc_istore_2, opc_istore_3, opc_isub, opc_iushr, opc_ixor, opc_jsr, opc_jsr_w, opc_l2d, opc_l2f, opc_l2i, opc_label, opc_ladd, opc_laload, opc_land, opc_lastore, opc_lcmp, opc_lconst_0, opc_lconst_1, opc_ldc, opc_ldc_w, opc_ldc2_w, opc_ldiv, opc_lload, opc_lload_0, opc_lload_1, opc_lload_2, opc_lload_3, opc_lmul, opc_lneg, opc_lookupswitch, opc_lor, opc_lrem, opc_lreturn, opc_lshl, opc_lshr, opc_lstore, opc_lstore_0, opc_lstore_1, opc_lstore_2, opc_lstore_3, opc_lsub, opc_lushr, opc_lxor, opc_monitorenter, opc_monitorexit, opc_multianewarray, opc_new, opc_newarray, opc_nop, opc_pop, opc_pop2, opc_putfield, opc_putstatic, opc_ret, opc_return, opc_saload, opc_sastore, opc_sipush, opc_swap, opc_tableswitch, opc_try, opc_wide, opcLengths, opcNames, SIG_ARRAY, SIG_BOOLEAN, SIG_BYTE, SIG_CHAR, SIG_CLASS, SIG_DOUBLE, SIG_ENDCLASS, SIG_ENDMETHOD, SIG_FLOAT, SIG_INT, SIG_LONG, SIG_METHOD, SIG_PACKAGE, SIG_SHORT, SIG_VOID, SIGC_ARRAY, SIGC_BOOLEAN, SIGC_BYTE, SIGC_CHAR, SIGC_CLASS, SIGC_DOUBLE, SIGC_ENDCLASS, SIGC_ENDMETHOD, SIGC_FLOAT, SIGC_INT, SIGC_LONG, SIGC_METHOD, SIGC_PACKAGE, SIGC_SHORT, SIGC_VOID, T_BOOLEAN, T_BYTE, T_CHAR, T_CLASS, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedParser(Environment env, java.io.InputStream in)Create a parserprotectedParser(Scanner scanner)Create a parser, given a scanner.Parser(Scanner scanner, ParserActions actions)Create a parser, given a scanner and the semantic callback.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description private voidaddArgument(int mod, Type t, IdentifierToken nm)protected voidaddArgument(Node n)protected voidbeginClass(long off, java.lang.String doc, int mod, Identifier nm, Identifier sup, Identifier[] impl)Deprecated.Use the version with the IdentifierToken arguments.ClassDefinitionbeginClass(long off, java.lang.String doc, int mod, IdentifierToken nm, IdentifierToken sup, IdentifierToken[] impl)Deprecated.protected voiddefineField(long where, java.lang.String doc, int mod, Type t, Identifier nm, Identifier[] args, Identifier[] exp, Node val)Deprecated.Use the version with the IdentifierToken arguments.voiddefineField(long where, ClassDefinition c, java.lang.String doc, int mod, Type t, IdentifierToken nm, IdentifierToken[] args, IdentifierToken[] exp, Node val)Deprecated.voidendClass(long off, ClassDefinition c)Deprecated.protected voidendClass(long off, Identifier nm)Deprecated.Use the version with the IdentifierToken arguments.protected voidexpect(int t)Expect a token, return its value, scan the next token or throw an exception.protected Expression[]exprArgs(int index)protected ClassDefinitiongetCurrentClass()Report the current class under construction.protected voidimportClass(long off, Identifier nm)Deprecated.Use the version with the IdentifierToken arguments.voidimportClass(long off, IdentifierToken nm)Deprecated.protected voidimportPackage(long off, Identifier nm)Deprecated.Use the version with the IdentifierToken arguments.voidimportPackage(long off, IdentifierToken nm)Deprecated.voidmatch(int open, int close)Scan to a matching '}', ']' or ')'.protected voidpackageDeclaration(long off, Identifier nm)Deprecated.voidpackageDeclaration(long off, IdentifierToken nm)Deprecated.protected TypeparseArrayBrackets(Type t)Parse the tail of a type expression, which might be array brackets.protected ExpressionparseBinaryExpression(Expression e)Given a left-hand term, parse an operator and right-hand term.protected StatementparseBlockStatement()protected voidparseClass()Parse a top-level class or interface declaration.protected ClassDefinitionparseClassBody(IdentifierToken nm, int mod, int ctx, java.lang.String doc, java.util.Vector<IdentifierToken> ext, java.util.Vector<IdentifierToken> impl, long p)Parse the body of a class or interface declaration, starting at the left brace.protected StatementparseDeclaration(long p, int mod, Expression type)Parse declaration, called after the type expression has been parsed and the current token is IDENT.protected ExpressionparseExpression()Parse an expression.protected voidparseField()Parse a field.voidparseFile()Parse an Java file.protected IdentifierparseIdentifier(boolean star)Deprecated.protected voidparseInheritance(java.util.Vector<IdentifierToken> ext, java.util.Vector<IdentifierToken> impl)protected StatementparseLocalClass(int mod)Parse a block-local class or interface declaration.protected ExpressionparseMethodExpression(Expression e, Identifier id)Parse a method invocation.protected intparseModifiers(int mask)Parse a possibly-empty sequence of modifier keywords.protected IdentifierTokenparseName(boolean star)Parse an identifier.protected ClassDefinitionparseNamedClass(int mod, int ctx, java.lang.String doc)Parse a named class or interface declaration, starting at "class" or "interface".protected ExpressionparseNewInstanceExpression(long p, Expression outerArg, Expression type)Parse a new instance expression.protected StatementparseStatement()Parse a statement.protected ExpressionparseTerm()Parse a primary expression.protected TypeparseType()Parse a type expression, this results in a Type.protected ExpressionparseTypeExpression()Parse a type expression.protected voidrecoverField(ClassDefinition newClass)Recover after a syntax error in a field.protected voidrecoverFile()Recover after a syntax error in the file.protected booleanrecoverStatement()Recover after a syntax error in a statement.longscan()Scan the next token.protected Statement[]statArgs(int index)protected voidtopLevelExpression(Expression e)Check if an expression is a legal toplevel expression.-
Methods inherited from class org.glassfish.rmic.tools.java.Scanner
getEndPos, getIdToken, useInputStream, xscan
-
-
-
-
Field Detail
-
actions
ParserActions actions
Usuallythis.actions == (ParserActions)this. However, a delegate scanner can produce tokens for this parser, in which case(Scanner)thisis unused, except forthis.tokenandthis.posinstance variables which are filled from the real scanner bythis.scan()and the constructor.
-
args
private Node[] args
-
argIndex
protected int argIndex
-
aCount
private int aCount
-
aTypes
private Type[] aTypes
-
aNames
private IdentifierToken[] aNames
-
curClass
private ClassDefinition curClass
-
FPstate
private int FPstate
-
scanner
protected Scanner scanner
Usuallythis.scanner == (Scanner)this. However, a delegate scanner can produce tokens for this parser, in which case(Scanner)thisis unused, except forthis.tokenandthis.posinstance variables which are filled from the real scanner bythis.scan()and the constructor.
-
-
Constructor Detail
-
Parser
protected Parser(Environment env, java.io.InputStream in) throws java.io.IOException
Create a parser- Throws:
java.io.IOException
-
Parser
protected Parser(Scanner scanner) throws java.io.IOException
Create a parser, given a scanner.- Throws:
java.io.IOException
-
Parser
public Parser(Scanner scanner, ParserActions actions) throws java.io.IOException
Create a parser, given a scanner and the semantic callback.- Throws:
java.io.IOException
-
-
Method Detail
-
packageDeclaration
@Deprecated public void packageDeclaration(long off, IdentifierToken nm)Deprecated.package declaration- Specified by:
packageDeclarationin interfaceParserActions
-
packageDeclaration
@Deprecated protected void packageDeclaration(long off, Identifier nm)Deprecated.
-
importClass
@Deprecated public void importClass(long off, IdentifierToken nm)Deprecated.import class- Specified by:
importClassin interfaceParserActions
-
importClass
@Deprecated protected void importClass(long off, Identifier nm)Deprecated.Use the version with the IdentifierToken arguments.
-
importPackage
@Deprecated public void importPackage(long off, IdentifierToken nm)Deprecated.import package- Specified by:
importPackagein interfaceParserActions
-
importPackage
@Deprecated protected void importPackage(long off, Identifier nm)Deprecated.Use the version with the IdentifierToken arguments.
-
beginClass
@Deprecated public ClassDefinition beginClass(long off, java.lang.String doc, int mod, IdentifierToken nm, IdentifierToken sup, IdentifierToken[] impl)
Deprecated.Define class- Specified by:
beginClassin interfaceParserActions- Returns:
- a cookie for the class This cookie is used by the parser when calling defineField and endClass, and is not examined otherwise.
-
beginClass
@Deprecated protected void beginClass(long off, java.lang.String doc, int mod, Identifier nm, Identifier sup, Identifier[] impl)Deprecated.Use the version with the IdentifierToken arguments.
-
getCurrentClass
protected ClassDefinition getCurrentClass()
Report the current class under construction. By default, it's a no-op which returns null. It may only be called before the corresponding endClass().
-
endClass
@Deprecated public void endClass(long off, ClassDefinition c)Deprecated.End class- Specified by:
endClassin interfaceParserActionsc- a cookie returned by the corresponding beginClass call
-
endClass
@Deprecated protected void endClass(long off, Identifier nm)Deprecated.Use the version with the IdentifierToken arguments.
-
defineField
@Deprecated public void defineField(long where, ClassDefinition c, java.lang.String doc, int mod, Type t, IdentifierToken nm, IdentifierToken[] args, IdentifierToken[] exp, Node val)Deprecated.Define a field- Specified by:
defineFieldin interfaceParserActionsc- a cookie returned by the corresponding beginClass call
-
defineField
@Deprecated protected void defineField(long where, java.lang.String doc, int mod, Type t, Identifier nm, Identifier[] args, Identifier[] exp, Node val)Deprecated.Use the version with the IdentifierToken arguments.
-
addArgument
protected final void addArgument(Node n)
-
exprArgs
protected final Expression[] exprArgs(int index)
-
statArgs
protected final Statement[] statArgs(int index)
-
expect
protected void expect(int t) throws SyntaxError, java.io.IOExceptionExpect a token, return its value, scan the next token or throw an exception.- Throws:
SyntaxErrorjava.io.IOException
-
parseTypeExpression
protected Expression parseTypeExpression() throws SyntaxError, java.io.IOException
Parse a type expression. Does not parse the []'s.- Throws:
SyntaxErrorjava.io.IOException
-
parseMethodExpression
protected Expression parseMethodExpression(Expression e, Identifier id) throws SyntaxError, java.io.IOException
Parse a method invocation. Should be called when the current then is the '(' of the argument list.- Throws:
SyntaxErrorjava.io.IOException
-
parseNewInstanceExpression
protected Expression parseNewInstanceExpression(long p, Expression outerArg, Expression type) throws SyntaxError, java.io.IOException
Parse a new instance expression. Should be called when the current token is the '(' of the argument list.- Throws:
SyntaxErrorjava.io.IOException
-
parseTerm
protected Expression parseTerm() throws SyntaxError, java.io.IOException
Parse a primary expression.- Throws:
SyntaxErrorjava.io.IOException
-
parseExpression
protected Expression parseExpression() throws SyntaxError, java.io.IOException
Parse an expression.- Throws:
SyntaxErrorjava.io.IOException
-
parseBinaryExpression
protected Expression parseBinaryExpression(Expression e) throws SyntaxError, java.io.IOException
Given a left-hand term, parse an operator and right-hand term.- Throws:
SyntaxErrorjava.io.IOException
-
recoverStatement
protected boolean recoverStatement() throws SyntaxError, java.io.IOExceptionRecover after a syntax error in a statement. This involves discarding tokens until EOF or a possible continuation is encountered.- Throws:
SyntaxErrorjava.io.IOException
-
parseDeclaration
protected Statement parseDeclaration(long p, int mod, Expression type) throws SyntaxError, java.io.IOException
Parse declaration, called after the type expression has been parsed and the current token is IDENT.- Throws:
SyntaxErrorjava.io.IOException
-
topLevelExpression
protected void topLevelExpression(Expression e)
Check if an expression is a legal toplevel expression. Only method, inc, dec, and new expression are allowed.
-
parseStatement
protected Statement parseStatement() throws SyntaxError, java.io.IOException
Parse a statement.- Throws:
SyntaxErrorjava.io.IOException
-
parseBlockStatement
protected Statement parseBlockStatement() throws SyntaxError, java.io.IOException
- Throws:
SyntaxErrorjava.io.IOException
-
parseName
protected IdentifierToken parseName(boolean star) throws SyntaxError, java.io.IOException
Parse an identifier. ie: a.b.c returns "a.b.c" If star is true then "a.b.*" is allowed. The return value encodes both the identifier and its location.- Throws:
SyntaxErrorjava.io.IOException
-
parseIdentifier
@Deprecated protected Identifier parseIdentifier(boolean star) throws SyntaxError, java.io.IOException
Deprecated.- Throws:
SyntaxErrorjava.io.IOException- See Also:
parseName(boolean)
-
parseType
protected Type parseType() throws SyntaxError, java.io.IOException
Parse a type expression, this results in a Type. The parse includes trailing array brackets.- Throws:
SyntaxErrorjava.io.IOException
-
parseArrayBrackets
protected Type parseArrayBrackets(Type t) throws SyntaxError, java.io.IOException
Parse the tail of a type expression, which might be array brackets. Return the given type, as possibly modified by the suffix.- Throws:
SyntaxErrorjava.io.IOException
-
addArgument
private void addArgument(int mod, Type t, IdentifierToken nm)
-
parseModifiers
protected int parseModifiers(int mask) throws java.io.IOExceptionParse a possibly-empty sequence of modifier keywords. Return the resulting bitmask. Diagnose repeated modifiers, but make no other checks. Only modifiers mentioned in the given bitmask are scanned; an unmatched modifier must be handled by the caller.- Throws:
java.io.IOException
-
parseField
protected void parseField() throws SyntaxError, java.io.IOExceptionParse a field.- Throws:
SyntaxErrorjava.io.IOException
-
recoverField
protected void recoverField(ClassDefinition newClass) throws SyntaxError, java.io.IOException
Recover after a syntax error in a field. This involves discarding tokens until an EOF or a possible legal continuation is encountered.- Throws:
SyntaxErrorjava.io.IOException
-
parseClass
protected void parseClass() throws SyntaxError, java.io.IOExceptionParse a top-level class or interface declaration.- Throws:
SyntaxErrorjava.io.IOException
-
parseLocalClass
protected Statement parseLocalClass(int mod) throws SyntaxError, java.io.IOException
Parse a block-local class or interface declaration.- Throws:
SyntaxErrorjava.io.IOException
-
parseNamedClass
protected ClassDefinition parseNamedClass(int mod, int ctx, java.lang.String doc) throws SyntaxError, java.io.IOException
Parse a named class or interface declaration, starting at "class" or "interface".- Throws:
SyntaxErrorjava.io.IOException
-
parseInheritance
protected void parseInheritance(java.util.Vector<IdentifierToken> ext, java.util.Vector<IdentifierToken> impl) throws SyntaxError, java.io.IOException
- Throws:
SyntaxErrorjava.io.IOException
-
parseClassBody
protected ClassDefinition parseClassBody(IdentifierToken nm, int mod, int ctx, java.lang.String doc, java.util.Vector<IdentifierToken> ext, java.util.Vector<IdentifierToken> impl, long p) throws SyntaxError, java.io.IOException
Parse the body of a class or interface declaration, starting at the left brace.- Throws:
SyntaxErrorjava.io.IOException
-
recoverFile
protected void recoverFile() throws java.io.IOExceptionRecover after a syntax error in the file. This involves discarding tokens until an EOF or a possible legal continuation is encountered.- Throws:
java.io.IOException
-
parseFile
public void parseFile()
Parse an Java file.
-
scan
public long scan() throws java.io.IOExceptionDescription copied from class:ScannerScan the next token.
-
-