Antlr en un flujo de datos ruidoso Parte 2
-
29-09-2019 - |
Pregunta
Después de una discusión muy interesing con Bart Kiers el análisis de un flujo de datos con ruido antlr , estoy terminando con otro problema ...
El objetivo sigue siendo el mismo: solamente la extracción de información útil con la siguiente gramática,
VERB : 'SLEEPING' | 'WALKING';
SUBJECT : 'CAT'|'DOG'|'BIRD';
INDIRECT_OBJECT : 'CAR'| 'SOFA';
ANY : . {skip();};
parse
: sentenceParts+ EOF
;
sentenceParts
: SUBJECT VERB INDIRECT_OBJECT
;
una frase como it's 10PM and the Lazy CAT is currently SLEEPING heavily on the SOFA in front of the TV.
producirá el siguiente
Esto es perfecto y que está haciendo exactamente lo que quiero .. de una gran frase, estoy extraer sólo las palabras que tenían un sentido para mí .... Pero el, I fundó el siguiente error. Si alguna parte del texto que estoy introduciendo una palabra que comienza exactamente igual que un token, que estoy terminando con una MismathedTokenException
o una noViableException
it's 10PM and the Lazy CAT is currently SLEEPING heavily, with a DOGGY bag, on the SOFA in front of the TV.
producir un error:
DOGGY
se interpreta como el comienzo de DOG
que es también una parte de la SUBJECT
token y el analizador léxico se pierde ... ¿Cómo podría evitar esto sin definir DOGGY
como una ficha especial ... Me hubiera gustado que el analizador DOGGY
entender como una palabra en sí misma.
Solución
Bueno, parece que la adición de este ANY2 :'A'..'Z'+ {skip();};
resuelve mi problema!