identifier
FParsecのパーサーを使用して、通常は Unicode と ASCII 文字が混在している変数と関数の名前を解析しています。\u03C0
しかし、先頭 ( など) または識別子内( など)で Unicode 文字をエスケープすることがありswipe_board\u003A_b
ます。isAsciiIdStart
オプションとオプションを使用して解析可能にするisAsciiIdContinue
ことはできますが、正規化前の前処理用に独自のカスタム関数を定義することはできません。ここで解決策は何ですか?
1 に答える
4
identifier
パーサーは内部で最初に文字列を解析し、次にそれを検証のためにインスタンスに渡しますIdentifierValidator
。C#IdentifierValidator
クラスは公開されているため (ドキュメント化されていません)、必要に応じてidentifier
パーサーを簡単に調整できます (最初の文字列解析ステップでエスケープも認識させることにより)。
UTF-16 サロゲート ペア、正規化、および .NET でネイティブにサポートされていない Unicode XID 文字カテゴリがサポートされているため、識別子の解析は少し複雑です。CharUnicodeInfo.GetUnicodeCategory
でサポートされている文字カテゴリに関して指定された ASCIImany1Satisfy2
またはUCS-2 識別子のみをサポートする必要があるかもしれませんmany1Chars2
。
于 2012-02-10T15:28:01.623 に答える