Это не слишком сложно для реализации.
Постфиксные языки легко реализуются с помощью стека. В Smalltalk стек может быть OrderedCollection
, для которого вы используете методы addLast:
и removeLast
.
Если язык интерпретируется построчно, ваш основной цикл интерпретатора может выглядеть примерно так:
instructions := sourceCode subStrings: (Character cr asString).
instructions do: [:eachInstruction | ...]
Одним из способов структурирования кода было бы создание класса Interpreter
, который имеет стек переменную-член и метод для каждой языковой инструкции.
Эти методы инструкции могут выглядеть примерно так:
addInstruction
| op1 op2 |
op1 := stack removeLast.
op2 := stack removeLast.
stack addLast: (op1 + op2).