ANTLR sur un flux de données bruitées Partie 2
-
29-09-2019 - |
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
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:
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.
La solution
Eh bien, il semble que l'ajout de ce ANY2 :'A'..'Z'+ {skip();};
résout mon problème!