AST является «абстрактным синтаксическим деревом», и для AT-команд он вам не нужен.
Фактически, ANTLR является избыточным для анализа AT-команд. Почему бы просто не проверить «AT», а затем проанализировать команды вручную? Набор команд модема, вероятно, достаточно прост, чтобы сделать это будет проще, чем запустить ANTLR, если вы никогда не делали этого раньше.
Если вы реализуете полный набор команд AT, включая escape-последовательность "+++", синхронизация также является фактором, который вы не сможете реализовать с помощью только ANTLR.
Ответ на комментарий:
Рассматривать ANTLR как инструмент для уменьшения ошибок разумно. В ответ на ваши вопросы «Вы бы предпочли прочитать это или созданный вами код? И что бы вы предпочли сохранить?», Ответ «это зависит». Я использую как ANTLR, так и парсеры, закодированные вручную, в зависимости от контекста; это контекст, в котором я бы выбрал парсер, закодированный вручную. Некоторые причины: вероятно, встроенное приложение, относительно простое (многие команды не равны сложности), протокол связи. У вас другой контекст, и у вас явно есть свои причины, в том числе «попробовать».
Итак, чтобы ответить на ваш другой вопрос о главном: Да, вы можете использовать этот вопрос в вики ANTLR. Для чтения из памяти используйте antlr3NewAsciiStringInPlaceStream()
или antlr3NewAsciiStringCopyStream()
(в зависимости от ситуации) вместо antlr3AsciiFileStreamNew()
.