我正在使用identifier
FParsec 的解析器来解析变量和函数的名称,它们通常是 Unicode 和 ASCII 字符的混合。但有时我在开头(如\u03C0
)或标识符(如swipe_board\u003A_b
)中转义了 Unicode 字符。我仍然可以使用isAsciiIdStart
和isAsciiIdContinue
选项使它们可解析,但我无法在规范化之前定义自己的自定义函数进行预处理。这里有什么解决方案?
问问题
205 次
1 回答
4
解析器在identifier
内部首先解析一个字符串,然后将其传递给一个IdentifierValidator
实例进行验证。由于 C#IdentifierValidator
类是可公开访问的(尽管没有记录),因此您可以轻松地使identifier
解析器适应您的需求(通过使初始字符串解析步骤也识别转义)。
由于支持 UTF-16 代理对、规范化和 .NET 本身不支持的 Unicode XID 字符类别,标识符解析有点复杂。也许您只需要支持根据支持的字符类别指定的 ASCII 或 UCS-2 标识符,在这种情况下,您可以使用orCharUnicodeInfo.GetUnicodeCategory
一步实现解析和验证。many1Satisfy2
many1Chars2
于 2012-02-10T15:28:01.623 回答