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:
Output:
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:
kennt sich damit jemand aus? Ich freue mich auf eure Antworten!
LG Shadowmind
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!
LG Shadowmind
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 587796
Url: https://administrator.de/contentid/587796
Ausgedruckt am: 22.11.2024 um 18:11 Uhr