RUS  ENG
Полная версия
ЖУРНАЛЫ // Труды института системного программирования РАН // Архив

Труды ИСП РАН, 2018, том 30, выпуск 4, страницы 7–28 (Mi tisp344)

Эта публикация цитируется в 4 статьях

Tolerant parsing with a special kind of «Any» symbol: the algorithm and practical application

[Толерантный синтаксический анализ с использованием специального символа «Any»: алгоритм и практическое применение]

A. V. Goloveshkin, S. S. Mikhalkovich

I.I. Vorovich Institute for Mathematics, Mechanics and Computer Science, Southern Federal University

Аннотация: Толерантный синтаксический анализ позволяет найти области программы, представляющие интерес в контексте конкретной задачи, и извлечь информацию об их структуре. В то время как эти области должны быть подробно описаны в грамматике языка, другие части программы могут быть не описаны совсем или описаны менее детально, при этом генерируемый парсер должен признавать корректными все возможные вариации программы в нерелевантных областях, то есть, должен быть толерантным по отношению к ним. Островные грамматики — один из основных способов реализации толерантного парсинга. Термином «остров» обозначаются релевантные области кода, термином «вода» - нерелевантный код. В настоящей работе описывается модифицированный LL(1) алгоритм со встроенной обработкой специального символа «Any», позволяющего сопоставлять последовательности токенов, не описанные разработчиком грамматики в явном виде. Применение данного алгоритма к островным грамматикам ведёт к сокращению описания воды и упрощению описания островов. Наша реализация «Any» является более безопасной для использования и менее ограничительной по сравнению с ближайшими аналогами в генераторах Coco/R и LightParse. Также она более предсказуема и требует меньших накладных расходов в сравнении с концепцией «ограниченных морей», внедрённой в PetitParser. На базе алгоритма реализован генератор компиляторов со встроенным языком описания островных грамматик. Как показано в разделе экспериментов, сгенерированный по островной грамматике языка C# толерантный парсер может быть успешно применён для анализа крупных промышленных проектов.

Ключевые слова: толерантный парсинг, устойчивый парсинг, легковесный парсинг, частичный парсинг, островная грамматика, генерация парсеров.

Язык публикации: английский

DOI: 10.15514/ISPRAS-2018-30(4)-1



Реферативные базы данных:


© МИАН, 2024