Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
создание рекурсивных выражений, обработка таблиц, поиск по тексту с оптимизацией, резко ускоряющей сам поиск, и многое другое.
После того, как мы напишем парсер, мы заменим * на названия использованных нами классов.Читай как «Забудем заменить»
setParseAction, addParseAction, которыми можно задать дополнительное поведение, как возвращая изменненное значение, так кидая ParseException, еще понарвилось что эскейпинг легко делать.Для парсинга как правило используют регулярные выражения.
SELECT и UPDATE, только из одной таблицы с опциональным WHERE, в котором может быть ровно один предикат с равенством.SELECT * FROM `t`SELECT `c1`, `c2`, `c3` FROM `t` WHERE `c2` = 5UPDATE `t` SET `c1` = 5UPDATE `t` SET `c2` = `c1` + `c3` WHERE `c1` = 7SELECT, UPDATE, FROM, WHERE, SET — ключевые слова. В кавычках — идентификаторы. Звездочка — то же, что и перечисление всех колонок в таблице. Скажем, для самого простого подмножества запрсов SELECT описание синтаксиса будет примерно такое:SELECT * | `<имя колонки>` [, `<имя колонки>` ...]
FROM `<имя таблицы>`
[WHERE `<имя колонки>` = <константа> | `<имя колонки>`]UPDATE:UPDATE `<имя таблицы>`
SET `<имя колонки>` = <константа>
| `<имя колонки>` = `<имя колонки>`
| `<имя колонки>` = `<имя колонки>` <арифметическая операция: + - * /> `<имя колонки>`
[WHERE `<имя колонки>` = <константа> | `<имя колонки>`]
Парсим на Python: Pyparsing для новичков