pIfThenElse :: Parser (Statement :~ SrcPos)
pIfThenElse = withAnnotation $ do
  reserved "if"
  cond <- pExpression
  reserved "then"
  ok <- pBlock
  el <- option [] $ try $ do
          reserved "else"
          pBlock
  return $ IfThenElse cond ok el
pIfThenElse :: Parser (Statement :~ SrcPos)
pIfThenElse = withAnnotation $ do
  reserved "if"
  cond <- pExpression
  reserved "then"
  ok <- pBlock
  el <- option [] $ try $ do
          reserved "else"
          pBlock
  return $ IfThenElse cond ok el
pIfThenElse = withAnnotation $ do
  reserved "if"
  cond <- pExpression
  reserved "then"
  ok <- pBlock
  el <- option [] $ try $ do
          reserved "else"
          pBlock
  return $ IfThenElse cond ok el