Question

Après une discussion très interesing avec Bart Kiers sur l'analyse d'un bruit avec ANTLR flux de données , je finir avec un autre problème ...

Le but est toujours le même: que l'extraction d'informations utiles à la grammaire suivante,

VERB            : 'SLEEPING' | 'WALKING';
SUBJECT         : 'CAT'|'DOG'|'BIRD'; 
INDIRECT_OBJECT : 'CAR'| 'SOFA';  
ANY             : . {skip();};

parse 
  :  sentenceParts+ EOF 
  ;

sentenceParts  
  :  SUBJECT VERB INDIRECT_OBJECT  
  ;    

une phrase comme it's 10PM and the Lazy CAT is currently SLEEPING heavily on the SOFA in front of the TV. produira les résultats suivants

text alt

est parfait et qu'il fait exactement ce que je veux .. d'une grande phrase, j'extraire seulement les mots qui ont un sens pour moi .... Mais, je fonde l'erreur suivante. Si quelque part dans le texte que je suis l'introduction d'un mot qui commence exactement comme un jeton, je finir avec un MismathedTokenException ou noViableException

    it's 10PM and the Lazy CAT is currently SLEEPING heavily, 
    with a DOGGY bag, on the SOFA in front of the TV.

produire une erreur:

text alt

DOGGY est interprété comme le début de DOG qui est aussi une partie de la SUBJECT et la TOKEN lexer est perdu ... Comment pourrais-je éviter cela sans définir DOGGY comme un jeton spécial ... J'aurais aimé que l'analyseur comprendre DOGGY comme un mot en soi.

Était-ce utile?

La solution

Eh bien, il semble que l'ajout de ce ANY2 :'A'..'Z'+ {skip();}; résout mon problème!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top