5

identifierFParsecのパーサーを使用して、通常は Unicode と ASCII 文字が混在している変数と関数の名前を解析しています。\u03C0しかし、先頭 ( など) または識別子内( など)で Unicode 文字をエスケープすることがありswipe_board\u003A_bます。isAsciiIdStartオプションとオプションを使用して解析可能にするisAsciiIdContinueことはできますが、正規化前の前処理用に独自のカスタム関数を定義することはできません。ここで解決策は何ですか?

4

1 に答える 1

4

identifierパーサーは内部で最初に文字列を解析し、次にそれを検証のためにインスタンスに渡しますIdentifierValidator。C#IdentifierValidatorクラスは公開されているため (ドキュメント化されていません)、必要に応じてidentifierパーサーを簡単に調整できます (最初の文字列解析ステップでエスケープも認識させることにより)。

UTF-16 サロゲート ペア、正規化、および .NET でネイティブにサポートされていない Unicode XID 文字カテゴリがサポートされているため、識別子の解析は少し複雑です。CharUnicodeInfo.GetUnicodeCategoryでサポートされている文字カテゴリに関して指定された ASCIImany1Satisfy2またはUCS-2 識別子のみをサポートする必要があるかもしれませんmany1Chars2

于 2012-02-10T15:28:01.623 に答える