Синтаксический анализатор SQL в C

Что-либо, что находится в пространстве имен Excel, должно быть выпущено. Период

Вы не можете делать:

Worksheet ws = excel.WorkBooks[1].WorkSheets[1];

необходимо делать

Workbooks books = excel.WorkBooks;
Workbook book = books[1];
Sheets sheets = book.WorkSheets;
Worksheet ws = sheets[1];

сопровождаемый выпуском объектов.

9
задан 18 July 2009 в 11:08
поделиться

6 ответов

Вы можете посмотреть исходный код SQLite. Он использует синтаксический анализатор под названием Lemon.

Ссылки:

Архитектура SQLite

Анализатор Lemon

Вы также можете посмотреть исходный код для postgresql-plpython3. Похоже, у него есть синтаксический анализатор SQL на чистом языке C.

Ссылка:

postgresql-plpython3 @ github

10
ответ дан 4 December 2019 в 13:49
поделиться

Я бы предложил начать с реального парсера реальной СУБД. В бесплатном ПО их несколько. Например, парсер PostgreSQL находится в каталоге src / backend / parser дистрибутива и написан на C и Yacc.

4
ответ дан 4 December 2019 в 13:49
поделиться

Вы смотрели SQLite ? В нем определенно есть код для синтаксического анализа SQL, так что, возможно, вам удастся избежать его повторной реализации ..

1
ответ дан 4 December 2019 в 13:49
поделиться
1
ответ дан 4 December 2019 в 13:49
поделиться

ANTLR может нацеливаться на C , среди других языков, а его каталог готовых грамматик содержит множество диалектов SQL, в частности MySQL и Оракул.

1
ответ дан 4 December 2019 в 13:49
поделиться

Думали ли вы о том, чтобы написать свой собственный, используя lex и yacc? (хакерский - хардкорный подход)

Нетривиально .. но этот сайт может помочь вам начать работу

-3
ответ дан 4 December 2019 в 13:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: