Autor Beitrag
Fiete
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 601
Erhaltene Danke: 339

W7
Delphi 6 pro
BeitragVerfasst: Do 14.10.21 17:42 
Moin,
in der theoretischen Informatik habe ich mich mit den formalen Sprachen beschäftigen
dürfen (Chomsky). Da ich vom Mathestudium zur Informatik gewechselt hatte,
war die Beschäftigung mit der Theorie der formalen Sprachen anschaulicher als die
Probleme und Beweisführungen in der Funktionalanalysis(Prof. Collatz).
Programm
Das Programm führt eine Syntaxanalyse arithmetischer Ausdrücke mittels
Operator - Prioritätsgrammatik durch, es ist ein Parser mit Operatorpriorität.
Def_Grammatik
Vor der Analyse ist noch ein Test vorgeschaltet, der die öffnenden und schließenden
Klammern zählt, falsche Bezeichner ermittelt und die Operatoren(+-*/) testet.
Liegt kein Fehler vor wird die Zerlegung durchgeführt.
Die beiden Stapel werden waagerecht angezeigt.

Beigefügt ist ein Script über Compilerbau, das in der Schule genutzt werden könnte.

Viel Spaß beim Studieren!
Gruß Fiete
Einloggen, um Attachments anzusehen!
_________________
Fietes Gesetz: use your brain (THINK)

Für diesen Beitrag haben gedankt: Andreas_500, Gausi, jasocul, Narses
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 15.10.21 09:45 
Hallo Fiete,

diesen Ansatz mittels einer Operatorprioritäten-Tabelle und einer Stapelverarbeitung kannte ich bisher noch nicht. Also ein Deterministischer endlicher Automat (DEA/DFA)?
Bei meinem Parser für mathematische Formeln (ursprünglich in C++ geschrieben und dann nach C# portiert) verwende ich einen Recursive Descent Parser mit beliebigen Operatoren und Prioritäten als Zahlenwerten (welche der Anwender frei definieren kann).

Du solltest aber deinen Code besser aufteilen bzgl. Logik und UI, anstatt alles in einer Form!
Fiete Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 601
Erhaltene Danke: 339

W7
Delphi 6 pro
BeitragVerfasst: Sa 16.10.21 14:35 
Moin Th69,
die Prioritätstabelle ergibt sich aus den Grammatikregeln.
Ja, es ist ein DEA.

Die Trennung von Logik und UI ist heutzutage sicher besser, nur ich bin mit ALGOL 60 und Pascal groß geworden.
Mit zunehmendem Alter werde ich unflexibler, mein Beharrungsvermögen nimmt zu.

Gruß Fiete

_________________
Fietes Gesetz: use your brain (THINK)
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Sa 16.10.21 15:12 
Nur dann, befürchte ich, kann kaum jemand etwas mit deinem Code anfangen.