deal with *, /, and %
| 113 | |
| 114 | // deal with *, /, and % |
| 115 | double term() |
| 116 | { |
| 117 | double left = primary(); |
| 118 | Token t = ts.get(); // get the next token from token stream |
| 119 | |
| 120 | while(true) { |
| 121 | switch (t.kind) { |
| 122 | case '*': |
| 123 | left *= primary(); |
| 124 | t = ts.get(); |
| 125 | break; |
| 126 | case '/': |
| 127 | { |
| 128 | double d = primary(); |
| 129 | if (d == 0) error("divide by zero"); |
| 130 | left /= d; |
| 131 | t = ts.get(); |
| 132 | break; |
| 133 | } |
| 134 | default: |
| 135 | ts.putback(t); // put t back into the token stream |
| 136 | return left; |
| 137 | } |
| 138 | } |
| 139 | } |
| 140 | |
| 141 | //------------------------------------------------------------------------------ |
| 142 |
no test coverage detected