LINUX.ORG.RU

не заморачивайся, ты физик, так думай о своей физике. зачем тебе полжизни тратить на навыки написания компиляторов?

anonymous
()
Ответ на: комментарий от anonymous

Ты думаешь он будет его писать? Упаси Бог.

По сабжу, неужели поиск в гугле не даёт никакой информации?

anonymous
()

начать надо например с написания лексера и парсера токенов

anonymous
()

Если интерпретатор, разово, быстро, без оптимизаций и с боль-мень простым синтаксисом -- ПРОСТО НАПИШИ! (на коленке). С Перлом ты знаком, вроде, вполне подойдет для написания интерпретатора.

Ты ж физик, соображалки хватит, там все не сложнее системы линейных ур-й. Ты ж не будешь читать книжку по линейке, если тебе надо простую систему линейных ур-й решить? И что такое детерминант знать не обязательно -- просто решаешь, и все... Ну, если совсем ничего не знаешь, погугли про обратную польскую запись, тетрады и триады (Reverse Polish notation, quadruples, triples по-английски) -- про синтаксические деревья общего вида (Abstract Syntax Tree) уже лишнее.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

Если

> ... разово, быстро, без оптимизаций...

то "тетрады и триады" необязательно. Можно генерить код на C/C++.

k_andy ★★★
()
Ответ на: комментарий от anonymous

> Он как раз и написал *компилятор*, вообще-то

Разница давно размыта...

Но тоже просто -- транслируешь ("интерпретеруешь")в тетрады и заюзываешь одну из многочисленных библиотек для JIT. Или лопатишь в Це (Перл, Питон, Шелл -- подставить по вкусу) и вызываешь его компилятор. Только не совсем понимаю надобности такого -- все ж, наверное, топикстартер хотел именно интерпретатор.

Die-Hard ★★★★★
()
Ответ на: комментарий от k_andy

> ...то "тетрады и триады" необязательно. Можно генерить код на C/C++.

Все равно де-факто изобретешь некую разновидность синтаксического дерева.

Простейший вариант -- стековая машина и Польская строка (есть исчерпываюший пример -- в русскоязычной даже -- Википедии, http://ru.wikipedia.org/wiki/Обратная_польская_запись ), тетрады чуть менее тупы и до них додуматься проще ИМХО...

Die-Hard ★★★★★
()

Любой учебник по языкам програмирования и методам трансляции (например Опалева, Самойленко) или т.н. драгон бук.

anonymous
()
Ответ на: комментарий от anonymous

Физики неплохие компиляторы пишут. Некоторые из ранних реализаций Фортрана физиками сделаны. Mathematica написана физиком. Так что всё нормалёк.

anonymous
()
Ответ на: комментарий от Die-Hard

> Если интерпретатор, разово, быстро, без оптимизаций и с боль-мень простым синтаксисом -- ПРОСТО НАПИШИ! (на коленке).

Очень паршивый подход. Так можно родить только кривое и убогое тормозилово. Это всё ж таки наука, в которой есть некоторое количество теории. И это теорию надо бы знать, благо, её совсем не много. Ну а зная теорию - можно тривиально и компилятор написать, это ничуть не сложнее (а для многих языков и намного проще) чем интерпретатор.

anonymous
()
Ответ на: комментарий от anonymous

> Каким местом она размыта?

А всеми местами разом.

> Вы вообще, батенька, в курсе что такое компилятор?

А вы? Подозреваю, что не очень...

anonymous
()

Меня очень долго мучает вопрос: Вот допустим тут вильфред собрался язык свой придумать (назовем его A )и компилятор для него, но ведь компилятор то будет работать не в интерпретаторе языка A, выходит что для исполнения произвольного кода на произвольном новом языке нужен другой язык B ранее существовавщий.

Как же тогда появился первый ЯП, ведь не всегда же были процессоры для выполнения кода.

anonymous
()
Ответ на: комментарий от anonymous

rtfm: bootstrap

Ну и почитай Бэкуса, как они самый первый компилятор Фортрана писали.

anonymous
()
Ответ на: комментарий от anonymous

самый первый ЯП назывался "машинный код"

anonymous
()
Ответ на: комментарий от volh

>Ziggurat is a framework for writing extensible programming languages, and for defining static semantics for those languages. In other words, it is a language designer's toolkit.

ахха, я уже впечатлился. интересная штука

jtootf ★★★★★
()
Ответ на: комментарий от anonymous

>> Если интерпретатор, разово, быстро, без оптимизаций и с боль-мень простым синтаксисом -- ПРОСТО НАПИШИ! (на коленке).

>Очень паршивый подход. Так можно родить только кривое и убогое тормозилово.


Очень часто этого достаточно. "Вам шашечки, или ехать?" Многие физики так поступают, не зная даже слова "интерпретатор". Для физиков с математикам (в отличие от ИТшников) разработка простейшей "ad hoc" теории -- состояние вполне привычное.

> Это всё ж таки наука, в которой есть некоторое количество теории.


См. пример выше. Линейка -- вполне себе наука, однако школьники решают линейные системы, ничего об этой науке не зная. Нам в каком-то типа 5 классе на дом математичка задавала (факультатив то был, есснно) -- придумать, как решить систему линейных ур-ий. Почти все "неравнодушные" к математике сами без труда разобрались.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

> Очень часто этого достаточно. "Вам шашечки, или ехать?" Многие физики так поступают, не зная даже слова "интерпретатор".

Так в том и дело, что по науке - проще и быстрее сделать, чем от балды. Намного проще.

А наука та - тупая и маленькая. Так что, вполне есть смысл ее поучить.

anonymous
()


Вилфи, пиши на перле.
Язык - basic^w drugsic какой-нибудь.

Главное начать. Глаза боятся - руки делают.

ovax ★★★
()
Ответ на: комментарий от Die-Hard

> Нам в каком-то типа 5 классе на дом математичка задавала (факультатив то был, есснно) -- придумать, как решить систему линейных ур-ий

нарисовать выпуклый n-мерный многоугольник, всего-то делов

anonymous
()

почитать туториалы к ANTLR, http://antlr.org/article/list (см. пример про DLR и http://www.pragprog.com/titles/tpantlr/the-definitive-antlr-reference , где-то был PDF, примеры в http://antlr.org/showcase/list и что-то из примеров было в разделе про грамматики),
туториалы к LLVM, например, http://llvm.org/docs/tutorial/. http://llvm.org/svn/llvm-project/llvm/trunk/docs/WritingAnLLVMBackend.html, http://llvm.org/svn/llvm-project/llvm/trunk/examples/ и в разделе про публикации (см. также в svn LLVM подпроект HLVM: http://llvm.org/viewvc/llvm-project/hlvm/trunk/README.txt?view=markup http://llvm.org/viewvc/llvm-project/hlvm/trunk/ -- подпроект давно не обновлялся, но по идее, это должно помочь для разработки языка "сверху вниз" -- делается VM под язык на базе LLVM, а HLVM предоставляет framework для такой VM; кодогенератор и проч. нетривиальные вещи берутся из LLVM)

anonymous
()

Ruby Lisp, http://t-a-w.blogspot.com/2007/06/mock-c-backend-for-rlisp-and-its.html , вокруг да около по этой теме в бложике с котами, http://taw.chaosforge.org/rlisp/rlisp-rupy.pdf (см. также по google "Lisp Rails")

-- пример раскрутки интерпретатора лиспа из Руби. Первая ссылка любопытна замерами производительности разных бекендов. Про компиляторы языков на питоне тоже что-то было, гуглить надо (re2c+..) -- но в целом это в качестве анекдота (хотя C появился из интерпретатора B который обрезанный BCPL, так что дерзайте =)

anonymous
()
Ответ на: комментарий от anonymous

s/пример раскрутки интерпретатора лиспа/пример раскрутки компилятора лиспа/g

anonymous
()

казалось бы, и причём здесь Вильфред?

trapezoid
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.