私はユニコード記号を消費する識別子名用のパーサーを実装しています。ここでFParsecでOperationPrecedenceParserの演算子で識別子パーサーを停止する方法はありますか?
time→sleep(7);
矢印記号は、私が追加中置演算子です:私は、例えば、また、Unicodeの記号で書かれており、これらは、識別子の後に直接配置される可能性がありますいくつかの演算子を持っている私が直面しています問題があります私の演算子の優先順位パーサに:私はちょうど自動的OPPに演算子として追加されたすべての記号の組み合わせを除外することができれば
opp.AddOperator(InfixOperator("→", ws, 10, Associativity.Right,
fun left right -> BinaryOperation(Arrow, left, right)))
それはいいだろう。現時点では、私の識別子に以下の実装を手動で使用します:
let variable =
let isAsciiIdContinue = isNoneOf "→*/+-<>=≠≤≥' ,();"
identifier (IdentifierOptions(
isAsciiIdContinue = isAsciiIdContinue,
normalization = System.Text.NormalizationForm.FormKC,
allowAllNonAsciiCharsInPreCheck = true))
しかし、これはうまくいかないようです。私は私のコードを解析しようとすると、次のエラーメッセージが表示されます:
time→sleep(7);
^
The identifier contains an invalid character at the indicated position.
どのように私は中置演算子の私のvariable
パーサーの停止を行うことができますか?