Собрался писать тулзу для обфускации программ на С, нужен хороший парсер. Из парсеров я знаю только Bison, думаю, для него даже есть готовая грамматика С, но меня смущает его древность. Неужели за прошедшие 15 лет ничего лучше не написали? Кто-нибудь знает лучшую альтернативу?
А почему не написать сам обфускатор не на С? Например для Java/Python/Ruby есть очень хорошие генераторы компиляторов. Для С лет 8 назад использовал Anagram parser. Очень-очень хороший парсер. Мне в нем было комфортнее чем в Bison. К сожалению Anagram - мертвый проект, так как его основной разработчик умер Сайт до сих пор остался ...
scf, bison постоянно дорабатывают. Например у него есть новый С++ скелет. При чём тут древность? Древность языка С тебя не смущает? Это ж подобный инструмент. Сама грамматика для С небольшая. Можешь подсмотреть в gcc 3.x
scf К тому же, по bison много документации, и примеров. И он очень похож (совместим) на yacc. Последний, кстати, часто используют в купе с lex.
scf ?? Те транслятор C --> C? А чем это вам поможет? Можно просто скомпилить без дебугинфо или каким нить малораспросраненным компилером с нестандартной работой, напр, с локалками. Или поэкспериментировать с ключиками. У гцц или ов их оч много. Или поиграться с прагмами, напр, в ов есть прагмы для тонкого выруливания способов передачи/возврата параметров, манглов, формирования заголовков итд. В гнуси их тоже немало, но я предпочитаю ов тк код у него лучше. А может я непонял что тут обфускацией зовется.. например есть такая штука: GCC-XML - This program dumps an XML description of C++ source code using an extension on the GCC C++ compiler. http://www.gccxml.org На antlr - е есть полный граммар к гнуC. Для анси или кр их вообще много. хоть под яцц с бизоном, хоть под сосо.
Среди олдовых генераторов, Бизон самый молодой помойму. К тому же его не написали и бросили, а до сих пор что-то добавляют. Я в перемешку как мог пользовался Bison и Yacc, притом раздражали оба. Все форумы когда-то изгадил (особенно RSDN), кучу сил потратил. Вменяемой замены так и не видел =)) Lemon - более менее интересной штукой показался. Но там довольно противные ограничения на имена токенов, ещё кажется не может с отдельными буквами работать...