2010-10-03 5 views
0

ANTLR me donne l'erreur suivante lorsque mon fichier d'entrée a soit pas de saut de ligne à l'EOF, ou plus d'un.ANTLR erreur quand pas assez, ou trop, newlines

line 0:-1 mismatched input '' expecting NEWLINE

Comment pourrais-je aller sur la prise en compte des possibilités d'avoir plusieurs ou aucun retour à la ligne à la fin du fichier d'entrée. De préférence, j'aimerais en rendre compte dans la grammaire.

Répondre

1

La règle:

parse 
    : (Token LineBreak)+ EOF 
    ; 

ne traite un flux de jetons, séparés par exactement une coupure de ligne, se terminant par exactement un saut de ligne.

Bien que la règle:

parse 
    : Token (LineBreak+ Token)* LineBreak* EOF 
    ; 

analyse un flux de valeurs séparées par un ou plusieurs sauts de ligne, se terminant par zéro, un ou plusieurs sauts de ligne.

Mais avez-vous vraiment besoin de rendre les sauts de ligne visibles dans l'analyseur? Ne pourriez-vous pas les mettre sur un "canal caché" à la place? Si cela ne répond pas à votre question, vous devrez poster votre grammaire (vous pouvez modifier votre question initiale pour cela).

HTH