title: How to make identifier parser stop on operators of OperationPrecedenceParser in FParsec?
body: <p>I am implementing a parser for identifier names that would consume unicode symbols. The problem I am facing is what I have some operators that are also written with unicode symbols and these might be placed directly after the identifier, for example:</p>
  
  <pre><code>time→sleep(7);
  </code></pre>
  
  <p>Here the arrow sign is an infix operator, which I add to my operator precedence parser:</p>
  
  <pre><code>opp.AddOperator(InfixOperator("→", ws, 10, Associativity.Right, 
        fun left right -&gt; BinaryOperation(Arrow, left, right)))
  </code></pre>
  
  <p>It would be nice if I could just exclude all sign combinations added as operators to the OPP automatically. At the moment I do it manually using the following implementation for my identifier:</p>
  
  <pre><code>let variable =
      let isAsciiIdContinue = isNoneOf "→*/+-&lt;&gt;=≠≤≥' ,();"
  
      identifier (IdentifierOptions(
                      isAsciiIdContinue = isAsciiIdContinue,
                      normalization = System.Text.NormalizationForm.FormKC,
                      allowAllNonAsciiCharsInPreCheck = true))
  </code></pre>
  
  <p>However, this doesn't seem to work. I get the following error message trying to parse my code:</p>
  
  <pre><code>  time→sleep(7);
        ^
  The identifier contains an invalid character at the indicated position.
  </code></pre>
  
  <p>How can I make my <code>variable</code> parser stop on infix operators? </p>