Змінюй хід війни! Допомагай ЗСУ!
  • Знижка на баннерну рекламу 30%! Банер на всіх сторінках сайту, в мобільній та десктопній версії за 14 тис. грн на місяць. Статистика сайту. Контакт: [email protected]

Парсер С+ на С+

  • Автор теми Автор теми Sefiroth
  • Дата створення Дата створення
Статус: Офлайн
Реєстрація: 26.08.2007
Повідом.: 402
Парсер С++ на С++

Всем привет.

ТЗ примерно такое.
Нужен кросспратформенный (на С++) интерпретатор С++-подобного (можно Java-подобного) языка с промежуточной компиляцией в байт-код.
В данном случае меня интересует именно компилятор языка в байт-код. Синтаксис требуется не полный, точно без шаблонов, но с наследованием и полиморфизмом.
Соответственно, нужен парсер грамматик.

Варианты, которые я уже рассмотрел:
1. Squirell - не совсем то что надо, либа достаточно сложная изнутри, может уйти много времени на обработку напильником до того синтаксиса, который мне нужен. Но пока что лучший вариант.
2. Boost::Spirit - заточен под контекстно-свободные грамматики, а С++ и Java имеют контекстно-зависимые. Придется отказаться от кучи вкусностей С++ и частично ограничить синтаксис. Второй по привлекательности вариант.
3. QScript - завязан на Qt, а кроссплатформенность в данном случае подразумевает iOS и Android. Да и язык JS-подобный - это мен не устравивает.
4. Lua - опять же JS, который меня не устраивает.

PS: Как вариант - можно парсер "Obj.Pascal -> байт-код", но врядли найдется таковой.

Исполнитель байт-кода пока не трогаем. )))

Теперь собственно вопросы.
1. Есть ли у кого-то опыт написания скриптовых анализаторов?
2. Если да - посоветуйте какие-нить еще свободные OpenSource решения или хотя бы толковые статьи/пособия по разработке оных (интересует не теория, с грамматиками я чуток знаком и литературы навалом).

Заранее спасибо.
 
Я писал тегоподобный язык с функциями и прочей ерундой, до момента когда я его забросил он умел разбирать сложные выражения и исполнятся. (Но из-за того что я еще мало смылил в то время образовался ****о код на тысячи строчек )
Также писал компилятор ассемблера (умел частично трансилировать ограниченный набор инструкций х86) - застопорился и забил только из-за нехватки времени.
Самым простым, что я писал из трансляторов был транслятор BrainFuck.
Писал на Делфи.
Наверно сам знаешь про книгу дракона, а по сути попробуй сам решить задачи (по частям), интерпритацию разбор выражений, разделение на блоки...
Первый блин комом, но потом учтешь все ошибки )
А если байт код, то я предполагаю тебе необходимо разработать свою архитектуру виртуальной машины, все ее регистры и команды и трансялцию в него.
Главное начать и решать проблемы по мере поступления.
 
тебе нужен компилятор который сгенерит exe файл или JIT для рантайма? И вообще суть задачи в чем?
 
поищи на
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
 
если нужен JIT для рантайма, есть бесплатная библиотека для языка LUA (используется в современных играх как скриптовый язык за счет высокой производительности)
 
Назад
Зверху Знизу