Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2011, 14:53   #1
Kauperwud
 
Регистрация: 14.11.2011
Сообщений: 3
По умолчанию Написать интерпретатор программного языка

Здраствуйте!
Ребят, кто хорошо разбирается в C++ помогите пожалуйста с реализацией данного задания или хотя бы подтолкните к решению, подскажите литературу и т.п.
У нас программирование всего 1 семестр(т.к. наша специальность частично связана с этим), толком ничего не объясняют, дали задание.
В С++ вникать надо затратить уйму времени, а времени всё мало остается. Решил обратится к вам.
Ниже идёт задание. Заранее благодарен за помощь.
Задание
Написать интерпретатор программного языка (далее называемого В.*) описанного в вашем
варианте. Ваша программа должна считывать код на языке В.* из файла или с клавиатуры (в
зависимости от варианта) и исполнять этот код или записывать в отдельный файл программу C++
эквивалентную исполнению кода.
Варианты заданий.
Варианты a считывают с клавиатуры и сразу исполняют.
Вариант 1 a
Синтаксис языка:
• Программная строка начинается с символа «:» (двоеточие), строка с комментарием
начинается с символа «-» (минус).
• Строка может содержать только одну операцию.
• Переменные не декларируются заранее, их тип определяется при первом использовании.
• Типы данных $ – строка, % – число с плавающей запятой (вводятся с запятой а не с
точкой), @ – целое число.
• Переменные могут быть преобразованы временно в другой тип, если при их последующем
использовании они обозначены как другой тип данных.
• Каждый тип данных должен уметь преобразовываться в другой (например число в строку,
или целое число в число с плавающей запятой).
• Операция > может означать:
◦ Ввод с клавиатуры, если она является первой после :
◦ Вывод на экран, если она является последней на строке.
◦ Запись данных из переменной или константы слева в переменную с права.
• Константы пишутся в одинарных кавычках (вне зависимости от типа данных).
• Операция & – это операция «наоборот»
◦ переписывает строку в обратном порядке символов в ней
◦ с численными переменными она меняет их значение с положительного на
отрицательное
• Программа заканчивается строкой начинающейся с «^».
Пример программы на языке :
- Это пример программы
- считываем строку с клавиатуры
:>$a
- переписываем строку задом на перёд
:&a
- выводим строку на экран
:a>
- записываем строку из двух пробелов в переменную s
:' '>$s
- выводим пробелы на экран
:s>
- записываем длину строки a в чело-численную переменную b
:#a>@b
- выводим значение b на экран
:b>
- записываем число 1,8 в переменную с плавающей запятой
:'1,8'>%c
- выводим на экран
:c>
- выводим на экран переменную преобразованную в целое число
:@c>
^
Kauperwud вне форума Ответить с цитированием
Старый 14.11.2011, 18:27   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну и дальше что?
вывалили задание...а делать мы должны?

считывайте строку посимвольно и выполняйте действия.(порою надо по два символа)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.11.2011, 18:55   #3
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

По-хорошему тут надо брать какой-то boost::spirit, быстренько вбивать грамматику и молиться за его разработчиков

Но, конечно, преподы тебе так сделать не разрешат, и придется писать парсер вручную.

И дальше есть два варианта - либо загуглить подходящие описания алгоритмов и разбираться самому, либо идти в раздел фриланса. Ибо код получится достаточно объемным, и просто так его писать вряд ли кто-то станет.
Son Of Pain вне форума Ответить с цитированием
Старый 14.11.2011, 22:44   #4
Kauperwud
 
Регистрация: 14.11.2011
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
ну и дальше что?
вывалили задание...а делать мы должны?
Зачем же так. Я всего лишь попросил подсказать мысль в решении, с чего начать и т.д., также какую литературу можно почитать,чтобы можно вникнуть в суть решения.
Kauperwud вне форума Ответить с цитированием
Старый 14.11.2011, 22:56   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну я подсказал второй половиной.

вам даже не надо весь комплекс хорошего интерпритатора.
просто простая реализация
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.11.2011, 01:54   #6
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Цитата:
Сообщение от Kauperwud Посмотреть сообщение
какую литературу можно почитать,чтобы можно вникнуть в суть решения.
Поищите что-нибудь про лексический анализ, синтаксический анализ и интерпретаторы компилирующего типа.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 15.11.2011, 03:04   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну книга дракона, оно и ясно.
но не думаю что ТС надо так глубоко.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интерпретатор Bizunov Помощь студентам 0 03.06.2011 15:52
Интерпретатор заданного языка DaNiemand Помощь студентам 2 07.09.2010 14:56
Нужно написать программу, определиться с выбором языка. Aka-demik Помощь студентам 9 17.02.2010 23:04
Интерпретатор Volkodav2411 Фриланс 6 04.02.2010 21:17
интерпретатор машинного языка Hellgrom Паскаль, Turbo Pascal, PascalABC.NET 0 02.05.2009 18:46