I'm using ANTLR with Presto grammar in order to parse SQL queries.
This is the original string definition I've used to parse queries:
STRING
: ''' ( '\' .
| ~[\'] // match anything other than and '
| '''' // match ''
)*
'''
;
This worked ok for most queries until I saw queries with different escaping rules. For example:
select
table1(replace(replace(some_col,'\'',''),'"' ,'')) as features
from table1
So I've modified my String definition and now it looks like:
STRING
: ''' ( '\' .
| '\\' . {HelperUtils.isNeedSpecialEscaping(this)}? // match followed by any char
| ~[\'] // match anything other than and '
| '''' // match ''
)*
'''
;
However, this won't work for the query mentioned above as I'm getting
'\'',''),'
as a single string.
The predicate returns True for the following query.
Any idea how can I handle this query as well?
Thanks,
Nir.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…