Вопрос или проблема
Я работаю над SNMP-менеджером на Java.
У меня есть несколько файлов MIB, которые я хочу разобрать как объекты, чтобы использовать их данные в своем коде.
Для этого мне нужен хороший парсер файлов MIB, который может конвертировать данные в структуры и предоставить удобный API (разумеется, на Java), чтобы я мог их использовать.
Кто-нибудь знает такой? (желательно с открытым исходным кодом)
Спасибо.
Я не уверен, поможет ли вам это. Кажется, что это библиотека SNMP для .NET (которую я не использую).
Или же:
Я давно перестал создавать парсеры вручную и перешел на Lex/Yacc (позже Flex/Bison).
Затем я открыл для себя Antlr, который позволяет вам писать свою собственную грамматику и правила синтаксиса и генерировать исходный код на многих языках для разбора этих правил.
Похоже, вам повезло, так как кто-то уже создал бесплатный парсер грамматики SNMP – см. https://www.antlr3.org/grammar/list.html
Любой из них, вероятно, поможет вам, но я хочу выразить восторг от Antlr, который невероятно экономит время.
Помимо того, что он позволяет визуально определять вашу грамматику, с хорошим графическим интерфейсом (рабочая среда плюс плагины для Intellij, NetBeans, Eclipse, Visual Studio Code и jEdit), он позволяет вам визуализировать вашу грамматику в виде графического дерева разбора и визуально отлаживать (учебник здесь), проходя по элементу, который вы разбираете, наблюдая за его прохождением через парсер и легко обнаруживая ошибки в вашей грамматике.
Смотрите мега-учебник для получения дополнительной информации.
Ответ или решение
Конечно, создание SNMP Manager на Java, который требует парсинга MIB-файлов, — это задача, которая требует тщательного выбора инструментов, особенно если ваш менеджер должен поддерживать сложные структуры данных и предоставить простой API для взаимодействия с этими структурами. Вам понадобится надежный парсер для MIB-файлов, который позволит конвертировать их в структуры данных для использования в вашем приложении.
Использование Antlr для парсинга MIB-файлов
Antlr (Another Tool for Language Recognition) может стать отличным выбором для создания MIB-парсера. Эта библиотека не только поддерживается сообществом, но и позволяет вам создать собственные грамматики и синтаксические правила, из которых генерируется исходный код для их парсинга.
Преимущества использования Antlr:
-
Гибкость и мощь. Antlr позволяет вам описывать сложные грамматики, что делает его подходящим для парсинга MIB-файлов, где нужно корректно интерпретировать множество различных структур.
-
Поддержка различных языков. Хотя вам нужен парсер именно для Java, приятно знать, что Antlr поддерживает множество языков программирования, что предоставляет гибкость при необходимости смены языка.
-
Инструменты разработки. С Antlr вы получаете доступ к визуальному дебаггеру и просмотрщику деревьев синтаксического анализа, что значительно облегчает процесс отладки и упрощает нахождение ошибок в грамматике.
-
Существующие грамматики. Как упоминалось, уже существуют открытые грамматики для SNMP, что означает, что вы можете сэкономить время и использовать заранее написанные правила.
Как начать с Antlr:
-
Установка Antlr. Начните с установки Antlr на вашу рабочую станцию, следуя официальным инструкциям по установке.
-
Просмотр существующих грамматик. Найдите подходящую грамматику для SNMP, например, на antlr3.org, которая может служить базисом для вашей разработки.
-
Разработка и тестирование. Используйте визуальные средства Antlr для разработки и тестирования ваших грамматик. Отладчик позволит вам пошагово просматривать процесс парсинга и вносить нужные коррективы.
-
Интеграция с Java. Сгенерированные Antlr классы можно интегрировать в ваш Java-проект, создавая необходимые структуры данных для работы с MIB.
Вывод
Использование Antlr для парсинга MIB-файлов в Java — это стратегически обоснованный выбор, который объединяет мощь и адаптивность, необходимые для создания эффективного SNMP Manager. Обладая поддержкой со стороны сообщества и мощным набором инструментов, Antlr сможет значительно упростить вам задачу и ускорить процесс разработки. Если ваша команда ищет надежное и расширяемое решение с открытым исходным кодом, Antlr определенно заслуживает внимания.