Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 15, 2008 10:26:01

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

pyparsing: кавычки к шаблону

изучаю pyparsing с целью разбора sql.

название таблицы определяю как:

tableName  = Optional('`') + Group( ident + Optional( "." + ident )).setResultsName( "tables" ) + Optional ('`')
как указать, что кавычки если бывают, то только парами?

смотрел класс QuotedString и функцию nestedExpr:
QuotedString - определяет шаблон для слова в кавычках, а у меня в кавычках не слово, а выражение.
nestedExpr - определяет выражение внутри тегов, но открывающие и закрывающие теги должны отличаться.



Офлайн

#2 Авг. 15, 2008 12:46:36

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

pyparsing: кавычки к шаблону

а стоит его изучать?
может регуляркой проще?
c pyparser можно очень быстро упереться в проблемы производительности



Офлайн

#3 Авг. 15, 2008 13:21:32

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

pyparsing: кавычки к шаблону

мне кажется, что pyparsing это попытка использовать принципы формальной грамматики и уже за это стоит в нём разобраться

регуляркой не пробовал, да и не смотрел ещё, что могут регулярки в python. (пользовал только в php)
даже если они окажутся очень похожи с php, то неизвестно, сколько времени займёт создание собственного класса, который бы преобразовывал строку sql запроса в объект.

проблема производительности в текущей задаче третьестепенна.



Офлайн

#4 Авг. 20, 2008 14:59:58

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

pyparsing: кавычки к шаблону

как вариант можно:

        tName   = Group( ident + Optional( "." + ident )).setResultsName( "tables" )
tableName = ( tName | '"'+ tName + '"' )



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version