Компилятор компиляторов?

Тема в разделе "WASM.ZEN", создана пользователем scf, 28 ноя 2009.

  1. scf

    scf Member

    Публикаций:
    0
    Регистрация:
    12 сен 2005
    Сообщения:
    385
    Есть задача: сделать компилятор С-подобного языка в x86
    скорость работы компилятора и качество выходного кода не особо важны
    с лексером и парсером все достаточно ясно - реализаций полно.
    А дальше? есть готовые инструменты для генерации промежуточного кода/машинного кода, или надо самому делать изложение книги красного дракона на любимом языке программирования?
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    можно back-end'ом взять фасм, например.
    И транслируем из С в асм.
     
  3. scf

    scf Member

    Публикаций:
    0
    Регистрация:
    12 сен 2005
    Сообщения:
    385
    Я скорее имел в виду построение дерева разбора и генерация промежуточного кода
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    тогда зачем дерево разбора и промежуточный код?
    линейно идём и генерим асм-код по лексемам.
     
  5. scf

    scf Member

    Публикаций:
    0
    Регистрация:
    12 сен 2005
    Сообщения:
    385
    Надо разбирать арифметические выражения и вызов функций
    x += a(1 + 3 * 4, d(5, e()));
     
  6. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    scf
    ну так а что их разбирать и х86 кодировать, если нет серьезных требований к качеству?

    кроме того, можно использовать для этих целей модифицированый несложный опенсорцовый компилятор. например, lcc имеет много модов и достаточно неплохо описан. правда лицуха его не разрешает использовать его для ком применений. хотя кого это когда останавливало?
    есть и других компилеров и жит систем. у каждой свои -- и ++
     
  7. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    писал как-то скриптовый интерпретатор. вобщем-то достаточно просто реализуется разбор выражений через рекурсию. делишь выражение на "первый операнд", "операция", "второй операнд" и рекурсивно вычисляешь значения операндов, учитывая приоритеты.
     
  8. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.549
    Адрес:
    Russia
    YACC + LEX юзаем. И не изобретаем колесо.