【发布时间】:2018-12-14 02:34:24
【问题描述】:
我的任务是为后缀表达式编写一个非常简单的词法分析器:
print ("enter each variable followed by a space" );
numbers = input("Enter the numbers: ") #ask for input
numbersArray = [] #array to store the input
for number in numbers:
numbersArray.append(number)
numbersArray = numbersArray[::2]
print(numbersArray);
for x in numbersArray:
if x == "_": print ( " " , " delimeter" )
elif x == "-": print ( " ", " subtraction opp." )
elif x == "/": print ( " ", " divison opp." )
elif x == "+": print ( " ", " addition opp." )
elif x == "*": print ( " ", " multplication opp." )
elif x == "0": print ( " ", " Constant: 0 " )
elif x == "1": print ( " ", " Constant: 1" )
elif x == "2": print ( " ", " Constant: 2" )
elif x == "3": print ( " ", " Constant: 3" )
elif x == "4": print ( " ", " Constant: 4" )
elif x == "5": print ( " ", " Constant: 5" )
elif x == "6": print ( " ", " Constant: 6" )
elif x == "7": print ( " ", " Constant: 7" )
elif x == "8": print ( " ", " Constant: 8" )
elif x == "9": print ( " ", " Constant: 9" )
elif x == "10": print ( " ", " Constant: 10" )
print(x)
一个样本输入:3 _ 4 _ 5 _ +
以上是我开始的,这是我第一次使用 python,我一直在努力解决这个问题。我想知道是否有更好的方法可以将更大的数字和字母分别识别为常量和变量?
【问题讨论】:
-
词法分析器部分的常用方法是正则表达式(
re模块)。 -
查看
rply或ply了解python lex/parse 库。如果你打算自己写,至少看看他们的来源,让你走上正确的道路。 -
谢谢两位。我会调查他们两个,让你知道会发生什么
标签: python compiler-construction