Форум программистов, компьютерный форум CyberForum.ru

Написать интерпретатор программного языка -помощь - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
Евгений_Klug
0 / 0 / 0
Регистрация: 12.11.2011
Сообщений: 7
12.11.2011, 17:29     Написать интерпретатор программного языка -помощь #1
Здраствуйте!
Ребят, кто хорошо разбирается в 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>
^
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
12.11.2011, 18:06     Написать интерпретатор программного языка -помощь #2
Цитата Сообщение от Евгений_Klug Посмотреть сообщение
подскажите литературу и т.п.
бъярн страутап там по моему третий раздел описание создания конкулятора ,классная тема
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
12.11.2011, 18:31     Написать интерпретатор программного языка -помощь #3
Компиляторы: принципы, технологии и инструменты. Ульман, Сети, Ахо
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
12.11.2011, 19:37     Написать интерпретатор программного языка -помощь #4
Nameless One, ИМХО в данной задаче это из пушки по воробьям. Здесь очень ограниченный набор команд, при этом синтаксис тоже настолько ограничен, что даже нормальный лексический анализатор не понадобится. Синтаксический анализ тоже не нужен, а семантические ошибки возможны в очень ограниченном количестве. Так что тут достаточно конечный автомат реализовать (можно даже свитчем, если не заморачиваться) и простенькую таблицу идентификаторов, чтобы удобнее работать с типами было.
Евгений_Klug
0 / 0 / 0
Регистрация: 12.11.2011
Сообщений: 7
13.11.2011, 10:02  [ТС]     Написать интерпретатор программного языка -помощь #5
Спасибо большое за литературу, мне конечно это не сильно помогло, так знаний практически по С++ нет. Может кто-нибудь алгоритм решения подскажет, буду очень благодарен.
Yandex
Объявления
13.11.2011, 10:02     Написать интерпретатор программного языка -помощь
Ответ Создать тему
Опции темы

Текущее время: 13:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru