Парсер identifier
сначала анализирует строку, а затем передает ее в экземпляр IdentifierValidator
для проверки. Поскольку класс C # IdentifierValidator
общедоступен (хотя и не документирован), вы можете легко адаптировать синтаксический анализатор identifier
к вашим потребностям (сделав так, чтобы начальный шаг синтаксического анализа строки также распознавал escape-коды).
Анализ идентификатора немного сложен из-за поддержки суррогатных пар UTF-16, нормализации и категории символов Unicode XID, которая изначально не поддерживается в .NET.
Возможно, вам нужно поддерживать только идентификаторы ASCII или UCS-2, указанные в терминах категорий символов, поддерживаемых CharUnicodeInfo.GetUnicodeCategory
, и в этом случае вы, вероятно, сможете реализовать синтаксический анализ и проверку всего за один шаг, используя many1Satisfy2
или many1Chars2
.