Я пытаюсь написать синтаксический анализатор, который принимает выражения как входные данные из файла.Python parser for Calculator
выражения могут быть А = В = 10 или В = (С-А) -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 символов. Оператор с левой стороны всегда будет оператором присваивания '='. '=' always Предшествующий переменными [A-Z], операторы: {'+', '-', '/', '*', '_'}, цифры {0-9}.
Как я должен сначала извлечь первую переменную затем вставьте его в список питона, то оператор «=», то либо «(», толкать его в стек и так далее «AZ»
Может кто-нибудь помочь мне с этим проблема. Я завален проблема ..
Если какой-либо один не в состоянии понять описание пожалуйста goto this link
Вам нужно исправить там отпечаток. Смешивание вкладок и пробелов не работает для переполнения стека. –
Извините за форматирование, я новичок в stackoverflow, чтобы узнать, как правильно его использовать. –
Возможная отправная точка для вас: [Оценка математического выражения в строке] (http://stackoverflow.com/a/2371789/222914) –