我正在嘗試編寫一個解析器,它將表達式作爲文件的輸入。計算器的Python解析器
表達式可以是A = B = 10或B =(C-A)-4等
我迄今嘗試是。我讀文件IP.txt
import re
opert = '+-/*()_='
fileName = "input.txt"
f = open(fileName,'r')
variableDict = {}
lines = f.readlines()
for i in lines:
for x in re.finditer(r'[A-Z_]\w*', i):
print x.group() # prints list containing all the alphabets.
for z in re.finditer(r'[0-9]\d*', i):
print z.group() # prints list containing all the numbers.
for c in i:
if c in opert:
print C# prints all the operators.
# '_' has special meaning. '_' can only be used before numbers only like _1 or _12 etc
#And i have parsed this also using
print re.findall(r'[_][0-9]\d+',i) # prints the _digits combination.
現在的問題是我在我應該怎麼用表達式求值繼續已經達成。 首先,我必須提到的有關上述輸入的一些規則是。 沒有一行應該大於50個字符。 最左邊的運算符總是'='賦值運算符。 '='總是在變量[A-Z]之前,運算符是{'+',' - ','/','*','_'},數字{0-9}。
我應該如何首先提取第一變量,然後將它推入蟒蛇名單,然後「=」操作符,然後是「(」,「AZ」推入堆棧等
有人能幫助我問題。我不知所措的問題..
如果任何一個無法理解的描述請goto this link
您需要在那裏修正縮進。實際上,混合選項卡和空格不適用於堆棧溢出。 –
對不起,格式化我是新的在stackoverflow學習如何正確使用它。 –
您可能的起點:[評估字符串中的數學表達式](http://stackoverflow.com/a/2371789/222914) –