LINUX.ORG.RU

[flex,bison]Подскажите


0

1

Как сделать интерпретатор типа калькулятор или простой язык который по порядку выполняет инструкции я знаю. Не хватает сображалки как делается язык с функциями типа как в С. Почти все howto ограничивались чем то простым. Если кто подскажет или подкинет статейку буду благодарен.


Ответ на: комментарий от slackwarrior

Нет, странно что до сих пор не встречал. Спасибо, почитаю.

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

Я сейчас читаю dragon book, либо не дочитал до нужного место, либо не рассмотрен конкретный вопрос. А сам домыслить не могу.

ALeo
() автор топика

В чём именно проблема? В составлении формальной грамматики языка или в интерпретации/компиляции? О интерпретаторах можно посоветовать Essentials of Programming Languages.

Begemoth ★★★★★
()

> Как сделать интерпретатор типа калькулятор или простой язык который по порядку выполняет инструкции я знаю. Не хватает сображалки как делается язык с функциями типа как в С.

Строишь дерево заместо выполнения операций, потом делаешь с ним всё, что хочется.

Т.е. заместо $$ = $1 + $2; пишешь $$ = mk_tree_node_add($1, $2); Ну и т.д.

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

Всё-таки лучше SICP и EOPL почитать, заодно и желание писать транслятор на С пропадёт.

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

Правда там нет ни флекса, ни бизона.

Пс. В книге дракона все написано

arhibot
()

Есть прекрасные книги по этой теме!

Книга дракона, безусловно, расскажет вам подробно про грамматики, схемы синтаксически-управляемой трансляции, приоткроет завесу того, как bison или yacc работают. Ее читать надо и обязательно! Но собственно по теме lex/yacc или flex/bison там написано скудно.

Если вы говорите про калькулятор, то Керниган и Пайк в своей книге UNIX Программное окружение (The UNIX programming environment) приводят последовательный и легкий для изучения пример, калькулятора HOC с упражнениями. Очень советую. Рассмотрены некоторые интересные темы использования yacc.

Но если говорить серьезно, именно по теме lex/yacc или flex/bison то самое верное, что можно посоветовать, это две книги издательства Oreilly. Они собственно так и называются: lex & yacc и flex & bison. Это уже серьезная литература по теме. Благодаря пиратам легко найдете в сети.

А вообще, разве мануал по bison плохой? Называется The Bison Reference Manual. На сайте GNU лежит. А раньше man yacc это была вообще оригинальная статья Стивена Джонсона. Она тоже довольно подробна и легка для усвоения. Там тоже есть примеры калькуляторов) ЕМНИП, даже калькулятор для интервалов) Гарантированно найдете эту статью на сайте Bell Labs.

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

>Это что за ересь? Читать надо Dragon Book

Анонимус известно хуже кого... лишь бы хайло раскрыть. Просили примеров LEX и YACC, а не голой теории. Драконский бук он конечно зело каноничен. Только теория без практики мало что дает. Чтоб машину по городу водить одного зазубривания ПДД недостаточно (вернее, знание правил поможет, но как трогаться с места вы оттуда не узнаете).

остальное от Гейтса.

Вас это беспокоит? Пустырничка на ночь примите, попустит.

Благодаря пиратам легко найдете в сети.

Слушайся анонимуса $USER, в его советах оттопыривается истинный моральный облик, блеск и нищ^W сермяжная правда жизни.

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

>Строишь дерево заместо выполнения операций, потом делаешь с ним всё, что хочется.

Совет типа «обточи напильником до состояния... » например, компилятора С. Или так можно еще:

1. Dragon Book

???

PROFIT!

Охренеть как просто.

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

> Анонимус известно хуже кого... лишь бы хайло раскрыть. Просили примеров LEX и YACC, а не голой теории. Драконский бук он конечно зело каноничен. Только теория без практики мало что дает.

Тупица, не способный по простому и понятному описанию написать пять строк кода, и требующий ото всех примеров тривиальнейших вещей, должен обмотать мордочку ссаной тряпочкой и молча пойти прочь из профессии.

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

Анонимус, который на вежливую просьбу о помощи, обзывает всех тупицами и кидается ссаными тряпками, должен быть деанонимизирован (желательно по центральным каналам телевиденья и радио - рубрика «Пойман опасный маньяк!») и подвергнут целебной процидурке принудительной социализации (буде текущее законодательство не признает эвтаназию и считает нужным превращать шлак в полезных членов таки общества, которые без него - ноль и вздор, чего бы они там в своей норке о себе не думали).

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

> Анонимус известно хуже кого... лишь бы хайло раскрыть. Просили примеров LEX и YACC, а не голой теории. Драконский бук он конечно зело каноничен. Только теория без практики мало что дает. Чтоб машину по городу водить одного зазубривания ПДД недостаточно (вернее, знание правил поможет, но как трогаться с места вы оттуда не узнаете).

ТоварищЪ, ты зело некомпетентен и неумён. «Примеров LEX и YACC» - не знаю, что это значит, возможно, ты хотел написать «примеров на LEX?» - но про это то же речи не было. В канонiчной dragon book (сюрприз) есть таки примеры использования lex/yacc. Забавно, да?

Так что обмотайся использованной туалетной бумагой и ползи в ближайшее ЖКХ на устройство дворником. Авось, тебя туда возмут. Если, конечно же, хватит ума держать метлу.

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

> Анонимус, который на вежливую просьбу о помощи, обзывает всех тупицами и кидается ссаными тряпками,

Не всех - только тех, кто заслуживает. В данном случае - тебя. Не обобщай.

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

>В канонiчной dragon book (сюрприз) есть таки примеры использования lex/yacc.

Ой правда? В конце книги в приложениях? Велика помощь.

Авось, тебя туда возмут

Небыдло анонимус не какает? Или его уже туда взяли? Сперва добейся во все поля. Или чем вы знамениты, позвольте полюбопытствовать? Стоите на плечах гигантов, написавших Драконобук?

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

> >В канонiчной dragon book (сюрприз) есть таки примеры использования lex/yacc.

Ой правда? В конце книги в приложениях? Велика помощь.

Нееее, ну ты точно альтернативно одарён. Куда больше - есть описание того, как работают эти утилиты, есть описание, как они устроенны, написанно, как ими пользоваться и есть примеры. ЧТО ЕЩЁ нужно для таких альтернативно одарённых?

> Авось, тебя туда возмут

Небыдло анонимус не какает? Или его уже туда взяли? Сперва добейся во все поля. Или чем вы знамениты, позвольте полюбопытствовать? Стоите на плечах гигантов, написавших Драконобук?

Тебя ткнули носом в твои же высеры (и не раз), а ты продолжаешь пытаться приписывать собеседникам того, что они не говорили и потом обвинять в приписанном бреде? Хорош.

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

> А тебя бесят буковки на экране, да?

Скажи, а твои родители не злоупотребляли до/во время зачатия веществами, алкоголем и прочими нехорошими вещами? Или может во время беременности? А то я смотрю на тебя не понимаю, как такое могло произойти.

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

>А то я смотрю на тебя не понимаю, как такое могло произойти.

Видать, самомнение мешает.

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