Простой парсер для JML

Я ищу парсер, написанный на Java, способный читать JML.

По сути, я бы хотел, чтобы синтаксический анализатор мог читать блок JML и знать, к какому методу он принадлежит.

Я смотрел на проект OpenJML, но просто настройки проекта слишком много.

1 ответ

Решение

Я сомневаюсь, что вы найдете инструмент, который делает именно то, что вы хотите, или даже близко к тому, что вы хотите.

Вы могли бы написать "частичную" грамматику Java, которая сканирует входной файл для //@ ... а также /*@ ... @*/ непосредственно сопровождается объявлением метода. Под "частичным" я подразумеваю, что вы не семантически анализируете входной источник, а выполняете его только на лексическом уровне (только для токенов). Убедитесь, что вы учитываете строковые литералы: вы не хотите, чтобы литерал String s = "/*@"; быть началом спецификации JML.

Два хорошо известных генератора парсеров для Java:

  1. ANTLR
  2. JavaCC

Освоение любого из них займет немного времени, особенно если вы новичок в генераторах синтаксических анализаторов, но как только вы освоите его, создание небольшой грамматики, которая могла бы сделать это надежно, совсем немного.

Другие вопросы по тегам