polnische Notation < Formale Sprachen < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 22:16 Mi 25.01.2012 | Autor: | dennis2 |
Aufgabe | Die so genannte polnische Notation bedeutet ja, daß man die Operationen vor die eigentlich Ausdrücke schreibt, also zum Beispiel anstatt
$4+2-8$ schreibt man dann $+(4,-(2,8))$
Auf einem unserer Übungsblätter heißt es nun:
"Der Einfachheit halber sind auch Zahlen mit führenden Nullen zugelassen."
Was meint man damit und wieso der Einfachheit halber?
Was ist zum Beispiel
$+(-3,04)$? |
Ich weiß darauf gerade selbst keine Antwort.
Danke für jede Mühe!
Dennis
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 22:29 Mi 25.01.2012 | Autor: | felixf |
Moin Dennis,
> Die so genannte polnische Notation bedeutet ja, daß man
> die Operationen vor die eigentlich Ausdrücke schreibt,
> also zum Beispiel anstatt
>
> [mm]4+2-8[/mm] schreibt man dann [mm]+(4,-(2,8))[/mm]
>
> Auf einem unserer Übungsblätter heißt es nun:
>
> "Der Einfachheit halber sind auch Zahlen mit führenden
> Nullen zugelassen."
>
>
> Was meint man damit und wieso der Einfachheit halber?
>
> Was ist zum Beispiel
>
> [mm]+(-3,04)[/mm]?
dasselbe wie $+(-3,4)$.
Einfacher wird dabei nur die Grammatik, also die formale Beschreibung der polnischen Notation.
LG Felix
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 22:37 Mi 25.01.2012 | Autor: | dennis2 |
Inwiefern wird das denn einfacher?
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 22:46 Mi 25.01.2012 | Autor: | dennis2 |
Also die Sache ist die folgende.
Die polnische Notation bildet ja eine Grammatik:
lexikalisch:
binop = '+' | '/' | '*'
minop = '-'
lb = '('
rb = ')'
komma = ','
nums = num {num}
num = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
Und hierauf aufbauend fünf Regeln:
TERM = BINTERM
| MINTERM
| nums
BINTERM = binop ARGS
MINTERM = minop MINREST
MINREST = ARGS
| nums
ARGS = lb TERM komma TERM rb
Und es soll nun eine Syntaxprüfung per Hand vorgenommen werden, dazu sollen zu den folgenden drei Ausdrücken Syntaxbäume erstellt werden:
(1) *(+(4,12),/(10,3))
(2) -(-(4,*(3,4)))
(3) /(+(-3,04),-01)
Zu (1) habe ich das bereits gemacht: siehe angehängte Datei.
Bei (2) kriege ich es nur bis zur vorletzten Klammer in die Grammatik. Der Rest bleibt irgendwie übrig, bzw. ich bekomme ihn mit der Grammatik nicht ausgedrückt. Kann das sein?
Dateianhänge: Anhang Nr. 1 (Typ: pdf) [nicht öffentlich]
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 22:57 Mi 25.01.2012 | Autor: | felixf |
Moin!
> Also die Sache ist die folgende.
>
> Die polnische Notation bildet ja eine Grammatik:
>
> lexikalisch:
>
> binop = '+' | '/' | '*'
> minop = '-'
> lb = '('
> rb = ')'
> komma = ','
> nums = num {num}
> num = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8'
> | '9'
Ohne die Vereinfachung muessten die letzten beiden Zeilen ersetzt werden durch:
1: |
| 2: | nums = '0' | numnz {num}
| 3: | numnz = '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
| 4: | num = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
|
Wie du sehen kannst, ist die obige Variante einfacher.
> Und hierauf aufbauend fünf Regeln:
> TERM = BINTERM
> | MINTERM
> | nums
> BINTERM = binop ARGS
> MINTERM = minop MINREST
> MINREST = ARGS
> | nums
> ARGS = lb TERM komma TERM rb
>
>
> Und es soll nun eine Syntaxprüfung per Hand vorgenommen
> werden, dazu sollen zu den folgenden drei Ausdrücken
> Syntaxbäume erstellt werden:
>
> (1) *(+(4,12),/(10,3))
>
> (2) -(-(4,*(3,4)))
>
> (3) /(+(-3,04),-01)
>
>
> Zu (1) habe ich das bereits gemacht: siehe angehängte
> Datei.
Der Baum sieht ok aus, wobei ich mir bei den zweistelligen Zahlen nciht ganz sicher bin, ob das zweite num nicht rechts neben das erste num gehoert. Das haengt davon ab wie ihr den Ausdruck { num } im Syntax-Baum interpretiert.
> Bei (2) kriege ich es nur bis zur vorletzten Klammer in die
> Grammatik. Der Rest bleibt irgendwie übrig, bzw. ich
> bekomme ihn mit der Grammatik nicht ausgedrückt. Kann das
> sein?
Ja, das ist kein gueltiger Ausdruck nach der oben beschriebenden Grammatik. Bei MINREST fehlt der Fall "lb TERM rb"; mit dem wuerde es hier funktionieren.
(3) dagegen sollte wieder problemlos gehen.
LG Felix
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 23:00 Mi 25.01.2012 | Autor: | dennis2 |
Also in der Vorlesung hießen die geschweiften Klammern immer sinn gemäß "Man kann so viele davon dranhängen wie man will (auch keins)".
Passt das mit dieser "Erklärung" so, wie ich es habe?
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 23:11 Mi 25.01.2012 | Autor: | felixf |
Moin!
> Also in der Vorlesung hießen die geschweiften Klammern
> immer sinn gemäß "Man kann so viele davon dranhängen wie
> man will (auch keins)".
>
> Passt das mit dieser "Erklärung" so, wie ich es habe?
Die Frage ist halt, wie das dranhaengen genau dargestellt werden soll im Baum. Also ob das zweite num gleichberechtigt oder als Kind vom ersten num dort steht. (Als Kind von der Ziffer selber ist es denke ich aber ganz sicher nicht richtig, also so wie du es dargestellt hast.) Was richtig ist kann ich dir nicht sagen, schau am besten mal ob ihr Beispiele von Baeumen hattet wo aehnliches vorkam.
LG Felix
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 23:08 Mi 25.01.2012 | Autor: | dennis2 |
Stimmt, es ist vielleicht wirklich besser, wenn ich bei den zweiziffrigen Zahlen das rechts nebeneinander schreibe, irgendwie schlüssiger.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 22:47 Mi 25.01.2012 | Autor: | felixf |
> Inwiefern wird das denn einfacher?
Weil man nicht zwischen 0 (Zahl mit genau einer Ziffer, und die ist 0) und anderen Zahlen (erste Ziffer ungleich 0, danach beliebig viele beliebige Ziffern) unterscheiden muss.
Als regulaerer Ausdruck ist es sowas wie "(0|[1-9][0-9]*)" versus "[0-9]+". Wie du sehen kannst, das zweite ist kuerzer und (auch wenn du nicht weisst was regulaere Ausdruecke sind solltest du das erkennen:) einfacher.
LG Felix
|
|
|
|
|
Status: |
(Frage) überfällig | Datum: | 12:29 Do 26.01.2012 | Autor: | dennis2 |
Ich habe versucht, den zweiten Ausdruck in einem Syntaxbaum darzustellen (s. Anhang):
Dabei soll das Rote das darstellen, was man an den Ausdruck anhängen könnte, damit er ein regulärer Ausdruck im Sinne der Grammatik würde (Ergebnis der Rechnung unverändert).
Fest steht jedenfalls: Ohne das Rote handelt es sich um keinen regulären Ausdruck der Grammatik!
(Korrekt?)
Dateianhänge: Anhang Nr. 1 (Typ: pdf) [nicht öffentlich]
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 13:37 Do 26.01.2012 | Autor: | dennis2 |
Und dann noch der dritte Syntaxbaum: s. Anhang.
Ist der in Ordnung?
Dateianhänge: Anhang Nr. 1 (Typ: pdf) [nicht öffentlich]
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 13:28 Sa 28.01.2012 | Autor: | felixf |
Moin!
> Und dann noch der dritte Syntaxbaum: s. Anhang.
>
> Ist der in Ordnung?
Das einzige, was nicht in Ordnung sein koennte, ist das Handling der Zahlen mit mehr als einer Ziffer. Aber wie vorher schon gesagt: ob das so stimmt oder nicht haengt davon ab wie ihr es bisher in der VL/Skript/Uebung gemacht habt.
LG Felix
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:20 Sa 28.01.2012 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:25 Sa 28.01.2012 | Autor: | felixf |
Moin!
> Ich habe versucht, den zweiten Ausdruck in einem Syntaxbaum
> darzustellen (s. Anhang):
>
> Dabei soll das Rote das darstellen, was man an den Ausdruck
> anhängen könnte, damit er ein regulärer Ausdruck im
> Sinne der Grammatik würde (Ergebnis der Rechnung
> unverändert).
>
>
> Fest steht jedenfalls: Ohne das Rote handelt es sich um
> keinen regulären Ausdruck der Grammatik!
Sieht richtig aus.
LG Felix
|
|
|
|