forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   ?интропретатор (http://forum.boolean.name/showthread.php?t=7772)

aureli0 04.02.2009 20:22

?интропретатор
 
Подскажите, лучше на пальцах%), как можно реализовать простенький интропретатор скриптов внутри своей программы, хотя бы такого примерно вида

а=2;
b=random(5);
c=random(5);
if a>b then d=0;
if a<b then d=1;
if a=c and b=c then d=2;

ffinder 04.02.2009 21:05

Ответ: ?интропретатор
 
человек, тебе не кажется что тебе еще рано думать о таком?
для начала - грамотность. интерпретатор
потом - обоснование необходимости.
потом - теория.

на пальцах есть 3 стадии:
1. лексический анализ
вход: текст программы
выход: список лексем (они же токены)
2. грамматический анализ
вход: список лексем
выход: абстрактное синтаксическое дерево (узлы - операции, листья - операнды)
3. кодогенерация
вход: АСТ
выход: либо машинный код, либо байт-код для виртуальной машины, либо список непосредственных вызовов = интерпретация.

читать:
http://ru.wikipedia.org/wiki/Интерпретатор
http://progopedia.ru/

jimon 04.02.2009 21:48

Ответ: ?интропретатор
 
aureli0
можно потратить около 4 дней опытного программирования на полное написание нужной тебе вещи, а можно использовать уже готовые скриптовые движки
в принципе любой язык можно превратить в скриптовый (даже C++)
но самые простые реализации в плане подключения к C++ имеют Angelscript и Lua

если всё же хочется написать свой язык то тебе надо будет написать две разноплановых куска кода : компилятор и виртуальную машину
компилятор будет компилировать входной файл в некий твой байт код (по-сути это некий набор asm подобных команд), а виртуальная машина будет сопоставлять байт коду аналогии из команд на языке выполнения

HolyDel 04.02.2009 22:17

Ответ: ?интропретатор
 
jimon, человек ясно написал, что ему нужени ?интропретатор. такчто компиляцию в байткод можно убрать. можно обойтись одной виртуальной машиной, которая будет сопостовлять строки аналогам из команд на языке выполнения.

IGR 05.02.2009 12:03

Ответ: ?интропретатор
 
На геймдеве есть кое-что интересное этому поводу !!
Написание интерпретатора скриптов на С++: http://www.gamedev.ru/articles/?id=70118
Реализация Скрипт-Движка: http://www.gamedev.ru/articles/?id=70104

Также, если порытся в исходниках на програмистских форумах по С++, почти на каждом можно найти примеры компиляторов и интерпретаторов !! Например, вот: http://sources.codenet.ru/?cid=5

aureli0 14.02.2009 13:02

Re: ?интропретатор
 
Спасибо большое. Заинтересовал Lua. Темболее что есть в стандартном репозитории


Часовой пояс GMT +4, время: 13:19.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot