# Help with scanners

``` #include <iostream.h> #include <math.h> #define E 0 #define L 1 #define G 2 #define C -1 int strcomp (char*, char*); int eval (char*); int scanner (char*, int, char*); int convert (char*); class stack {   public:   int *arr;   int ptr;   int n;   stack (int n);   ~stack ();   int push (int value);   int pop ();   int empty ();   int full (); }; stack::stack (int value) {   n = value;   arr = new int [n];   ptr = 0; } stack::~stack () {   delete []arr; } int stack::push (int value) {   if (ptr < n)   {       arr [ptr] = value;       ptr++;       return E;   }   else return L; } int stack::pop () {   ptr--;   return arr [ptr]; } int stack::empty () {   if (ptr == 0) return E;   else return L; } int stack::full () {   if (ptr == n) return E;   else return L; } int main () {   int n;   char arr [100];   cin.getline (arr, 100);   while ( strcomp(arr, "quit") != E)   {       n = eval (arr);       cout << "The value of " << arr << " = " << n << endl;       cin.getline (arr, 100);   } } int strcomp (char*str1, char*str2)          {                                                              int k = 0;   while (str1 [k] == str2 [k])   {       if (str1 [k]  == '\0') return E;       else k++;   }   if (str1 [k] < str2 [k]) return L;   else return G; } int eval (char*str) {   int pos = 0, value;   char token [100];   stack stk1 (100);   while (pos != C)   {       pos = scanner (str, pos, token);       char fchar = token[0];       if (fchar == '+' || fchar == '-' || fchar == '*' || fchar == '/')       {         int opr1 = stk1.pop ();         int opr2 = stk1.pop ();         if (fchar == '+') value = opr1 + opr2;         if (fchar == '-') value = opr1 + opr2;         if (fchar == '*') value = opr1 + opr2;         if (fchar == '/') value = opr1 + opr2;         int rel = stk1.push (value);       }       else        {           int num = convert (token);           int ret = stk1.push (num);       }   }   return stk1.arr [0]; } int scanner (char*str, int str, char*token); {   int i = st;   while (str [i] != ' ')   {       if (str [i] == '\0') return C;       else       {         token [i-st] = str [i];         i++;       }   }   token [i-st] = '\0';   i++;   return i; } int convert (char*str) {   int i = 1;   int num;   num = str [i] - '0';   while (str [i] != '\0')   {       num = num * 10;       num = num + str [i] - '0';       i++;   }   return '\0'; }```