|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.11.2011, 14:53 | #1 |
Регистрация: 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> ^ |
14.11.2011, 18:27 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
ну и дальше что?
вывалили задание...а делать мы должны? считывайте строку посимвольно и выполняйте действия.(порою надо по два символа) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
14.11.2011, 18:55 | #3 |
Участник клуба
Регистрация: 23.12.2010
Сообщений: 1,129
|
По-хорошему тут надо брать какой-то boost::spirit, быстренько вбивать грамматику и молиться за его разработчиков
Но, конечно, преподы тебе так сделать не разрешат, и придется писать парсер вручную. И дальше есть два варианта - либо загуглить подходящие описания алгоритмов и разбираться самому, либо идти в раздел фриланса. Ибо код получится достаточно объемным, и просто так его писать вряд ли кто-то станет. |
14.11.2011, 22:44 | #4 |
Регистрация: 14.11.2011
Сообщений: 3
|
|
14.11.2011, 22:56 | #5 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
ну я подсказал второй половиной.
вам даже не надо весь комплекс хорошего интерпритатора. просто простая реализация Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
15.11.2011, 01:54 | #6 |
C++
Форумчанин
Регистрация: 27.03.2011
Сообщений: 803
|
Поищите что-нибудь про лексический анализ, синтаксический анализ и интерпретаторы компилирующего типа.
Ищете информацию по C++?
cplusplus.com |
15.11.2011, 03:04 | #7 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
ну книга дракона, оно и ясно.
но не думаю что ТС надо так глубоко. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Интерпретатор | 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 |