Ratul Thakur Ответов: 1

Лучший способ хранения переменных в программе интерпретатора C++?


Помогите!!
В настоящее время я работаю над интерпретатором (с C++).
для хранения переменных я использую массивы структурного типа.
например, в случае целого числа,
typedef struct 
{
char name[10];
int value;
}myInt;
myInt intArray[1000];
int myInt_index=0;
//and when the interpreter reads that an integer is being defined, the following is //executed:
{
intArray[myInt_index].name= *name_specified_by_user*;
intArray[myInt_index].value=(int)*some_value*;
myInt_index++;
}

но этот процесс не эффективен для памяти, и я знаю, что есть какой-то лучший способ сделать это, и я хочу знать, что это такое. Ваша помощь будет оценена по достоинству. Заранее спасибо.
С уважением
Ратул

Что я уже пробовал:

я попытался найти помощь в google.... но google, вероятно, не понимает, что я имею в виду.

Sergey Alexandrovich Kryukov

Это слишком много связано с общим дизайном вашего продукта. Я предлагаю, чтобы переменные хранились в некоторой структуре данных, представляющей контексты выполнения. Представление контекста и области действия, а также контекста потока для переменной стека является основной проблемой проектирования,а хранение самих переменных-вторичной. Важно понимать, что одно и то же имя переменной может использоваться в разных контекстах, поэтому их не следует путать, хранить как отдельные объекты.
—СА

Philippe Mori

Логотип может быть вашим детским языком... Логотип (язык программирования).

Philippe Mori

Вы также можете скачать этот PDF файл: Основы проектирования компилятора Как только вы прочтете эту книгу или другую книгу по проектированию компиляторов, у вас будет представление о том, как это сделать.

1 Ответов

Рейтинг:
0

Patrice T

Можете ли вы прояснить, что такое язык программы-интерпретатора и что такое интерпретируемый язык ? это C++ для обоих ?

Цитата:
но этот процесс не эффективен для памяти
Эффективность памяти, конечно, не самая худшая проблема.
intArray занимает всего несколько килобайт, когда ваш компьютер содержит несколько гигабайт оперативной памяти.

Как заметил Сергей, для хранения языковых переменных требуется гораздо больше возможностей, чем может предложить простой плоский список. Не только это, но и детали переводчика тоже имеют значение.

чтобы сделать интерпретатор, вам нужно использовать ряд методов, включая компилятор. Хранение переменных-это всего лишь одна часть головоломки.
Компиляторы: принципы, методы и инструменты-Википедия, свободная энциклопедия[^]

[Обновление]
Цитата:
этот язык-мой собственный ...лол, да, я делаю новый язык для детей с простым синтаксисом.

Характеристики вашего игрушечного языка подразумевают поведение переменных и, следовательно, необходимую организацию для обработки переменных.
Цитата:
Цитата:
Только интерпретируемый ... я не думаю, что собираюсь делать компилятор. Пожалуйста, предложите то, что мне нужно узнать.

Переводчик в основном состоит из 2 частей
- Первая часть отвечает за чтение исходного кода детей и перевод в другую форму, часто называемую Pcode или промежуточным кодом. Эта часть является компилятором.
- Вторая часть-это та, которая запускает промежуточный код.


Ratul Thakur

этот язык-мой собственный ...лол, да, я делаю новый язык для детей с простым синтаксисом. Только интерпретируемый ... я не думаю, что собираюсь делать компилятор. Пожалуйста, предложите то, что мне нужно узнать.

Philippe Mori

Может быть, это: http://www.boost.org/doc/libs/1_49_0/libs/spirit/doc/html/index.html.