Nano Hash - криптовалюты, майнинг, программирование

Как проводить статический анализ с помощью ANTLR

Я планирую создать инструмент статического анализатора для собственного языка. Я планирую использовать ANTLR для построения AST. Я хотел бы знать, как можно проверять правила и рекомендации, установленные проектом с использованием проприетарного языка с использованием AST.

например, для если я создам AST для исходного кода C и скажу, что хочу проверить нулевые указатели. Как мне выполнить эту проверку с помощью AST или CST.

Придется ли мне кодировать в тесте с помощью лексера / парсера, сгенерированного ANTLR ?.

Спасибо

18.12.2010

Ответы:


1

Это зависит от конкретного анализа, который вы хотите выполнить. Рассмотрим ваш конкретный пример: чтобы статически определить, может ли переменная быть (или будет) нулевым указателем, вам необходимо создать диаграмма потока данных. Я рекомендую изучить книгу драконов.

18.12.2010
  • @Martin: Итак, я смогу создать простой статический анализатор для моего языка, если изучу книгу Dragon вместе с ANTLR. 18.12.2010
  • @codeanalyser: на этот вопрос невозможно ответить. Вам нужно будет объяснить, какой простой статический анализ вы хотите выполнить. То, что для одного является простым, может быть неосуществимым для другого. 18.12.2010
  • @Martin: Я пытаюсь создать инструмент, похожий на lint, но для моего языка. 18.12.2010
  • @codeanalyser: тогда тебе обязательно стоит прочитать книгу о драконах. Сделать что-то вроде lint совсем не просто. 18.12.2010
  • @codeanalyzer: вам понадобится гораздо больше, чем просто учеба. В какой-то момент нужно реализовать. А анализ потока сложен. 20.12.2010

  • 2

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

    Ознакомьтесь с возможностями анализа потока нашей DMS. Мы использовали это для глубокого анализа очень крупномасштабных программ C.

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

    20.12.2010
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..