Как разобрать комментарии с грамматиками EBNF - PullRequest
4 голосов
/ 26 сентября 2011

При определении грамматики для синтаксического анализатора языка, как вы поступаете с такими вещами, как комментарии (например, / * .... * /), которые могут встречаться в любой точке в тексте?

Построение вашей грамматики из тегов внутри тегов, кажется, прекрасно работает, когда все структурировано, но комментарии, кажется, бросают все.

Вам просто нужно проанализировать текст в два этапа? Сначала убрать эти элементы, а потом отделить фактическую структуру кода?

Спасибо

Ответы [ 2 ]

4 голосов
/ 26 сентября 2011

Обычно комментарии обрабатываются лексическим анализатором вне рамок основной грамматики.По сути, с ними (как правило) обращаются так, как если бы они были пробелами.

2 голосов
/ 26 сентября 2011

Один из подходов - использовать отдельный лексер. Другой, гораздо более гибкий способ, состоит в том, чтобы изменить все ваши подобные токену записи (ключевые слова, лексические элементы и т. Д.) С неявным префиксом пробела, действительным для текущего контекста. Вот как большинство современных парсеров Packrat имеют дело с пробелами.

...