Package gw.internal.gosu.parser
Class ParsedElement
- java.lang.Object
-
- gw.internal.gosu.parser.ParsedElement
-
- All Implemented Interfaces:
IParsedElement
- Direct Known Subclasses:
Expression,Statement
public abstract class ParsedElement extends java.lang.Object implements IParsedElement
ParsedElement is the root class for all non-terminal elements represented in a parse tree i.e., all non-terminal expressions and statements derive either directly or indirectly from this class.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classParsedElement.LikelyNullFields
-
Field Summary
Fields Modifier and Type Field Description private IGosuProgramInternal_gosuProgramprivate int_iColumnprivate int_iLineNumprivate ParsedElement.LikelyNullFields_lnfprivate ParseTree_locationprivate IParsedElement_parentprotected java.util.List<IToken>_tokensprivate static java.util.List<IParseTree>EMPTY_PARSETREE_LISTstatic java.lang.StringUNDEF_FILEstatic java.lang.StringUNDEF_FUNCTIONstatic java.lang.StringUNDEF_MODULE
-
Constructor Summary
Constructors Constructor Description ParsedElement()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddExceptionsFrom(IParsedElement elem)voidaddParseException(IFullParserState parserState, ResourceKey msgKey, java.lang.Object... args)voidaddParseException(IParseIssue pe)voidaddParseException(ResourceKey msgKey, java.lang.Object... args)voidaddParseExceptions(java.util.List<IParseIssue> parseExceptions)voidaddParseIssues(java.util.List<IParseIssue> parseIssues)voidaddParseWarning(IParseIssue warning)voidaddParseWarning(ResourceKey msgKey, java.lang.Object... args)voidaddParseWarnings(java.util.List<IParseIssue> parseWarnings)protected voidaddToken(IToken token, IParseTree after)voidadjustColumn(int offset)voidadjustLineNum(int offset)voidassignTokens(java.util.List<Token> tokens)private voidassignTokensToJustMe(java.util.List<Token> tokens)private intbinarySearchForFirstToken(java.util.List<Token> tokens, int iTreeOffset, int iTreeEnd, boolean bZeroLengthTree)private static IParsedElementWithAtLeastOneDeclarationcheckIfDeclaringStatement(IParsedElement parsedElement, java.lang.String identifierName)voidclearParseExceptions()voidclearParseTreeInformation()voidclearParseWarnings()voidcompactParseTree()private booleancontainsToken(java.util.List<IToken> tokens, IToken target)private static booleanelementIsOneOfType(IParsedElement element, java.lang.Class[] parsedElementClasses)IParsedElementfindAncestorParsedElementByType(java.lang.Class... parsedElementClasses)IParsedElementWithAtLeastOneDeclarationfindDeclaringStatement(IParsedElement element, java.lang.String identifierName)private static IParsedElementWithAtLeastOneDeclarationfindDeclaringStatementInChildren(IParsedElement element, java.lang.String identifierName)intfindLineNumberOfDeclaration(java.lang.String identifierName)IParsedElementfindRootParsedElement()java.util.List<IGosuAnnotation>getAnnotations()intgetColumn()<E extends IParsedElement>
booleangetContainedParsedElementsByType(java.lang.Class<E> parsedElementType, java.util.List<E> listResults)Find all the parsed elements of a given type contained within this parsed element.booleangetContainedParsedElementsByTypes(java.util.List<IParsedElement> listResults, java.lang.Class<? extends IParsedElement>... parsedElementTypes)booleangetContainedParsedElementsByTypesWithIgnoreSet(java.util.List<IParsedElement> listResults, java.util.Set<java.lang.Class<? extends IParsedElement>> ignoreSet, java.lang.Class<? extends IParsedElement>... parsedElementTypes)static IFeatureInfogetEnclosingFeatureInfo(java.util.Stack<IFeatureInfo> enclosingFeatureInfos)java.lang.StringgetFunctionName()IGosuClassgetGosuClass()IGosuProgramInternalgetGosuProgram()IParseIssuegetImmediateParseIssue(ResourceKey errKey)java.util.List<IParseIssue>getImmediateParseIssues()intgetLineNum()ParseTreegetLocation()IModulegetModule()IParsedElementgetParent()java.util.List<IParseIssue>getParseExceptions()private voidgetParseExceptions(java.util.List<IParseIssue> allParseExceptions)java.util.List<IParseIssue>getParseIssues()java.util.List<IParseIssue>getParseWarnings()private voidgetParseWarnings(java.util.List<IParseIssue> allWarnings)static ITypeInfogetQualifyingEnclosingTypeInfo(java.util.Stack<IFeatureInfo> enclosingFeatureInfos)private java.lang.StringgetSource()java.util.List<IToken>getTokens()booleanhasImmediateParseIssue(ResourceKey errKey)booleanhasImmediateParseWarning(ResourceKey errKey)booleanhasImmediateParseWarnings()booleanhasParseException(ResourceKey errKey)booleanhasParseExceptions()booleanhasParseIssue(IParseIssue pi)booleanhasParseIssues()booleanhasParseWarning(ResourceKey errKey)booleanhasParseWarnings()voidinitEmptyParseTree()ParseTreeinitLocation(int offset, int length, int lineNumber, int iColumn, IScriptPartId scriptPart)booleanisCompileTimeConstant()private booleanisDescendent(IParseTree after)booleanisSuppressed(IWarningSuppressor suppressor)booleanisSuppressed(IParseIssue issue)booleanisSynthetic()static doublemakeDoubleValue(java.lang.Object obj)Just like makeDouble(), but creates a double primitive value instead of a Double object.static floatmakeFloatValue(java.lang.Object obj)Just like makeFloat(), but creates a float primitive value instead of a Float object.java.lang.IntegermakeInteger(java.lang.Object obj)static java.lang.LongmakeLong(java.lang.Object obj)private voidmaybeInitLikelyNullFields()ParseExceptionremoveParseException(ResourceKey keyToRemove)Removes the specified parse exception or removes them all if the specified exception is null.private <E extends IParseIssue>
EremoveParseIssue(ResourceKey keyToRemove, java.util.List<E> issues)ParseWarningremoveParseWarning(ResourceKey keyToRemove)voidremoveParseWarningRecursively(ResourceKey keyToRemove)voidsetGosuProgram(IGosuProgramInternal gosuProgram)voidsetLineNum(int iLineNum)voidsetLocation(IParseTree location)Specifiy the location of this parsed element within the source.voidsetParent(IParsedElement parent)voidsetSynthetic(boolean bSynthetic)booleanshouldClearParseInfo()voidvisit(java.util.function.Consumer<IParsedElement> visitor)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface gw.lang.parser.IParsedElement
getReturnType
-
-
-
-
Field Detail
-
EMPTY_PARSETREE_LIST
private static final java.util.List<IParseTree> EMPTY_PARSETREE_LIST
-
UNDEF_MODULE
public static final java.lang.String UNDEF_MODULE
- See Also:
- Constant Field Values
-
UNDEF_FUNCTION
public static final java.lang.String UNDEF_FUNCTION
- See Also:
- Constant Field Values
-
UNDEF_FILE
public static final java.lang.String UNDEF_FILE
- See Also:
- Constant Field Values
-
_location
private ParseTree _location
-
_parent
private IParsedElement _parent
-
_iLineNum
private int _iLineNum
-
_iColumn
private int _iColumn
-
_lnf
private ParsedElement.LikelyNullFields _lnf
-
_gosuProgram
private IGosuProgramInternal _gosuProgram
-
_tokens
protected java.util.List<IToken> _tokens
-
-
Method Detail
-
getGosuProgram
public IGosuProgramInternal getGosuProgram()
- Specified by:
getGosuProgramin interfaceIParsedElement
-
setGosuProgram
public void setGosuProgram(IGosuProgramInternal gosuProgram)
-
addExceptionsFrom
public void addExceptionsFrom(IParsedElement elem)
- Specified by:
addExceptionsFromin interfaceIParsedElement
-
maybeInitLikelyNullFields
private void maybeInitLikelyNullFields()
-
getLocation
public ParseTree getLocation()
- Specified by:
getLocationin interfaceIParsedElement- Returns:
- The location of this parsed element within the source.
-
setLocation
public void setLocation(IParseTree location)
Specifiy the location of this parsed element within the source.- Specified by:
setLocationin interfaceIParsedElement- Parameters:
location- The location of this parsed element within the source.
-
initLocation
public ParseTree initLocation(int offset, int length, int lineNumber, int iColumn, IScriptPartId scriptPart)
-
visit
public void visit(java.util.function.Consumer<IParsedElement> visitor)
- Specified by:
visitin interfaceIParsedElement
-
initEmptyParseTree
public void initEmptyParseTree()
-
hasParseIssues
public boolean hasParseIssues()
- Specified by:
hasParseIssuesin interfaceIParsedElement
-
getParseIssues
public java.util.List<IParseIssue> getParseIssues()
- Specified by:
getParseIssuesin interfaceIParsedElement
-
getImmediateParseIssues
public java.util.List<IParseIssue> getImmediateParseIssues()
- Specified by:
getImmediateParseIssuesin interfaceIParsedElement
-
hasParseExceptions
public boolean hasParseExceptions()
- Specified by:
hasParseExceptionsin interfaceIParsedElement
-
hasParseException
public boolean hasParseException(ResourceKey errKey)
- Specified by:
hasParseExceptionin interfaceIParsedElement
-
getImmediateParseIssue
public IParseIssue getImmediateParseIssue(ResourceKey errKey)
- Specified by:
getImmediateParseIssuein interfaceIParsedElement
-
hasImmediateParseIssue
public boolean hasImmediateParseIssue(ResourceKey errKey)
- Specified by:
hasImmediateParseIssuein interfaceIParsedElement
-
hasParseWarning
public boolean hasParseWarning(ResourceKey errKey)
- Specified by:
hasParseWarningin interfaceIParsedElement
-
addParseWarnings
public void addParseWarnings(java.util.List<IParseIssue> parseWarnings)
-
addParseExceptions
public void addParseExceptions(java.util.List<IParseIssue> parseExceptions)
-
addParseIssues
public void addParseIssues(java.util.List<IParseIssue> parseIssues)
-
getParseExceptions
public java.util.List<IParseIssue> getParseExceptions()
- Specified by:
getParseExceptionsin interfaceIParsedElement
-
getParseExceptions
private void getParseExceptions(java.util.List<IParseIssue> allParseExceptions)
-
addParseException
public void addParseException(ResourceKey msgKey, java.lang.Object... args)
- Specified by:
addParseExceptionin interfaceIParsedElement
-
addParseException
public void addParseException(IFullParserState parserState, ResourceKey msgKey, java.lang.Object... args)
-
removeParseException
public ParseException removeParseException(ResourceKey keyToRemove)
Removes the specified parse exception or removes them all if the specified exception is null.
-
removeParseWarning
public ParseWarning removeParseWarning(ResourceKey keyToRemove)
-
removeParseWarningRecursively
public void removeParseWarningRecursively(ResourceKey keyToRemove)
-
removeParseIssue
private <E extends IParseIssue> E removeParseIssue(ResourceKey keyToRemove, java.util.List<E> issues)
-
getSource
private java.lang.String getSource()
-
getGosuClass
public IGosuClass getGosuClass()
- Specified by:
getGosuClassin interfaceIParsedElement
-
addParseWarning
public void addParseWarning(ResourceKey msgKey, java.lang.Object... args)
- Specified by:
addParseWarningin interfaceIParsedElement
-
addParseException
public void addParseException(IParseIssue pe)
- Specified by:
addParseExceptionin interfaceIParsedElement
-
clearParseExceptions
public void clearParseExceptions()
- Specified by:
clearParseExceptionsin interfaceIParsedElement
-
clearParseWarnings
public void clearParseWarnings()
- Specified by:
clearParseWarningsin interfaceIParsedElement
-
hasImmediateParseWarnings
public boolean hasImmediateParseWarnings()
- Specified by:
hasImmediateParseWarningsin interfaceIParsedElement
-
hasImmediateParseWarning
public boolean hasImmediateParseWarning(ResourceKey errKey)
-
hasParseWarnings
public boolean hasParseWarnings()
- Specified by:
hasParseWarningsin interfaceIParsedElement
-
getParseWarnings
public java.util.List<IParseIssue> getParseWarnings()
- Specified by:
getParseWarningsin interfaceIParsedElement
-
getParseWarnings
private void getParseWarnings(java.util.List<IParseIssue> allWarnings)
-
addParseWarning
public void addParseWarning(IParseIssue warning)
- Specified by:
addParseWarningin interfaceIParsedElement
-
hasParseIssue
public boolean hasParseIssue(IParseIssue pi)
- Specified by:
hasParseIssuein interfaceIParsedElement
-
isSuppressed
public boolean isSuppressed(IParseIssue issue)
-
isSuppressed
public boolean isSuppressed(IWarningSuppressor suppressor)
- Specified by:
isSuppressedin interfaceIParsedElement
-
getAnnotations
public java.util.List<IGosuAnnotation> getAnnotations()
-
isCompileTimeConstant
public boolean isCompileTimeConstant()
- Specified by:
isCompileTimeConstantin interfaceIParsedElement
-
getContainedParsedElementsByType
public <E extends IParsedElement> boolean getContainedParsedElementsByType(java.lang.Class<E> parsedElementType, java.util.List<E> listResults)
Find all the parsed elements of a given type contained within this parsed element.- Specified by:
getContainedParsedElementsByTypein interfaceIParsedElement- Parameters:
parsedElementType- The type of parsed element to find.listResults- A list of all the contained parsed elements matching the specified type. Can be null if you are only interested in whether or not parsedElementType exists in this element.- Returns:
- True iff one or more parseElementType are found.
-
getContainedParsedElementsByTypes
public boolean getContainedParsedElementsByTypes(java.util.List<IParsedElement> listResults, java.lang.Class<? extends IParsedElement>... parsedElementTypes)
- Specified by:
getContainedParsedElementsByTypesin interfaceIParsedElement
-
getContainedParsedElementsByTypesWithIgnoreSet
public boolean getContainedParsedElementsByTypesWithIgnoreSet(java.util.List<IParsedElement> listResults, java.util.Set<java.lang.Class<? extends IParsedElement>> ignoreSet, java.lang.Class<? extends IParsedElement>... parsedElementTypes)
- Specified by:
getContainedParsedElementsByTypesWithIgnoreSetin interfaceIParsedElement
-
makeInteger
public final java.lang.Integer makeInteger(java.lang.Object obj)
-
makeLong
public static java.lang.Long makeLong(java.lang.Object obj)
-
makeDoubleValue
public static double makeDoubleValue(java.lang.Object obj)
Just like makeDouble(), but creates a double primitive value instead of a Double object. Much more efficient if you don't need the object.- Parameters:
obj- Any double convertible object- Returns:
- The double primitive value.
-
makeFloatValue
public static float makeFloatValue(java.lang.Object obj)
Just like makeFloat(), but creates a float primitive value instead of a Float object. Much more efficient if you don't need the object.- Parameters:
obj- Any float convertible object- Returns:
- The float primitive value.
-
compactParseTree
public void compactParseTree()
-
clearParseTreeInformation
public void clearParseTreeInformation()
- Specified by:
clearParseTreeInformationin interfaceIParsedElement
-
getParent
public IParsedElement getParent()
- Specified by:
getParentin interfaceIParsedElement
-
setParent
public void setParent(IParsedElement parent)
- Specified by:
setParentin interfaceIParsedElement
-
getLineNum
public int getLineNum()
- Specified by:
getLineNumin interfaceIParsedElement
-
adjustLineNum
public void adjustLineNum(int offset)
-
setLineNum
public void setLineNum(int iLineNum)
-
getColumn
public int getColumn()
- Specified by:
getColumnin interfaceIParsedElement
-
adjustColumn
public void adjustColumn(int offset)
-
getFunctionName
public java.lang.String getFunctionName()
- Specified by:
getFunctionNamein interfaceIParsedElement
-
isSynthetic
public boolean isSynthetic()
- Specified by:
isSyntheticin interfaceIParsedElement
-
setSynthetic
public void setSynthetic(boolean bSynthetic)
-
getModule
public IModule getModule()
- Specified by:
getModulein interfaceIParsedElement
-
getEnclosingFeatureInfo
public static IFeatureInfo getEnclosingFeatureInfo(java.util.Stack<IFeatureInfo> enclosingFeatureInfos)
-
getQualifyingEnclosingTypeInfo
public static ITypeInfo getQualifyingEnclosingTypeInfo(java.util.Stack<IFeatureInfo> enclosingFeatureInfos)
-
findLineNumberOfDeclaration
public int findLineNumberOfDeclaration(java.lang.String identifierName)
-
findDeclaringStatement
public IParsedElementWithAtLeastOneDeclaration findDeclaringStatement(IParsedElement element, java.lang.String identifierName)
- Specified by:
findDeclaringStatementin interfaceIParsedElement
-
findDeclaringStatementInChildren
private static IParsedElementWithAtLeastOneDeclaration findDeclaringStatementInChildren(IParsedElement element, java.lang.String identifierName)
-
checkIfDeclaringStatement
private static IParsedElementWithAtLeastOneDeclaration checkIfDeclaringStatement(IParsedElement parsedElement, java.lang.String identifierName)
-
findRootParsedElement
public IParsedElement findRootParsedElement()
- Specified by:
findRootParsedElementin interfaceIParsedElement
-
findAncestorParsedElementByType
public IParsedElement findAncestorParsedElementByType(java.lang.Class... parsedElementClasses)
- Specified by:
findAncestorParsedElementByTypein interfaceIParsedElement- Parameters:
parsedElementClasses- List of statement types to find- Returns:
- The nearest ancestor statement that is any one of the given types. null if this element does not have an ancestor of any of the given types
-
elementIsOneOfType
private static boolean elementIsOneOfType(IParsedElement element, java.lang.Class[] parsedElementClasses)
-
shouldClearParseInfo
public boolean shouldClearParseInfo()
-
assignTokens
public void assignTokens(java.util.List<Token> tokens)
-
addToken
protected void addToken(IToken token, IParseTree after)
-
getTokens
public java.util.List<IToken> getTokens()
- Specified by:
getTokensin interfaceIParsedElement
-
assignTokensToJustMe
private void assignTokensToJustMe(java.util.List<Token> tokens)
-
binarySearchForFirstToken
private int binarySearchForFirstToken(java.util.List<Token> tokens, int iTreeOffset, int iTreeEnd, boolean bZeroLengthTree)
-
isDescendent
private boolean isDescendent(IParseTree after)
-
-