Ist es möglich zu verstehen, wann funktionieren semantische Prädikate und wann nicht?Java

Java-Forum
Anonymous
 Ist es möglich zu verstehen, wann funktionieren semantische Prädikate und wann nicht?

Post by Anonymous »

unten sind zwei Grammatiken. < /p>
In dieser Grammatik machen semantische Prädikate "Arbeit". D.h. Wenn sie falsch sind, stimmen Regeln nicht überein und wenn sie wahr sind, stimmen die Regeln überein: < /p>
expr
: term
| expr asterisk expr (asterisk expr)*
| expr plus expr (plus expr)*
;

plus: {_input.LT(1).getText().equals("+")}? SPECID;
asterisk: {_input.LT(1).getText().equals("*")}? SPECID;

term
: ALNUMID
| STRID
| LPAREN expr RPAREN
;
< /code>
Und in dieser Grammatik funktionieren semantische Prädikate nicht. D.h. Wenn sie falsch sind, werden die Regeln immer noch mit dem BU -Fehler übereinstimmen. < /p>
expr
: add
| mult
| term
;

mult
: term (asterisk) term ((asterisk) term)*
;

add
: (term|mult) plus (term|mult) (plus (term|mult))*
;

plus: {_input.LT(1).getText().equals("+")}? SPECID;
asterisk: {_input.LT(1).getText().equals("*")}? SPECID;

term
: ALNUMID
| STRID
| LPAREN expr RPAREN
;
< /code>
In beiden Fällen versuche ich einfache Tests durchzuführen, um 2 + 2 und 2 * 2 zu analysieren. Definitionsarbeit oder nicht? Was ist die Logik hier?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post