Моя грамматика проста, но я хочу, чтобы она принимала несколько строк для объединения. Эта формула должна быть действительной:
CONCATENATE(10;" €" )
Проблема в том, что символ евро. Я привык, но это в моей грамматике, это работало очень хорошо для символа степени:
fragment SPECIAL : '\u00B0';
Но символ евро работает не так, как этот символ степени:
fragment SPECIAL : '\u00B0' | '\u20AC'
Я генерирую синтаксический анализатор PHP с ANTLR 3.4, и сгенерированный код лексера является следующим для символа степени:
$this->getToken('176')== $LA26 || ...
И это должно быть объявление для символа евро. Если я добавлю его вручную после генерации парсера (есть 2 места для добавления), это работает!
$this->getToken('128')== $LA26 || ...
Мой вопрос: как добавить это в грамматику, чтобы получить это поколение кода? Есть ли проблема с этим диапазоном символов Unicode, начиная с чего-то, что меньше u00 … потому что все мои другие специальные символы начинаются с \ u00
Большое спасибо за время, проведенное со мной.
Искренне
Николя.
Если ваш парсер использует ввод CP1252, как вы ожидаете, что он будет работать с токенами, определенными в терминах кодовых точек Unicode?
Если вход CP1252, вам нужно использовать кодовые точки этого набора символов. использование \u0080
за евро войдите в CP1252.
Других решений пока нет …