Я работаю над простым интерпретатором, чтобы узнать больше о том, как они работают.Работа с несколькими аргументами для интерпретатора
У меня есть пара аспектов, о которых я не уверен.
Как я должен иметь дело с кодами операций с различными аргументами?
я мог бы что-то вроде:
void execute(int opcode, int arg1, int arg2, int arg3, Machine m);
Однако это:
-Limits me to 3 args
-Forces me to supply dummy args for opcodes taking less args
Каковы пути (ы), что переводчики обычно имеют дело с этим?
Я мог бы, конечно, нажать массив int, но мне интересно, есть ли лучший способ.
Thanks
Одно уточнение, только последний аргумент может быть переменной длиной. –
@ElliottFrisch: хорошая точка, я думал, что это имеет значение только с переменными того же типа. –
Это может быть правдой на других языках. Другое примечание: varargs делает аргументы полностью необязательными ... так что 'execute (opcode, m);' также действителен. –