Я создаю грамматику с использованием JavaCC и столкнулся с небольшой проблемой. Я пытаюсь разрешить любой допустимый символ в расширенном наборе ASCII, который будет распознан в результате компилятора. Посмотрев те же примеры JavaCC (прежде всего пример, показывающий сам JavaCC Grammer), я настроил следующий токен для распознавания моих символов:
< CHARACTER:
( (~["'"," ","\\","\n","\r"])
| ("\\"
( ["n","t","b","r","f","\\","'","\""]
| ["0"-"7"] ( ["0"-"7"] )?
| ["0"-"3"] ["0"-"7"] ["0"-"7"]
)
)
)
>
Если я правильно понимаю, это должно совпадать в восьмеричном представлении всех символов ASCII, от 0 до 377 (который охватывает все 256 символов в расширенном наборе ASCII). Это работает как ожидается для всех символов клавиатуры (a-z, 0-9,?,. / Etc) и даже для большинства специальных символов (©, ¬ ®).
Однако всякий раз, когда я пытаюсь разобрать символ «товарный знак» (™), мой анализатор постоянно выдает исключение «Конец файла», указывая на то, что он не может распознать символ. Есть ли какой-то очевидный способ улучшить определение символа, чтобы разрешить принятие символа торговой марки?