Implement OperandStack for Runtime
This commit is contained in:
parent
986c04053e
commit
920251e99f
3 changed files with 52 additions and 1 deletions
29
runtime/OperandStack.c
Normal file
29
runtime/OperandStack.c
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
#include "OperandStack.h"
|
||||
|
||||
int OStackSize(OperandStack* stack) {
|
||||
return stack->top;
|
||||
}
|
||||
|
||||
int OStackPush(OperandStack* stack, int operand) {
|
||||
if (OStackSize(stack) >= TYPE_STACK_SIZE) {
|
||||
// Stack overflow
|
||||
return -1;
|
||||
}
|
||||
|
||||
stack->operands[stack->top] = operand;
|
||||
stack->top++;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int OStackPop(OperandStack* stack, int* result) {
|
||||
if (OStackSize(stack) == 0) {
|
||||
// Stack underflow
|
||||
return -1;
|
||||
}
|
||||
|
||||
*result = stack->operands[stack->top - 1];
|
||||
stack->top--;
|
||||
|
||||
return 0;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue