Как да контролирате превключването на Antlr
lexer режими от действията на анализатора? Разширих генерирания анализатор и лексер, така че да мога да извикам pushMode
и popMode
от анализатора, който на свой ред да извика подходящи pushMode
и popMode
на лексер, но без ефект. Има ли нещо, което мога да направя, за да активирам тази функционалност?
Превключване на режимите на Antlr lexer от парсер
comment
Подозирам, че по времето, когато правилата на анализатора са засегнати, лексерът вече е започнал да прави токени след точката, в която искате да се случи превключването... Възможно ли е да се определят точките на превключване с помощта на само лексерски правила? Ако не, може би има някакъв начин да пренавиете потока от токени на лексера и да изхвърлите токените, на които нямате доверие.
- person Darien   schedule 25.09.2013
Отговори (1)
Вашият лексер трябва да бъде написан така, че входът да може да бъде напълно токенизиран, преди анализаторът дори да бъде създаден. Въпреки че потокът от токени е лениво попълнен, ANTLR 4 не е гарантирано да анализира правилно входа, ако вашият лексер не отговаря на това изискване.
person
Sam Harwell
schedule
25.09.2013