Frage

Es können zwei Produktionen, von denen wir die Reduktion tun. Nachdem er den Vorrang und Verbände nach Bedarf wird es ein Griff sein only.so ist diese Aussage wahr ??

War es hilfreich?

Lösung

Das ist teilweise wahr, ein verringern / verringern Konflikt ist in der Regel gelöst durch Vorrang angeben oder den Parser Builder lassen entscheiden, welche Regel vor dem anderen anzuwenden.

Das bedeutet, dass der Konflikt gelöst wird, aber nicht, dass der Parser genau wie beabsichtigt verhalten wird. Es ist bequem, zu untersuchen, was den Konflikt verursacht und denken, wenn ein Refactoring der Grammatik benötigt wird, um auszudrücken, was Sie zu analysieren, oder wenn die automatische Wahl / Vorrang genug versuchen ist.

Andere Tipps

Wenn Sie eine Grammatik haben, die nicht eindeutig Regeln hat, erhalten Sie mehrere Interpretationen. Sie müssen nicht darauf bestehen, dass die Grammatik entfernt Mehrdeutigkeit; Stimmen Sie können einfach, dass etwas zweideutig und analysieren es mehrere Möglichkeiten:

fruit flies like an arrow.

Das Ergebnis des Parse ist mehrere Interpretationen.

Nun, für eine solche Sprache sein nützlich zu einem Leser, entweder er hat mit der Mehrdeutigkeit, glücklich zu sein, oder Sie müssen ihm einen Weg geben, um es zu lösen. (Im Beispiel habe ich für Sie entschieden, dass Sie die Mehrdeutigkeit glücklich sind, weil ich nicht gegeben haben Sie einen Weg, um es zu lösen!). Oder kann man die Leser etwas mit mehrdeutiger parsess bieten, eine Möglichkeit, die Parse-Sinn zu wählen, und er verwirft die unpassenden Parsen.

Ich kann das durch die obigen Fall tun Sie sagen, dass ich „fruit => Wassermelone“ bedeuten.

Computer Grammatiken sind nicht anders, aber die meisten Programmierer wollen nicht mehrdeutigen Code. So in der Regel langauge Designer wie eindeutige Grammatiken zu definieren. In der Praxis es ihnen nicht gelingt und Sie lustige Sprachregeln erhalten wie: „Wenn diese zweideutig interpretiert werden könnte, dann interpretieren sie diese Art und Weise.“.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top