1 / 1 / 0
Регистрация: 17.12.2010
Сообщений: 16
|
|
1 | |
Brainf**k07.02.2011, 12:48. Показов 2213. Ответов 23
Метки нет (Все метки)
Народ, суть проблемы такова: наш препод по программированию сам только только окончил вуз, и, к сожалению, это дотавляет неприятности. Вот какое задание к лабораторной он дал:
"Как известно, язык Brainf**k есть интерпретируемый язык программирования с 8ю операциями: > < + - [ ] , .. Задача состоит в написании интерпретатора для него на C++.". Почитать о нем лучше всего на Вики. Это вроде не сложно. В крайнем случае можно взять известный интерпретатор на JS и переписать структуру под C++. Но для 5ки, нужно еще кое-что добавить: необходимо описать процедуры языка. Для управления процедурами добавить еще 3 оператора: ( ) :. Оператор ( должен начинать описание процедуры. Т.е. грубо говоря, функции. ID (как бы имя) процедуры есть число и сохраняется в ячейке, на которой стоит каретка при описании процедуры. Оператор ) заканчивает процедуру. Код в процедуре не выполняется при последовательном интерпретировании кода, и вызывается командой :. Команда : читает значение текущей ячейки и вызывает процедуру с ID, указанным в этой ячейке. Для работы в процедуру передается следующая ячейка (т.е. в самой процедуре каретка изначально будет стоять на ячейке n+1, где n - ячейка , хранящая ID процедуры). Народ, пожалуйста, помогите, для повышенной стипендии как раз не хватает этого зачета на 5, буду очень благодарен! Сдавать в пятницу, так что, думаю, время есть. Собственно, нужен полный интерпретатор + новые 3 команды. Пример кода с ними: Код
>>>+(+++)<<<,>+:<[>>+<<-].
0
|
07.02.2011, 12:48 | |
Ответы с готовыми решениями:
23
Интерпретатор Brainf**k из .pl под Visual Prolog 5.2 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||||
09.02.2011, 05:06 | 21 | |||||
Студии под рукой нет, но, если не ошибаюсь, можно в свойствах проекта в разделе "Отладка" (Debugging) указать аргументы командной строки для отладки.
Добавлено через 7 минут Вот, собственно, руководство, как это сделать: http://msdn.microsoft.com/ru-r... S.90).aspx. И вопрос: что мешает, если уж ты не разобрался, как задать аргументы командной строки при отладке, "зашить" необходимое значение в коде самой программы, например, вот так:
Если не хочешь доделывать свой вариант, можно легко переделать мой, чтобы он удовлетворял твоим требованиям. Нужно всего лишь заменить дерево fun_t на глобальный массив и немного изменить функции разбора и вычисления.
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
||||||
09.02.2011, 14:07 | 22 | |||||
perimetral, проверяйте, то, что вам надо?
1
|
1 / 1 / 0
Регистрация: 17.12.2010
Сообщений: 16
|
|
09.02.2011, 18:52 [ТС] | 23 |
silent_1991, Спасибо, работает как надо, осталось разобраться с vector, ибо мне преподу еще пояснять как это все работает. Но все равно благодарен =)
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
09.02.2011, 20:03 | 24 |
perimetral, это я ещё по минимуму STL использовал. Выдирание функции из текста программы сделано полностью вручную, можно было всё это стандартными алгоритмами провернуть.
0
|
09.02.2011, 20:03 | |