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 intprotected intprivate GosuParserprivate booleanprivate List<IParseTree>private IGosuValidatorprivate static final Object[]private static final NotAWordExpressionprivate static final IParserStateprivate static final INamespaceType -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid(package private) final voidaddError(ParsedElement parsedElement, ResourceKey errorMsg) (package private) final voidaddError(ParsedElement parsedElement, ResourceKey errorMsg, Object... args) private ParseTreeaddLocation(ParseTree location, boolean bForceRedundancy) (package private) final voidprivate static booleanassertBoxedOrBigNumber(ParserBase parser, ParsedElement parsedElement, IType rhsType, int op) protected voidcaptureAllSymbols(ICompilableTypeInternal anonClass, ICompilableTypeInternal enclosingClass, List<ICapturedSymbol> capturedSymbols) protected ISymbolcaptureSymbol(ICompilableTypeInternal anonClass, String strName, ParsedElement e) protected voidcopyBlockStackTo(ParserBase otherParser) final TokeneatBlock(char cBegin, char cEnd, boolean bOperator) final TokeneatBlock(char cBegin, char cEnd, boolean bOperator, boolean bStopAtDeclarationKeyword) protected voideatOptionalSemiColon(boolean bEat) (package private) voideatParenthesized(ParsedElement parsedElement, ResourceKey errorKey) (package private) void(package private) voideatPossibleArrayBrackets(boolean bMatchStart) (package private) boolean(package private) void(package private) voideatPossibleParametarization(boolean bMatchStart) (package private) boolean(package private) booleaneatStatementBlock(ParsedElement parsedElement, ResourceKey errorKey) voidfindAndWrapLocation(Expression oldExpr, ParsedElement newExpr) static IMethodInfofindMathOpMethod(IType lhsType, int op, IType rhsType) private ISymbolfindSymbol(String strName, boolean ignoreFunctionSymbols) private ISymbolfindSymbol(String strName, ISymbolTable symTable, boolean ignoreFunctionSymbols) private static ITypegetAndAssignOperatorOverloader(IType lhsType, IType rhsType, int op, ParsedElement parsedElement) (package private) ClassStatementprotected ICompilableTypeInternal(package private) ICompilableTypeInternalintintprivate ICompilableTypeInternalgetOwner()protected IGosuClassInternalprivate IScopegetScope(ICompilableType anonClass) protected abstract String(package private) ISymbolTableprivate ISymbolTablegetSymbolTableForClass(ICompilableType gsClass) (package private) SourceCodeTokenizerprotected ISymbolgetUncapturedSymbol(ICompilableType gsClass, String strName) private static ITypehandleBoxedAndPrimitiveTypes(IType lhsType, IType rhsType) private ISymbolbooleanprotected boolean(package private) static booleanisFinalDimension(ParserBase parser, IType lhsType, ParsedElement pe) private static booleanisNonFinalDimension(IType type) (package private) booleanboolean(package private) booleanisTypeVarInReifiedContext(Expression expr, ITypeVariableType typeVarType) (package private) final booleanprivate static ITypemakeBoxedTypeIfEitherOperandIsBoxed(IType lhsType, IType rhsType, IType retType) (package private) final IFullParserState(package private) final IFullParserState(package private) final LazyLightweightParserState(package private) final LightweightParserStateprotected final booleanPossibly matches the specified token type.protected final boolean(package private) final booleanprotected final booleanPossibly matches the specified string token value.final booleanPossibly matches the specified token or name (in token).final booleanPossibly matches the specified token or name (in token).static booleanmatchDeclarationKeyword(String[] ret, boolean bPeek, SourceCodeTokenizer tokenizer) private intmaybeAddJavadocDeprecatedModifier(int iModifiers, List<IGosuAnnotation> annotations) private voidprivate voidprotected voidparseAnnotation(List<IGosuAnnotation> annotations) private AnnotationUseSiteTargetClauseParse a dot separated path as a single logical token(package private) ModifierInfo(package private) ModifierInfoparseModifiers(boolean bIgnoreErrors) protected Expressionprotected Statement(package private) voidprotected Expressionprivate DocCommentBlockprotected Statementprotected ExpressionpossiblyWrapWithCoercion(Expression expressionToCoerce, IType typeToCoerceTo, boolean bImplicit) protected ExpressionpossiblyWrapWithImplicitCoercion(Expression expressionToCoerce, IType typeToCoerceTo) voidpushCurrentBlock(BlockExpression block) protected voidprotected voidpushInferringFunctionTypeVars(List<IType> typeVariableTypes) (package private) voidpushModifierList(int iOffsetList, int iLineNumList, int iColumnList) protected voidpushStatement(Statement stmt) private ISymbolresolveForNullEnclosingClass(String strName) private static ITyperesolveIfDimensionOperand(ParserBase parser, ParsedElement parsedElement, IType lhsType, int op, IType rhsType) protected INamespaceTyperesolveNamespace(String strName) protected ISymbolresolveNamespaceSymbol(ParsedElement e, String strName) static ITyperesolveRuntimeType(ArithmeticExpression expr, IType lhsType, int op, IType rhsType) protected ISymbolresolveSymbol(ParsedElement e, String strName, boolean ignoreFunctionSymbols) protected ITyperesolveType(ParsedElement parsedElement, IType lhsType, int op, IType rhsType) static ITyperesolveType(IType lhsType, int op, IType rhsType) protected ITyperesolveTypeForArithmeticExpression(ParsedElement parsedElement, IType lhsType, String op, IType rhsType) voidsetBlocks(Stack<BlockExpression> blocks) voidsetDontOptimizeStatementLists(boolean dontOptimizeStatementLists) voidsetIgnoreWarnings(Set<ResourceKey> msgKeys) voidsetLineNumShift(int lineNumShift) (package private) voidsetLocation(int iOffset, int iLineNum, int iColumn) (package private) voidsetLocation(int iOffset, int iLineNum, int iColumn, boolean bForceRedundancy) (package private) voidsetLocation(int iOffset, int iLineNum, int iColumn, boolean bZeroLength, boolean bForceRedundancy) protected voidsetLocationForImplicitTypeAs(Expression expressionToCoerce, TypeAsExpression tas) protected voidsetOffsetShift(int offsetShift) protected voidsetOwner(GosuParser owner) voidvoidsetSubTree(List<IParseTree> subTree) voidsetValidator(IGosuValidator validator) booleanprivate booleanverify(ParsedElement parsedElement, boolean bExpression, boolean bNextTokenIfException, boolean bWarning, IParserState parserState, ResourceKey errorMesg, Object... args) (package private) booleanverify(ParsedElement parsedElement, boolean bExpression, boolean bNextTokenIfException, IParserState parserState, ResourceKey errorMesg, Object... args) (package private) final booleanverify(ParsedElement parsedElement, boolean bExpression, boolean bNextTokenIfException, ResourceKey errorMesg, Object... args) (package private) final booleanverify(ParsedElement parsedElement, boolean bExpression, IParserState parserState, ResourceKey errorMesg, Object... args) (package private) final booleanverify(ParsedElement parsedElement, boolean bExpression, ResourceKey errorMesg, Object... args) (package private) final booleanverify(ParsedElement parsedElement, boolean bExpression, ResourceKey errorMesg, String arg0) (package private) final booleanverify(ParsedElement parsedElement, boolean bExpression, ResourceKey errorMesg, String... args) (package private) voidverifyAnnotations(IParsedElement pe, ModifierInfo modInfo, UsageTarget targetType) protected voidverifyComparable(IType lhsType, Expression rhs) protected voidverifyComparable(IType lhsType, Expression rhs, boolean bBiDirectional, boolean bErrorIfCoercion) protected voidverifyComparable(IType lhsType, Expression rhs, boolean bBiDirectional, boolean bErrorIfCoercion, IParserState state) (package private) voidverifyModifiers(IParsedElement pe, ModifierInfo modInfo, UsageTarget targetType) protected voidverifyModifiersForFeature(IParsedElement pe, ModifierInfo modInfo) (package private) voidverifyNoAbstractHideOverrideModifierDefined(ParsedElement elem, boolean bIgnoreErrors, int modifier, Keyword kw) (package private) voidverifyNoAbstractHideOverrideStaticModifierDefined(ParsedElement elem, boolean bIgnoreErrors, int modifier, Keyword kw) (package private) voidverifyNoAbstractHideOverrideStaticModifierDefined(ParsedElement elem, boolean bIgnoreErrors, int modifier, Keyword kw, boolean alreadyMatched) (package private) voidverifyNoAbstractHideStaticModifierDefined(ParsedElement elem, boolean bIgnoreErrors, int modifier, Keyword kw, boolean alreadyMatched) (package private) voidverifyNoAccessibilityModifierDefined(ParsedElement elem, boolean bIgnoreErrors, int modifier, Keyword kw) (package private) voidverifyNoCombinedFinalPrivateModifierDefined(ParsedElement elem, boolean bIgnoreErrors, int modifier) (package private) voidverifyNoCombinedFinalStaticModifierDefined(ParsedElement elem, boolean bIgnoreErrors, int modifier) (package private) voidverifyNoCombinedPrivateAbstract(ParsedElement elem, boolean bIgnoreErrors, int modifier) (package private) voidverifyNoHideOverrideModifierDefined(ParsedElement elem, boolean bIgnoreErrors, int modifier, Keyword kw) (package private) voidverifyNoHideOverrideStaticModifierDefined(ParsedElement elem, boolean bIgnoreErrors, int modifier, Keyword kw) void(package private) final booleanverifyOrWarn(ParsedElement target, boolean bExpression, boolean bWarning, ResourceKey err, Object... args) protected voidverifyParsedElement(IParsedElement element) protected voidverifyParsedElement(IParsedElement element, boolean bThrowOnWarnings) protected ITypeverifyTypesComparable(ParsedElement element, IType lhsType, IType rhsType, boolean bBiDirectional, boolean bErrorIfCoercion) protected ITypeverifyTypesComparable(ParsedElement element, IType lhsType, IType rhsType, boolean bBiDirectional, boolean bErrorIfCoercion, IParserState state) (package private) voidverifyTypeVarAreReified(Expression expr, IType rhsType) (package private) final booleanwarn(ParsedElement target, boolean bExpression, IParserState state, ResourceKey err, Object... args) (package private) final booleanwarn(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:
getOwnerin 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:
setDontOptimizeStatementListsin interfaceIParserPart
-
isDontOptimizeStatementLists
public boolean isDontOptimizeStatementLists()- Specified by:
isDontOptimizeStatementListsin 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:
setValidatorin interfaceIParserPart
-
getValidator
-
setOffsetShift
protected void setOffsetShift(int offsetShift) -
setLineNumShift
public void setLineNumShift(int lineNumShift) - Specified by:
setLineNumShiftin interfaceIParserPart
-
getLineNumShift
public int getLineNumShift()- Specified by:
getLineNumShiftin interfaceIParserPart
-
getOffsetShift
public int getOffsetShift()- Specified by:
getOffsetShiftin interfaceIParserPart
-
pushInferringFunctionTypeVars
-
popInferringFunctionTypeVariableTypes
-
peekInferringFunctionTypeVariableTypes
-
getCurrentlyInferringFunctionTypeVars
-
matchDeclarationKeyword
public static boolean matchDeclarationKeyword(String[] ret, boolean bPeek, SourceCodeTokenizer tokenizer) -
shouldSnapshotSymbols
public boolean shouldSnapshotSymbols() -
setSnapshotSymbols
public void setSnapshotSymbols()
-