17
构建不存在的语言的解释器
为假的,基于堆栈的语言构建解释器,该解释器获取输入,解释输入并将结果输出为数字数组。它应该遍历每个字节并根据此表执行不同的功能: 0000(0):串联(将堆栈中的前两个数字组合起来,就好像它们是字符串一样。例如:12,5-> 125) 0001(1):递增(在堆栈顶部的数字加1) 0010 (2):递减(从堆栈顶部的数字减去一个) 0011(3):乘以(堆栈的顶部两个数字相乘) 0100(4):除(将第二个到顶部的数字除以在堆栈顶部的数字) 添加(添加顶部的堆栈两个数字上):0101(5) 0110(6):减去(减去栈顶的数目从所述一个在其下方) 0111(7):指数(计算从小数到小数到大数的乘方) 1000(8):模数:(以小数为模,找到从小到大的数) 1001(9):向右旋转(将堆栈向下移动一格。底部的数字现在位于顶部) 1010(A):向左旋转(将堆栈向上移动一格。顶部的数字现在位于底部) 1011(B):复制(复制最上面的数字,以便它出现两次。例如:4,1变成4,1,1) 1100(C):双重复制(复制堆栈上的最上面的两个数字。ex :4, 1,2变成4,1,2,1,2) 1101(D):交换(交换堆栈中的前两个数字。例如:4,1,2变成4,2,1) 1110(E):双交换(交换最上面的两个数字,下面两个交换。例如:1,2,3,4,5变成1,4,5,2,3) 1111(F):删除/弹出(删除上面的数字堆栈) 例如,包含 1 1 BC 5 C 5 B 9 5-输入(十六进制) | | | | | | | | | | 1 2 2 2 4 4 6 6 2 …