Haskellians,<br><br>The code pasted in below causes Happy to return parE when invoked with happy rparse.y -i . Is there anyway to get Happy to give me just a wee bit more info as to what might be causing the parE (which i interpret a &#39;parse error&#39;).
<br><br>Best wishes,<br><br>--greg<br><br>{<br>module Main where<br>}<br>%name rparse<br>%tokentype { Token }<br>%error { parseError }<br>%token <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;{&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { TokenLCurly }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;}&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { TokenRCurly }
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;[&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { TokenLSquare }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;]&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { TokenRSquare }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;(&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { TokenLRound }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;)&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { TokenRRound }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;@&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { TokenAt }
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;,&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { TokenComma }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#39;;&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { TokenSemi }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lquote&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { TokenLQuote }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rquote&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { TokenRQuote }<br>%%<br>Molecule&nbsp;&nbsp;&nbsp; : &#39;{&#39; &#39;}&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { Zero }
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Name Reagent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { Locate $1 $2 }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | &#39;@&#39; Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { Decode $2 }<br><br>ReagentList : Reagent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { [ $1 ] }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | ReagentList &#39;;&#39; Reagent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { $1 ++ [$3] }
<br><br>Reagent&nbsp;&nbsp;&nbsp;&nbsp; : &#39;?&#39; &#39;(&#39; NameList &#39;)&#39; Mixture { Abstraction $3 $5 }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | &#39;[&#39; Mixture &#39;]&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { Concretion $2 }<br><br>Mixture&nbsp;&nbsp;&nbsp;&nbsp; : Molecule&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { Mix [ $1 ] }
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | &#39;{&#39; ReagentList &#39;}&#39;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { Mix $2 }<br><br>NameList&nbsp;&nbsp;&nbsp; : Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { [ $1 ] }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | NameList &#39;,&#39; Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { $1 ++ [$3] }<br><br>Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : lquote Mixture rquote&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { Name $2 }
<br><br>{<br><br>parseError :: [Token] -&gt; a<br>parseError _ = error &quot;Parse error&quot;<br><br>data Molecule<br>&nbsp;&nbsp;&nbsp; = Zero<br>&nbsp;&nbsp;&nbsp; | Locate Name Reagent<br>&nbsp;&nbsp;&nbsp; | Decode Name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; deriving (Eq, Show)<br><br>data Reagent
<br>&nbsp;&nbsp;&nbsp; = Abstraction [Name] Mix<br>&nbsp;&nbsp;&nbsp; | Concretion Mix<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; deriving (Eq, Show)<br><br>data Mix<br>&nbsp;&nbsp;&nbsp; = Mix [Molecule]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; deriving (Eq, Show)<br><br>data Name<br>&nbsp;&nbsp;&nbsp; = Name Mix<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; deriving (Eq, Show)<br>
<br>data Token<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = TokenLQuote<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | TokenRQuote<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | TokenLCurly<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | TokenRCurly<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | TokenLSquare<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | TokenRSquare<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | TokenLRound<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | TokenRRound<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | TokenComma
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | TokenSemi<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | TokenAt<br>&nbsp;deriving Show<br><br>lexer :: String -&gt; [Token]<br>lexer [] = []<br>lexer (c:cs) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | isSpace c = lexer cs<br>lexer (&#39;{&#39;:cs) = TokenLCurly : lexer cs<br>lexer (&#39;}&#39;:cs) = TokenRCurly : lexer cs
<br>lexer (&#39;[&#39;:cs) = TokenLSquare : lexer cs<br>lexer (&#39;]&#39;:cs) = TokenRSquare : lexer cs<br>lexer (&#39;(&#39;:cs) = TokenLRound : lexer cs<br>lexer (&#39;)&#39;:cs) = TokenRRound : lexer cs<br>lexer (&#39;,&#39;:cs) = TokenComma : lexer cs
<br>lexer (&#39;;&#39;:cs) = TokenSemi : lexer cs<br>lexer (&#39;@&#39;:cs) = TokenAt : lexer cs<br>lexer (&#39;&lt;&#39;:&#39;&lt;&#39;:cs) = TokenLQuote : lexer cs<br>lexer (&#39;&gt;&#39;:&#39;&gt;&#39;:cs) = TokenRQuote : lexer cs
<br><br>main = getContents &gt;&gt;= print . rparse . lexer<br>}<br clear="all"><br>-- <br>L.G. Meredith<br>Managing Partner<br>Biosimilarity LLC<br>505 N 72nd St<br>Seattle, WA 98103<br><br>+1 206.650.3740<br><br><a href="http://biosimilarity.blogspot.com">
http://biosimilarity.blogspot.com</a>