2016-09-19 1 views
3

comme je suis nouveau à antlr J'ai beaucoup de problèmes avec les prédicats syntaxiques. J'ai essayé de convertir cette grammaire, qui fait partie de la grammaire natty, afin de l'analyser avec antlr4, j'ai vraiment eu du mal à la modifier de manière significative.Natty convertir de anlr3 en antlr 4

date_time 
: (
     (date)=>date (date_time_separator explicit_time)? 
     | explicit_time (time_date_separator date)? 
    ) -> ^(DATE_TIME date? explicit_time?) 
    | relative_time -> ^(DATE_TIME relative_time?) 
    ;` 

Répondre

4

Les prédicats syntaxiques et les règles de réécriture ne sont plus pris en charge dans ANTLR4. L'algorithme d'analyse syntaxique de ANTLR4 doit être assez puissant pour ne pas avoir besoin prédicats syntaxique, et si vous voulez parcourir l'arborescence d'analyse syntaxique, jetez un oeil à ces liens:

Ainsi, le règle que vous avez posté ressemblerait à ceci dans ANTLR4:

date_time 
: date (date_time_separator explicit_time)? 
| explicit_time (time_date_separator date)? 
| relative_time 
;