ESC/Java2
© 2003,2004,2005,2006 David Cok and Joseph Kiniry
© 2005,2006 UCD Dublin
© 2003,2004 Radboud University Nijmegen
© 1999,2000 Compaq Computer Corporation
© 1997,1998,1999 Digital Equipment Corporation
All Rights Reserved

javafe.parser
Class ParseUtil

java.lang.Object
  extended byjavafe.parser.ParseUtil
Direct Known Subclasses:
ParseType

public class ParseUtil
extends java.lang.Object

Base class for Java parser; provides some basic parsing utilities.

See Also:
ASTNode, ParseType, Parse

Field Summary
private static ASTDecoration elementUniverseDecoration
           
static int[] modifierKeywords
          Keyword at index i in this array corresponds to bit i in modifier bitset.
 ModifierPragmaVec modifierPragmas
          As a side effect, parseModifiers mutates this value.
protected  StackVector seqModifierPragma
           
 int[] universeArray
           
private static ASTDecoration universeDecoration
           
 int universeLevel
           
 boolean useUniverses
           
 
Constructor Summary
ParseUtil()
           
 
Method Summary
static java.lang.String arrayToString(java.lang.Object[] a, java.lang.String sep)
           
static void error(int loc, java.lang.String m)
           
 void expect(Lex l, int expected)
          Takes an expected token from the input stream, calls fail on error.
static void fail(int loc, java.lang.String m)
          Raises a RuntimeException with the argument string including a textual representation of the given source location.
static int getElementUniverse(ASTNode i)
           
 int getJavaModifier(Lex l, int modifiers)
          Checks if the next token is a Java modifier.
static int getUniverse(ASTNode i)
           
 boolean isJavaModifier(int ttype)
           
(package private)  int operatorTokenToTag(int token)
          Converts operator tokens to corresponding AST tag.
 ModifierPragmaVec parseModifierPragmas(Lex l)
          Parse a list of modifier pragmas.
 int parseModifiers(Lex l)
          Parse a list of modifiers.
 ModifierPragmaVec parseMoreModifierPragmas(Lex l, ModifierPragmaVec orig)
          Parse a list of modifier pragmas and adds them to an existing ModifierPragmaVec.
 void parseUniverses(Lex l)
           
static ASTNode setElementUniverse(ASTNode i, int u)
           
static ASTNode setUniverse(ASTNode i, int u)
           
static ASTNode setUniverse(ASTNode i, int[] a, Type t, int loc)
           
static ASTNode setUniverse(GenericVarDecl i, int[] a)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

universeLevel

public int universeLevel

useUniverses

public boolean useUniverses

universeArray

public int[] universeArray

seqModifierPragma

protected final StackVector seqModifierPragma

modifierKeywords

public static final int[] modifierKeywords
Keyword at index i in this array corresponds to bit i in modifier bitset. Thus PRIVATE is at index 1, ACC_PRIVATE = 1<<1. These are in the same bit order as the values in java.lang.reflect.Modifier, and should remain that way, though I don't know if any code uses that fact (it might come in handy in reading class files, for example).


modifierPragmas

public ModifierPragmaVec modifierPragmas
As a side effect, parseModifiers mutates this value.


universeDecoration

private static ASTDecoration universeDecoration

elementUniverseDecoration

private static ASTDecoration elementUniverseDecoration
Constructor Detail

ParseUtil

public ParseUtil()
Method Detail

fail

public static void fail(int loc,
                        java.lang.String m)
Raises a RuntimeException with the argument string including a textual representation of the given source location.


error

public static void error(int loc,
                         java.lang.String m)

expect

public void expect(Lex l,
                   int expected)
Takes an expected token from the input stream, calls fail on error.


operatorTokenToTag

int operatorTokenToTag(int token)
Converts operator tokens to corresponding AST tag. Tokens INC and DEC get mapped to PREFIXINC and PREFIXDEC


parseModifierPragmas

public ModifierPragmaVec parseModifierPragmas(Lex l)
Parse a list of modifier pragmas. Returns null if l does not point to a modifier pragma. Otherwise, reads l until there are no more modifier pragmas and returns the resulting list.


parseMoreModifierPragmas

public ModifierPragmaVec parseMoreModifierPragmas(Lex l,
                                                  ModifierPragmaVec orig)
Parse a list of modifier pragmas and adds them to an existing ModifierPragmaVec. If the existing ModifierPragmaVec was null, then it either returns null (if l does not point to a modifier pragma), or returns a new ModifierPragmaVec.


parseModifiers

public int parseModifiers(Lex l)
Parse a list of modifiers. Ensures no duplicate Java modifiers and only one of the access modifiers public, protected, private. Return integer encoding the Java modifiers.

In addition to parsing Java modifiers, also handles modifier pragmas (anything with a ttype of TagConstants.MODIFIERPRAGMA). If no modifier pragmas are seen, sets modifierPragmas to null. Otherwise, sets it to be the list of modifier pragmas seen in the course of parsing any Java modifiers.

See Also:
Modifiers

getJavaModifier

public int getJavaModifier(Lex l,
                           int modifiers)
Checks if the next token is a Java modifier. Returns 0 if it is not; returns an int with the modifier bit turned on if it is. Also issues an error if the modifier is already present in the modifiers argument (use 0 for this argument to turn off these errors). Note that the bit that is found is not ORed into the modifiers int; you have to do that outside this call. The Lex is advanced if a modifier is found.


isJavaModifier

public boolean isJavaModifier(int ttype)

arrayToString

public static java.lang.String arrayToString(java.lang.Object[] a,
                                             java.lang.String sep)

parseUniverses

public void parseUniverses(Lex l)

setUniverse

public static ASTNode setUniverse(ASTNode i,
                                  int u)

setUniverse

public static ASTNode setUniverse(ASTNode i,
                                  int[] a,
                                  Type t,
                                  int loc)

setUniverse

public static ASTNode setUniverse(GenericVarDecl i,
                                  int[] a)

getUniverse

public static int getUniverse(ASTNode i)

setElementUniverse

public static ASTNode setElementUniverse(ASTNode i,
                                         int u)

getElementUniverse

public static int getElementUniverse(ASTNode i)

ESC/Java2
© 2003,2004,2005,2006 David Cok and Joseph Kiniry
© 2005,2006 UCD Dublin
© 2003,2004 Radboud University Nijmegen
© 1999,2000 Compaq Computer Corporation
© 1997,1998,1999 Digital Equipment Corporation
All Rights Reserved

The ESC/Java2 Project Homepage