Я разбираю PHP-код, используя antlr Grammar и antlr Ruby Target. Один из исходных файлов, который мне нужно разобрать, на самом деле содержит перевод, некоторые из них активно используют символы Unicode. Грамматика, кажется, зависит от одного символа из «дополнительной плоскости», а именно U +10430.
У меня была похожая проблема в прошлом из-за того, что цель Ruby antlr довольно старая и не совместима с юникодом (ну, в то время Ruby не был). Нам пришлось увеличить RubyTarget.java getMaxCharValue с 0xFF (ascii) до 0xFFFF (юникод), чтобы решить эту проблему. Сейчас кажется, что и этого набора недостаточно. Unicode утверждает, что символы за пределами этого диапазона могут быть представлены двумя символами UTF-16, но как antlr справляется с этим? Поможет ли повторное изменение getMaxCharValue (один раз это помогло, но я не сторонник подхода «попробовать»)?
Спасибо !