title: FParsec Parsing list with optional content, fails on continuing with next parser
body: <p>I'm trying to parse a list of asset types where each asset type potentially has a name. After the list is done I'd like to continue parsing a list of attributes for the asset types, one list for all asset types.</p>
  
  <p>The string I'm trying to parse looks like:
  <code>converter named a023, signaltower, powerunit named 23 attributes power, temperature</code>
   The parser signature looks like 
  <code>Parser&lt;((Asset * AssetName option) list * Attribute liste),unit&gt;</code>
  I got parsing the assets name, and the attributes separately, the problem arise when I combine the two and list is done, it then fails on the attributes string stating <code>Expecting: 'named'</code>. </p>
  
  <p>To me it seems that it is trying the opt assetname parser which fails on the attributes string, but I am not sure how to ignore that and move on when the list is "done" (after all the asset name part is optional)..</p>
  
  <pre><code>type AssetName = AssetName of string
  let named = str "named" &gt;&gt;. spaces1 &gt;&gt;. word
  let assetName = spaces1 &gt;&gt;. (named |&gt;&gt; AssetName)
  
  type Asset = | Converter | Signaltower | Powerunit 
  let assetType = ["converter"; "signaltower"; "powerunit";] |&gt; Seq.map pstring |&gt; choice
  let findAsset = function
  | "converter" -&gt; Converter
  | "signaltower" -&gt; Signaltower
  | "powerunit" -&gt; Powerunit
  | _ -&gt; raise &lt;| Exception "Invalid asset type"
  let asset = (assetType |&gt;&gt; findAsset) .&gt;&gt;. opt assetName 
  
  type Attribute = Attribute of string
  let attribute = word |&gt;&gt; Attribute
  let attributes = spaces1 &gt;&gt;. str "attributes" &gt;&gt;. spaces1 &gt;&gt;. sepBy attribute commaMaybeSpace
  
  let p = sepBy asset (pchar ',' &gt;&gt;. spaces) .&gt;&gt;. attributes
  let r input = run p3 input
  r "converter named a023, signaltower, powerunit named 23 attributes power, temperature"
  </code></pre>