Что-либо, что находится в пространстве имен Excel, должно быть выпущено. Период
Вы не можете делать:
Worksheet ws = excel.WorkBooks[1].WorkSheets[1];
необходимо делать
Workbooks books = excel.WorkBooks;
Workbook book = books[1];
Sheets sheets = book.WorkSheets;
Worksheet ws = sheets[1];
сопровождаемый выпуском объектов.
Вы можете посмотреть исходный код SQLite. Он использует синтаксический анализатор под названием Lemon.
Ссылки:
Вы также можете посмотреть исходный код для postgresql-plpython3. Похоже, у него есть синтаксический анализатор SQL на чистом языке C.
Ссылка:
Я бы предложил начать с реального парсера реальной СУБД. В бесплатном ПО их несколько. Например, парсер PostgreSQL находится в каталоге src / backend / parser
дистрибутива и написан на C и Yacc.
Вы смотрели SQLite ? В нем определенно есть код для синтаксического анализа SQL, так что, возможно, вам удастся избежать его повторной реализации ..
См. Главу « Парсинг SQL » в «Lex & Yacc» (O'Reilly) в книгах Google http://books.google.fr/ books? id = YrzpxNYegEkC & lpg = PT1 & dq = bison% 20flex% 20sql% 20grammar & client = firefox-a & hl = en & pg = PA109
ANTLR может нацеливаться на C , среди других языков, а его каталог готовых грамматик содержит множество диалектов SQL, в частности MySQL и Оракул.
Думали ли вы о том, чтобы написать свой собственный, используя lex и yacc? (хакерский - хардкорный подход)
Нетривиально .. но этот сайт может помочь вам начать работу