Package gw.internal.gosu.parser
Class ParserBase
java.lang.Object
gw.internal.gosu.parser.ParserBase
- All Implemented Interfaces:
IParserPart
- Direct Known Subclasses:
GosuClassParser
,GosuParser
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected boolean
(package private) Stack<BlockExpression>
private Set<ResourceKey>
private int
protected int
private GosuParser
private boolean
private List<IParseTree>
private IGosuValidator
private static final Object[]
private static final NotAWordExpression
private static final IParserState
private static final INamespaceType
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
(package private) final void
addError
(ParsedElement parsedElement, ResourceKey errorMsg) (package private) final void
addError
(ParsedElement parsedElement, ResourceKey errorMsg, Object... args) private ParseTree
addLocation
(ParseTree location, boolean bForceRedundancy) (package private) final void
private static boolean
assertBoxedOrBigNumber
(ParserBase parser, ParsedElement parsedElement, IType rhsType, int op) protected void
captureAllSymbols
(ICompilableTypeInternal anonClass, ICompilableTypeInternal enclosingClass, List<ICapturedSymbol> capturedSymbols) protected ISymbol
captureSymbol
(ICompilableTypeInternal anonClass, String strName, ParsedElement e) protected void
copyBlockStackTo
(ParserBase otherParser) final Token
eatBlock
(char cBegin, char cEnd, boolean bOperator) final Token
eatBlock
(char cBegin, char cEnd, boolean bOperator, boolean bStopAtDeclarationKeyword) protected void
eatOptionalSemiColon
(boolean bEat) (package private) void
eatParenthesized
(ParsedElement parsedElement, ResourceKey errorKey) (package private) void
(package private) void
eatPossibleArrayBrackets
(boolean bMatchStart) (package private) boolean
(package private) void
(package private) void
eatPossibleParametarization
(boolean bMatchStart) (package private) boolean
(package private) boolean
eatStatementBlock
(ParsedElement parsedElement, ResourceKey errorKey) void
findAndWrapLocation
(Expression oldExpr, ParsedElement newExpr) static IMethodInfo
findMathOpMethod
(IType lhsType, int op, IType rhsType) private ISymbol
findSymbol
(String strName, boolean ignoreFunctionSymbols) private ISymbol
findSymbol
(String strName, ISymbolTable symTable, boolean ignoreFunctionSymbols) private static IType
getAndAssignOperatorOverloader
(IType lhsType, IType rhsType, int op, ParsedElement parsedElement) (package private) ClassStatement
protected ICompilableTypeInternal
(package private) ICompilableTypeInternal
int
int
private ICompilableTypeInternal
getOwner()
protected IGosuClassInternal
private IScope
getScope
(ICompilableType anonClass) protected abstract String
(package private) ISymbolTable
private ISymbolTable
getSymbolTableForClass
(ICompilableType gsClass) (package private) SourceCodeTokenizer
protected ISymbol
getUncapturedSymbol
(ICompilableType gsClass, String strName) private static IType
handleBoxedAndPrimitiveTypes
(IType lhsType, IType rhsType) private ISymbol
boolean
protected boolean
(package private) static boolean
isFinalDimension
(ParserBase parser, IType lhsType, ParsedElement pe) private static boolean
isNonFinalDimension
(IType type) (package private) boolean
boolean
(package private) boolean
isTypeVarInReifiedContext
(Expression expr, ITypeVariableType typeVarType) (package private) final boolean
private static IType
makeBoxedTypeIfEitherOperandIsBoxed
(IType lhsType, IType rhsType, IType retType) (package private) final IFullParserState
(package private) final IFullParserState
(package private) final LazyLightweightParserState
(package private) final LightweightParserState
protected final boolean
Possibly matches the specified token type.protected final boolean
(package private) final boolean
protected final boolean
Possibly matches the specified string token value.final boolean
Possibly matches the specified token or name (in token).final boolean
Possibly matches the specified token or name (in token).static boolean
matchDeclarationKeyword
(String[] ret, boolean bPeek, SourceCodeTokenizer tokenizer) private int
maybeAddJavadocDeprecatedModifier
(int iModifiers, List<IGosuAnnotation> annotations) private void
private void
protected void
parseAnnotation
(List<IGosuAnnotation> annotations) private AnnotationUseSiteTargetClause
Parse a dot separated path as a single logical token(package private) ModifierInfo
(package private) ModifierInfo
parseModifiers
(boolean bIgnoreErrors) protected Expression
protected Statement
(package private) void
protected Expression
private DocCommentBlock
protected Statement
protected Expression
possiblyWrapWithCoercion
(Expression expressionToCoerce, IType typeToCoerceTo, boolean bImplicit) protected Expression
possiblyWrapWithImplicitCoercion
(Expression expressionToCoerce, IType typeToCoerceTo) void
pushCurrentBlock
(BlockExpression block) protected void
protected void
pushInferringFunctionTypeVars
(List<IType> typeVariableTypes) (package private) void
pushModifierList
(int iOffsetList, int iLineNumList, int iColumnList) protected void
pushStatement
(Statement stmt) private ISymbol
resolveForNullEnclosingClass
(String strName) private static IType
resolveIfDimensionOperand
(ParserBase parser, ParsedElement parsedElement, IType lhsType, int op, IType rhsType) protected INamespaceType
resolveNamespace
(String strName) protected ISymbol
resolveNamespaceSymbol
(ParsedElement e, String strName) static IType
resolveRuntimeType
(ArithmeticExpression expr, IType lhsType, int op, IType rhsType) protected ISymbol
resolveSymbol
(ParsedElement e, String strName, boolean ignoreFunctionSymbols) protected IType
resolveType
(ParsedElement parsedElement, IType lhsType, int op, IType rhsType) static IType
resolveType
(IType lhsType, int op, IType rhsType) protected IType
resolveTypeForArithmeticExpression
(ParsedElement parsedElement, IType lhsType, String op, IType rhsType) void
setBlocks
(Stack<BlockExpression> blocks) void
setDontOptimizeStatementLists
(boolean dontOptimizeStatementLists) void
setIgnoreWarnings
(Set<ResourceKey> msgKeys) void
setLineNumShift
(int lineNumShift) (package private) void
setLocation
(int iOffset, int iLineNum, int iColumn) (package private) void
setLocation
(int iOffset, int iLineNum, int iColumn, boolean bForceRedundancy) (package private) void
setLocation
(int iOffset, int iLineNum, int iColumn, boolean bZeroLength, boolean bForceRedundancy) protected void
setLocationForImplicitTypeAs
(Expression expressionToCoerce, TypeAsExpression tas) protected void
setOffsetShift
(int offsetShift) protected void
setOwner
(GosuParser owner) void
void
setSubTree
(List<IParseTree> subTree) void
setValidator
(IGosuValidator validator) boolean
private boolean
verify
(ParsedElement parsedElement, boolean bExpression, boolean bNextTokenIfException, boolean bWarning, IParserState parserState, ResourceKey errorMesg, Object... args) (package private) boolean
verify
(ParsedElement parsedElement, boolean bExpression, boolean bNextTokenIfException, IParserState parserState, ResourceKey errorMesg, Object... args) (package private) final boolean
verify
(ParsedElement parsedElement, boolean bExpression, boolean bNextTokenIfException, ResourceKey errorMesg, Object... args) (package private) final boolean
verify
(ParsedElement parsedElement, boolean bExpression, IParserState parserState, ResourceKey errorMesg, Object... args) (package private) final boolean
verify
(ParsedElement parsedElement, boolean bExpression, ResourceKey errorMesg, Object... args) (package private) final boolean
verify
(ParsedElement parsedElement, boolean bExpression, ResourceKey errorMesg, String arg0) (package private) final boolean
verify
(ParsedElement parsedElement, boolean bExpression, ResourceKey errorMesg, String... args) (package private) void
verifyAnnotations
(IParsedElement pe, ModifierInfo modInfo, UsageTarget targetType) protected void
verifyComparable
(IType lhsType, Expression rhs) protected void
verifyComparable
(IType lhsType, Expression rhs, boolean bBiDirectional, boolean bErrorIfCoercion) protected void
verifyComparable
(IType lhsType, Expression rhs, boolean bBiDirectional, boolean bErrorIfCoercion, IParserState state) (package private) void
verifyModifiers
(IParsedElement pe, ModifierInfo modInfo, UsageTarget targetType) protected void
verifyModifiersForFeature
(IParsedElement pe, ModifierInfo modInfo) (package private) void
verifyNoAbstractHideOverrideModifierDefined
(ParsedElement elem, boolean bIgnoreErrors, int modifier, Keyword kw) (package private) void
verifyNoAbstractHideOverrideStaticModifierDefined
(ParsedElement elem, boolean bIgnoreErrors, int modifier, Keyword kw) (package private) void
verifyNoAbstractHideOverrideStaticModifierDefined
(ParsedElement elem, boolean bIgnoreErrors, int modifier, Keyword kw, boolean alreadyMatched) (package private) void
verifyNoAbstractHideStaticModifierDefined
(ParsedElement elem, boolean bIgnoreErrors, int modifier, Keyword kw, boolean alreadyMatched) (package private) void
verifyNoAccessibilityModifierDefined
(ParsedElement elem, boolean bIgnoreErrors, int modifier, Keyword kw) (package private) void
verifyNoCombinedFinalPrivateModifierDefined
(ParsedElement elem, boolean bIgnoreErrors, int modifier) (package private) void
verifyNoCombinedFinalStaticModifierDefined
(ParsedElement elem, boolean bIgnoreErrors, int modifier) (package private) void
verifyNoCombinedPrivateAbstract
(ParsedElement elem, boolean bIgnoreErrors, int modifier) (package private) void
verifyNoHideOverrideModifierDefined
(ParsedElement elem, boolean bIgnoreErrors, int modifier, Keyword kw) (package private) void
verifyNoHideOverrideStaticModifierDefined
(ParsedElement elem, boolean bIgnoreErrors, int modifier, Keyword kw) void
(package private) final boolean
verifyOrWarn
(ParsedElement target, boolean bExpression, boolean bWarning, ResourceKey err, Object... args) protected void
verifyParsedElement
(IParsedElement element) protected void
verifyParsedElement
(IParsedElement element, boolean bThrowOnWarnings) protected IType
verifyTypesComparable
(ParsedElement element, IType lhsType, IType rhsType, boolean bBiDirectional, boolean bErrorIfCoercion) protected IType
verifyTypesComparable
(ParsedElement element, IType lhsType, IType rhsType, boolean bBiDirectional, boolean bErrorIfCoercion, IParserState state) (package private) void
verifyTypeVarAreReified
(Expression expr, IType rhsType) (package private) final boolean
warn
(ParsedElement target, boolean bExpression, IParserState state, ResourceKey err, Object... args) (package private) final boolean
warn
(ParsedElement target, boolean bExpression, ResourceKey err, Object... args) private void
-
Field Details
-
EMPTY_ARRAY
-
PLACEHOLDER_PARSER_STATE
-
PROGRAM_NAMESPACE
-
_snapshotSymbols
private boolean _snapshotSymbols -
_owner
-
_blocks
Stack<BlockExpression> _blocks -
_validator
-
_offsetShift
protected int _offsetShift -
_lineNumShift
private int _lineNumShift -
_bDontOptimizeStatementLists
protected boolean _bDontOptimizeStatementLists -
_subTree
-
_inferringFunctionTypes
-
NOT_SET_EXPRESSION
-
_ignoreWarnings
-
-
Constructor Details
-
ParserBase
public ParserBase() -
ParserBase
-
-
Method Details
-
getOwner
- Specified by:
getOwner
in interfaceIParserPart
-
setOwner
-
setIgnoreWarnings
-
getTokenizer
SourceCodeTokenizer getTokenizer() -
getSymbolTable
ISymbolTable getSymbolTable() -
setLocation
void setLocation(int iOffset, int iLineNum, int iColumn) -
setLocation
void setLocation(int iOffset, int iLineNum, int iColumn, boolean bForceRedundancy) -
setLocation
void setLocation(int iOffset, int iLineNum, int iColumn, boolean bZeroLength, boolean bForceRedundancy) -
addLocation
-
getLocationsList
-
pushExpression
-
verifyParsedElement
- Throws:
ParseResultsException
-
verifyParsedElement
protected void verifyParsedElement(IParsedElement element, boolean bThrowOnWarnings) throws ParseResultsException - Throws:
ParseResultsException
-
getScript
-
popExpression
-
peekExpression
-
pushStatement
-
popStatement
-
peekStatement
-
eatStatementBlock
-
eatPossibleStatementBlock
boolean eatPossibleStatementBlock() -
eatPossibleEnclosedVarInStmt
boolean eatPossibleEnclosedVarInStmt() -
eatParenthesized
-
eatPossibleParametarization
void eatPossibleParametarization() -
eatPossibleParametarization
void eatPossibleParametarization(boolean bMatchStart) -
eatPossibleArrayBrackets
void eatPossibleArrayBrackets() -
eatPossibleArrayBrackets
void eatPossibleArrayBrackets(boolean bMatchStart) -
eatBlock
-
eatBlock
public final Token eatBlock(char cBegin, char cEnd, boolean bOperator, boolean bStopAtDeclarationKeyword) -
eatTypeLiteral
public void eatTypeLiteral() -
parseDotPathWord
Parse a dot separated path as a single logical token -
match
Possibly matches the specified string token value. If a match occurs the token will be eaten and its information put into T (if T is not null).- Parameters:
T
- the Token object to populate iff a match is foundtoken
- the string object to match- Returns:
- true if a match occurred, and false otherwise
-
match
Possibly matches the specified token type. If a match occurs then the token will be eaten and its information put into T (if T is not null).- Parameters:
T
- the Token object to populate iff a match is foundiType
- the token "type" to match (e.g.ISourceCodeTokenizer.TT_WORD
)- Returns:
- true if a match occurred, and false otherwise
-
match
Possibly matches the specified token or name (in token). If a match occurs then the token will be eaten and its information put into T (if T is not null).- Parameters:
T
- the Token object to populate iff a match is foundtoken
- the string object to matchiType
- the token "type" to match (e.g.ISourceCodeTokenizer.TT_WORD
)- Returns:
- true if a match occurred, and false otherwise
-
match
Possibly matches the specified token or name (in token). If a match occurs and bPeek is false then the token will be eaten and its information put into T (if T is not null).- Parameters:
T
- the Token object to populate iff a match is foundtoken
- the string object to matchiType
- the token "type" to match (e.g.ISourceCodeTokenizer.TT_WORD
)bPeek
- if true, a matching token will not be consumed (i.e. the stream will not advance to the next token.) if false, a matching token will be removed from the front of the stream.- Returns:
- true if a match occurred, and false otherwise
-
isWordOrValueKeyword
-
match
-
match
-
addError
-
addError
-
verify
final boolean verify(ParsedElement parsedElement, boolean bExpression, ResourceKey errorMesg, String arg0) -
verify
final boolean verify(ParsedElement parsedElement, boolean bExpression, ResourceKey errorMesg, String... args) -
verify
final boolean verify(ParsedElement parsedElement, boolean bExpression, ResourceKey errorMesg, Object... args) -
verify
final boolean verify(ParsedElement parsedElement, boolean bExpression, IParserState parserState, ResourceKey errorMesg, Object... args) -
verify
final boolean verify(ParsedElement parsedElement, boolean bExpression, boolean bNextTokenIfException, ResourceKey errorMesg, Object... args) -
verify
boolean verify(ParsedElement parsedElement, boolean bExpression, boolean bNextTokenIfException, IParserState parserState, ResourceKey errorMesg, Object... args) -
warn
-
warn
final boolean warn(ParsedElement target, boolean bExpression, IParserState state, ResourceKey err, Object... args) -
verifyOrWarn
final boolean verifyOrWarn(ParsedElement target, boolean bExpression, boolean bWarning, ResourceKey err, Object... args) -
verify
private boolean verify(ParsedElement parsedElement, boolean bExpression, boolean bNextTokenIfException, boolean bWarning, IParserState parserState, ResourceKey errorMesg, Object... args) -
advanceToNextTokenSilently
final void advanceToNextTokenSilently() -
makeFullParserState
- Returns:
- a full parser state, which includes symbol table information, a clone of the tokenizer and everything else
-
makeFullParserStateWithSymbols
- Returns:
- a full parser state, which includes symbol table information, a clone of the tokenizer and everything else
-
makeLightweightParserState
- Returns:
- a lightweight parser state, which includes *only* the offset information of the parser, and no symbol information or a tokenizer state.
-
makeLazyLightweightParserState
-
resolveTypeForArithmeticExpression
protected IType resolveTypeForArithmeticExpression(ParsedElement parsedElement, IType lhsType, String op, IType rhsType) -
resolveType
-
isNonFinalDimension
-
resolveRuntimeType
public static IType resolveRuntimeType(ArithmeticExpression expr, IType lhsType, int op, IType rhsType) -
resolveType
-
handleBoxedAndPrimitiveTypes
-
makeBoxedTypeIfEitherOperandIsBoxed
-
resolveIfDimensionOperand
private static IType resolveIfDimensionOperand(ParserBase parser, ParsedElement parsedElement, IType lhsType, int op, IType rhsType) -
assertBoxedOrBigNumber
private static boolean assertBoxedOrBigNumber(ParserBase parser, ParsedElement parsedElement, IType rhsType, int op) -
isFinalDimension
-
getAndAssignOperatorOverloader
private static IType getAndAssignOperatorOverloader(IType lhsType, IType rhsType, int op, ParsedElement parsedElement) -
findMathOpMethod
-
resolveSymbol
-
handleForwardReference
-
isOrIsEnclosedByAnonymousClass
-
resolveNamespaceSymbol
-
maybeAddLocalsOfEnclosingType
private void maybeAddLocalsOfEnclosingType() -
resolveNamespace
-
captureAllSymbols
protected void captureAllSymbols(ICompilableTypeInternal anonClass, ICompilableTypeInternal enclosingClass, List<ICapturedSymbol> capturedSymbols) -
captureSymbol
-
warnOnPcfVariablesHack
-
getScope
-
resolveForNullEnclosingClass
-
getUncapturedSymbol
-
getSymbolTableForClass
-
findSymbol
-
findSymbol
-
isEvalClass
protected boolean isEvalClass() -
verifyComparable
-
verifyComparable
protected void verifyComparable(IType lhsType, Expression rhs, boolean bBiDirectional, boolean bErrorIfCoercion) -
verifyComparable
protected void verifyComparable(IType lhsType, Expression rhs, boolean bBiDirectional, boolean bErrorIfCoercion, IParserState state) -
verifyTypesComparable
protected IType verifyTypesComparable(ParsedElement element, IType lhsType, IType rhsType, boolean bBiDirectional, boolean bErrorIfCoercion) -
verifyTypesComparable
protected IType verifyTypesComparable(ParsedElement element, IType lhsType, IType rhsType, boolean bBiDirectional, boolean bErrorIfCoercion, IParserState state) -
verifyNonVoidExpression
-
getGosuClass
ICompilableTypeInternal getGosuClass() -
getClassStatement
ClassStatement getClassStatement() -
parseModifiers
ModifierInfo parseModifiers() -
parseModifiers
-
maybeAddJavadocDeprecatedModifier
-
pushModifierList
void pushModifierList(int iOffsetList, int iLineNumList, int iColumnList) -
eatOptionalSemiColon
protected void eatOptionalSemiColon(boolean bEat) -
parseAnnotation
-
parseAnnotationUseSiteTarget
-
maybeVerifyAnnotationArgs
-
verifyModifiers
-
verifyModifiersForFeature
-
verifyAnnotations
-
verifyNoAbstractHideOverrideStaticModifierDefined
void verifyNoAbstractHideOverrideStaticModifierDefined(ParsedElement elem, boolean bIgnoreErrors, int modifier, Keyword kw) -
verifyNoAbstractHideOverrideStaticModifierDefined
void verifyNoAbstractHideOverrideStaticModifierDefined(ParsedElement elem, boolean bIgnoreErrors, int modifier, Keyword kw, boolean alreadyMatched) -
verifyNoHideOverrideStaticModifierDefined
void verifyNoHideOverrideStaticModifierDefined(ParsedElement elem, boolean bIgnoreErrors, int modifier, Keyword kw) -
verifyNoAbstractHideStaticModifierDefined
void verifyNoAbstractHideStaticModifierDefined(ParsedElement elem, boolean bIgnoreErrors, int modifier, Keyword kw, boolean alreadyMatched) -
verifyNoAccessibilityModifierDefined
void verifyNoAccessibilityModifierDefined(ParsedElement elem, boolean bIgnoreErrors, int modifier, Keyword kw) -
verifyNoAbstractHideOverrideModifierDefined
void verifyNoAbstractHideOverrideModifierDefined(ParsedElement elem, boolean bIgnoreErrors, int modifier, Keyword kw) -
verifyNoHideOverrideModifierDefined
void verifyNoHideOverrideModifierDefined(ParsedElement elem, boolean bIgnoreErrors, int modifier, Keyword kw) -
verifyNoCombinedPrivateAbstract
-
verifyNoCombinedFinalPrivateModifierDefined
void verifyNoCombinedFinalPrivateModifierDefined(ParsedElement elem, boolean bIgnoreErrors, int modifier) -
verifyNoCombinedFinalStaticModifierDefined
void verifyNoCombinedFinalStaticModifierDefined(ParsedElement elem, boolean bIgnoreErrors, int modifier) -
setDontOptimizeStatementLists
public void setDontOptimizeStatementLists(boolean dontOptimizeStatementLists) - Specified by:
setDontOptimizeStatementLists
in interfaceIParserPart
-
isDontOptimizeStatementLists
public boolean isDontOptimizeStatementLists()- Specified by:
isDontOptimizeStatementLists
in interfaceIParserPart
-
setSubTree
-
setBlocks
-
pushCurrentBlock
-
addBlockToBlockStack
-
getCurrentEnclosingGosuClass
-
getOuterFromScriptPartStack
-
popCurrentBlock
void popCurrentBlock() -
isParsingBlock
public boolean isParsingBlock() -
copyBlockStackTo
-
getParsingAnonymousClass
-
possiblyWrapWithImplicitCoercion
protected Expression possiblyWrapWithImplicitCoercion(Expression expressionToCoerce, IType typeToCoerceTo) -
possiblyWrapWithCoercion
protected Expression possiblyWrapWithCoercion(Expression expressionToCoerce, IType typeToCoerceTo, boolean bImplicit) -
verifyTypeVarAreReified
-
isTypeVarInReifiedContext
-
setLocationForImplicitTypeAs
-
findAndWrapLocation
-
popLastComment
-
setValidator
- Specified by:
setValidator
in interfaceIParserPart
-
getValidator
-
setOffsetShift
protected void setOffsetShift(int offsetShift) -
setLineNumShift
public void setLineNumShift(int lineNumShift) - Specified by:
setLineNumShift
in interfaceIParserPart
-
getLineNumShift
public int getLineNumShift()- Specified by:
getLineNumShift
in interfaceIParserPart
-
getOffsetShift
public int getOffsetShift()- Specified by:
getOffsetShift
in interfaceIParserPart
-
pushInferringFunctionTypeVars
-
popInferringFunctionTypeVariableTypes
-
peekInferringFunctionTypeVariableTypes
-
getCurrentlyInferringFunctionTypeVars
-
matchDeclarationKeyword
public static boolean matchDeclarationKeyword(String[] ret, boolean bPeek, SourceCodeTokenizer tokenizer) -
shouldSnapshotSymbols
public boolean shouldSnapshotSymbols() -
setSnapshotSymbols
public void setSnapshotSymbols()
-