|
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
|
|
| 12.11.2011, 17:29 | |
|
Ответы с готовыми решениями:
4
Интерпретатор небольшого языка программирования на С++ Не удается откомпилировать интерпретатор М-языка |
|
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
|
|
| 13.11.2011, 10:02 | |
|
Помогаю со студенческими работами здесь
5
Интерпретатор/компилятор ассемблер-подобного языка Пишем свой интерпретатор языка BASIC Задание: разработать "Интерпретатор языка". С чего начать? Написать интерпретатор Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Ритм жизни
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
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|