Создание (проектирование) собственного компилятора и/или языка

Тема в разделе "WASM.BEGINNERS", создана пользователем DoubleOn, 20 апр 2009.

  1. DoubleOn

    DoubleOn New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2009
    Сообщения:
    62
    Обьясните пожалуйста что да как?Обший смысл понятен Создаем синтаксис и переводим его в машинный код!Но как и чего начать???На ассемблере никогда такого не видел,хотя очень хотелось бы!
     
  2. Johnikum

    Johnikum Member

    Публикаций:
    0
    Регистрация:
    6 июн 2003
    Сообщения:
    97
    начать можно с книг, например:
    Ахо А., Сети Р., Ульман Д. - Компиляторы. Принципы, технологии, инструменты
     
  3. drmad

    drmad New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    332
    Адрес:
    Russia
    Ни фига. Придумываем синтаксис, записываем его в формальной нотации и пропускаем через Lex/Yacc, Bison, Coco L/R и т.п., получаем исходник, компилируем его и получаем программу-компилятор. Все. Никаких ассемблеров. :)
     
  4. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    DoubleOn
    вариантов море. как уже выше указали (в последнем издании Книги дракона есть примеры на яве, что очень наглядно).
    если дружишь с С++, то можешь глянуть на шикарный boost::spirit.
    думаю, и под др языки тоже есть средства.

    но один фик, без теоретического введения подобным заниматься -- себе дороже.
     
  5. JacK3

    JacK3 New Member

    Публикаций:
    0
    Регистрация:
    17 янв 2009
    Сообщения:
    12
    Считываешь строку, считываешь первое слово в строке, ищешь предназначенную ему функцию, считываешь остальную часть строки, переводишь параметры в нужный формат, можно впринципе и массив создать. Вызываешь функцию с параметрами)))))))
    Сплошная работа со строками. На чистом ассемблере мне кажется это очень трудно и долго, а вот если писать на си с вставками ассемблера...
     
  6. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    DoubleOn
    кстати, в маш. код переводить вовсе необязательно.
    можешь создать свою виртуальную машину, интерпретирующую твой же придуманный формат, в который ты и будешь осуществлять интерпретацию с исходника;)
     
  7. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    может идея использования шаблонов и шикарна, но пользоваться этим невозможно
     
  8. AJAJA

    AJAJA New Member

    Публикаций:
    0
    Регистрация:
    18 апр 2009
    Сообщения:
    21
    Напиши душевный компилятор
     
  9. karpen

    karpen New Member

    Публикаций:
    0
    Регистрация:
    6 апр 2009
    Сообщения:
    31
    Такой уже есть. Правда это язык, но в наборе с компилятором ;)
     
  10. DoubleOn

    DoubleOn New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2009
    Сообщения:
    62
    varnie
    хм вот тут поподробнее?Кто автор и что за книга если не сложно.

    как сказанно выше можно реализовать эту задачу многими способами но во первых хотелось бы конешно все это сделать на Ассемблере(ну фанат я ничего не могу с собой поделать;))но у меня встет вопрос с чего начать и к чему подойти.
     
  11. Blackbeam

    Blackbeam New Member

    Публикаций:
    0
    Регистрация:
    28 дек 2008
    Сообщения:
    960
    на какой странице ахо не откроешь, там всё про лингвистический анализ ( по-видимуму, это очередное изобретение интеллигентов ) и стакими наворотами, что ... на душе становится тоскливо и начинаешь отчотливо понимать, что родился не в той стране и не в то время ...

    правда после некоторого размышления пришол к выводу, что 98% того, что написано у Ахо - муть, для написания компляторов ненужная...
     
  12. Inv

    Inv New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2004
    Сообщения:
    20
    DoubleOn
    В качестве промежуточного формата можно использовать LLVM, и получиш на выходе оптимизирующий компилятор под разные процессоры ;)
    http://www.llvm.org/
    drmad
    Yacc парсер синтаксиса, и для каждой синт. конструкции надо писать генереатор кода или промежуточного представляения тройки/четверки.
     
  13. Johnikum

    Johnikum Member

    Публикаций:
    0
    Регистрация:
    6 июн 2003
    Сообщения:
    97
    вспомнил еще
    в книге "Шилдт Г. - Искусство программирования на C++" есть описание с исходниками простейшего интерпретатора.
     
  14. DoubleOn

    DoubleOn New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2009
    Сообщения:
    62
    Вот вот вот)хорошобы исходники или описания че а куда)Еше луче на асме :)
     
  15. Blackbeam

    Blackbeam New Member

    Публикаций:
    0
    Регистрация:
    28 дек 2008
    Сообщения:
    960
    хорошо бы исходник компилятора на масме - придумал лучший в мире ассемблер, а компилятор написать самому лень...

    если взять парсер строк из 35 урока, потом поиск зарезервированых слов, потом ...вроде всё просто...

    почему гонятся за скоростью компиляции? какое она имеет значение? особенно для программ на асме - у меня исходник в 1000 строк компилится 0,3 сек , да пусть хоть несколько секунд какая разница?

    - вот статья как работает классический многопроходный ассемблер, уже вешал..у кого нет ...
     
  16. Blackbeam

    Blackbeam New Member

    Публикаций:
    0
    Регистрация:
    28 дек 2008
    Сообщения:
    960
  17. ChWoron

    ChWoron Member

    Публикаций:
    0
    Регистрация:
    3 июл 2007
    Сообщения:
    51
    Пратт Т., Зелковиц М.
    П70 Языки программирования: разработка и реализация / Под общей ред. А. Матросова. — СПб.: Питер, 2002. — 688 с: ил.
    ISBN 5-318-00189-0
    В книге известных американских специалистов в области языков программирования Т. Пратта и М. Зелковица рассматриваются общие концепции разработки и реализации языков программирования, а также основы формальных грамматик и конечных автоматов — математических моделей, исполь¬зуемых для определения и реализации языков программирования. Это именно та база, которая необхо¬дима высококвалифицированному программисту для создания производительных и устойчивых к ошиб¬кам программ.
    Изложение материала в книге не привязано ни к какому конкретному языку программирования, хотя предполагается, что читатель знаком хотя бы с одним процедурным и с одним объектно-ориенти¬рованным языком.
    Книга будет полезна студентам высших учебных заведений, а также программистам любой квали¬фикации.

    Пишем компилятор
    Д. Крен шоу
     
  18. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    вот!! очень наглядный курс лекций о разработке интерпретатора. пишется на паскале. оригинал лекций -- на инглише, но в инете есть и перевод на русский.
    короче, очень советую хотя бы ознакомиться.
     
  19. J0E

    J0E New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    621
    Адрес:
    Panama
    Начинать правильно с ответа на вопрос "для каких целей".

    Посмотри версии RetroForth до 10й, они на fasm. Не обязательно его править, Форт позволяет свой язык определить. Почитай про его идеологию. Еще почитай что такое Lisp, зачем он создавался.

    Писать транслятор языка, где есть сложные синтаксис и сементика, на асме - это тупик, успешных прецедентов еще не было ;)

    Верно, она нужна что бы понять: лбом стену не расшибешь.
     
  20. Johnikum

    Johnikum Member

    Публикаций:
    0
    Регистрация:
    6 июн 2003
    Сообщения:
    97
    я тоже так думал, когда читал в первый раз