ANTLR грамматика: понять символ CP1252 евро

Моя грамматика проста, но я хочу, чтобы она принимала несколько строк для объединения. Эта формула должна быть действительной:

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

Большое спасибо за время, проведенное со мной.
Искренне
Николя.

0

Решение

Если ваш парсер использует ввод CP1252, как вы ожидаете, что он будет работать с токенами, определенными в терминах кодовых точек Unicode?

Если вход CP1252, вам нужно использовать кодовые точки этого набора символов. использование \u0080 за евро войдите в CP1252.

1

Другие решения

Других решений пока нет …