PageRenderTime 103ms CodeModel.GetById 22ms app.highlight 68ms RepoModel.GetById 1ms app.codeStats 1ms

/fparsec/main/Doc/html/reference/operatorprecedenceparser.html

http://github.com/sandersn/fing
HTML | 782 lines | 754 code | 22 blank | 6 comment | 0 complexity | 459a17f202da8ddb7f480b72c2e6fbd7 MD5 | raw file

Large files files are truncated, but you can click here to view the full file

  1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2<html xmlns="http://www.w3.org/1999/xhtml">
  3<head>
  4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  5 <title>FParsec.OperatorPrecedenceParser</title>
  6 <link rel="stylesheet" type="text/css" media="all" href="../css/style.css" /> 
  7 <link rel="stylesheet" type="text/css" media="screen" href="../css/screen-sidebar.css" title="Sidebar" /> 
  8 <link rel="alternate stylesheet" type="text/css" media="screen" href="../css/screen-no-sidebar.css" title="No sidebar" /> 
  9 <!--[if IE]>
 10 <link rel="stylesheet" type="text/css" media="all" href="../css/style-ie.css" /> 
 11 <![endif]-->
 12 <!--[if IE 6]>
 13 <link rel="stylesheet" type="text/css" media="all" href="../css/style-ie6.css" /> 
 14 <![endif]-->
 15 <link rel="stylesheet" type="text/css" media="print" href="../css/print.css" />
 16</head>
 17<body>
 18 <div id="fixed-layer">
 19 <div id="fixed-wrapper">
 20 <div id="sidebar">
 21  <div id="breadcrumbs-dummy"><span class="breadcrumbs">&nbsp;</span></div>
 22  <div id="nav-tree">
 23   <table class="nav n1">
 24    <tbody class="nav-open n1">
 25     <tr class="nav-entry n1 _1">
 26      <td class="nav-number n1"></td>
 27      <td class="nav-title n1"><a href="../index.html">FParsec Documentation</a></td>
 28     </tr>
 29     <tr class="nav-sub-entries n1 _1">
 30      <td class="nav-sub-entries-number n1"></td>
 31      <td class="nav-sub-entries n1">
 32       <table class="nav n2">
 33        <tbody class="nav-before-open n2">
 34         <tr class="nav-entry n2 _1">
 35          <td class="nav-number n2"><a href="../tutorial.html"><span class="section-number">1</span><span class="nav-space"></span></a></td>
 36          <td class="nav-title n2"><a href="../tutorial.html">Tutorial</a></td>
 37         </tr>
 38        </tbody>
 39        <tbody class="nav-open n2">
 40         <tr class="nav-entry n2 _2">
 41          <td class="nav-number n2"><a href="index.html"><span class="section-number">2</span><span class="nav-space"></span></a></td>
 42          <td class="nav-title n2"><a href="index.html">Reference</a></td>
 43         </tr>
 44         <tr class="nav-sub-entries n2 _2">
 45          <td class="nav-sub-entries-number n2"></td>
 46          <td class="nav-sub-entries n2">
 47           <table class="nav n3">
 48            <tbody class="nav-before-open n3">
 49             <tr class="nav-entry n3 _1">
 50              <td class="nav-number n3"><a href="parser-overview.html"><span class="section-number">1</span><span class="nav-space"></span></a></td>
 51              <td class="nav-title n3"><a href="parser-overview.html">Parser overview</a></td>
 52             </tr>
 53             <tr class="nav-entry n3 _2">
 54              <td class="nav-number n3"><a href="primitives.html"><span class="section-number">2</span><span class="nav-space"></span></a></td>
 55              <td class="nav-title n3"><a href="primitives.html">FParsec.Primitives</a></td>
 56             </tr>
 57             <tr class="nav-entry n3 _3">
 58              <td class="nav-number n3"><a href="charparsers.html"><span class="section-number">3</span><span class="nav-space"></span></a></td>
 59              <td class="nav-title n3"><a href="charparsers.html">FParsec.CharParsers</a></td>
 60             </tr>
 61            </tbody>
 62            <tbody class="nav-open selected n3">
 63             <tr class="nav-entry selected n3 _4">
 64              <td class="nav-number selected n3"><a href="#"><span class="section-number">4</span><span class="nav-space"></span></a></td>
 65              <td class="nav-title selected n3"><a href="#">FParsec.OperatorPrecedenceParser</a></td>
 66             </tr>
 67             <tr class="nav-sub-entries selected n3 _4">
 68              <td class="nav-sub-entries-number selected n3"></td>
 69              <td class="nav-sub-entries selected n3">
 70               <table class="nav n4">
 71                <tbody class="nav-before-open n4">
 72                 <tr class="nav-entry n4 _1">
 73                  <td class="nav-number n4"><a href="#interface"><span class="section-number">1</span><span class="nav-space"></span></a></td>
 74                  <td class="nav-title n4"><a href="#interface">Interface</a></td>
 75                 </tr>
 76                 <tr class="nav-entry n4 _2">
 77                  <td class="nav-number n4"><a href="#members"><span class="section-number">2</span><span class="nav-space"></span></a></td>
 78                  <td class="nav-title n4"><a href="#members">Members</a></td>
 79                 </tr>
 80                </tbody>
 81               </table>
 82              </td>
 83             </tr>
 84            </tbody>
 85            <tbody class="nav-after-open n3">
 86             <tr class="nav-entry n3 _5">
 87              <td class="nav-number n3"><a href="error.html"><span class="section-number">5</span><span class="nav-space"></span></a></td>
 88              <td class="nav-title n3"><a href="error.html">FParsec.Error</a></td>
 89             </tr>
 90             <tr class="nav-entry n3 _6">
 91              <td class="nav-number n3"><a href="state.html"><span class="section-number">6</span><span class="nav-space"></span></a></td>
 92              <td class="nav-title n3"><a href="state.html">FParsec.State</a></td>
 93             </tr>
 94             <tr class="nav-entry n3 _7">
 95              <td class="nav-number n3"><a href="position.html"><span class="section-number">7</span><span class="nav-space"></span></a></td>
 96              <td class="nav-title n3"><a href="position.html">FParsec.Position</a></td>
 97             </tr>
 98             <tr class="nav-entry n3 _8">
 99              <td class="nav-number n3"><a href="charstream.html"><span class="section-number">8</span><span class="nav-space"></span></a></td>
100              <td class="nav-title n3"><a href="charstream.html">FParsec.CharStream</a></td>
101             </tr>
102            </tbody>
103           </table>
104          </td>
105         </tr>
106        </tbody>
107       </table>
108      </td>
109     </tr>
110    </tbody>
111   </table>
112  </div>
113 </div>
114 </div>
115 </div>
116 <div id="wrapper">   
117 <div id="main">
118 <div id="main-content"> 
119 <div id="breadcrumbs">
120  <span class="breadcrumbs">
121   <span id="breadcrumbs-parents"><a href="../index.html">FParsec Documentation</a><span class="breadcrumbs-sep"> > </span><a href="index.html">Reference</a></span><span class="breadcrumbs-sep"> > </span>FParsec.OperatorPrecedenceParser
122  </span>
123 </div>  
124 <div class="section s2">
125  <h1 class="title h2"><span class="section-number">2.4</span> FParsec.OperatorPrecedenceParser</h1>
126  <div class="intro i2">
127   <p class="para _1">
128    This module defines the <code class="fsharp"><a href="#members.OperatorPrecedenceParser"><span
129    class="ci">OperatorPrecedenceParser</span></a></code> class.
130   </p>
131  </div>
132  <div id="interface" class="section s3">
133   <h2 class="title h3"><span class="section-number">2.4.1</span> Interface</h2>
134   <div class="intro i3">
135    <div class="para _1">
136<pre class="code fsharp"><span class="ck">module</span> <span class="ci">FParsec</span><span class="cm">.</span><span class="ci">OperatorPrecedenceParser</span>
137
138<span class="ck">open</span> <a href="primitives.html"><span class="ci">FParsec</span><span class="cm">.</span><span class="ci">Primitives</span></a>
139
140<span class="ck">type</span> <a id="interface.Assoc:B:" href="#members.Assoc"><span class="interface-member-marker"><span class="ci">Assoc</span></span></a> <span class="cp">=</span> <span class="ci">None</span>    <span class="cp">=</span> <span class="cn">0</span>
141           <span class="cp">|</span> <span class="ci">Left</span>    <span class="cp">=</span> <span class="cn">1</span>
142           <span class="cp">|</span> <span class="ci">Right</span>   <span class="cp">=</span> <span class="cn">2</span>
143
144<span class="cp">[&lt;</span><span class="ci">ReferenceEquality</span><span class="cp">&gt;]</span>
145<span class="ck">type</span> <a id="interface.PrecedenceParserOp:B:" href="#members.PrecedenceParserOp"><span class="interface-member-marker"><span class="ci">PrecedenceParserOp</span></span></a><span class="cp">&lt;</span><span class="ctv">'a</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cp">=</span>
146   <span class="clc"><span class="left-delimiter">//</span> Op(opString, whitespaceParser, precedence, associativity, f)</span>
147   <span class="cp">|</span> <a id="interface.PrefixOp:B:" href="#members.PrefixOp"><span class="interface-member-marker"><span class="ci">PrefixOp</span></span></a>  <span class="ck">of</span> <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cp">*</span> <span class="ci">int</span> <span class="cp">*</span> <span class="ci">bool</span>  <span class="cp">*</span> <span class="cp">(</span><span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span><span class="cp">)</span>
148   <span class="cp">|</span> <a id="interface.PostfixOp:B:" href="#members.PostfixOp"><span class="interface-member-marker"><span class="ci">PostfixOp</span></span></a> <span class="ck">of</span> <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cp">*</span> <span class="ci">int</span> <span class="cp">*</span> <span class="ci">bool</span>  <span class="cp">*</span> <span class="cp">(</span><span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span><span class="cp">)</span>
149   <span class="cp">|</span> <a id="interface.InfixOp:B:" href="#members.InfixOp"><span class="interface-member-marker"><span class="ci">InfixOp</span></span></a>   <span class="ck">of</span> <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cp">*</span> <span class="ci">int</span> <span class="cp">*</span> <a href="#members.Assoc"><span class="ci">Assoc</span></a> <span class="cp">*</span> <span class="cp">(</span><span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span><span class="cp">)</span>
150   <span class="cp">|</span> <a id="interface.TernaryOp:B:" href="#members.TernaryOp"><span class="interface-member-marker"><span class="ci">TernaryOp</span></span></a> <span class="ck">of</span>   <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cp">*</span> <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span>
151                  <span class="cp">*</span> <span class="ci">int</span> <span class="cp">*</span> <a href="#members.Assoc"><span class="ci">Assoc</span></a> <span class="cp">*</span> <span class="cp">(</span><span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span><span class="cp">)</span>
152
153   <span class="cp">|</span> <a id="interface.PrefixOp:39::B:" href="#members.PrefixOp:39:"><span class="interface-member-marker"><span class="ci">PrefixOp'</span></span></a>  <span class="ck">of</span>   <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span>
154                   <span class="cp">*</span> <span class="ci">int</span> <span class="cp">*</span> <span class="ci">bool</span>  <span class="cp">*</span> <span class="cp">(</span><a href="state.html"><span class="ci">State</span></a><span class="cp">&lt;</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span><span class="cp">)</span>
155   <span class="cp">|</span> <a id="interface.PostfixOp:39::B:" href="#members.PostfixOp:39:"><span class="interface-member-marker"><span class="ci">PostfixOp'</span></span></a> <span class="ck">of</span>   <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span>
156                   <span class="cp">*</span> <span class="ci">int</span> <span class="cp">*</span> <span class="ci">bool</span>  <span class="cp">*</span> <span class="cp">(</span><a href="state.html"><span class="ci">State</span></a><span class="cp">&lt;</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span><span class="cp">)</span>
157   <span class="cp">|</span> <a id="interface.InfixOp:39::B:" href="#members.InfixOp:39:"><span class="interface-member-marker"><span class="ci">InfixOp'</span></span></a>   <span class="ck">of</span>   <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span>
158                   <span class="cp">*</span> <span class="ci">int</span> <span class="cp">*</span> <a href="#members.Assoc"><span class="ci">Assoc</span></a> <span class="cp">*</span> <span class="cp">(</span><a href="state.html"><span class="ci">State</span></a><span class="cp">&lt;</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span><span class="cp">)</span>
159   <span class="cp">|</span> <a id="interface.TernaryOp:39::B:" href="#members.TernaryOp:39:"><span class="interface-member-marker"><span class="ci">TernaryOp'</span></span></a> <span class="ck">of</span>   <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cp">*</span> <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span>
160                   <span class="cp">*</span> <span class="ci">int</span> <span class="cp">*</span> <a href="#members.Assoc"><span class="ci">Assoc</span></a>
161                   <span class="cp">*</span> <span class="cp">(</span><a href="state.html"><span class="ci">State</span></a><span class="cp">&lt;</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cr">-&gt;</span> <a href="state.html"><span class="ci">State</span></a><span class="cp">&lt;</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span><span class="cp">)</span>
162   <span class="ck">with</span>
163       <span class="ck">override</span> <span class="ci">ToString</span><span class="cp">:</span> <span class="ci">unit</span> <span class="cr">-&gt;</span> <span class="ci">string</span>
164
165<span class="ck">type</span> <a id="interface.OperatorPrecedenceParser:B:" href="#members.OperatorPrecedenceParser"><span class="interface-member-marker"><span class="ci">OperatorPrecedenceParser</span></span></a><span class="cp">&lt;</span><span class="ctv">'a</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="co">=</span>
166    <a id="interface.new:B:" href="#members.new"><span class="interface-member-marker"><span class="ck">new</span></span></a><span class="cp">:</span> <span class="cp">?</span><span class="ci">ops</span><span class="cp">:</span><span class="ci">seq</span><span class="cp">&lt;</span><a href="#members.PrecedenceParserOp"><span class="ci">PrecedenceParserOp</span></a><span class="cp">&lt;</span><span class="ctv">'a</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span><span class="cp">&gt;</span> <span class="cr">-&gt;</span> <span class="ci">OperatorPrecedenceParser</span><span class="cp">&lt;</span><span class="ctv">'a</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span>
167
168    <span class="ck">member</span> <a id="interface.ExpressionParser:B:" href="#members.ExpressionParser"><span class="interface-member-marker"><span class="ci">ExpressionParser</span></span></a><span class="cp">:</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ctv">'a</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span>
169    <span class="ck">member</span> <a id="interface.TermParser:B:" href="#members.TermParser"><span class="interface-member-marker"><span class="ci">TermParser</span></span></a><span class="cp">:</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ctv">'a</span><span class="cp">,</span> <span class="ctv">'u</span><span class="cp">&gt;</span> <span class="ck">with</span> <span class="ci">get</span><span class="cp">,</span> <span class="ci">set</span>
170
171    <span class="ck">member</span> <a id="interface.OperatorConflictHandler:B:" href="#members.OperatorConflictHandler"><span class="interface-member-marker"><span class="ci">OperatorConflictHandler</span></span></a><span class="cp">:</span> <span class="cp">(</span>   <a href="state.html"><span class="ci">State</span></a><span class="cp">&lt;</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cr">-&gt;</span> <a href="#members.PrecedenceParserOp"><span class="ci">PrecedenceParserOp</span></a><span class="cp">&lt;</span><span class="ctv">'a</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span>
172                                     <span class="cr">-&gt;</span> <a href="state.html"><span class="ci">State</span></a><span class="cp">&lt;</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cr">-&gt;</span> <a href="#members.PrecedenceParserOp"><span class="ci">PrecedenceParserOp</span></a><span class="cp">&lt;</span><span class="ctv">'a</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span>
173                                     <span class="cr">-&gt;</span> <span class="ci">string</span><span class="cp">)</span> <span class="ck">with</span> <span class="ci">get</span><span class="cp">,</span> <span class="ci">set</span>
174
175    <span class="ck">member</span> <a id="interface.AddOperator:B:" href="#members.AddOperator"><span class="interface-member-marker"><span class="ci">AddOperator</span></span></a><span class="cp">:</span>  <a href="#members.PrecedenceParserOp"><span class="ci">PrecedenceParserOp</span></a><span class="cp">&lt;</span><span class="ctv">'a</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cr">-&gt;</span> <span class="ci">unit</span>
176    <span class="ck">member</span> <a id="interface.AddOperators:B:" href="#members.AddOperators"><span class="interface-member-marker"><span class="ci">AddOperators</span></span></a><span class="cp">:</span> <span class="ci">seq</span><span class="cp">&lt;</span><a href="#members.PrecedenceParserOp"><span class="ci">PrecedenceParserOp</span></a><span class="cp">&lt;</span><span class="ctv">'a</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span><span class="cp">&gt;</span> <span class="cr">-&gt;</span> <span class="ci">unit</span>
177
178    <span class="ck">member</span> <a id="interface.RemoveOperator:B:" href="#members.RemoveOperator"><span class="interface-member-marker"><span class="ci">RemoveOperator</span></span></a><span class="cp">:</span>  <a href="#members.PrecedenceParserOp"><span class="ci">PrecedenceParserOp</span></a><span class="cp">&lt;</span><span class="ctv">'a</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cr">-&gt;</span> <span class="ci">bool</span>
179    <span class="ck">member</span> <a id="interface.RemoveInfixOp:B:" href="#members.RemoveInfixOp"><span class="interface-member-marker"><span class="ci">RemoveInfixOp</span></span></a><span class="cp">:</span>   <span class="ci">string</span> <span class="cr">-&gt;</span> <span class="ci">bool</span>
180    <span class="ck">member</span> <a id="interface.RemovePrefixOp:B:" href="#members.RemovePrefixOp"><span class="interface-member-marker"><span class="ci">RemovePrefixOp</span></span></a><span class="cp">:</span>  <span class="ci">string</span> <span class="cr">-&gt;</span> <span class="ci">bool</span>
181    <span class="ck">member</span> <a id="interface.RemovePostfixOp:B:" href="#members.RemovePostfixOp"><span class="interface-member-marker"><span class="ci">RemovePostfixOp</span></span></a><span class="cp">:</span> <span class="ci">string</span> <span class="cr">-&gt;</span> <span class="ci">bool</span>
182    <span class="ck">member</span> <a id="interface.RemoveTernaryOp:B:" href="#members.RemoveTernaryOp"><span class="interface-member-marker"><span class="ci">RemoveTernaryOp</span></span></a><span class="cp">:</span> <span class="ci">string</span> <span class="cp">*</span> <span class="ci">string</span> <span class="cr">-&gt;</span> <span class="ci">bool</span>
183
184    <span class="ck">member</span> <a id="interface.Operators:B:" href="#members.Operators"><span class="interface-member-marker"><span class="ci">Operators</span></span></a><span class="cp">:</span> <span class="ci">seq</span><span class="cp">&lt;</span><a href="#members.PrecedenceParserOp"><span class="ci">PrecedenceParserOp</span></a><span class="cp">&lt;</span><span class="ctv">'a</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span><span class="cp">&gt;</span>
185</pre>
186    </div>
187   </div>
188  </div>
189  <div id="members" class="section s3">
190   <h2 class="title h3"><span class="section-number">2.4.2</span> Members</h2>
191   <div class="intro i3">
192    <div class="para _1">
193     <div class="interface-members">
194      <div class="interface-member _1" id="members.Assoc">
195       <div class="interface-member-code">
196        <a class="interface-member-backlink" href="#interface.Assoc:B:"></a>
197<pre class="code fsharp"><span class="ck">type</span> <span class="interface-member-marker"><span class="ci">Assoc</span></span></pre>
198       </div>
199       <div class="interface-member-description">
200        <p class="para _1">Represents the associativity of infix operators.</p>
201        <div class="para _2">
202<pre class="code fsharp"><span class="ck">type</span> <span class="ci">Assoc</span>  <span class="cp">=</span> <span class="ci">None</span>  <span class="cp">=</span> <span class="cn">0</span>
203            <span class="cp">|</span> <span class="ci">Left</span>  <span class="cp">=</span> <span class="cn">1</span>
204            <span class="cp">|</span> <span class="ci">Right</span> <span class="cp">=</span> <span class="cn">2</span>
205</pre>
206        </div>
207       </div>
208      </div>
209      <div class="interface-member _2" id="members.PrecedenceParserOp">
210       <div class="interface-member-code">
211        <a class="interface-member-backlink" href="#interface.PrecedenceParserOp:B:"></a>
212<pre class="code fsharp"><span class="ck">type</span> <span class="interface-member-marker"><span class="ci">PrecedenceParserOp</span></span><span class="cp">&lt;</span><span class="ctv">'a</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span></pre>
213       </div>
214       <div class="interface-member-description">
215        <p class="para _1">
216         This union type represents an operator definition for an <code class="fsharp"><a href="#members.OperatorPrecedenceParser"><span
217         class="ci">OperatorPrecedenceParser</span></a></code> (OPP).
218        </p>
219        <div class="para _2">
220<pre class="code fsharp"><span class="cp">[&lt;</span><span class="ci">ReferenceEquality</span><span class="cp">&gt;]</span>
221<span class="ck">type</span> <span class="ci">PrecenceParserOp</span><span class="cp">&lt;</span><span class="ctv">'a</span><span class="cp">,</span> <span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cp">=</span>
222   <span class="clc"><span class="left-delimiter">//</span> Op(opString, whitespaceParser, precedence, associativity, f)</span>
223   <span class="cp">|</span> <a href="#members.PrefixOp"><span class="ci">PrefixOp</span></a>  <span class="ck">of</span> <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cp">*</span> <span class="ci">int</span> <span class="cp">*</span> <span class="ci">bool</span>  <span class="cp">*</span> <span class="cp">(</span><span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span><span class="cp">)</span>
224   <span class="cp">|</span> <a href="#members.PostfixOp"><span class="ci">PostfixOp</span></a> <span class="ck">of</span> <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cp">*</span> <span class="ci">int</span> <span class="cp">*</span> <span class="ci">bool</span>  <span class="cp">*</span> <span class="cp">(</span><span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span><span class="cp">)</span>
225   <span class="cp">|</span> <a href="#members.InfixOp"><span class="ci">InfixOp</span></a>   <span class="ck">of</span> <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cp">*</span> <span class="ci">int</span> <span class="cp">*</span> <a href="#members.Assoc"><span class="ci">Assoc</span></a> <span class="cp">*</span> <span class="cp">(</span><span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span><span class="cp">)</span>
226   <span class="cp">|</span> <a href="#members.TernaryOp"><span class="ci">TernaryOp</span></a> <span class="ck">of</span>   <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cp">*</span> <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span>
227                  <span class="cp">*</span> <span class="ci">int</span> <span class="cp">*</span> <a href="#members.Assoc"><span class="ci">Assoc</span></a> <span class="cp">*</span> <span class="cp">(</span><span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span><span class="cp">)</span>
228
229   <span class="cp">|</span> <a href="#members.PrefixOp:39:"><span class="ci">PrefixOp'</span></a>  <span class="ck">of</span>   <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cp">*</span> <span class="ci">int</span> <span class="cp">*</span> <span class="ci">bool</span>
230                   <span class="cp">*</span> <span class="cp">(</span><a href="state.html"><span class="ci">State</span></a><span class="cp">&lt;</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span><span class="cp">)</span>
231   <span class="cp">|</span> <a href="#members.PostfixOp:39:"><span class="ci">PostfixOp'</span></a> <span class="ck">of</span>   <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cp">*</span> <span class="ci">int</span> <span class="cp">*</span> <span class="ci">bool</span>
232                   <span class="cp">*</span> <span class="cp">(</span><a href="state.html"><span class="ci">State</span></a><span class="cp">&lt;</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span><span class="cp">)</span>
233   <span class="cp">|</span> <a href="#members.InfixOp:39:"><span class="ci">InfixOp'</span></a>   <span class="ck">of</span>   <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cp">*</span> <span class="ci">int</span> <span class="cp">*</span> <a href="#members.Assoc"><span class="ci">Assoc</span></a>
234                   <span class="cp">*</span> <span class="cp">(</span><a href="state.html"><span class="ci">State</span></a><span class="cp">&lt;</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span><span class="cp">)</span>
235   <span class="cp">|</span> <a href="#members.TernaryOp:39:"><span class="ci">TernaryOp'</span></a> <span class="ck">of</span>   <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cp">*</span> <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span>
236                   <span class="cp">*</span> <span class="ci">int</span> <span class="cp">*</span> <a href="#members.Assoc"><span class="ci">Assoc</span></a>
237                   <span class="cp">*</span> <span class="cp">(</span><a href="state.html"><span class="ci">State</span></a><span class="cp">&lt;</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cr">-&gt;</span> <a href="state.html"><span class="ci">State</span></a><span class="cp">&lt;</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span><span class="cp">)</span>
238   <span class="ck">with</span>
239      <span class="ck">override</span> <span class="ci">ToString</span><span class="cp">:</span> <span class="ci">unit</span> <span class="cr">-&gt;</span> <span class="ci">string</span>
240</pre>
241        </div>
242        <p class="para _3">
243         Four types of operators are supported: binary infix (e.g. &#x201C;1 + 1&#x201D;), unary prefix (e.g. &#x201C;‒1&#x201D;), unary postfix (e.g.
244         &#x201C;1++&#x201D;) and C‐style ternary operators (e.g. &#x201C;x &gt; 0 ? 1 : 2&#x201D;).
245        </p>
246        <p class="para _4">
247         Each operator is defined by an operator string, a trailing whitespace parser, a precedence level, an associativity value and a function that
248         is applied after the expression is parsed. Ternary operators require a string and associated whitespace parser for each of the two operator
249         parts.
250        </p>
251        <p class="para _5">
252         While infix operators can be left‐, right‐ and non‐associative (see the <code class="fsharp"><a href="#members.Assoc"><span
253         class="ci">Assoc</span></a></code> type), prefix and postfix operators can only be associative (<code class="fsharp"><span
254         class="cb">true</span></code>) or non‐associative (<code class="fsharp"><span class="cb">false</span></code>). See below for details on <a
255         href="#members.precedence-associativity">how precedence and associativity influence the operator precedence parser</a>.
256        </p>
257        <p class="para _6">
258         After an OPP instance parsed a sub‐expression it will call the function given as the last operator argument to map the term(s) belonging to
259         the operator to a new term. Often this function will be used to construct AST nodes or to directly transform terminal values.
260        </p>
261        <p class="para _7">
262         The only difference between the constructors with and without the trailing ' is the signature of their function arguments. The functions of
263         the '‐constructors are called with an additional parameter: the parser state as captured immediately before the operator string was parsed.
264         This is for example useful if you want to annotate your AST nodes with the position of the operators in the input.
265        </p>
266        <p class="para _8">
267         The string and the whitespace parser determine the textual representation of an operator. If the OPP encounters the operator string in the
268         input, it will apply the whitespace parser directly after the operator string. If the whitespace parser succeeds, the operator will be
269         accepted. If the whitespace parser fails after consuming input, the OPP will itself fail with this error. If the whitespace parser fails
270         without consuming input, the OPP will backtrack to before the operator string and will not try to parse any other operator at this location.
271         This behaviour can be exploited to conditionally accept an operator depending on the input following the operator string. For example, the
272         whitespace parser definition in <code class="fsharp"><a href="#members.PrefixOp"><span class="ci">PrefixOp</span></a><span
273         class="cp">(</span><span class="cs"><span class="left-delimiter">"</span>not<span class="right-delimiter">"</span></span><span
274         class="cp">,</span> <a href="primitives.html#members.notFollowedBy"><span class="ci">notFollowedBy</span></a> <a
275         href="charparsers.html#members.letter"><span class="ci">letter</span></a> <a href="primitives.html#members.:62::62::.:"><span
276         class="co">&gt;&gt;.</span></a> <a href="charparsers.html#members.spaces"><span class="ci">spaces</span></a><span class="cp">,</span> <span
277         class="cn">1</span><span class="cp">,</span> <span class="cb">true</span><span class="cp">,</span> <span class="ck">fun</span> <span
278         class="ci">x</span> <span class="cr">-&gt;</span> <span class="ci">not</span> <span class="ci">x</span><span class="cp">)</span></code> will
279         ensure that the <code class="fsharp"><span class="cs"><span class="left-delimiter">"</span>not<span
280         class="right-delimiter">"</span></span></code> in <code class="fsharp"><span class="cs"><span
281         class="left-delimiter">"</span>notAnOperator<span class="right-delimiter">"</span></span></code> can not be parsed as an operator.
282        </p>
283        <p class="para _9">
284         You can configure an OPP instance to support a prefix operator with the same string as the (first) string of an infix, postfix or ternary
285         operator. However, no two prefix operators and no two infix, postfix or ternary operators can have the same (first) string. The second string
286         of a ternary operator can not be used for any other operator at the same time.
287        </p>
288        <p class="para _0">
289         Note that the OPP will parse operators greedily. For example, if you define an operator with the string <code class="fsharp"><span
290         class="cs"><span class="left-delimiter">"</span>-<span class="right-delimiter">"</span></span></code> and one with the string <code
291         class="fsharp"><span class="cs"><span class="left-delimiter">"</span>--<span class="right-delimiter">"</span></span></code> then <code
292         class="fsharp"><span class="co">--</span></code> in the input will always be parsed as a <code class="fsharp"><span
293         class="co">--</span></code> operator never as two successive <code class="fsharp"><span class="co">-</span></code> operators, irrespective of
294         the types of the involved operators.
295        </p>
296        <div class="para _1">
297         <p>
298          <code class="fsharp"><span class="ci">PrecenceParserOp</span><span class="cp">&lt;</span><span class="ctv">'a</span><span
299          class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span></code> has the following union cases:
300         </p>
301         <div class="interface-members">
302          <div class="interface-member _1" id="members.PrefixOp">
303           <div class="interface-member-code">
304            <a class="interface-member-backlink" href="#interface.PrefixOp:B:"></a>
305<pre class="code fsharp"><span class="cp">|</span> <span class="interface-member-marker"><span class="ci">PrefixOp</span></span> <span class="ck">of</span> <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cp">*</span> <span class="ci">int</span> <span class="cp">*</span> <span class="ci">bool</span> <span class="cp">*</span> <span class="cp">(</span><span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span><span class="cp">)</span>
306</pre>
307           </div>
308           <div class="interface-member-description">
309            <p class="para _1">
310             <code class="fsharp"><span class="ci">PrefixOp</span><span class="cp">(</span><span class="ci">opStr</span><span
311             class="cp">,</span> <span class="ci">wsAfterOpParser</span><span class="cp">,</span> <span class="ci">prec</span><span
312             class="cp">,</span> <span class="ci">isAssoc</span><span class="cp">,</span> <span class="ci">f</span><span class="cp">)</span></code>
313             represents a prefix operator definition for an <code class="fsharp"><a href="#members.OperatorPrecedenceParser"><span
314             class="ci">OperatorPrecedenceParser</span></a></code>.
315            </p>
316           </div>
317          </div>
318          <div class="interface-member _2" id="members.PostfixOp">
319           <div class="interface-member-code">
320            <a class="interface-member-backlink" href="#interface.PostfixOp:B:"></a>
321<pre class="code fsharp"><span class="cp">|</span> <span class="interface-member-marker"><span class="ci">PostfixOp</span></span> <span class="ck">of</span> <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cp">*</span> <span class="ci">int</span> <span class="cp">*</span> <span class="ci">bool</span> <span class="cp">*</span> <span class="cp">(</span><span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span><span class="cp">)</span>
322</pre>
323           </div>
324           <div class="interface-member-description">
325            <p class="para _1">
326             <code class="fsharp"><span class="ci">PostfixOp</span><span class="cp">(</span><span class="ci">opStr</span><span
327             class="cp">,</span> <span class="ci">wsAfterOpParser</span><span class="cp">,</span> <span class="ci">prec</span><span
328             class="cp">,</span> <span class="ci">isAssoc</span><span class="cp">,</span> <span class="ci">f</span><span class="cp">)</span></code>
329             represents a postfix operator definition for an <code class="fsharp"><a href="#members.OperatorPrecedenceParser"><span
330             class="ci">OperatorPrecedenceParser</span></a></code>.
331            </p>
332           </div>
333          </div>
334          <div class="interface-member _3" id="members.InfixOp">
335           <div class="interface-member-code">
336            <a class="interface-member-backlink" href="#interface.InfixOp:B:"></a>
337<pre class="code fsharp"><span class="cp">|</span> <span class="interface-member-marker"><span class="ci">InfixOp</span></span> <span class="ck">of</span> <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cp">*</span> <span class="ci">int</span> <span class="cp">*</span> <a href="#members.Assoc"><span class="ci">Assoc</span></a> <span class="cp">*</span> <span class="cp">(</span><span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span><span class="cp">)</span>
338</pre>
339           </div>
340           <div class="interface-member-description">
341            <p class="para _1">
342             <code class="fsharp"><span class="ci">InfixOp</span><span class="cp">(</span><span class="ci">opStr</span><span class="cp">,</span> <span
343             class="ci">wsAfterOpParser</span><span class="cp">,</span> <span class="ci">prec</span><span class="cp">,</span> <span
344             class="ci">assoc</span><span class="cp">,</span> <span class="ci">f</span><span class="cp">)</span></code> represents an infix operator
345             definition for an <code class="fsharp"><a href="#members.OperatorPrecedenceParser"><span
346             class="ci">OperatorPrecedenceParser</span></a></code>.
347            </p>
348           </div>
349          </div>
350          <div class="interface-member _4" id="members.TernaryOp">
351           <div class="interface-member-code">
352            <a class="interface-member-backlink" href="#interface.TernaryOp:B:"></a>
353<pre class="code fsharp"><span class="cp">|</span> <span class="interface-member-marker"><span class="ci">TernaryOp</span></span> <span class="ck">of</span>   <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cp">*</span> <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span>
354               <span class="cp">*</span> <span class="ci">int</span> <span class="cp">*</span> <a href="#members.Assoc"><span class="ci">Assoc</span></a> <span class="cp">*</span> <span class="cp">(</span><span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span><span class="cp">)</span>
355</pre>
356           </div>
357           <div class="interface-member-description">
358            <p class="para _1">
359             <code class="fsharp"><span class="ci">TernaryOp</span><span class="cp">(</span><span class="ci">op1Str</span><span
360             class="cp">,</span> <span class="ci">wsAfterOp1Parser</span><span class="cp">,</span> <span class="ci">op2Str</span><span
361             class="cp">,</span> <span class="ci">wsAfterOp2Parser</span><span class="cp">,</span> <span class="ci">prec</span><span
362             class="cp">,</span> <span class="ci">assoc</span><span class="cp">,</span> <span class="ci">f</span><span class="cp">)</span></code>
363             represents a ternary operator definition for an <code class="fsharp"><a href="#members.OperatorPrecedenceParser"><span
364             class="ci">OperatorPrecedenceParser</span></a></code>.
365            </p>
366           </div>
367          </div>
368          <div class="interface-member _5" id="members.PrefixOp:39:">
369           <div class="interface-member-code">
370            <a class="interface-member-backlink" href="#interface.PrefixOp:39::B:"></a>
371<pre class="code fsharp"><span class="cp">|</span> <span class="interface-member-marker"><span class="ci">PrefixOp'</span></span> <span class="ck">of</span>   <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span>
372               <span class="cp">*</span> <span class="ci">int</span> <span class="cp">*</span> <span class="ci">bool</span>  <span class="cp">*</span> <span class="cp">(</span><a href="state.html"><span class="ci">State</span></a><span class="cp">&lt;</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span><span class="cp">)</span>
373</pre>
374           </div>
375           <div class="interface-member-description">
376            <p class="para _1">
377             <code class="fsharp"><span class="ci">PrefixOp'</span><span class="cp">(</span><span class="ci">opStr</span><span
378             class="cp">,</span> <span class="ci">wsAfterOpParser</span><span class="cp">,</span> <span class="ci">prec</span><span
379             class="cp">,</span> <span class="ci">isAssoc</span><span class="cp">,</span> <span class="ci">f</span><span class="cp">)</span></code>
380             represents a prefix operator definition for an <code class="fsharp"><a href="#members.OperatorPrecedenceParser"><span
381             class="ci">OperatorPrecedenceParser</span></a></code>. The state passed as an argument to the function is captured immediately before the
382             operator string is parsed and contains the position of the operator.
383            </p>
384           </div>
385          </div>
386          <div class="interface-member _6" id="members.PostfixOp:39:">
387           <div class="interface-member-code">
388            <a class="interface-member-backlink" href="#interface.PostfixOp:39::B:"></a>
389<pre class="code fsharp"><span class="cp">|</span> <span class="interface-member-marker"><span class="ci">PostfixOp'</span></span> <span class="ck">of</span>   <span class="ci">string</span> <span class="cp">*</span> <a href="primitives.html#members.Parser"><span class="ci">Parser</span></a><span class="cp">&lt;</span><span class="ci">unit</span><span class="cp">,</span><span class="ctv">'u</span><span class="cp">&gt;</span>
390                <span class="cp">*</span> <span class="ci">int</span> <span class="cp">*</span> <span class="ci">bool</span>  <span class="cp">*</span> <span class="cp">(</span><a href="state.html"><span class="ci">State</span></a><span class="cp">&lt;</span><span class="ctv">'u</span><span class="cp">&gt;</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span> <span class="cr">-&gt;</span> <span class="ctv">'a</span><span class="cp">)</span>
391</pre>
392           </div>
393           <div class="interface-member-description">
394            <p class="para _1">
395             <code class="fsharp"><span class="ci">PostfixOp'</span><span class="cp">(</span><span class="ci">opStr</span><span
396             class="cp">,</span> <span class="ci">wsAfterOpParser</span><span class="cp">,</span> <span class="ci">prec</span><span
397             class="cp">,</span> <span class="ci">isAssoc</span><span class="cp">,</span> <span class="ci">f</span><span class="cp">)</span></code>
398

Large files files are truncated, but you can click here to view the full file