ANTLR auf einem verrauschten Datenstrom Teil 2
-
29-09-2019 - |
Frage
Nach einer sehr interesing Diskussion mit Bart Kiers auf Parsen einen lauten Datenstrom mit ANTLR , ich bin Ende mit einem anderen Problem ...
Das Ziel ist immer noch das gleiche: nur nützliche Informationen mit der folgenden Grammatik zu extrahieren,
VERB : 'SLEEPING' | 'WALKING';
SUBJECT : 'CAT'|'DOG'|'BIRD';
INDIRECT_OBJECT : 'CAR'| 'SOFA';
ANY : . {skip();};
parse
: sentenceParts+ EOF
;
sentenceParts
: SUBJECT VERB INDIRECT_OBJECT
;
ein Satz wie it's 10PM and the Lazy CAT is currently SLEEPING heavily on the SOFA in front of the TV.
die folgenden
Das ist perfekt und es tut genau das, was ich will .. von einem großen Satz, bin Extrahieren mir die Worte nur, die ein Gefühl für mich hatte .... Aber das, gründete ich die folgende Fehlermeldung. Wenn irgendwo im Text ich ein Wort bin einzuführen, die genau wie ein Token beginnen, ich bin ende mit einem MismathedTokenException
oder einem noViableException
it's 10PM and the Lazy CAT is currently SLEEPING heavily, with a DOGGY bag, on the SOFA in front of the TV.
erzeugen einen Fehler:
DOGGY
als Anfang für DOG
interpretiert wird, der auch ein Teil der TOKEN SUBJECT
ist und die Lexer verloren ... Wie ich das ohne definieren DOGGY
als besonderes Zeichen vermeiden könnte ... Ich habe wie der Parser verstehen DOGGY
als ein Wort in sich selbst.
Lösung
Nun, es scheint, dass diese ANY2 :'A'..'Z'+ {skip();};
Zugabe löst mein Problem!