Распознать идентификаторы в китайских иероглифах с помощью Lex / Yacc - PullRequest
2 голосов
/ 28 июня 2010

Как я могу использовать Lex / Yacc для распознавания идентификаторов в китайских иероглифах?

Ответы [ 2 ]

2 голосов
/ 08 июля 2010

Я думаю, вы имеете в виду Лекса (генератор лексеров). Yacc - генератор синтаксических анализаторов.

Согласно Каков полный диапазон китайских символов в Unicode? , большинство символов CJH попадают в диапазон 3400-9FFF.

Согласно http://dinosaur.compilertools.net/lex/index.html

Произвольный персонаж. Чтобы соответствовать почти любой символ, символ оператора , это класс всех персонажей кроме новой строки. Экранирование в восьмеричное возможно, хотя и непереносимо:

                             [\40-\176]

соответствует всем печатным символам в набор символов ASCII от восьмеричного 40 (пусто) в восьмеричное 176 (тильда).

Так что я бы предположил, что вам нужно что-то вроде [\32000-\117777].

0 голосов
/ 20 июня 2016

Yacc не заботится о китайских символах, но lex заботится: он отвечает за анализ входных байтов (и символов) для распознавания токенов.Тем не менее, китайские иероглифы, как правило, многобайтовые.Есть программы , такие как lex, которые могут это поддерживать, но они не lex.Это обсуждалось несколько раз.

Дальнейшее чтение:

Стандартный лексический токенизатор, lex (или flex), не принимает многобайтовые символы и, таким образом, является непрактичным для многих современных языков.В этом документе описывается сопоставление регулярных выражений, описывающих многобайтовые символы UTF-8, и регулярных выражений, состоящих из отдельных байтов.

...