Parses a relational expression
(self)
| 1345 | |
| 1346 | |
| 1347 | def __relexpr(self): |
| 1348 | """Parses a relational expression |
| 1349 | """ |
| 1350 | self.__expr() |
| 1351 | |
| 1352 | # Since BASIC uses same operator for both |
| 1353 | # assignment and equality, we need to check for this |
| 1354 | if self.__token.category == Token.ASSIGNOP: |
| 1355 | self.__token.category = Token.EQUAL |
| 1356 | |
| 1357 | if self.__token.category in [Token.LESSER, Token.LESSEQUAL, |
| 1358 | Token.GREATER, Token.GREATEQUAL, |
| 1359 | Token.EQUAL, Token.NOTEQUAL]: |
| 1360 | savecat = self.__token.category |
| 1361 | self.__advance() |
| 1362 | self.__expr() |
| 1363 | |
| 1364 | right = self.__operand_stack.pop() |
| 1365 | left = self.__operand_stack.pop() |
| 1366 | |
| 1367 | if savecat == Token.EQUAL: |
| 1368 | self.__operand_stack.append(left == right) # Push True or False |
| 1369 | |
| 1370 | elif savecat == Token.NOTEQUAL: |
| 1371 | self.__operand_stack.append(left != right) # Push True or False |
| 1372 | |
| 1373 | elif savecat == Token.LESSER: |
| 1374 | self.__operand_stack.append(left < right) # Push True or False |
| 1375 | |
| 1376 | elif savecat == Token.GREATER: |
| 1377 | self.__operand_stack.append(left > right) # Push True or False |
| 1378 | |
| 1379 | elif savecat == Token.LESSEQUAL: |
| 1380 | self.__operand_stack.append(left <= right) # Push True or False |
| 1381 | |
| 1382 | elif savecat == Token.GREATEQUAL: |
| 1383 | self.__operand_stack.append(left >= right) # Push True or False |
| 1384 | |
| 1385 | def __logexpr(self): |
| 1386 | """Parses a logical expression |