Here is a specification of a code generator for the combined stack and accumulator computer:
'choice' Encode(Stmnt) 'rule' Encode(assign(V,X)): StackCode(X) POP(V) $ 10 'rule' Encode(assign(V,X)): AccuCode(X) STOREACCU(V) $ 10 'choice' StackCode(Expr) 'rule' StackCode(plus(X,Y)): StackCode(X) StackCode(Y) PLUS $ 20 'rule' StackCode(minus(X,Y)): StackCode(X) StackCode(Y) MINUS $ 20 'rule' StackCode(var(V)): PUSH(V) $ 10 'rule' StackCode(X): AccuCode(X) ACCUTOSTACK $ 10 'choice' AccuCode(Expr) 'rule' AccuCode(plus(X, var(V))): AccuCode(X) ACCUPLUS(V) $ 10 'rule' AccuCode(minus(X, var(V))): AccuCode(X) ACCUMINUS(V) $ 10 'rule' AccuCode(var(V)) LOADACCU(V) $ 10 'rule' AccuCode(X): StackCode(X) STACKTOACCU $ 20