|
|
|
|
|
|
|
|
|
|
|
|
|
Token = None |
|
Lexer = None |
|
Parser = None |
|
TokenStream = None |
|
ATNConfigSet = None |
|
ParserRulecontext = None |
|
PredicateTransition = None |
|
BufferedTokenStream = None |
|
|
|
class UnsupportedOperationException(Exception): |
|
|
|
def __init__(self, msg:str): |
|
super().__init__(msg) |
|
|
|
class IllegalStateException(Exception): |
|
|
|
def __init__(self, msg:str): |
|
super().__init__(msg) |
|
|
|
class CancellationException(IllegalStateException): |
|
|
|
def __init__(self, msg:str): |
|
super().__init__(msg) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from antlr4.InputStream import InputStream |
|
from antlr4.ParserRuleContext import ParserRuleContext |
|
from antlr4.Recognizer import Recognizer |
|
|
|
class RecognitionException(Exception): |
|
|
|
|
|
def __init__(self, message:str=None, recognizer:Recognizer=None, input:InputStream=None, ctx:ParserRulecontext=None): |
|
super().__init__(message) |
|
self.message = message |
|
self.recognizer = recognizer |
|
self.input = input |
|
self.ctx = ctx |
|
|
|
|
|
|
|
self.offendingToken = None |
|
|
|
|
|
|
|
|
|
|
|
self.offendingState = -1 |
|
if recognizer is not None: |
|
self.offendingState = recognizer.state |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def getExpectedTokens(self): |
|
if self.recognizer is not None: |
|
return self.recognizer.atn.getExpectedTokens(self.offendingState, self.ctx) |
|
else: |
|
return None |
|
|
|
|
|
class LexerNoViableAltException(RecognitionException): |
|
|
|
def __init__(self, lexer:Lexer, input:InputStream, startIndex:int, deadEndConfigs:ATNConfigSet): |
|
super().__init__(message=None, recognizer=lexer, input=input, ctx=None) |
|
self.startIndex = startIndex |
|
self.deadEndConfigs = deadEndConfigs |
|
|
|
def __str__(self): |
|
symbol = "" |
|
if self.startIndex >= 0 and self.startIndex < self.input.size: |
|
symbol = self.input.getText(self.startIndex, self.startIndex) |
|
|
|
return "LexerNoViableAltException('" + symbol + "')" |
|
|
|
|
|
|
|
|
|
|
|
|
|
class NoViableAltException(RecognitionException): |
|
|
|
def __init__(self, recognizer:Parser, input:TokenStream=None, startToken:Token=None, |
|
offendingToken:Token=None, deadEndConfigs:ATNConfigSet=None, ctx:ParserRuleContext=None): |
|
if ctx is None: |
|
ctx = recognizer._ctx |
|
if offendingToken is None: |
|
offendingToken = recognizer.getCurrentToken() |
|
if startToken is None: |
|
startToken = recognizer.getCurrentToken() |
|
if input is None: |
|
input = recognizer.getInputStream() |
|
super().__init__(recognizer=recognizer, input=input, ctx=ctx) |
|
|
|
self.deadEndConfigs = deadEndConfigs |
|
|
|
|
|
|
|
|
|
self.startToken = startToken |
|
self.offendingToken = offendingToken |
|
|
|
|
|
|
|
|
|
class InputMismatchException(RecognitionException): |
|
|
|
def __init__(self, recognizer:Parser): |
|
super().__init__(recognizer=recognizer, input=recognizer.getInputStream(), ctx=recognizer._ctx) |
|
self.offendingToken = recognizer.getCurrentToken() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class FailedPredicateException(RecognitionException): |
|
|
|
def __init__(self, recognizer:Parser, predicate:str=None, message:str=None): |
|
super().__init__(message=self.formatMessage(predicate,message), recognizer=recognizer, |
|
input=recognizer.getInputStream(), ctx=recognizer._ctx) |
|
s = recognizer._interp.atn.states[recognizer.state] |
|
trans = s.transitions[0] |
|
from antlr4.atn.Transition import PredicateTransition |
|
if isinstance(trans, PredicateTransition): |
|
self.ruleIndex = trans.ruleIndex |
|
self.predicateIndex = trans.predIndex |
|
else: |
|
self.ruleIndex = 0 |
|
self.predicateIndex = 0 |
|
self.predicate = predicate |
|
self.offendingToken = recognizer.getCurrentToken() |
|
|
|
def formatMessage(self, predicate:str, message:str): |
|
if message is not None: |
|
return message |
|
else: |
|
return "failed predicate: {" + predicate + "}?" |
|
|
|
class ParseCancellationException(CancellationException): |
|
|
|
pass |
|
|
|
del Token |
|
del Lexer |
|
del Parser |
|
del TokenStream |
|
del ATNConfigSet |
|
del ParserRulecontext |
|
del PredicateTransition |
|
del BufferedTokenStream |
|
|