#include #include #include #include "../stack/stack.h" #include "data.h" void getOperands(id stack, long operands[2]) { operands[0] = [[stack getObject] getData]; [stack popObject]; operands[1] = [[stack getObject] getData]; [stack popObject]; } int main(int argc, char *argv[]) { int i=1; long operands[2]; id stack, data; if(argc<2) { printf("Expression!!\n"); return 0; } stack = [[Stack alloc] init]; data = [[Data alloc] init]; while(argv[i]) { if(strcmp(argv[i], "+")==0) { getOperands(stack, operands); [data setData: operands[0] + operands[1]]; [stack pushObject: data]; } else if(strcmp(argv[i], "-") == 0) { getOperands(stack, operands); [data setData: operands[0] - operands[1]]; [stack pushObject: data]; } else if(strcmp(argv[i], "*") == 0) { getOperands(stack, operands); [data setData: operands[0] * operands[1]]; [stack pushObject: data]; } else if(strcmp(argv[i], "/") == 0) { getOperands(stack, operands); [data setData: operands[0] / operands[1]]; [stack pushObject: data]; } else { [data setData:atol(argv[i])]; [stack pushObject: data]; } i++; } printf("Remaining Value is %i.\n", [[stack getObject] getData]); [stack free]; }