Мне удалось написать несколько переводчиков, включая
- Tokenizing
- Парсинг, включая более сложные выражения, такие как
((x+y)*z)/2
- Построение байт-кода из синтаксических деревьев
- Фактическое выполнение байт-кода
Что мне не удалось: Реализация dictionaries/lists/arrays
.
Я всегда зацикливался на получении нескольких значений в одной переменной.
Моя структура значений (используется для всех передаваемых значений, включая переменные) выглядит следующим образом, например:
class Value
{
public:
ValueType type;
int integerValue;
string stringValue;
}
Отлично работает с целыми числами и строками, но как я могу реализовать массивы?
(Отныне с array
я имею в виду массивы на моем экспериментальном языке, а не на C ++)
Как я могу вписать концепцию массива в класс Value выше? Возможно ли это?
Как мне сделать так, чтобы массивы могли передаваться так же, как вы можете передавать целые числа и строки в моем языке, используя класс выше?
Доступ к элементам массива или выделению памяти не будет проблемой, я просто не знаю, как их хранить.