Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 5.00
error_404
2 / 2 / 1
Регистрация: 14.03.2011
Сообщений: 82
Записей в блоге: 1
#1

написать компилятор - C++

07.05.2011, 21:59. Просмотров 2811. Ответов 19
Метки нет (Все метки)

Написать транслятор для следующего фрагмента программы (на языке Паскаль или Си++). Недостающие объявления дописать. Вставить в текст комментарии. В результате данный текст должен быть переведён в программный код.
http://www.cyberforum.ru/cpp-beginners/thread1429109.html
C++
1
2
3
4
5
6
7
8
bool password()
{ char s[80];
cout<<”Введите пароль:;
gets(s);
if  (!strcmp(s,”пароль”))
return false;
} return true;
}
очень нужно, но не знаю как..прошу помогите
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2011, 21:59
Я подобрал для вас темы с готовыми решениями и ответами на вопрос написать компилятор (C++):

Компилятор не дает написать main без int. Ошибка в книге, или в С так можно?
В книге И.Ш. Хабибуллина &quot;Программирование на языке высокого уровня C/C++&quot; во...

Написать компилятор
Всем привет! У меня возник вот такой вопрос? Нужно написать компилятор, а...

Компилятор (Visual C++ 6.0) в плохой совместимости с Windows 7. Посоветуйте другой компилятор
Здравствуйте! Я недавно начал заниматься С++, но мой компилятор (Visual C++...

Компилятор?
Вот Visual Studio это IDE а какой в нем компилятор? название его скажите плз)

Компилятор С++
где можно скачать с++ 4.7.2?

19
Jupiter
07.05.2011, 22:01
  #2

Не по теме:

а исходники Windows вам не надо?)

0
error_404
2 / 2 / 1
Регистрация: 14.03.2011
Сообщений: 82
Записей в блоге: 1
07.05.2011, 22:03  [ТС] #3
Мне зачет сдать над- это лаба моя
0
ValeryLaptev
Эксперт С++
1049 / 828 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
07.05.2011, 22:50 #4
Цитата Сообщение от error_404 Посмотреть сообщение
Написать транслятор для следующего фрагмента программы (на языке Паскаль или Си++). Недостающие объявления дописать. Вставить в текст комментарии. В результате данный текст должен быть переведён в программный код.
C++
1
2
3
4
5
6
7
8
bool password()
{ char s[80];
cout<<”Введите пароль:;
gets(s);
if  (!strcmp(s,”пароль”))
return false;
} return true;
}
Первый вопрос: в КАКОЙ программный код нужно перевести. Без этого дальше двигаться невозможно.
И сразу предупреждаю: вряд ли в лабе требуется перевести в коды Intel и создать исполняемый файл.
Так что уточните постановку задачи.
0
error_404
2 / 2 / 1
Регистрация: 14.03.2011
Сообщений: 82
Записей в блоге: 1
07.05.2011, 23:04  [ТС] #5
Нужно создать exe файл, компилятора, который будучи написан на C++ использует лексический анализатор и определяет допустимость введенного кода и если это возможно, выполняет его, используя функции с++ . То есть кусок компилятора на с_++ но можно(разрешили) код считывать с текстового файла, ноя не вижу здесь упрощения. В общем программа консольная, в которую вводится эта прога и она компилируется моей же программой и выполняет то, что выполнила бы прога на с, извините у нас просто препод странный-мы сами ничего в этом не понимаем и зачем дали такую лабу- точнее курсовую не знаем и никто из группы не может пока сделать

Добавлено через 1 минуту
А перевести эти функции- жопустмую комбинацию слов, в эквивалентные функции С++
0
ValeryLaptev
Эксперт С++
1049 / 828 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
07.05.2011, 23:08 #6
Цитата Сообщение от error_404 Посмотреть сообщение
Нужно создать exe файл, компилятора, который будучи написан на C++ использует лексический анализатор и определяет допустимость введенного кода и если это возможно, выполняет его, используя функции с++ . То есть кусок компилятора на с_++ но можно(разрешили) код считывать с текстового файла, ноя не вижу здесь упрощения

Добавлено через 1 минуту
А перевести эти функции- жопустмую комбинацию слов, в эквивалентные функции С++
Судя по фразе "если это возможно, выполняет его" - надо писать интерпретатор, а не компилятор. Это совсем другое дело, гораздо проще, но тоже геморно.
Чтобы написать анализатор, надо минимальную грамматику написать для данного фрагмента программы. Вы об этом что-нить знаете?
0
error_404
2 / 2 / 1
Регистрация: 14.03.2011
Сообщений: 82
Записей в блоге: 1
07.05.2011, 23:11  [ТС] #7
да, как раз до этого мы грамматики на бумажке писали...

Добавлено через 46 секунд
и нужен именно анализхатор синтаксический и лексический- как только их делать???
0
ValeryLaptev
Эксперт С++
1049 / 828 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
07.05.2011, 23:12 #8
Цитата Сообщение от error_404 Посмотреть сообщение
да, как раз до этого мы грамматики на бумажке писали...

Добавлено через 46 секунд
и нужен именно анализхатор синтаксический и лексический- как только их делать???
Тогда и надо начать с того, что написать грамматику.
Тут всего несколько правил будет.
Наверное стартовый нетерминал будет ФУНКЦИЯ?
0
error_404
2 / 2 / 1
Регистрация: 14.03.2011
Сообщений: 82
Записей в блоге: 1
07.05.2011, 23:15  [ТС] #9
функция??7 какая ?

Добавлено через 1 минуту
какя понял- эту прогу надо дописать- то есть main и библиотеки должны писаться
Недостающие объявления дописать. что тогда это значит?
0
ValeryLaptev
Эксперт С++
1049 / 828 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
07.05.2011, 23:19 #10
Цитата Сообщение от error_404 Посмотреть сообщение
функция??7 какая ?
Никакая. Это первое правило грамматики:
<функция> ::= <заголовок><тело>
Далее определяем, что такое заголовок, что такое тело. И так далее - до алфавита символов.
Лексический анализатор - это конечный автомат. Вы об этом что-нить знаете?
Можно построить его так, что на выходе будет поток лексем - он попадает на вход синтаксическому анализатору...
Подобные задания хорошо разбираются в книге Молчанова Системное программирование. Там все про компиляторы написано. Tiot в книге Свердлова Языки программирования и методы трансляции.
1
error_404
2 / 2 / 1
Регистрация: 14.03.2011
Сообщений: 82
Записей в блоге: 1
07.05.2011, 23:20  [ТС] #11
про Свердлова знаю- а есть готовые примеры, которые работают, а то Свердловские с ошибками притом явными в коде
0
ValeryLaptev
Эксперт С++
1049 / 828 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
07.05.2011, 23:27 #12
Цитата Сообщение от error_404 Посмотреть сообщение
функция??7 какая ?

Добавлено через 1 минуту
какя понял- эту прогу надо дописать- то есть main и библиотеки должны писаться
Недостающие объявления дописать. что тогда это значит?
Прогу дописать - это совсем не то, что вы написали раньше.
Это просто написать функцию main(), в которой ЭТУ надо просто вызвать...
0
error_404
2 / 2 / 1
Регистрация: 14.03.2011
Сообщений: 82
Записей в блоге: 1
07.05.2011, 23:28  [ТС] #13
а вообще можно подобный пример найти прям построения? а то в свердлове одна теория- а потом практика без основния и с ошибкамми- за неделю не разберусь
0
ValeryLaptev
Эксперт С++
1049 / 828 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
07.05.2011, 23:38 #14
Все же непонятно, что надо делать?
Самому дописать прогу?
Написать прогу, которая допишет прогу?
Проанализирует и выполнит?
0
error_404
2 / 2 / 1
Регистрация: 14.03.2011
Сообщений: 82
Записей в блоге: 1
07.05.2011, 23:39  [ТС] #15
Проанализирует и выполнит? у свердлова в конце компилятор языка оберона на с++_ нам сказали вот так же сделать
0
ValeryLaptev
Эксперт С++
1049 / 828 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
07.05.2011, 23:43 #16
Цитата Сообщение от error_404 Посмотреть сообщение
Проанализирует и выполнит? у свердлова в конце компилятор языка оберона на с++_ нам сказали вот так же сделать
Либо вы не понимаете задание. Либо препод ставит слишком неконкретную задачу. Я так и не понял, что делать-то надо?
0
error_404
2 / 2 / 1
Регистрация: 14.03.2011
Сообщений: 82
Записей в блоге: 1
07.05.2011, 23:43  [ТС] #17
препод бабушка 70 лет, которая просто сказала- напишите компилятор, который выполнит эту программу и все
0
ValeryLaptev
Эксперт С++
1049 / 828 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
07.05.2011, 23:53 #18
Понятно.
Тогда надо писать прогу, которая допишет и выполнит...
И все равно минимальный анализ надо делать. Ибо в main() эту функцию вызывать.
И придется взять Свердлова и как там написано - сделать свой конкретный вариант анализатора.
Примеров конкретно вашей задачи вы не найдете - нет их.
0
error_404
2 / 2 / 1
Регистрация: 14.03.2011
Сообщений: 82
Записей в блоге: 1
07.05.2011, 23:54  [ТС] #19
А есть хоть что-то похожее? или та же прога свердлова но на борланде-нам на студии не разрешили
0
kravam
быдлокодер
1706 / 893 / 105
Регистрация: 04.06.2008
Сообщений: 5,524
08.05.2011, 01:34 #20
ТС, я бы на твоём месте сделал так: Довёл код до ума руками, чтоб компилился g++ и корректно, а потом то же самое сделал программно, то есть примерно такой алгоритм:

1) Если в коде нет main, то запихать
2) Если в коде есть служебные слова, как-то: bool, return, gets, то позаботиться чтобы прога их узнавала. Для этого дописать необходимые объявления
Всё это естественно, ПРОГРАММНО
И всё в таком духе.

По окончании всего этого дела у тебя полиучится исходник написанный корректно на С. После этого программно подавай его на вход компилятору

Зато потом придёшь сюда и скажешь: ребята, я изобрёл новый язык. И компилятор покажешь. И будет круто.
0
08.05.2011, 01:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2011, 01:34
Привет! Вот еще темы с решениями:

Компилятор c++
Доброго времени суток! Никак не могу справиться с написанием компилятора. Над...

компилятор c++
Решил вот обратиться к умным людям насчет c++. Подумал я и решил начать...

Компилятор
что делает компилятор он переводит в машинный язык что такое машинный язык

Компилятор
Посоветуйте хороший компилятор для windows 7 x64 с/с++ Code blocks не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru