Я пытаюсь разобрать ms sql, что позволяет заключить в скобки многие вещи. Например, вы можете скопировать имена столбцов, имена таблиц, временные таблицы и типы данных.разбор в квадратных скобках в ms sql
Это может принимать любые формы, как следующее:
select [#col1], [key], [case], [select], from [mytable]
CREATE TABLE MyTable ([MyCol] [varchar](50) NULL)
Проблема я бегу в том, что если я ставлю «в квадратные скобки идентификатор» в мое определение лексического анализатора, то мой анализатор будет видеть лексемы, как [Mycol ] и [varchar]. [varchar] не является типом данных, о котором знает мой парсер, но varchar. Моя грамматика не может справиться с сложностью работы с некоторыми заключенными в квадратные скобки маркерами и некоторыми неблокируемыми маркерами.
С другой стороны, если я возьму логику брекетинга из своего лексера и поместил ее в свой синтаксический анализатор, тогда я не смогу разобрать имена столбцов, которые содержат ключевые слова sql. ex:
select [key], [special case] from MyTable
Если это имеет значение, я генерирую код C# из этого, а не код Java.
Как я должен справиться с этим?