| Markus Mohnen | Disclaimer | Last modified: 2004-04-13 09:42 UTC |
|
MOVES: Software Modeling and Verification (Informatik 2) |
|||||||||||||||||||||||||||||
| Computer Science / RWTH / I2 / Staff / Current / Mohnen / DIPLOM / Srex | ||||||||||||||||||||||||||||||
|
|
DA: Analyse von shift/reduce Konflikten
Während der Entwicklung von Parsern mit Hilfe von LR-basierten Tools wie yacc oder bison [Her92,LMB90] entstehen oft shift/reduce Konflikte. Diese werden von den Tools in der Regel durch Bevorzugung der shift Aktion gelöst. Zum Beispiel hat die folgende yacc Spezifikation einen shift/reduce Konflikt für das Eingabesymbol + in der LALR(1)-Information für e'+'e: Selbst für einen Compilerbauer mit genauen Kenntnissen der LR-Strategie ist es schwer zu beurteilen, ob die vom Tool gewählte shift Aktion der Intention entspricht. Es ist dabei unbedingt nötig geeignete Beispiele zu finden, in denen 'shift' und 'reduce' zu unterschiedlichen Ableitungen und damit zu verschiedenen syntaktischen Strukturen führen. In dem Beispiel führt etwa die Eingabe X+X+X zu unterschiedlichen Ableitungen, die verschiedenen Assoziativitäten des Symbols + entsprechen:%% e : 'X' | e '+' e ;
|