Package gw.lang.parser.exceptions
Class ParseIssue
- java.lang.Object
-
- java.lang.Throwable
-
- java.lang.Exception
-
- gw.lang.parser.exceptions.ParseIssue
-
- All Implemented Interfaces:
IParseIssue,Serializable
- Direct Known Subclasses:
ParseException,ParseWarning
public abstract class ParseIssue extends Exception implements IParseIssue
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedParseIssue(IParserState parserState, ResourceKey key, Object... msgArgs)protectedParseIssue(IParserState state, Throwable t)protectedParseIssue(Integer lineNumber, Integer lineOffset, Integer tokenColumn, Integer tokenStart, Integer tokenEnd, ISymbolTable symbolTable, ResourceKey key, Object... msgArgs)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddLineOffset(int offset)voidadjustOffset(int offset, int lineNumOffset, int columnOffset)booleanappliesToPosition(int iPos)Returns true if this issue is relevant to the given positionThrowablefillInStackTrace()Don't fill in stack trace since parse issues are not really "exceptional" in terms of the parser's Java implementation; we don't care much about the Java stack trace when these are thrown.protected static StringformatError(ResourceKey key, Object... msgArgs)intgetColumn()StringgetConsoleMessage()StringgetContextString()StringgetContextStringNoLineNumbers()ITypegetExpectedType()intgetLine()IntegergetLineNumber()IntegergetLineOffset()intgetLineReportingOffset()Object[]getMessageArgs()ResourceKeygetMessageKey()StringgetPlainMessage()IParsedElementgetSource()Warning: Only valid if called from the parser thread.StringgetStateSource()ISymbolTablegetSymbolTable()Warning: Only valid if called from the parser thread.IntegergetTokenColumn()IntegergetTokenEnd()IntegergetTokenStart()StringgetUIMessage()static StringmakeContextString(int lineOfError, String source, int lineReportingOffset)voidresetPositions()voidresolve(IParserPart parserBase)voidsetMessage(ResourceKey key, Object... args)voidsetSource(IParsedElement sourceOfError)voidsetStateSource(String parserSource)-
Methods inherited from class java.lang.Throwable
addSuppressed, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface gw.lang.parser.IParseIssue
printStackTrace, setExpectedType
-
-
-
-
Constructor Detail
-
ParseIssue
protected ParseIssue(IParserState parserState, ResourceKey key, Object... msgArgs)
-
ParseIssue
protected ParseIssue(Integer lineNumber, Integer lineOffset, Integer tokenColumn, Integer tokenStart, Integer tokenEnd, ISymbolTable symbolTable, ResourceKey key, Object... msgArgs)
-
ParseIssue
protected ParseIssue(IParserState state, Throwable t)
-
-
Method Detail
-
fillInStackTrace
public Throwable fillInStackTrace()
Don't fill in stack trace since parse issues are not really "exceptional" in terms of the parser's Java implementation; we don't care much about the Java stack trace when these are thrown. Rather parse issues provide a means to tag parsed elements with issues discovered during parsing, such as syntax warnings and errors. Hence, the ParseIssue interface. Note this method is otherwise very costly from a performance standpoint.- Overrides:
fillInStackTracein classThrowable
-
formatError
protected static String formatError(ResourceKey key, Object... msgArgs)
-
getLineNumber
public Integer getLineNumber()
-
getLineOffset
public Integer getLineOffset()
-
addLineOffset
public void addLineOffset(int offset)
-
getTokenColumn
public Integer getTokenColumn()
-
getTokenEnd
public Integer getTokenEnd()
- Specified by:
getTokenEndin interfaceIParseIssue
-
getTokenStart
public Integer getTokenStart()
- Specified by:
getTokenStartin interfaceIParseIssue
-
getContextString
public String getContextString()
-
getContextStringNoLineNumbers
public String getContextStringNoLineNumbers()
-
getStateSource
public String getStateSource()
-
setStateSource
public void setStateSource(String parserSource)
-
getPlainMessage
public String getPlainMessage()
- Specified by:
getPlainMessagein interfaceIParseIssue- Returns:
- the raw message for this parse issue, with no formatting
-
getConsoleMessage
public String getConsoleMessage()
- Specified by:
getConsoleMessagein interfaceIParseIssue- Returns:
- the message for this parse issue formatted for printing out to a console
-
makeContextString
public static String makeContextString(int lineOfError, String source, int lineReportingOffset)
-
getUIMessage
public String getUIMessage()
- Specified by:
getUIMessagein interfaceIParseIssue- Returns:
- the message formatted for use by an IDE
-
getLine
public int getLine()
- Specified by:
getLinein interfaceIParseIssue- Returns:
- the line that this issue is on
-
getColumn
public int getColumn()
- Specified by:
getColumnin interfaceIParseIssue
-
getSource
public IParsedElement getSource()
Warning: Only valid if called from the parser thread. Otherwise we null it out.- Specified by:
getSourcein interfaceIParseIssue- Returns:
- the parsed element that this issue is associated with
-
setSource
public void setSource(IParsedElement sourceOfError)
-
getSymbolTable
public ISymbolTable getSymbolTable()
Warning: Only valid if called from the parser thread. Otherwise we null it out.- Specified by:
getSymbolTablein interfaceIParseIssue- Returns:
- the symbol table state at the creation of this issue. Can return null if no symbol table is present.
-
appliesToPosition
public boolean appliesToPosition(int iPos)
Description copied from interface:IParseIssueReturns true if this issue is relevant to the given position- Specified by:
appliesToPositionin interfaceIParseIssue
-
getMessageKey
public ResourceKey getMessageKey()
- Specified by:
getMessageKeyin interfaceIParseIssue- Returns:
- the resource key for this ParseIssue, which can be used as a kind of identifier for the type of issue.
-
resolve
public void resolve(IParserPart parserBase)
- Specified by:
resolvein interfaceIParseIssue
-
resetPositions
public void resetPositions()
- Specified by:
resetPositionsin interfaceIParseIssue
-
adjustOffset
public void adjustOffset(int offset, int lineNumOffset, int columnOffset)
-
setMessage
public void setMessage(ResourceKey key, Object... args)
-
getMessageArgs
public Object[] getMessageArgs()
- Specified by:
getMessageArgsin interfaceIParseIssue
-
getLineReportingOffset
public int getLineReportingOffset()
-
getExpectedType
public IType getExpectedType()
- Specified by:
getExpectedTypein interfaceIParseIssue
-
-