Пример #1
0
def calculateAndReturnAnsToken(operandStack, operatorStack):
    num2Token = st.popStack(operandStack)   # Pop the second operand for calculation (FILO)
    num1Token = st.popStack(operandStack)   # Pop the first operand for calculation (FILO)
    operator = st.popStack(operatorStack)   # Pop the operator for calculation
    ans = ar.calculationBasedOnOperator(num1Token.num, num2Token.num, operator.symbol) # Get the calculated ans
    token = operandT.createOperandToken(sI.formatNumber(ans)) # Create the operand token based on calculated ans
    return token
Пример #2
0
    def test_createOperandToken_given_abcd_expect_exception_raised(self):
        try:
            # createOperandToken(operandStr)
            operandToken = operandT.createOperandToken("abcd")
            self.assertEqual("abcd", operandToken.num)
            self.assertEqual(None, operandToken.numType)
            self.assertEqual("OPERAND_TOKEN", operandToken.tokenType)

        except Exception as e:
            print(e)
Пример #3
0
def createAndPushTokenToStack(listIndex, expressionList, operandStack, operatorStack, previousToken):
    currentChar = expressionList[listIndex]
    if sI.isNumber(currentChar):  # formatNumber(number)
        token = operandT.createOperandToken(sI.formatNumber(sI.stringToNumber(currentChar)))
        st.pushStack(operandStack, token)
    elif sI.isOperator(currentChar):  # Raise exception when non operator detected
        token = operatorT.createOperatorToken(operatorT.getOperatorStrAffix(getCharFromToken(previousToken),
                                                                            expressionList[listIndex + 1],
                                                                            currentChar))
        st.pushStack(operatorStack, token)
    return token
Пример #4
0
def createToken(listIndex, expressionList, previousToken):
    currentChar = expressionList[listIndex]
    if sI.isNumber(currentChar):  # formatNumber(number)
        token = operandT.createOperandToken(sI.formatNumber(sI.stringToNumber(currentChar)))
    elif sI.isOperator(currentChar):  # Raise exception when non operator detected, required next char to check get
        # affix
        token = operatorT.createOperatorToken(operatorT.getOperatorStrAffix(getCharFromToken(previousToken),
                                                                            expressionList[listIndex + 1],
                                                                            currentChar))

    token.tokenId = listIndex
    return token
Пример #5
0
 def test_createOperandToken_given_1012_expect_token_with_correct_info(self):
     # createOperandToken(operandStr)
     operandToken = operandT.createOperandToken("1012")
     self.assertEqual(1012, operandToken.num)
     self.assertEqual("int", operandToken.numType)
     self.assertEqual("OPERAND_TOKEN", operandToken.tokenType)
Пример #6
0
 def test_a_getCharFromToken_given_operand_token_expect_return_value_of_token_in_str(
         self):
     # createOperandToken(operandStr)
     operandToken = operandT.createOperandToken("123")
     # getCharFromToken(token):
     self.assertEqual("123", sY.getCharFromToken(operandToken))