LINUX.ORG.RU

конвертер программы с языка Си на язык Паскаль


0

2

Надо написать конвертер программы с языка Си на язык Паскаль. НА С++. В голове стразу же представилось, какая форма и прочее... а вот представления, что и как делать вообще нет. Немножко разобравшись понял что надо Синтаксический анализ, синтаксическое дерево. За это надо хвататься?? Если да.. как их написать...не имею никакого понятия.. Посоветуйте что нибуть Зарание спасибо!


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

Дело не в прогуливание пар. Ниразу не прогулял ни одну лекцию

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

Да всем кому не говорю, делают такие лица , что ппц=)

Наверно полностью Си ненадо затрагивать.) хоть минимальное

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

Тогда да

Синтаксический анализ, синтаксическое дерево. За это надо хвататься?

Именно за это и нужно хвататься. Почитать любой учебник по трансляторам (в Development было несколько тем о том, какой выбрать), выбрать небольшое подмножество Си и написать транслятор. И да, не надо прогуливать лекции, чтобы не говорить:

Ss> представления, что и как делать вообще нет

tailgunner ★★★★★
()

Это не возможно.

Язык Си - контекстно-зависимый, в то время как паскаль относится к контекстно-свободным.

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

Любимые преподователи дают такие «хорошие курсовые»

Они пошутили наверное.

Предлагаю в ответ тоже пошутить. Наример, сказать, что чтобы сделать конвертер из языка си в язык паскаль, тебе необходим конвертер из ассемблера в язык си. :)

yvv ★★☆
()

Посоветуйте что нибуть

Поскольку тебе сдавать преподавателю, а не на ЛОРе, то посоветую сходить на консультацию и по возможности точно узнать постановку задачи и откуда преподаватель рекомендует информацию брать. Полистать «Книгу с драконом» и какую-то общую культуру работы с автоматами никогда не вредно, но лучше пораньше узнать, чего собственно от тебя конкретно хотят, не правда ли?

metar ★★★
()

Дуй к преподавателю, они не какие-нибудь звери и охотно посоветуют список литературы по теме.

Более того, если это курсач, можно ограничиться совсем узким подмножеством языка.

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

Хорошо, а то я подумал, что тебе для ынтырпрайза надо. Требуй у препода на консультации ТЗ.

mopsene ★★★
()

Делал такое несколько лет назад для кого-то, кто оставлял тут job пост с точно таким же заданием. Не помню насколько закончено получилось, но поглядеть есть на что.

Скину сорцы, если оставишь свой e-mail.

rival ★★
()

google://конвертер си паскаль + курсовой

kombrig ★★★
()

Советую поместить эту тему в раздел JOB. С меткой «лисапед».

Eddy_Em ☆☆☆☆☆
()

Не с С на Паскаль, а с С++ на Object Pascal. На память не скажу, но есть шанс, что изначально был уговор написать конвертор с Паскаля на С. И тему Вы выбирали себе сами. Смею вас заверить, что за 10 лет очень мало кто сдох. Полностью согласен с коллегами насчет лекций и книг, конкретно Дрэгон бука. Могу только посоветовать почаще задавать вопросы на лекциях, просить разъяснить что не ясно. Начать предлагаю просто с проверки корректности простой программы. Ну и учите языки. Например, русский. Понимаю, что в форумах не принято смотреть на корректность лексики, но на «Посоветуйте что нибуть» могу посоветовать нибать в другом месте.

Если я всё правильно понял, Ваш преподаватель.

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

необходим конвертер из ассемблера в язык си

Можно ограничится конвертером из ассемблера в паскаль. Тогда gcc + такой конвертер = код на паскале;-)

В бусте было дофига для синтаксического разбора. Хорошая задача, чего... жаль мы такими плюшками не занимаемся, а так бы дал какому нить студенту. Только не на С++ а на техе написать;-)

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

с С++ на Object Pascal

Звучит как «конвертер с эскимосского на рапануйский».

Дрэгон бук

А он у вас в библиотеке есть? В наше время dragon book стоит сравнительно немалых денег.

buddhist ★★★★★
()

возьми tcc (tiny c compiler) - он маленький и простой и переделай генгерирующую часть на паскакаль.

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

Вот название темы: «написать Конвертер программы с языка Си на язык Паскаль». Тему я себе не выберал, она попала под мой номер. К преподователю идти на лекцию с вопросами совсем безсполезно ибо знаний у него столько же сколько и у меня. Вот с книг и начну. Насчёт русского языка, да вывучу спачатку сваю родную мову, потым жа рускі.

Если я всё правильно понял, Ваш ученик.

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

Вот ящик: staalker@inbox.ru Большое спасибо!

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

Любой - это драгонбук? :)

Я учился по другим книгам, и вообще не понимаю массовой мастурбации на драгонбук.

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

В наше время dragon book стоит сравнительно немалых денег.

ХЗ. Купил в 90-х новую, в книжном, будучи еще безработным (и хронически безденежным) студентом :) Выбор был пожрать/купить пузырь и поехать расслабляться к одной тян в медицинскую общагу/купить драгонбук. Хорошая книжка. Толстая. (Когда из медициской внезапно приехала тян - расслаблять, с пузырем(они там девушки без комплексов нащод Russian Reversal) - и кровать в общаге сломалась (закон Мерфи, да), ножку подперли драгонбуком. ЧСХ, конструкция выдержала!)

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

Мне тут один упоротый анонимус полгода назад вещал, что все остальное - это отстой и профанация. Только Ахо, только хардкор! А нащод мастурбации - это когда нет одной тян конвертер программы с языка Си на язык Паскаль (комментарий)

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

Ну, сейчас драгонбук стоит около 1.5к, в мою бытность студентом в общаге у меня было денег — 2к в неделю и иногда я все же покупал такие книги :)

buddhist ★★★★★
()

Жуть. Совмещение абсолютно бесполезного дела с тем, что попросту нереально осилить. %)

Да, это синтаксический анализ, синтаксическое дерево. Советую начать с книжки Серебрякова «Основы конструирования компиляторов».

Ещё многие советуют «А. Ахо и др. Компиляторы - принципы, технологии и инструменты», вроде как классика.

BattleCoder ★★★★★
()

Куда более полезным, например, было бы наоборот - с паскаля (или с дельфей) транслировать коды на плюсы.

Или как вариант, с питона на плюсы. Ради оптимизации и ускорения. Вроде даже есть такие проекты, кто-то этим занимался...

pypy вроде по-другому работает, но тоже в этом направлении наверное. :)

BattleCoder ★★★★★
()

Тут есть построение синтаксического дерева программы на языке Си. Обратно построить по такому дереву программу на паскале доволно тривиально.

Но нужно добавить таблицы символов - для переменных и строк.

Почитайте эту статью, а затем почитайте книгу дракона.

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

Ну щас и стипендии не те что в 90-х :)

да ладно... «не верю!»(с) %)

и опять оффтопик:

что есть эта мифическая книга дракона? 10 минут гугления по «dragon book» дали кучу ссылок на книжки фентези и на картинки с полуголыми дядьками %)

metawishmaster ★★★★★
()

Это точно ЛОР?

Почему никто не посоветовал gccxml?

Полученное дерево можно интерпретировать в код на паскале. Профит!

anonymous
()
Ответ на: Это точно ЛОР? от anonymous

Да, это точно ЛОР

Почему никто не посоветовал gccxml?

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

gccxml генерирует вывод только для структур данных.

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

Видимо мы друг друга не правильно поняли. Но Вы очень похожи на моих студентов.

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

А про язык... Ну что, вучыця (если я правильно написал).

anonymous
()

Возьми в качестве образца какой-нибудь из маленьких «игрушечных» компиляторов C (такие можно нагуглить). Во всяком случае, у тебя будет решена задача разбора С и ты получишь не только дерево грамм. разбора, но и списки функций, идентификаторов и т.п. Дальше заменяешь кодогенератор.

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

Тебе тут все советуют читать книжки. Мой совет: если и собираешься читать книжку, то _сначала_ нагугли примеры компилятора С и читай книжку параллельно с кодом.

den73 ★★★★★
()

Нужно полностью и четко записать все возможности, которые необходимо будет переносить на другой язык. Если курсовик, то наверняка хватит компиляции только одного файла, арифметических выражений, функций, объявления локальных и глобальных переменных, функций printf и scanf. После этого при помощи какого-нибудь генератора парсеров написать грамматику для подмножества Си, на выходе парсера должно быть абстрактное дерево синтаксиса (AST). После этого идти по дереву и применять преобразования. В один проход не получится, нужно распланировать этапы (например, выделение локальных переменных в один список и автоматическое переименование совпадающих имен).

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

Прямо сейчас на паре проконсультировался с преподователем. Он сказал: -«Это одна из простых курсовых, которая у меня есть. Всё очень просто. Надо использовать if и swich и всё получится. »

Он прав? вучыцца=)

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

он вообще не представляет себе сложность задачи, что в общем-то и хорошо - сдашь без проблем

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