2015-11-27 3 views
-2

Я немного новый на ANTLR4. У меня есть полная грамматика ANTLR4 для синтаксического анализа COBOL исходных файлов, но я немного путают с моей проблемой: -Каков наилучший подход для ANTLR4?

  1. вопрос производительности (я использовал режим Prediction.SLL, но некоторое время он пропускает некоторые правила)
  2. Когда я предоставляю несколько разных типов или новых файлов, всегда грамматика не сможет анализировать новые файлы (сбой грамматики). Всегда нужны изменения?
  3. Я знаю о YACC, но YACC не имеет пользовательского интерфейса, а также не поддерживает генерацию парсера Java.
  4. А как насчет подхода к острову? Где это помогает?

ИЛИ любой другой инструмент, который следует использовать?

Я хотел понять ANTLR лучший способ извлечения вещей, и есть ли какой-либо другой инструмент с открытым исходным кодом, такой как ANTLR, который будет эффективен для этой цели.

Ваши предложения и руководство высоко оценены.

+0

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

+0

Я знаю, что я не ставил свой вопрос так хорошо. Но мой мотив состоит в том, чтобы понять проблему производительности ANTLR, а также желаю знать, что у острова есть дополнительное преимущество перед полной грамматикой? .. Теперь да, я понимаю, что YACC не является хорошим вариантом для АНТЛР. Но да, мне очень любопытно узнать, есть ли другой инструмент, похожий на ANTLR? не YACC. – Siddharth

+1

Поиски Google и некоторые копания находятся всего в нескольких кликах. Это был бы лучший способ тренироваться. SO не является местом для замены такого рода обучения, но только для конкретных вещей, которые вы ударили во время обучения. –

ответ

1
  1. Antlr очень быстр, без каких-либо улучшений производительности - он будет использовать SLL, где это необходимо, и автоматически возвращаться к LL, если это необходимо. Откат обычно встречается при глубоком рекурсивном анализе - нечего ожидать при анализе простого процедурного языка, такого как COBOL.

  2. Языковая грамматика обычно записывается для отражения спецификации целевого языка. В этом случае нет, дальнейшие изменения в грамматике не потребуются. Если грамматика написана подмножеством спецификации, вероятно, вы обнаружите, что постепенно изменяете грамматику, пока она не соответствует полной спецификации, если вы не можете быть абсолютно уверены в правильном «подмножестве».

  3. Так что это не выбор.

  4. Antlr поддерживает языковые грамматики непосредственно в режимах лексера. Это более чем достаточно для большинства целей. Если не для вас, то вам нужно более подробно объяснить эту потребность.

Существует множество инструментов, которые могут делать то, что делает Antlr. Что является «лучшим», зависит от полного набора ваших требований. Насколько это определено в вашем вопросе, Antlr так же хорош, как любой для синтаксического анализа COBOL.

+0

Так что, пожалуйста, дайте мне знать другие инструменты, похожие на ANTLR. – Siddharth

+0

Поиск "альтернатив Antlr" – GRosenberg