Я создаю язык программирования с нуля на C, и я предпочел бы не использовать сторонний код для обработки переменных.
Во-первых, каков наилучший способ представления назначений массива, например apples_in_crate[5] = 170
, в форме байт-кода?
Очевидно, apples = 170
может быть представлен как:
PUSHSCALAR ("apples")
PUSHREAL (170)
ASSIGNSCALAR
, но все становится намного сложнее, когда дело доходит до массивов.Любые предложения?
Во-вторых, как бы вы представили crate[5].apples = 170
(запись) в байт-коде?
Любая помощь будет оценена.
Уточнение: я пишуинтерпретатор, поэтому размер массива не известен во время компиляции или синтаксического анализа.Например, следующий (абстрактный) код будет вполне допустимым:
// Note: NUMBER_OF_CRATES is not known at compile-/parse-time,
// it could even be a dynamic expression.
array apples_in_crate[NUMBER_OF_CRATES]
for crate = 1 to NUMBER_OF_CRATES
apples_in_crate[crate] = randint (101) + 100
end for