Добрый день. Несколько лет назад я выбирал IDE для разработки плагина поддержки нетипизированного ЯП, написанного на С, имеющего собственный компилятор. Итогом стал выбор между Eclipse и NetBeans. Пробовал анализировать большие проекты на С. Там где первая падала, вторая показывала хорошие результаты. Выбор пал на NetBeans. Попробовал еще писать проекты с использованием JNI. Инструменты анализа, реорганизации кода и навигации по нему в NetBeans хороши. Сама IDE написана на JAVA, которую мне еще придется освоить и исследование внутренностей NetBeans мне в этом поможет.

Итак, я присоединился к NetBeans comunity.

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

Первое что я увидел — основные коммитеры NetBeans — русские работа(ющие/вшие) в Oracle. Я попробовал списаться с одним из них. Но понятно, они люди занятые, и я получил от него только ссылки на страницу «How to create support for a new language» и форум разработчиков. Во всем что там есть найти необходимое сложно.

Первой полезной страницей оказалась DevFaqSourceTreeModuleDescriptions.

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

Модуль представляет собой библиотеку. Это Java JAR-файл (Java ARchive), который содержит некоторые классы.

NetBeans имеет очень небольшое ядро среды выполнения, которая знает, как найти модули, которые составляют приложение (лаунчер проходит список каталогов — обычно называемые кластерами, в которых содержатся модульные JAR-файлы и некоторые метаданные XML о них).

Поскольку, язык поддерживает С-вставки и сами функции для него могут быть написаны на С, мне нужно изучить подмножество модулей cnd, которое дает возможность разработки программ на C и C++.

Вторым полезным ресурсом оказался nabble.com.

Дальше стали находиться нужные ссылки:

» How to Write a Simple Code Analyzer Using NetBeans C/C++ Language Model API
» C/C++ Pack, Language Model and C/C++ Navigator Tutorial

На этом пока остановлюсь.
Поделиться с друзьями
-->

Комментарии (3)


  1. Mingun
    26.11.2016 10:57

    Не знаю, почему для вас оказалось сложным что-то найти. Я тоже недавно заинтересовался этой темой и за день нашел статью и даже сделал прототип! Он работает. Правда, у меня нет пока парсера для языка на джаве и в прототип я просто засунул константы (ну там, регион для свертывания кода жестко забит и т.п.), но ничего сложного в плане интеграции в NetBeans пока не обнаружил. Так что как-то маловато для статьи о "внутренностях", уж стоило бы описать свои опыты. Надеюсь, в следующей статье исправитесь.


    1. tnsr
      26.11.2016 12:10

      По созданию плагина в NetBeans и парсинга исходников уже есть статьи
      Создаем плагин для Netbeans на примере языка Vala
      Теория и практика парсинга исходников с помощью ANTLR и Roslyn

      у меня задача немного посложнее — анализ сразу двух языков
      типа использования JNI

      Решаю пока какой путь выбрать JNI или JAVA


  1. tnsr
    26.11.2016 12:28

    просто проект может быть таким
    //hbdefs.h
    #define HB_FUNC( funcname ) HB_EXTERN_C_ HB_EXPORT HARBOUR HB_FUN_##funcname ( void )
    — //my.c
    #include <math.h>
    #include «hbapi.h»
    #include «hbapiitm.h»

    HB_FUNC( SINUS )
    {
    // hb_parnd( n ) — функция EXTEND SYSTEM, принимает n-й переданный параметр
    // как double из Harbour функции
    // hb_retnd( d ) — функция EXTEND SYSTEM, возвращает double значение d
    // обратно в Harbour функцию

    hb_retnd( sin( hb_parnd( 1 ) * PI / 180 ) );
    }
    — //my.prg
    Function Main
    ? Sinus( 30 ), Sinus( 60 )
    ?

    Return Nil