Конференция "Прочее" » Среди наших кто-нибудь балуется разработкой компилятора?
 
  • oxffff © (10.06.08 17:12) [0]
    Сабж
  • Ricko © (10.06.08 17:25) [1]
    Владимир Кладов?
  • Alkid (10.06.08 17:31) [2]
    Какого?
  • @!!ex © (10.06.08 17:35) [3]
    разработкой интрепретатора балуюсь. Для обработки игровых скриптов.
  • Mystic © (10.06.08 18:37) [4]
    Дальше синтаксического анализа не заходил. Был проект---компилятор асемблера.
  • grisme (10.06.08 18:38) [5]
    я, наверное, не ваш, но было дело :) для микросхем делали, когда-то.
  • oxffff © (10.06.08 20:00) [6]

    > Alkid   (10.06.08 17:31) [2]
    > Какого?


    Pascal подобного.
    А что ты занимаешься разработкой нескольких? :)
  • blackman © (10.06.08 20:14) [7]
    Не баловался, но участвовал в ...
    Ну и что же ? Все проходит. Пройдет и это :-)
  • tesseract © (10.06.08 20:18) [8]

    > разработкой интрепретатора балуюсь. Для обработки игровых
    > скриптов.


    тогда тебе дорога в LUA.
  • oxffff © (10.06.08 20:22) [9]

    > Mystic ©   (10.06.08 18:37) [4]
    > Дальше синтаксического анализа не заходил. Был проект---
    > компилятор асемблера.


    Это было собственная реализация Lex и yacc? :)
  • programania (10.06.08 20:30) [10]
    разработкой интрепретатора баловался.
    Сделал для языка типа javaScript, однако уже на java, зато с исходным текстом:
    http://programania.com/j
    интрепретатор прост и занимает около 500 строк
  • oxffff © (10.06.08 20:42) [11]
    Качну source free pascal. Посмотрю.
  • DVM © (10.06.08 20:59) [12]

    > oxffff ©   (10.06.08 20:42) [11]
    >
    > Качну source free pascal. Посмотрю.

    Качни книгу дракона лучше, если уже не скачал.
  • DVM © (10.06.08 21:06) [13]

    > oxffff ©   (10.06.08 20:42) [11]

    Название: Компиляторы. Принципы, технологии, инструменты
    Автор: Альфред Ахо, Рави Сети, Джеффри Ульман
    Издательство: Вильямс
    Год: 2003
    Страниц: 768
    Формат: djvu
    Размер: 5925 KB
    ISBN: 5-8459-0189-8, 0-201-10088-6

    http://www.infanata.org/computers/prog/1146096903-kompiljatory.-principy-tekhnologii.html
  • @!!ex © (10.06.08 21:14) [14]
    > [8] tesseract ©   (10.06.08 20:18)
    > тогда тебе дорога в LUA.

    Спасибо не надо.
  • tesseract © (10.06.08 21:17) [15]

    > Спасибо не надо.


    Зря, тысячи разработчков игр в течении 15 лет ошибаться не могут.
  • @!!ex © (10.06.08 21:22) [16]
    > [15] tesseract ©   (10.06.08 21:17)

    Тысячи используют, тысячи не используют.
  • tesseract © (10.06.08 21:44) [17]

    > Тысячи используют, тысячи не используют.


    Baldur's Gate, GTA, Scrapland  и тд - этот язык создан для GameDev. Зачем велосипед изобретать ?
  • @!!ex © (10.06.08 21:54) [18]
    > [17] tesseract ©   (10.06.08 21:44)

    Source, SurMap и т.д. изобретают велосипед.
    Зачем вообще что-то писать, все уже написано до нас.
  • oxffff © (10.06.08 22:05) [19]

    > DVM ©   (10.06.08 20:59) [12]
    >
    > > oxffff ©   (10.06.08 20:42) [11]
    > >
    > > Качну source free pascal. Посмотрю.
    >
    > Качни книгу дракона лучше, если уже не скачал.


    Скачал давно.
    Купил и перечитываю бумажный вариант на работе в свободное время. :)
  • oxffff © (10.06.08 22:09) [20]

    > DVM ©   (10.06.08 21:06) [13]


    Уже даже нашел несколько опечаток. Хотя это может перевод такой русский.
  • DVM © (10.06.08 22:32) [21]

    > oxffff ©  

    Еще вот такое есть: "Пишем компилятор" Д.Креншоу. Там вроде даже на паскале компилятор ваяется в течение всей книги.
  • oxffff © (10.06.08 22:59) [22]

    > DVM ©   (10.06.08 22:32) [21]
    >
    > > oxffff ©  
    >
    > Еще вот такое есть: "Пишем компилятор" Д.Креншоу. Там вроде
    > даже на паскале компилятор ваяется в течение всей книги.
    >


    Спасибо.
  • modd (11.06.08 01:12) [23]

    > Baldur's Gate, GTA, Scrapland  и тд - этот язык создан для
    > GameDev. Зачем велосипед изобретать ?


    А где в GTA используется LUA?
  • @!!ex © (11.06.08 07:49) [24]
    > [23] modd   (11.06.08 01:12)

    Вроде начиная с SA перешли на Lua.
  • Alkid (11.06.08 10:07) [25]

    > Pascal подобного.
    > А что ты занимаешься разработкой нескольких? :)

    Сейчас нет, но вообще увлекался подобной тематикой. Восновном разные скиптовые интерпретаторы, один раз написал Java-подобный язык с комиляцией и байткод и вирт. машину для него. Недавно написал заготовочку небольшую для Пролог-подобного языка с Lisp-овским синтаксисом (он парсится проще :) ).
    Все такие разработки вёл исключительно в плане хобби, на работе таких интересных задач не было никогда :(
  • oxffff © (11.06.08 10:32) [26]

    > Все такие разработки вёл исключительно в плане хобби, на
    > работе таких интересных задач не было никогда :(


    У меня к сожалению увы тоже на работе такого не будет.
  • Alkid (11.06.08 10:47) [27]

    > У меня к сожалению увы тоже на работе такого не будет.

    А с какой целью ты занимаешься подобными вещами?
    Я сейчас размышляю над новым языком программирования и, возможно, буду делать некоторые прототипы. Но у меня цель не создать софт обладающий production quality, а самому понять некоторые вещи из области программирования. Т.е. цель - личное просветление.
  • grisme (11.06.08 11:46) [28]
    на днях видел второе издание драконовской книги. интересно, что изменилось, кроме оформления.
    цена ~1800 р. точно не помню, близко к 2k.
  • Mystic © (11.06.08 11:55) [29]
    По поводу Ахо и Ульмана, мне  больше нравится более старое издание (теория синтаксического анализа, перевода и компиляции). Там хоть все доказательства приведены :)

    > Это было собственная реализация Lex и yacc? :)

    Нет, это был проект с использованием LEX + YACC
  • oxffff © (11.06.08 12:15) [30]

    > Mystic ©   (11.06.08 11:55) [29]


    Я уже удостоверился своими глазами. Издание 2003.
    Перечитал около 10 раз раздел о преобразовании рег.выр. напрямую в ДКА. А именно 2 правила для выяснения followpos.
    И реально написано неправильно стр 147.

    Зашел на citforum вот там правильный вариант.

    1. Пусть n - внутренний узел с операцией . (конкатенация), u и v - его потомки. Тогда для каждой позиции i, входящей в lastpos(u), добавляем к множеству значений followpos(i) множество firstpos(v).

    2. Пусть n - внутренний узел с операцией * (итерация), u - его потомок. Тогда для каждой позиции i, входящей в lastpos(u), добавляем к множеству значений followpos(i) множество firstpos(u).
  • oxffff © (11.06.08 12:20) [31]

    > Alkid   (11.06.08 10:47) [27]
    >
    > > У меня к сожалению увы тоже на работе такого не будет.
    >
    >
    > А с какой целью ты занимаешься подобными вещами?
    > Я сейчас размышляю над новым языком программирования и,
    > возможно, буду делать некоторые прототипы. Но у меня цель
    > не создать софт обладающий production quality, а самому
    > понять некоторые вещи из области программирования. Т.е.
    > цель - личное просветление.


    Сейчас исключительно для личного просветвления. :)
  • Alkid (11.06.08 17:14) [32]

    > Сейчас исключительно для личного просветвления. :)

    Просветление по части компиляторов или языков программирования?
  • oxffff © (11.06.08 22:24) [33]

    > Alkid   (11.06.08 17:14) [32]
    >
    > > Сейчас исключительно для личного просветвления. :)
    >
    > Просветление по части компиляторов или языков программирования?
    >


    Просветвление в области существующих подходов к процессу компилирования и языкостроению для дальнейшего развития существующих идей и синтеза новых приминительно преимущественно к языку Pascal.
  • ketmar © (13.06.08 17:46) [34]
    >[33] oxffff © (2008-06-11 22:24:00)
    >Просветвление в области существующих подходов к процессу компилирования и
    >языкостроению для дальнейшего развития существующих идей и синтеза новых
    >приминительно преимущественно к языку Pascal.

    omfb…

    ---
    Understanding is not required. Only obedience.
  • oxffff © (13.06.08 17:58) [35]

    > ketmar ©   (13.06.08 17:46) [34]


    Не затруднит перевести?
  • ketmar © (13.06.08 18:14) [36]
    >[35] oxffff © (2008-06-13 17:58:00)
    >Не затруднит перевести?
    вот именно это оно и значит. %-)

    ---
    All Your Base Are Belong to Us
  • oxffff © (13.06.08 18:26) [37]

    > ketmar ©   (13.06.08 18:14) [36]


    Все предельно просто.
    И средств для .net я бы выбрал Oxynege от Remobjects.
    А поскольку переход на .NET у меня в планах нет.
    И новых выразительных средств в Object Pascal не вводят.
    Я действительно не вижу смысла усложнять себе жизнь отсутствием
    синтаксического сахара.
    То придется варить сахар самому.
  • ketmar © (14.06.08 16:43) [38]
    >[37] oxffff © (2008-06-13 18:26:00)
    >Я действительно не вижу смысла усложнять себе жизнь отсутствием
    >синтаксического сахара.
    >То придется варить сахар самому.

    а зачем для этого компилятор? O_O
    вполне достаточно (если хочется универсальности) расфигачить исходник на AST, и потом с AST развлекаться. а потом собрать назад и отдать компилятору.
    в качестве инструмента взять тот же LISP, например. парзер пишется руками за пол-дня, а дальше уже пинаешь лисповые списки. делов…

    я вот на Lua писал парзер Object Pascal. точнее, парзер констант, структур и определений функций. нужно было для генерации модулей импорта на той же Lua. ничего, windows.pas распарзило. собственно, туда дописать ещё чуть-чуть кода — и готовый генератор AST.

    ---
    All Your Base Are Belong to Us
  • oxffff © (14.06.08 16:52) [39]

    > вполне достаточно (если хочется универсальности) расфигачить
    > исходник на AST, и потом с AST развлекаться. а потом собрать
    > назад и отдать компилятору.


    Нечто подобное я и предполагаю.
    Хотя подозреваю, что совсем скоро мне точно захочется капнуть поглубже.
    Поэтому хочется прочуствовать весь процесс на собственной шкуре.
  • ketmar © (14.06.08 17:06) [40]
    >[39] oxffff © (2008-06-14 16:52:00)
    ну вот с AST и начни. потом заменишь backend на вывод не исходного кода, а кода для какой-нибудь VM — будет компилятор. потом на вывод IR, например, а по IR — оптимизациям, а потом — код VM. и будет оптимизирующий компилятор. потом из IR можно формировать SSA и пускать оптимизатор на нём — получится «продвинутый» оптимизирующий компилятор.

    а потом ты огладишь рукой седую патриаршью бороду и скажешь: «будь проклят тот день, когда я сел за баранку этого [censored]…»

    ---
    Understanding is not required. Only obedience.
 
Конференция "Прочее" » Среди наших кто-нибудь балуется разработкой компилятора?
Есть новые Нет новых   [134437   +29][b:0][p:0.001]