Comments 17
Интересная статья. Позволила сильно просветится в плане разбора языков.
+1
Вот за такие статьи я люблю Хабр!
+3
Очень интересно, спасибо!
0
Нет ни документации, ни каких-то внятных упоминаний о лицензии, ни доступа к VCS, VC 2010 only, закомментированные строки кода, комментарии на русском в исходниках. Раз уж решили что-то открывать и что-то с этого иметь, неужели по-лучше подготовиться нельзя было? Смахивает на рекламную подачку.
-6
Если Вы дадите нам денег, то все это будет. Если Вы решитесь сами заняться поддержкой и развитием библиотеки — то это тоже будет. :)
А так я тоже на много могу пожаловаться в мире.
«Смахивает на рекламную подачку» — Простите, рекламу ЧЕГО ??
А так я тоже на много могу пожаловаться в мире.
«Смахивает на рекламную подачку» — Простите, рекламу ЧЕГО ??
+4
>«Смахивает на рекламную подачку» — Простите, рекламу ЧЕГО ??
В том виде, каком оно есть сейчас, как-то совсем не хочется ни поддерживать ее, ни развивать.
Наработки обычно открывают не просто так, а хотят привлечь разработчиков под технологию, ненавязчиво привлечь к разработке дополнительные силы, показать открытость.
На деле же, отсуствие всякой документации отпугнет тех, кому это надо «на посмотреть», мутная лицензия позволит не допустить использования в тех же стартапах, а русский язык везде еще и радикально сузит круг осведомленных лиц.
или вы планируете создавать свой компилятор/среду разработки, то библиотека VivaCore вам не подойдет. В этом случае следует воспользоваться профессиональными библиотеками, например — EDG.
То есть VivaCore эта часть проекта PVS-Studio, которую мы решили сделать открытой
В том виде, каком оно есть сейчас, как-то совсем не хочется ни поддерживать ее, ни развивать.
Наработки обычно открывают не просто так, а хотят привлечь разработчиков под технологию, ненавязчиво привлечь к разработке дополнительные силы, показать открытость.
На деле же, отсуствие всякой документации отпугнет тех, кому это надо «на посмотреть», мутная лицензия позволит не допустить использования в тех же стартапах, а русский язык везде еще и радикально сузит круг осведомленных лиц.
-2
btw, еще стоит посмотреть на clang с llvm'ом (http://clang.llvm.org/) — они предоставляют немного больше, чем просто парсер.
+2
Стало интересно, скольким людям надо разбирать С++ код в стартапе?
+3
У Intel самый полезный блог, относительное других компаний :)
+3
Просвятите меня, темного, — а что технически помешало сделать все/большую часть на ANTLR или каком-нибудь другом современном генераторе компиляторов? Тоесть зачем ВЕСЬ парсер и лексер вручную?
0
1. Парсер и лексер еще не все. Нужен алгоритм обхода дерева, получающегося в результате парсинга. Причем (конечно же) не тупого обхода, а с пониманием, что это за узел.
2. Грамматика C++ довольно сложна для автоматических парсеров.
2. Грамматика C++ довольно сложна для автоматических парсеров.
0
1. Парсер и лексер еще не все. Нужен алгоритм обхода дерева, получающегося в результате парсинга. Причем (конечно же) не тупого обхода, а с пониманием, что это за узел.
Все равно непонятно. Современный компилятор сгенерирует читаемый код, который вернет AST. По полученному AST можно ходить уже вручную написанным кодом. Вопрос-то как раз зачем парсер и лексер вручную писать.
Грамматика C++ довольно сложна для автоматических парсеров.
Тоесть написать грамматику на каком-нибудь ANTLR, со встроенным GUI отладчиков и профайлером грамматик, сложнее чем вручную писать и отлаживать мегабайт C-шного кода? O_O
0
> По полученному AST можно ходить уже вручную написанным кодом.
В основе библиотеки, на которой построена VivaCore уже был код для обхода. Это и предопределило выбор.
> Тоесть написать грамматику…
VivaCore основана на OpenC++. Поэтому часть кода была уже написана. Готовых же к использованию граматик C++ для какого-нибудь ANTLR не нашлось. Только не надо мне в ответ давать те или иные ссылки на всякие фрагменты грамматик и говорить: «А разве вот это не работает?». Не работает. По крайней мере на момент когда мы делали выбор.
В основе библиотеки, на которой построена VivaCore уже был код для обхода. Это и предопределило выбор.
> Тоесть написать грамматику…
VivaCore основана на OpenC++. Поэтому часть кода была уже написана. Готовых же к использованию граматик C++ для какого-нибудь ANTLR не нашлось. Только не надо мне в ответ давать те или иные ссылки на всякие фрагменты грамматик и говорить: «А разве вот это не работает?». Не работает. По крайней мере на момент когда мы делали выбор.
0
Еще немного добавлю к ответу Евгения.
«По полученному AST можно ходить уже вручную написанным кодом.»
Все не так. Как раз задача построить AST проще, чем потом его обходить и собирать информацию. Построение дерева — дело относительно нехитрое. Тут можно хоть руками, хоть не руками. Намного сложнее потом раскрывать typedef, определять тип объектов, заглядывать в namespace, работать с областями видимости переменных, что-то делать с шаблонными классами, сопоставлять фрагмент дерева и изначального текста программы, анализировать влияние pragma OpenMP и искать параллельные ошибки и так далее.
А все почему-то считают, что самое важное — дерево построить, а потом все почти само получится. :)
«По полученному AST можно ходить уже вручную написанным кодом.»
Все не так. Как раз задача построить AST проще, чем потом его обходить и собирать информацию. Построение дерева — дело относительно нехитрое. Тут можно хоть руками, хоть не руками. Намного сложнее потом раскрывать typedef, определять тип объектов, заглядывать в namespace, работать с областями видимости переменных, что-то делать с шаблонными классами, сопоставлять фрагмент дерева и изначального текста программы, анализировать влияние pragma OpenMP и искать параллельные ошибки и так далее.
А все почему-то считают, что самое важное — дерево построить, а потом все почти само получится. :)
0
Sign up to leave a comment.
Для тех, кому в IT-стартапе требуется разбор Си++-кода