-
Notifications
You must be signed in to change notification settings - Fork 3.4k
Closed
Description
Running Grammars-v4/plsql generated parser and putting ParserATNSimulator in debug mode as bellow is crashing when running over simple SQL script:
SELECT * FROM TAB1 T1, TAB2 T2 WHERE T1.F1=T2.F1;
""" sample code """
import sys
from antlr4 import *
from antlr4.tree.Tree import TerminalNode
from myparser.PlSqlLexer import PlSqlLexer
from myparser.PlSqlParser import PlSqlParser
from myparser.PlSqlParserVisitor import PlSqlParserVisitor
class UpperFileStream(FileStream):
def readDataFrom(self, fileName: str, encoding: str, errors: str = 'strict'):
return super().readDataFrom(fileName, encoding, errors).upper()
ParserATNSimulator.debug = True
input = UpperFileStream(sys.argv[1])
input = FileStream(argv[1])
lexer = PlSqlLexer(input)
stream = CommonTokenStream(lexer)
parser = PlSqlParser(stream)
tree = parser.sql_script()_
with following stack trace:
File "C:\Users\ericb_000\Documents\devs\langparser\src\myparser\PlSqlParser.py", line 12717, in unit_statement
self.data_manipulation_language_statements()
File "C:\Users\ericb_000\Documents\devs\langparser\src\myparser\PlSqlParser.py", line 63851, in data_manipulation_language_statements
self.select_statement()
File "C:\Users\ericb_000\Documents\devs\langparser\src\myparser\PlSqlParser.py", line 65257, in select_statement
self.subquery()
File "C:\Users\ericb_000\Documents\devs\langparser\src\myparser\PlSqlParser.py", line 65803, in subquery
self.subquery_basic_elements()
File "C:\Users\ericb_000\Documents\devs\langparser\src\myparser\PlSqlParser.py", line 65868, in subquery_basic_elements
self.query_block()
File "C:\Users\ericb_000\Documents\devs\langparser\src\myparser\PlSqlParser.py", line 66112, in query_block
la_ = self._interp.adaptivePredict(self._input,1253,self._ctx)
File "C:\ProgramData\Anaconda3\lib\site-packages\antlr4\atn\ParserATNSimulator.py", line 342, in adaptivePredict
alt = self.execATN(dfa, s0, input, index, outerContext)
File "C:\ProgramData\Anaconda3\lib\site-packages\antlr4\atn\ParserATNSimulator.py", line 442, in execATN
alt = self.execATNWithFullContext(dfa, D, s0_closure, input, startIndex, outerContext)
File "C:\ProgramData\Anaconda3\lib\site-packages\antlr4\atn\ParserATNSimulator.py", line 625, in execATNWithFullContext
self.reportContextSensitivity(dfa, predictedAlt, reach, startIndex, input.index)
File "C:\ProgramData\Anaconda3\lib\site-packages\antlr4\atn\ParserATNSimulator.py", line 1621, in reportContextSensitivity
", input=" + self.parser.getTokenStream().getText(interval))
File "C:\ProgramData\Anaconda3\lib\site-packages\antlr4\BufferedTokenStream.py", line 283, in getText
stop = interval[1]
IndexError: range object index out of range
I know that this is a limited issue but I wanted to use debug mode to investigate why this simple sql script takes more than a minute to parse in Python3 while it takes seconds with Java target.
Metadata
Metadata
Assignees
Labels
No labels