Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 12.11.2011
Сообщений: 7

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

12.11.2011, 17:29. Показов 3154. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте!
Ребят, кто хорошо разбирается в 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>
^
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.11.2011, 17:29
Ответы с готовыми решениями:

Написать Интерпретатор Программного Языка(собственного)
Здраствуйте! Кто знает C++ помогите пожалуйста с реализацией данного задания!!! Пожалуйста, очень надо. сроки поджимают. Есть...

Интерпретатор небольшого языка программирования на С++
Здравствуйте, уважаемые форумчане! Я тут где-то год назад прочитал тему Evg и #pragma о создании интерпретатора, меня эта тема очень...

Не удается откомпилировать интерпретатор М-языка
Задача: взять интерпретатор М-языка на сайте http://cmcmsu.no-ip.info/2course/model.lang.parser.sample.htm и переработать его, добавив в...

4
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
12.11.2011, 18:06
Цитата Сообщение от Евгений_Klug Посмотреть сообщение
подскажите литературу и т.п.
бъярн страутап там по моему третий раздел описание создания конкулятора ,классная тема
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
12.11.2011, 18:31
Компиляторы: принципы, технологии и инструменты. Ульман, Сети, Ахо
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
12.11.2011, 19:37
Nameless One, ИМХО в данной задаче это из пушки по воробьям. Здесь очень ограниченный набор команд, при этом синтаксис тоже настолько ограничен, что даже нормальный лексический анализатор не понадобится. Синтаксический анализ тоже не нужен, а семантические ошибки возможны в очень ограниченном количестве. Так что тут достаточно конечный автомат реализовать (можно даже свитчем, если не заморачиваться) и простенькую таблицу идентификаторов, чтобы удобнее работать с типами было.
0
0 / 0 / 0
Регистрация: 12.11.2011
Сообщений: 7
13.11.2011, 10:02  [ТС]
Спасибо большое за литературу, мне конечно это не сильно помогло, так знаний практически по С++ нет. Может кто-нибудь алгоритм решения подскажет, буду очень благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.11.2011, 10:02
Помогаю со студенческими работами здесь

Пишем свой интерпретатор языка BASIC
Благодаря форуму и Evg в частности интерпретатор развивается, потихоньку превращаясь в простенький интерпретатор QBASIC. Некоторые из...

Интерпретатор/компилятор ассемблер-подобного языка
Привет! Чую, что изобрёл велисипед, даже скорее велопарк, но всё же, поделюсь: Некоторое время назад начал изучать кресты, в целом...

Пишем свой интерпретатор языка BASIC
Добрый день. Я смотрю, тут на форуме была тема коллективного написания интерпретатора BASIC на языке С++. Я очень извиняюсь, но я...

Задание: разработать "Интерпретатор языка". С чего начать?
Здравствуйте, вручили темку на курсовик, ну точнее как вручили, не успел взять то, что хотел - пришлось брать то, что осталось. Плоховато...

Написать интерпретатор
здравствуйте,ребята помогите написать интерпретатор на языке С++. у кого небудь есть готовый интерпретатор на языке Съ++ ??


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru