2013-06-12 2 views
0

Я использую ANTLRWorks для проверки грамматики, с которой я столкнулся, и одно из правил предусматривает использование символа BULLET •, но когда дерево синтаксического разбора создается, он каждый раз убегает. Я также пробовал другие символы из расширенной таблицы ASCII, и они также опущены. Является ли это ошибкой, или я должен каким-то образом включить расширенные символы ASCII?ANTLR3 не соответствует расширенным символам ASCII

ответ

1

ANTLR 3.x через 4.0 может соответствовать любому коду UTF-16, за исключением U + FFFF. ANTLR 4.1 также сможет соответствовать U + FFFF. Чтобы соответствовать символам в диапазоне от U + 10000 до U + 10FFFF, вам необходимо явно закодировать их как суррогатные пары UTF-16 в вашей грамматике.

+0

Эй, пуля, он падает в диапазоне U + 10000 до U + 10FFFF? Это unicode - «\ u2022». Если да, то как он может быть преобразован в суррогатную пару UTF-16? Где я могу найти его? –

+0

@IhorM. Нет, этот символ попадает в диапазон символов, которые ANTLR может обрабатывать без каких-либо особых соображений. Просто используйте '' \ u2022'' в лексической части вашей грамматики. –

+0

Это именно то, что я сделал изначально. Я тестировал его в ANTLRWorks. В поле ввода я помещаю «x • y», а в дереве анализа я вижу NoViableAltException. –

Смежные вопросы