ファイルからの入力として式を受け取るパーサーを作成しようとしています。
式は A=B=10 または B=(CA)-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 文字を超えてはなりません。一番左の演算子は常に「=」代入演算子です。'=' 常に変数 [AZ] が先行し、演算子は {'+','-','/','*','_'}、数字 {0-9} です。
最初に最初の変数を抽出し、それを python リストにプッシュし、次に「=」演算子、次に「(」、「AZ」のいずれかでスタックにプッシュするなど
誰かがこの問題を手伝ってくれませんか。私は問題に圧倒されています..
説明を理解できない場合は、このリンクにアクセスしてください