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 'parse error').
<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> '{' { TokenLCurly }<br> '}' { TokenRCurly }
<br> '[' { TokenLSquare }<br> ']' { TokenRSquare }<br> '(' { TokenLRound }<br> ')' { TokenRRound }<br> '@' { TokenAt }
<br> ',' { TokenComma }<br> ';' { TokenSemi }<br> lquote { TokenLQuote }<br> rquote { TokenRQuote }<br>%%<br>Molecule : '{' '}' { Zero }
<br> | Name Reagent { Locate $1 $2 }<br> | '@' Name { Decode $2 }<br><br>ReagentList : Reagent { [ $1 ] }<br> | ReagentList ';' Reagent { $1 ++ [$3] }
<br><br>Reagent : '?' '(' NameList ')' Mixture { Abstraction $3 $5 }<br> | '[' Mixture ']' { Concretion $2 }<br><br>Mixture : Molecule { Mix [ $1 ] }
<br> | '{' ReagentList '}' { Mix $2 }<br><br>NameList : Name { [ $1 ] }<br> | NameList ',' Name { $1 ++ [$3] }<br><br>Name : lquote Mixture rquote { Name $2 }
<br><br>{<br><br>parseError :: [Token] -> a<br>parseError _ = error "Parse error"<br><br>data Molecule<br> = Zero<br> | Locate Name Reagent<br> | Decode Name<br> deriving (Eq, Show)<br><br>data Reagent
<br> = Abstraction [Name] Mix<br> | Concretion Mix<br> deriving (Eq, Show)<br><br>data Mix<br> = Mix [Molecule]<br> deriving (Eq, Show)<br><br>data Name<br> = Name Mix<br> deriving (Eq, Show)<br>
<br>data Token<br> = TokenLQuote<br> | TokenRQuote<br> | TokenLCurly<br> | TokenRCurly<br> | TokenLSquare<br> | TokenRSquare<br> | TokenLRound<br> | TokenRRound<br> | TokenComma
<br> | TokenSemi<br> | TokenAt<br> deriving Show<br><br>lexer :: String -> [Token]<br>lexer [] = []<br>lexer (c:cs) <br> | isSpace c = lexer cs<br>lexer ('{':cs) = TokenLCurly : lexer cs<br>lexer ('}':cs) = TokenRCurly : lexer cs
<br>lexer ('[':cs) = TokenLSquare : lexer cs<br>lexer (']':cs) = TokenRSquare : lexer cs<br>lexer ('(':cs) = TokenLRound : lexer cs<br>lexer (')':cs) = TokenRRound : lexer cs<br>lexer (',':cs) = TokenComma : lexer cs
<br>lexer (';':cs) = TokenSemi : lexer cs<br>lexer ('@':cs) = TokenAt : lexer cs<br>lexer ('<':'<':cs) = TokenLQuote : lexer cs<br>lexer ('>':'>':cs) = TokenRQuote : lexer cs
<br><br>main = getContents >>= 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>