【问题标题】:Using preprocessing function with identifier parser in FParsec?在 FParsec 中使用带有标识符解析器的预处理函数?
【发布时间】:2012-02-10 14:37:13
【问题描述】:

我正在使用来自 FParsec 的 identifier 解析器来解析变量和函数的名称,它们通常是 Unicode 和 ASCII 字符的混合。但有时我会在开头(如\u03C0)或在标识符内(如swipe_board\u003A_b)转义Unicode字符。我仍然可以使用isAsciiIdStartisAsciiIdContinue 选项使它们可解析,但我无法在规范化之前定义自己的自定义函数进行预处理。这里有什么解决方案?

【问题讨论】:

    标签: parsing f# fparsec


    【解决方案1】:

    identifier 解析器在内部首先解析一个字符串,然后将其传递给一个 IdentifierValidator 实例进行验证。由于 C# IdentifierValidator 类是可公开访问的(尽管没有记录),您可以轻松地调整 identifier 解析器以满足您的需求(通过使初始字符串解析步骤也识别转义)。

    由于支持 UTF-16 代理对、规范化和 .NET 本身不支持的 Unicode XID 字符类别,标识符解析有点复杂。 也许您只需要支持CharUnicodeInfo.GetUnicodeCategory支持的字符类别指定的ASCII或UCS-2标识符,在这种情况下,您可以使用many1Satisfy2many1Chars2一步实现解析和验证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-18
      • 1970-01-01
      相关资源
      最近更新 更多