Я хочу создать SQL-интерфейс поверх нереляционного хранилища данных. Нереляционное хранилище данных, но имеет смысл обращаться к данным реляционным образом.
Я изучаю использование ANTLR для создания AST, представляющего SQL как выражение реляционной алгебры. Затем возвращайте данные, оценивая/ходя по дереву.
Я никогда не реализовал парсер раньше, и поэтому мне хотелось бы получить некоторые советы о том, как наилучшим образом реализовать парсер и оценщик SQL.
- Описывается ли описанный выше подход правильно?
- Есть ли другие инструменты/библиотеки, на которые я должен смотреть? Как PLY или Pyparsing.
- Приветствуются указатели на статьи, книги или исходный код, которые помогут мне.
Update:
Я реализовал простой парсер SQL, используя pyparsing. В сочетании с кодом Python, который реализует реляционные операции с моим хранилищем данных, это было довольно просто.
Как я уже сказал в одном из комментариев, целью упражнения было сделать данные доступными для двигателей отчетов. Для этого мне, вероятно, понадобится реализовать драйвер ODBC. Это, вероятно, много работы.