File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -471,10 +471,31 @@ Eingabe `2+3*4` wird jetzt inkorrekt als als "(2+3)\*4" geparst:
471471![ ] ( images/screenshot_parsetree_incorrect.png )
472472
473473::: caution
474- ** Präzedenz entsteht in ANTLR4 nur durch die Reihenfolge der linkrekursiven
474+ ** Präzedenz entsteht in ANTLR4 nur durch die Reihenfolge der linksrekursiven
475475Alternativen in * derselben* Regel (ggf. mit ` <assoc=right> ` für
476476Rechtsassoziativität).**
477477:::
478+
479+ ::: note
480+ Bitte daran denken, dass die Reihenfolge der linksrekursiven Alternativen den
481+ Vorrang definiert.
482+
483+ Betrachten Sie die folgende Änderung der Grammatik von oben:
484+
485+ ``` antlr
486+ expr
487+ : expr '*' expr
488+ | expr '/' expr
489+ | expr '+' expr
490+ | expr '-' expr
491+ | INT
492+ ;
493+ ```
494+
495+ Das funktioniert, hier wird den Alternativen implizt ein Vorrang zugeordnet. Aber
496+ jetzt bekommt die Multiplikation Vorrang vor der Division, und auch die Addition
497+ bekommt Vorrang vor der Subtraktion. Ist das wirklich so gewollt?
498+ :::
478499::::
479500
480501# Kontext-Objekte für Parser-Regeln
You can’t perform that action at this time.
0 commit comments