我试图在python中创建一个用于家庭作业的中缀到后缀的转换器,我在网上找到了多个看起来足够简单的转换器,但没有一个满足我需要的要求。我必须使用以下课程:
class Token(object):
UNKNOWN = 0 # unknown
INT = 4 # integer
MINUS = 5 # minus operator
PLUS = 6 # plus operator
MUL = 7 # multiply operator
DIV = 8 # divide operator
FIRST_OP = 5 # first operator code
def getPrecedence(self):
if self is '(':
return 0
elif self is '+'or '-':
return 1
elif self is '*' or '/':
return 2
else:
return 3
def _init_(self, value):
if type(value) == int:
self._type = Token.INT
else:
self._type = self._makeType(value)
self._value = value
def isOperator(self):
return self._type >= Token.FIRST_OP
def _str_(self):
return str(self._value)
def getType(self):
return self._type
def getValue(self):
return self._value
def _makeType(self, ch):
if ch == '*': return Token.MUL
elif ch == '/': return Token.DIV
elif ch == '+': return Token.PLUS
elif ch == '-': return Token.MINUS
else: return Token.UNKNOWN;
我不得不添加getPrecedence():方法,它返回一个表示运算符优先级的整数。我还必须使用以下课程:
^{pr2}$我必须编写一个程序,将中缀表达式转换为后缀表达式。这个程序应该使用Token和Scanner类(我在上面已经包括了)。程序应该包括一个预处理输入和输出的主函数和一个名为IFToPFConverter的类。main函数接收一个输入字符串,然后用它创建一个扫描仪。扫描器然后作为参数传递给converter对象的构造函数。然后运行converter objects convert方法来转换中缀表达式。此方法返回表示后缀字符串的标记列表。然后main函数显示这个字符串。以下是我目前所掌握的情况:
from arrayStack import ArrayStack
from token import Token
from scanner import Scanner
class IFToPFConverter(object):
def convert(self):
opStack = Stack()
postFixList = []
while self._scanner.hasNext():
currentToken = self._scanner.next()
if currentToken in '0123456789'
postFixList.append(currentToken)
elif currentToken == '(':
opStack.push(currentToken)
elif currentToken == '*':
opStack.push(currentToken)
elif currentToken == '/':
opStack.push(currentToken)
elif currentToken == '+':
opStack.push(currentToken)
elif currentToken == '-':
opStack.push(currentToken)
elif currentToken == ')':
opStack.push(currentToken)
while not opStack.isEmpty():
def main():
sourceStr = raw_input("Please enter an expression:")
scanner = Scanner(sourceStr)
conversion = IFToConverter.convert(scanner)
return conversion
main()
我不知道该怎么办,我甚至不知道我在IFToPFConverter课堂上所做的是否有效。我见过更简单的中缀到后缀转换器,我对编程相当陌生,所以这似乎有很多东西需要理解。我需要任何可能的帮助,谢谢。在
目前没有回答
相关问题 更多 >
编程相关推荐