Форум программистов, компьютерный форум, киберфорум
Теория программирования
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 14.05.2008
Сообщений: 24

надо просто написать компилятор

10.11.2010, 17:37. Показов 913. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Пишу программу (в C++Builder), в которой надо реализовать возможность создания макросов. Синтаксис макросов желательно (но не обязательно) приблизить к Си.

Вот пример такого макроса (это полный текст):
C++
1
2
3
4
for(int i=0; i<Wordlist.Count; ++i)
{
  Wordlist.Word[i] = IntToStr(i) + WordList.Word[i];
}
При этом объект Wordlist и все его свойства и методы заранее предопределены мной для конечного пользователя. То же касается и функции IntToStr.
Состав списка предопределенных объектов и функций будет статичен.

Задача в том, чтобы связать указанный в теле макроса объект Wordlist с реальным объектом в программе, при этом его методы и свойства будут вызываться в соответствии с действиями макроса. Весь исходный код должен (единожды) интерпретироваться в байт-код, затем (возможно, многократно) выполняться, а вызовы предопределенных свойств и методов объектов или функций должны соответственно передавать управление в реальные объекты или функции.

Вопрос: существует ли готовый инструмент, подходящий для моей задачи, который можно прикрутить к моей программе? Причем, желательно, чтобы этот инструмент компилировал исходный код с возможностью просмотра синтаксических ошибок.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.11.2010, 17:37
Ответы с готовыми решениями:

Как написать ОС (просто загрузить .ехе)
Доброго времени суток! Раскажите как написать свою ОС. Я не собираюсь писать что-то крутое =) Мне интересно просто как написать...

надо что то добавить!!прога просто выводит список групп,учеников и первых 3 оценок.надо чтобы прога в конце показывала по убыванию средего балла
#include&lt;stdio.h&gt; #include&lt;conio.h&gt; #include&lt;math.h&gt; #include&lt;string.h&gt; #include&lt;stdlib.h&gt; main() {int t,o1,o2,o3; char...

Можно ли просто установить yaml в компилятор MinGW?
Хочу поэкспериментировать с yaml. Что сделано 1. Смотрел - вроде бы в самом MinGW нет родной библиотеки для поддержки yaml, хотя может...

3
PB
10.11.2010, 17:48

Не по теме:

надо просто написать компилятор
написать компилятор != просто

0
0 / 0 / 0
Регистрация: 14.05.2008
Сообщений: 24
10.11.2010, 17:52  [ТС]
PB, это была шутка, я хорошо представляю, что это не просто, конечно мне не хочется писать компилятор, я хотел сказать интерпретатор, вот и спрашиваю о готовых инструментах.
0
2 / 2 / 1
Регистрация: 08.11.2010
Сообщений: 27
10.11.2010, 19:52
Цитата Сообщение от John Paramol Посмотреть сообщение
Вопрос: существует ли готовый инструмент, подходящий для моей задачи, который можно прикрутить к моей программе? Причем, желательно, чтобы этот инструмент компилировал исходный код с возможностью просмотра синтаксических ошибок.
Комбинаторные парсеры (Parsec).
Использовать как target язык, умеющий настоящие макросы: Lisp, Nemerle.
Ну и разумеется прочитать перед этим DragonBook и SICP.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.11.2010, 19:52
Помогаю со студенческими работами здесь

Код, который ломает MSVC компилятор (просто делюсь)
Привет! Иногда приходится кое-что делать под виндой и сегодня случайно наткнулся на такой креш void f(const std::string &amp;s) ...

Стек. Работа со стеком. Закомментировать просто надо
Не могу разобраться. Прошу подписать комментарии что к чему. Желательно пошагово using System; using System.Collections.Generic; ...

Дан код, надо чтобы выводил не просто число, а по модулю
Дан код, надо чтобы выводил не просто число, а по модулю, подскажите как сделать ? #include &lt;stdio.h&gt; #include...

Надо проверить заполнение полей в форме, отправить ее (POST) и просто закрыть это окно
Надо проверить заполнение полей в форме, отправить ее (POST) и просто закрыть это окно, без каких-либо переходов. Что-то заклинило...

Забыл алгербу, подскажите как сделать, надо просто через условие вернуть истину или ложь
public class Point { private int x; private int y; public Point(int x, int y) { this.x = x; this.y = y;...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru