shadowminder
Goto Top

Hilfe beim Parser-bau in Python

Hallo zusammen!

Ich hab mich mal wieder ein bissl in Python verloren... :D

Zum "Problem": Ich baue mit Python gerade eine konsolenanwendung, die befehle vom user (ohne externe libraries) über das terminal verarbeiten sollte.

Das Python den Input definieren kann habe ich mit meinem Lexer schon geschafft.

Beispiel:

Userinput:
if 2 + 2 * 4 =      variable23 then print('Hello, World!')  

Output:
(['if', '2', '+', '2', '*', '4', '=', 'variable23', 'then', 'print', '(', "'", 'Hello', ',', 'World!', "'", ')'], ['if', 'Num', '+', 'Num', '*', 'Num', 'Res', 'Var', 'then', 'Func', '(', "'", 'Str', ',', 'Str', "'", ')'], ['1*s', '1*s', '1*s', '1*s', '1*s', '1*s', '6*s', '1*s', '1*s', '1*s'], , )  

Der Output ist bei meinem custom Lexer etwas größer, gibt aber mehr Infos. Die erster liste zeigt den Text in seiner 'ursprünglichen' Form an (ohne Leerzeichen und Tabs). Die zweite liste zeigt die Interpretation des geschriebenen an, also das was das Programm denkt was es sieht, was auch bei allen meinen Tests immer korrekt lag. die dritte liste zeigt an, an welcher stelle Tabs und Leerzeichen standen, um z.b. bei Strings den Abstand wieder einzutragen.

nun weiß ich aber nicht, wie ich das Beispiel mit meinen Informationen aus dem Lexer zu einem Parse-tree machen kann, also die reihenfolge, in der er den string abarbeiten soll:

2 * 4 > + 2 > = variable23 > if True > print('Hello, World')  

kennt sich damit jemand aus? Ich freue mich auf eure Antworten! face-smile

LG Shadowmind

Content-ID: 587796

Url: https://administrator.de/contentid/587796

Ausgedruckt am: 22.11.2024 um 18:11 Uhr