Errata zu "Übersetzergenerierung mit lex und yacc" im WiSe 2007/08 ================================================================== 3. Der Textstrom-Editor sed, 12.10.2007 --------------------------------------- - S. 12: Bei den sed-Optionen "-e", "-f" und "-n" ist bei der Konvertierung nach Pdf das "-" verlorengegangen. Das gleiche noch einmal in der letzten Zeile der Folie für "-n". - S. 24: Das gleiche Problem noch einmal in den letzten beiden Zeilen. Es muss dort in der vorletzten Zeile heißen: "von-bis" In der letzten Zeile gehört zwischen die beiden Anführungsstriche kein Leerraum, sondern ebenfalls ein "-". 4.2 lex: Fortgeschrittenes, 26.12.2007 -------------------------------------- - S. 19, Datei cmdline.l: Die Muster zur Erkennung der Kommandozeilenschalter sollten nicht nur den Anfang mittels "^" erkennen, sondern auch das Ende mittels "$". So wie das Programm jetzt ist, funktioniert es zwar, aber der Grund ist nicht so leicht zu sehen: Die Regel ".*" passt auf alle Verlängerungen der gültigen Schalter, und sie hat Vorrang wegen ihrer größeren Länge. - S. 21, S. 23: Das gleiche gilt natürlich auch für die Dateien cmdline2.l und cmdline-wrap.l. - S. 34: Für Stacks von Scanner-Zuständen sollte zusätzlich noch erwähnt werden, dass man auf den aktuellen Scanner-Zustand über das Makro YY_START zugreifen kann. 5.5.4 Aufsteigende Analyse (2), Konflikte, 17.12.2007 ----------------------------------------------------- - S. 12, zusätzliche Erklärung: In der Datei if-then-else.output kommt an Stelle eines Vorschauzeichens "$default" vor. Dies bedeutet einfach, dass diese Aktion für jedes beliebige Vorschauzeichen ausgeführt wird. Bei der Tabellenkonstruktion wurde dies erkannt. Der Parser verkleinert so einfach seine Tabelle. - S. 22, Datei opt-keyword.l: Es fehlt auf der Folie die Regel für die Erkennung von ")". Sie ist analog zu der Regel für die Erkennung von "(". In der herunterladbaren Datei ist es bereits korrigiert. - S. 42, zusätzliche Erklärung: Die Abkürzung "LALR" steht für "lookahead-LR". 5.5.4 Aufsteigende Analyse (2), Konflikte, 7.1.2008 --------------------------------------------------- - S. 44/45, zusätzliche Erklärung: Die kontextabhängige Präzedenz ist nötig, weil ohne die höhere Präzedenzstufe des unären Minus' z.B. folgender Ausdruck nicht ganz richtig interpretiert würde: "-a*b". Er würde als "-(a*b)" geparst werden, nicht als "(-a)*b". Bei der üblichen Semantik würde das allerdings kaum auffallen. Deutlicher wird das Problem bei den Operatoren in der Sprache C für Adresse-von und für bitweise logische Konjunktion, beide "&": "&i + 42 & 0xff" ist "((&i) + 42) & 0xff", nicht "(&(i + 42)) & 0xff". Letztes wäre nicht einmal typkorrekt. Wiederholung, 4.2.2008 ---------------------- - S. 15: Bei den sed-Optionen "-e", "-f" und "-n" ist bei der Konvertierung nach Pdf das "-" verlorengegangen. Das gleiche noch einmal in der letzten Zeile der Folie für "-n".