packages feed

uuagc-0.9.23: src-derived/PrintErrorMessages.hs


-- UUAGC 0.9.22 (PrintErrorMessages.ag)
module PrintErrorMessages where
{-# LINE 4 "PrintErrorMessages.ag" #-}

import Pretty
import UU.Scanner.Position(Pos(..), noPos)
import ErrorMessages
import DepTypes
import Options
import Data.List(mapAccumL,intersect,(\\))
import GrammarInfo
{-# LINE 15 "../src-derived/PrintErrorMessages.hs" #-}

{-# LINE 2 "./ErrorMessages.ag" #-}

import UU.Scanner.Position(Pos)
import Pretty
import DepTypes(Trace)
import CodeSyntax
import CommonTypes
{-# LINE 24 "../src-derived/PrintErrorMessages.hs" #-}
{-# LINE 16 "PrintErrorMessages.ag" #-}

isError :: Options -> Error -> Bool
isError opts (ParserError     _ _ _    ) = True
isError opts (DupAlt          _ _ _    ) = False
isError opts (DupSynonym      _ _      ) = False
isError opts (DupSet          _ _      ) = False
isError opts (DupInhAttr      _ _ _    ) = True
isError opts (DupSynAttr      _ _ _    ) = True
isError opts (DupChild        _ _ _ _  ) = False
isError opts (DupRule         _ _ _ _ _) = True
isError opts (DupSig          _ _ _    ) = False
isError opts (UndefNont       _        ) = True
isError opts (UndefAlt        _ _      ) = True
isError opts (UndefChild      _ _ _    ) = True
isError opts (MissingRule     _ _ _ _  ) = False
isError opts (SuperfluousRule _ _ _ _  ) = False
isError opts (UndefLocal      _ _ _    ) = True
isError opts (ChildAsLocal    _ _ _    ) = False
isError opts (UndefAttr       _ _ _ _ _) = True
isError opts (CyclicSet       _        ) = True
isError opts (CustomError     w _ _    ) = not w
isError opts (LocalCirc       _ _ _ _ _) = cycleIsDangerous opts
isError opts (InstCirc        _ _ _ _ _) = cycleIsDangerous opts
isError opts (DirectCirc      _ _ _    ) = cycleIsDangerous opts
isError opts (InducedCirc     _ _ _    ) = cycleIsDangerous opts
isError opts (MissingTypeSig  _ _ _    ) = False
isError opts (MissingInstSig  _ _ _    ) = True
isError opts (DupUnique       _ _ _    ) = False
isError opts (MissingUnique   _ _      ) = True
isError opts (MissingSyn      _ _      ) = True
isError opts (MissingNamedRule _ _ _)    = True
isError opts (DupRuleName _ _ _)         = True

cycleIsDangerous :: Options -> Bool
cycleIsDangerous opts
  = any ($ opts) [ wignore, bangpats, cases, strictCases, stricterCases, strictSems, withCycle ]
{-# LINE 62 "../src-derived/PrintErrorMessages.hs" #-}

{-# LINE 497 "PrintErrorMessages.ag" #-}

toWidth n xs | k<n       = xs ++ replicate (n-k) ' '
             | otherwise = xs
               where k = length xs
	
showEdge ((inh,syn),_,_) 
  = text ("inherited attribute " ++ toWidth 20 (getName inh) ++ " with synthesized attribute " ++  getName syn)

showEdgeLong ((inh,syn),path1,path2) 
  = text ("inherited attribute " ++ getName inh ++ " is needed for " ++  "synthesized attribute " ++ getName syn)
    >-< indent 4 (vlist (map text path2))
    >-< text "and back: "
    >-< indent 4 (vlist (map text path1))
	
attrText inh syn
 = 	if   inh == syn 
    then "threaded attribute " ++ getName inh
    else "inherited attribute " ++ getName inh ++ " and synthesized attribute " ++getName syn	

        
ppTrace :: Trace -> PP_Doc
ppTrace (tr:rest) = wfill [showLineNr (lineNr tr) ++ ":", "SEM", getName (nt tr), "|", getName (prod tr)
                         , lhsFld tr +.+ lhsAttr tr, "=", "..." +#+ showRhs tr +#+ "..."]
                    >-< ppTrace rest
ppTrace [] = empty

showRhs :: TraceElem -> String
showRhs tr = if null (getName field)
             then "@" ++ getName attr
             else "@" ++ (field +.+ attr)
 where field = rhsFld tr
       attr  = rhsAttr tr
 
showLineNr :: Int -> String
showLineNr i | i==(-1) = "CR"
             | otherwise = show i

showAttrDef f a | f == _LHS  = "synthesized attribute " ++ getName a
                | f == _LOC  = "local attribute " ++ getName a
                | f == _INST = "inst attribute " ++ getName a
                | otherwise  = "inherited attribute " ++ getName a ++ " of field " ++ getName f

showAttrUse f a | f == _LHS  = "inherited attribute " ++ getName a
                | f == _LOC  = "local attribute " ++ getName a 
                | f == _INST = "inst attribute " ++ getName a
                | otherwise  = "synthesized attribute " ++ getName a ++ " of field " ++ getName f

ppAttr f a = text (getName f++"."++getName a)
ppAttrUse f a = "@" >|< ppAttr f a
{-# LINE 114 "../src-derived/PrintErrorMessages.hs" #-}

{-# LINE 549 "PrintErrorMessages.ag" #-}

infixr 5 +#+
(+#+) :: String -> String -> String
(+#+) s t = s ++ " " ++ t

infixr 5 +.+
(+.+) :: Identifier -> Identifier -> String
(+.+) s t = getName s ++ "." ++ getName t

wfill = fill . addSpaces. concat . map words
  where addSpaces (x:xs) = x:map addSpace xs
        addSpaces []     = []
        addSpace  [x]    | x `elem` ".,;:!?" = [x]
        addSpace  xs     = ' ':xs

ppError :: Bool           -- class of the error, True:error False:warning
        -> Pos      -- source position
        -> PP_Doc         -- error message
        -> PP_Doc         -- pattern
        -> PP_Doc         -- help, more info
        -> PP_Doc         -- action taken by AG
        -> Bool           -- verbose? show help and action?
        -> PP_Doc
ppError isError pos mesg pat hlp act verbose
  = let position = case pos of
                     Pos l c f | l >= 0    -> f >|< ":" >|< show l >|< ":" >|< show c
                               | otherwise -> pp "uuagc"
        tp      = if isError then "error" else "warning"
        header  = position >|< ":" >#< tp >|< ":" >#< mesg
        pattern = "pattern  :" >#< pat
        help    = "help     :" >#< hlp
        action  = "action   :" >#< act
    in if verbose
         then vlist [text "",header,pattern,help,action]
         else header

{-
-- old error reporting code
  = let 
      cl = if isError then "ERROR" else "Warning"
      position   = case pos of
                         (Pos l c f) | l >= 0    -> f >|< ": line " >|< show l >|< ", column " >|< show c
                                     | otherwise -> empty
      header     = "*** UU.AG" >#< cl >#< position >#< "***"
      message    = "problem  :" >#< mesg
      pattern    = "pattern  :" >#< pat
      help       = "help     :" >#< hlp
      action     = "action   :" >#< act
    in
      if verbose
         then vlist [text "",header,message,pattern,help,action]
         else vlist [text "",header,message]
-}

showPos = show . getPos

ppInterface inter = wfill ["interface:", show inter]

{-# LINE 175 "../src-derived/PrintErrorMessages.hs" #-}
-- Error -------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         options              : Options
         verbose              : Bool
      synthesized attributes:
         me                   : SELF 
         pp                   : PP_Doc
   alternatives:
      alternative ChildAsLocal:
         child nt             : {NontermIdent}
         child con            : {ConstructorIdent}
         child var            : {Identifier}
         visit 0:
            local me          : _
      alternative CustomError:
         child isWarning      : {Bool}
         child pos            : {Pos}
         child mesg           : {PP_Doc}
         visit 0:
            local me          : _
      alternative CyclicSet:
         child name           : {Identifier}
         visit 0:
            local me          : _
      alternative DirectCirc:
         child nt             : {NontermIdent}
         child o_visit        : {Bool}
         child cyclic         : {[((Identifier,Identifier),[String],[String])]}
         visit 0:
            local me          : _
      alternative DupAlt:
         child nt             : {NontermIdent}
         child con            : {ConstructorIdent}
         child occ1           : {ConstructorIdent}
         visit 0:
            local me          : _
      alternative DupChild:
         child nt             : {NontermIdent}
         child con            : {ConstructorIdent}
         child name           : {Identifier}
         child occ1           : {Identifier}
         visit 0:
            local me          : _
      alternative DupInhAttr:
         child nt             : {NontermIdent}
         child attr           : {Identifier}
         child occ1           : {Identifier}
         visit 0:
            local me          : _
      alternative DupRule:
         child nt             : {NontermIdent}
         child con            : {ConstructorIdent}
         child field          : {Identifier}
         child attr           : {Identifier}
         child occ1           : {Identifier}
         visit 0:
            local me          : _
      alternative DupRuleName:
         child nt             : {NontermIdent}
         child con            : {ConstructorIdent}
         child nm             : {Identifier}
         visit 0:
            local me          : _
      alternative DupSet:
         child name           : {NontermIdent}
         child occ1           : {NontermIdent}
         visit 0:
            local me          : _
      alternative DupSig:
         child nt             : {NontermIdent}
         child con            : {ConstructorIdent}
         child attr           : {Identifier}
         visit 0:
            local me          : _
      alternative DupSynAttr:
         child nt             : {NontermIdent}
         child attr           : {Identifier}
         child occ1           : {Identifier}
         visit 0:
            local me          : _
      alternative DupSynonym:
         child nt             : {NontermIdent}
         child occ1           : {NontermIdent}
         visit 0:
            local me          : _
      alternative DupUnique:
         child nt             : {NontermIdent}
         child con            : {ConstructorIdent}
         child attr           : {Identifier}
         visit 0:
            local me          : _
      alternative InducedCirc:
         child nt             : {NontermIdent}
         child cinter         : {CInterface}
         child cyclic         : {[((Identifier,Identifier),[String],[String])]}
         visit 0:
            local me          : _
      alternative InstCirc:
         child nt             : {NontermIdent}
         child con            : {ConstructorIdent}
         child attr           : {Identifier}
         child o_visit        : {Bool}
         child path           : {[String]}
         visit 0:
            local me          : _
      alternative LocalCirc:
         child nt             : {NontermIdent}
         child con            : {ConstructorIdent}
         child attr           : {Identifier}
         child o_visit        : {Bool}
         child path           : {[String]}
         visit 0:
            local me          : _
      alternative MissingInstSig:
         child nt             : {NontermIdent}
         child con            : {ConstructorIdent}
         child attr           : {Identifier}
         visit 0:
            local me          : _
      alternative MissingNamedRule:
         child nt             : {NontermIdent}
         child con            : {Identifier}
         child name           : {Identifier}
         visit 0:
            local me          : _
      alternative MissingRule:
         child nt             : {NontermIdent}
         child con            : {ConstructorIdent}
         child field          : {Identifier}
         child attr           : {Identifier}
         visit 0:
            local me          : _
      alternative MissingSyn:
         child nt             : {NontermIdent}
         child attr           : {Identifier}
         visit 0:
            local me          : _
      alternative MissingTypeSig:
         child nt             : {NontermIdent}
         child con            : {ConstructorIdent}
         child attr           : {Identifier}
         visit 0:
            local me          : _
      alternative MissingUnique:
         child nt             : {NontermIdent}
         child attr           : {Identifier}
         visit 0:
            local me          : _
      alternative ParserError:
         child pos            : {Pos}
         child problem        : {String}
         child action         : {String}
         visit 0:
            local me          : _
      alternative SuperfluousRule:
         child nt             : {NontermIdent}
         child con            : {ConstructorIdent}
         child field          : {Identifier}
         child attr           : {Identifier}
         visit 0:
            local me          : _
      alternative UndefAlt:
         child nt             : {NontermIdent}
         child con            : {ConstructorIdent}
         visit 0:
            local me          : _
      alternative UndefAttr:
         child nt             : {NontermIdent}
         child con            : {ConstructorIdent}
         child field          : {Identifier}
         child attr           : {Identifier}
         child isOut          : {Bool}
         visit 0:
            local me          : _
      alternative UndefChild:
         child nt             : {NontermIdent}
         child con            : {ConstructorIdent}
         child name           : {Identifier}
         visit 0:
            local me          : _
      alternative UndefLocal:
         child nt             : {NontermIdent}
         child con            : {ConstructorIdent}
         child var            : {Identifier}
         visit 0:
            local me          : _
      alternative UndefNont:
         child nt             : {NontermIdent}
         visit 0:
            local me          : _
-}
-- cata
sem_Error :: Error  ->
             T_Error 
sem_Error (ChildAsLocal _nt _con _var )  =
    (sem_Error_ChildAsLocal _nt _con _var )
sem_Error (CustomError _isWarning _pos _mesg )  =
    (sem_Error_CustomError _isWarning _pos _mesg )
sem_Error (CyclicSet _name )  =
    (sem_Error_CyclicSet _name )
sem_Error (DirectCirc _nt _o_visit _cyclic )  =
    (sem_Error_DirectCirc _nt _o_visit _cyclic )
sem_Error (DupAlt _nt _con _occ1 )  =
    (sem_Error_DupAlt _nt _con _occ1 )
sem_Error (DupChild _nt _con _name _occ1 )  =
    (sem_Error_DupChild _nt _con _name _occ1 )
sem_Error (DupInhAttr _nt _attr _occ1 )  =
    (sem_Error_DupInhAttr _nt _attr _occ1 )
sem_Error (DupRule _nt _con _field _attr _occ1 )  =
    (sem_Error_DupRule _nt _con _field _attr _occ1 )
sem_Error (DupRuleName _nt _con _nm )  =
    (sem_Error_DupRuleName _nt _con _nm )
sem_Error (DupSet _name _occ1 )  =
    (sem_Error_DupSet _name _occ1 )
sem_Error (DupSig _nt _con _attr )  =
    (sem_Error_DupSig _nt _con _attr )
sem_Error (DupSynAttr _nt _attr _occ1 )  =
    (sem_Error_DupSynAttr _nt _attr _occ1 )
sem_Error (DupSynonym _nt _occ1 )  =
    (sem_Error_DupSynonym _nt _occ1 )
sem_Error (DupUnique _nt _con _attr )  =
    (sem_Error_DupUnique _nt _con _attr )
sem_Error (InducedCirc _nt _cinter _cyclic )  =
    (sem_Error_InducedCirc _nt _cinter _cyclic )
sem_Error (InstCirc _nt _con _attr _o_visit _path )  =
    (sem_Error_InstCirc _nt _con _attr _o_visit _path )
sem_Error (LocalCirc _nt _con _attr _o_visit _path )  =
    (sem_Error_LocalCirc _nt _con _attr _o_visit _path )
sem_Error (MissingInstSig _nt _con _attr )  =
    (sem_Error_MissingInstSig _nt _con _attr )
sem_Error (MissingNamedRule _nt _con _name )  =
    (sem_Error_MissingNamedRule _nt _con _name )
sem_Error (MissingRule _nt _con _field _attr )  =
    (sem_Error_MissingRule _nt _con _field _attr )
sem_Error (MissingSyn _nt _attr )  =
    (sem_Error_MissingSyn _nt _attr )
sem_Error (MissingTypeSig _nt _con _attr )  =
    (sem_Error_MissingTypeSig _nt _con _attr )
sem_Error (MissingUnique _nt _attr )  =
    (sem_Error_MissingUnique _nt _attr )
sem_Error (ParserError _pos _problem _action )  =
    (sem_Error_ParserError _pos _problem _action )
sem_Error (SuperfluousRule _nt _con _field _attr )  =
    (sem_Error_SuperfluousRule _nt _con _field _attr )
sem_Error (UndefAlt _nt _con )  =
    (sem_Error_UndefAlt _nt _con )
sem_Error (UndefAttr _nt _con _field _attr _isOut )  =
    (sem_Error_UndefAttr _nt _con _field _attr _isOut )
sem_Error (UndefChild _nt _con _name )  =
    (sem_Error_UndefChild _nt _con _name )
sem_Error (UndefLocal _nt _con _var )  =
    (sem_Error_UndefLocal _nt _con _var )
sem_Error (UndefNont _nt )  =
    (sem_Error_UndefNont _nt )
-- semantic domain
newtype T_Error  = T_Error (Options ->
                            Bool ->
                            ( Error ,PP_Doc))
data Inh_Error  = Inh_Error {options_Inh_Error :: Options,verbose_Inh_Error :: Bool}
data Syn_Error  = Syn_Error {me_Syn_Error :: Error ,pp_Syn_Error :: PP_Doc}
wrap_Error :: T_Error  ->
              Inh_Error  ->
              Syn_Error 
wrap_Error (T_Error sem ) (Inh_Error _lhsIoptions _lhsIverbose )  =
    (let ( _lhsOme,_lhsOpp) =
             (sem _lhsIoptions _lhsIverbose )
     in  (Syn_Error _lhsOme _lhsOpp ))
sem_Error_ChildAsLocal :: NontermIdent ->
                          ConstructorIdent ->
                          Identifier ->
                          T_Error 
sem_Error_ChildAsLocal nt_ con_ var_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 332, column 21)
                       _lhsOpp =
                           ({-# LINE 332 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["Nontrivial field ",getName var_, "is used as local at constructor"
                                              , getName con_ , "of nonterminal",getName nt_, "."
                                              ]
                                pat   = "SEM" >#< getName nt_
                                      >-< indent 2 ("|" >#< getName con_ >#< "... = "
                                                        >#< "..." >#< "@" >|< getName var_ >#< "..." )
                                help =  wfill ["A rule in the definitions for alternative" , getName con_ ,"of nonterminal"
                                              , getName nt_ , "contains a nontrivial field name", getName var_, "."
                                              ,"You should use @", getName var_, ".self instead, where self is a SELF-attribute."
                                              ]
                                act  = wfill ["The generated program probably contains a type error or has undefined variables."]
                            in ppError (isError _lhsIoptions _me) (getPos var_) mesg pat help act _lhsIverbose
                            {-# LINE 469 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            ChildAsLocal nt_ con_ var_
                            {-# LINE 474 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 479 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_CustomError :: Bool ->
                         Pos ->
                         PP_Doc ->
                         T_Error 
sem_Error_CustomError isWarning_ pos_ mesg_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 374, column 21)
                       _lhsOpp =
                           ({-# LINE 374 "PrintErrorMessages.ag" #-}
                            let pat   =  text "unknown"
                                help = wfill ["not available."]
                                act  = wfill ["unknown"]
                            in ppError (isError _lhsIoptions _me) pos_ mesg_ pat help act False
                            {-# LINE 497 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            CustomError isWarning_ pos_ mesg_
                            {-# LINE 502 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 507 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_CyclicSet :: Identifier ->
                       T_Error 
sem_Error_CyclicSet name_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 365, column 21)
                       _lhsOpp =
                           ({-# LINE 365 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["Cyclic definition for nonterminal set", getName name_]
                                pat   = "SET" >#< getName name_ >#< "=" >#< "..." >#< getName name_ >#< "..."
                                help =  wfill ["The defintion for a nonterminal set named" , getName name_
                                              ,"directly or indirectly refers to itself."
                                              ,"Adapt the definition of the nonterminal set, to remove the cyclic dependency."
                                              ]
                                act  = wfill ["The nonterminal set", getName name_, "is considered to be empty."]
                            in ppError (isError _lhsIoptions _me) (getPos name_) mesg pat help act _lhsIverbose
                            {-# LINE 527 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            CyclicSet name_
                            {-# LINE 532 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 537 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_DirectCirc :: NontermIdent ->
                        Bool ->
                        ([((Identifier,Identifier),[String],[String])]) ->
                        T_Error 
sem_Error_DirectCirc nt_ o_visit_ cyclic_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 403, column 21)
                       _lhsOpp =
                           ({-# LINE 403 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["In nonterminal", getName nt_, "synthesized and inherited attributes are mutually dependent" ]
                                        >-< vlist (map showEdge cyclic_)
                                pat   = text ""
                                help  = vlist (map showEdgeLong cyclic_)
                                act   | o_visit_ = text "An unoptimized version was generated. It might hang when run."
                                      | otherwise = text "The generated program might hang when run."
                            in ppError (isError _lhsIoptions _me) noPos mesg pat help act _lhsIverbose
                            {-# LINE 558 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            DirectCirc nt_ o_visit_ cyclic_
                            {-# LINE 563 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 568 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_DupAlt :: NontermIdent ->
                    ConstructorIdent ->
                    ConstructorIdent ->
                    T_Error 
sem_Error_DupAlt nt_ con_ occ1_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 78, column 21)
                       _lhsOpp =
                           ({-# LINE 78 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["Repeated definition for alternative", getName con_
                                              ,"of nonterminal", getName nt_, "."
                                              ] >-<
                                        wfill ["First definition:", (showPos occ1_),"."] >-<
                                        wfill ["Other definition:", (showPos con_),"."]
                                pat =     "DATA" >#< getName nt_
                                      >-< indent 2 ("|" >#< getName con_ >#< "...")
                                      >-< indent 2 ("|" >#< getName con_ >#< "...")
                                help =  wfill ["The nonterminal",getName nt_,"has more than one alternative that"
                                              ,"is labelled with the constructor name",getName con_,"."
                                              ,"You should either rename or remove enough of them to make all"
                                              ,"constructors of",getName nt_,"uniquely named."
                                              ]
                                act  = wfill [ "The first alternative of name",getName con_
                                             ,"you have given for nonterminal",getName nt_
                                             ,"is considered valid. All other alternatives have been discarded."
                                             ]
                            in ppError (isError _lhsIoptions _me) (getPos con_) mesg pat help act _lhsIverbose
                            {-# LINE 600 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            DupAlt nt_ con_ occ1_
                            {-# LINE 605 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 610 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_DupChild :: NontermIdent ->
                      ConstructorIdent ->
                      Identifier ->
                      Identifier ->
                      T_Error 
sem_Error_DupChild nt_ con_ name_ occ1_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 171, column 21)
                       _lhsOpp =
                           ({-# LINE 171 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["Repeated declaration for field", getName name_, "of alternative"
                                              ,getName con_, "of nonterminal", getName nt_, "."
                                              ] >-<
                                        wfill ["First definition:", (showPos occ1_),"."] >-<
                                        wfill ["Other definition:", (showPos name_),"."]
                                pat   =   "DATA" >#< getName nt_
                                      >-< indent 2 ("|" >#< getName con_ >#< (getName name_ >|< ":..." >-< getName name_ >|< ":..."))
                                help =  wfill ["The alternative" ,getName con_ , "of nonterminal" ,getName nt_
                                              ,"has more than one field that is named"
                                              , getName name_ ++ ". Possibly they have different types."
                                              ,"You should either rename or remove enough of them to make all fields of"
                                              ,getName con_ , "for nonterminal " , getName nt_ , "uniquely named."
                                              ]
                                act  = wfill ["The last declaration with its corresponding type is considered valid."
                                             ,"All others have been discarded."
                                             ]
                            in ppError (isError _lhsIoptions _me) (getPos name_) mesg pat help act _lhsIverbose
                            {-# LINE 642 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            DupChild nt_ con_ name_ occ1_
                            {-# LINE 647 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 652 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_DupInhAttr :: NontermIdent ->
                        Identifier ->
                        Identifier ->
                        T_Error 
sem_Error_DupInhAttr nt_ attr_ occ1_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 133, column 21)
                       _lhsOpp =
                           ({-# LINE 133 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["Repeated declaration of inherited attribute", getName attr_
                                              , "of nonterminal", getName nt_, "."
                                              ] >-<
                                        wfill ["First definition:", (showPos occ1_),"."] >-<
                                        wfill ["Other definition:", (showPos attr_),"."]
                                pat  = "ATTR" >#< getName nt_ >#< "[" >#< getName attr_ >|< ":...,"
                                                              >#< getName attr_ >|< ":... | | ]"
                                help =  wfill ["The identifier" , getName attr_ ,"has been declared"
                                              ,"as an inherited (or chained) attribute for nonterminal"
                                              ,getName nt_ , "more than once, with possibly different types."
                                              ,"Delete all but one or rename them to make them unique."
                                              ]
                                act  = wfill ["One declaration with its corresponding type is considered valid."
                                             ,"All others have been discarded. The generated program will probably not run."
                                             ]
                            in ppError (isError _lhsIoptions _me) (getPos attr_) mesg pat help act _lhsIverbose
                            {-# LINE 682 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            DupInhAttr nt_ attr_ occ1_
                            {-# LINE 687 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 692 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_DupRule :: NontermIdent ->
                     ConstructorIdent ->
                     Identifier ->
                     Identifier ->
                     Identifier ->
                     T_Error 
sem_Error_DupRule nt_ con_ field_ attr_ occ1_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 191, column 21)
                       _lhsOpp =
                           ({-# LINE 191 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["At constructor",getName con_, "of nonterminal", getName nt_, "there are two or more rules for"
                                              ,showAttrDef field_ attr_,"."
                                              ]  >-<
                                        wfill ["First rule:", (showPos occ1_),"."] >-<
                                        wfill ["Other rule:", (showPos attr_),"."]
                                pat   =   "SEM" >#< getName nt_
                                      >-< indent 2 ("|" >#< getName con_ >#< ppAttr field_ attr_ >#< "= ...")
                                      >-< indent 2 ("|" >#< getName con_ >#< ppAttr field_ attr_ >#< "= ...")
                                help =  wfill ["In the rules for alternative" , getName con_ , "of nonterminal" , getName nt_
                                                      ,", there is more than one rule for the" , showAttrDef field_ attr_
                                                      ,". You should either rename or remove enough of them to make all rules for alternative"
                                                      ,getName con_ , "of nonterminal " ,getName  nt_ , "uniquely named."
                                                      ]
                                act  = wfill ["The last rule given is considered valid. All others have been discarded."]
                            in ppError (isError _lhsIoptions _me) (getPos attr_) mesg pat help act _lhsIverbose
                            {-# LINE 723 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            DupRule nt_ con_ field_ attr_ occ1_
                            {-# LINE 728 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 733 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_DupRuleName :: NontermIdent ->
                         ConstructorIdent ->
                         Identifier ->
                         T_Error 
sem_Error_DupRuleName nt_ con_ nm_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 209, column 21)
                       _lhsOpp =
                           ({-# LINE 209 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["At constructor",getName con_, "of nonterminal", getName nt_, "there are two or more rule names for"
                                              ,show nm_,"."
                                              ]
                                pat   =   "SEM" >#< getName nt_
                                      >-< indent 2 ("|" >#< getName con_ >#< show nm_ >#< ": ... = ...")
                                      >-< indent 2 ("|" >#< getName con_ >#< show nm_ >#< ": ... = ...")
                                help =  wfill ["In the rules for alternative" , getName con_ , "of nonterminal" , getName nt_
                                                      ,", there is more than one rule name " , show nm_
                                                      ,". You should either rename or remove enough of them."
                                                      ]
                                act  = wfill ["Compilation cannot continue."]
                            in ppError (isError _lhsIoptions _me) (getPos nm_) mesg pat help act _lhsIverbose
                            {-# LINE 759 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            DupRuleName nt_ con_ nm_
                            {-# LINE 764 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 769 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_DupSet :: NontermIdent ->
                    NontermIdent ->
                    T_Error 
sem_Error_DupSet name_ occ1_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 117, column 21)
                       _lhsOpp =
                           ({-# LINE 117 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["Definition of nonterminal set", getName name_, "clashes with another"
                                              ,"set, a type synonym or a data definition."
                                              ] >-<
                                        wfill ["First definition:", (showPos occ1_),"."] >-<
                                        wfill ["Set definition:"   , (showPos name_),"."]
                                pat =     "SET" >#< getName name_ >#< "=" >#<  "..."
                                      >-< "SET" >#< getName name_ >#< "=" >#<  "..."
                                help =  wfill ["A nonterminal set with name", getName  name_
                                              ,"has been given while there already is a SET, DATA, or TYPE"
                                              ,"definition with the same name."
                                              ,"You should either rename or remove the nonterminal set."
                                              ]
                                act  = wfill [ "The clashing nonterminal set will be ignored."
                                             ]
                            in ppError (isError _lhsIoptions _me)  (getPos name_) mesg pat help act _lhsIverbose
                            {-# LINE 797 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            DupSet name_ occ1_
                            {-# LINE 802 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 807 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_DupSig :: NontermIdent ->
                    ConstructorIdent ->
                    Identifier ->
                    T_Error 
sem_Error_DupSig nt_ con_ attr_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 224, column 21)
                       _lhsOpp =
                           ({-# LINE 224 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["At constructor",getName con_, "of nonterminal", getName nt_, "there are two or more typesignatures for"
                                              ,showAttrDef _LOC attr_,"."
                                              ]  >-<
                                        wfill ["First signature:", (showPos attr_),"."]
                                pat   =   "SEM" >#< getName nt_
                                      >-< indent 2 ("|" >#< getName con_ >#< ppAttr _LOC attr_ >#< "= ...")
                                      >-< indent 2 ("|" >#< getName con_ >#< ppAttr _LOC attr_ >#< "= ...")
                                help =  wfill ["In the rules for alternative" , getName con_ , "of nonterminal" , getName nt_
                                                      ,", there is more than one rule for the" , showAttrDef _LOC attr_
                                                      ,". You should remove enough of them to make all typesignatures for alternative"
                                                      ,getName con_ , "of nonterminal " ,getName  nt_ , "unique."
                                                      ]
                                act  = wfill ["The last typesignature given is considered valid. All others have been discarded."]
                            in ppError (isError _lhsIoptions _me) (getPos attr_) mesg pat help act _lhsIverbose
                            {-# LINE 835 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            DupSig nt_ con_ attr_
                            {-# LINE 840 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 845 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_DupSynAttr :: NontermIdent ->
                        Identifier ->
                        Identifier ->
                        T_Error 
sem_Error_DupSynAttr nt_ attr_ occ1_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 152, column 21)
                       _lhsOpp =
                           ({-# LINE 152 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["Repeated declaration of synthesized attribute", getName attr_
                                              , "of nonterminal", getName nt_, "."
                                              ] >-<
                                        wfill ["First definition:", (showPos occ1_),"."] >-<
                                        wfill ["Other definition:", (showPos attr_),"."]
                                pat  = "ATTR" >#< getName nt_ >#< "[ | |" >#< getName attr_ >|< ":...,"
                                                                  >#< getName attr_ >|< ":... ]"
                                help =  wfill ["The identifier" , getName attr_ ,"has been declared"
                                              ,"as a synthesized (or chained) attribute for nonterminal"
                                              ,getName nt_ , "more than once, with possibly different types."
                                              ,"Delete all but one or rename them to make them unique."
                                              ]
                                act  = wfill ["One declaration with its corresponding type is considered valid."
                                             ,"All others have been discarded. The generated program will probably not run."
                                             ]
                            in ppError (isError _lhsIoptions _me) (getPos attr_) mesg pat help act _lhsIverbose
                            {-# LINE 875 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            DupSynAttr nt_ attr_ occ1_
                            {-# LINE 880 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 885 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_DupSynonym :: NontermIdent ->
                        NontermIdent ->
                        T_Error 
sem_Error_DupSynonym nt_ occ1_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 100, column 21)
                       _lhsOpp =
                           ({-# LINE 100 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["Definition of type synonym", getName nt_, "clashes with another"
                                              ,"type synonym."
                                              ] >-<
                                        wfill ["First definition:", (showPos occ1_),"."] >-<
                                        wfill ["Type synonym :"   , (showPos nt_),"."]
                                pat =     "DATA" >#< getName nt_
                                      >-< indent 2 ("|" >#< "...")
                                      >-< "TYPE" >#< getName nt_ >#< "=" >#<  "..."
                                help =  wfill ["A type synonym with name", getName  nt_
                                              ,"has been given while there already is TYPE"
                                              ,"definition with the same name."
                                              ,"You should either rename or remove the type synonym."
                                              ]
                                act  = wfill [ "The clashing type synonym will be ignored."
                                             ]
                            in ppError (isError _lhsIoptions _me)  (getPos nt_) mesg pat help act _lhsIverbose
                            {-# LINE 914 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            DupSynonym nt_ occ1_
                            {-# LINE 919 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 924 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_DupUnique :: NontermIdent ->
                       ConstructorIdent ->
                       Identifier ->
                       T_Error 
sem_Error_DupUnique nt_ con_ attr_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 464, column 21)
                       _lhsOpp =
                           ({-# LINE 464 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["At constructor",getName con_, "of nonterminal", getName nt_, "there are two or more unique-attribute signatures for"
                                              ,showAttrDef _LOC attr_,"."
                                              ]  >-<
                                        wfill ["First signature:", (showPos attr_),"."]
                                pat   =   "SEM" >#< getName nt_
                                      >-< indent 2 ("|" >#< getName con_ >#< ppAttr _LOC attr_ >#< " : UNIQUEREF ...")
                                      >-< indent 2 ("|" >#< getName con_ >#< ppAttr _LOC attr_ >#< " : UNIQUEREF ...")
                                help =  wfill ["In the rules for alternative" , getName con_ , "of nonterminal" , getName nt_
                                                      ,", there is more than one unique-attribute signature for the" , showAttrDef _LOC attr_
                                                      ,". You should remove enough of them to make all unique-signatures for alternative"
                                                      ,getName con_ , "of nonterminal " ,getName  nt_ , "unique."
                                                      ]
                                act  = wfill ["Unpredicatable sharing of unique numbers may occur."]
                            in ppError (isError _lhsIoptions _me) (getPos attr_) mesg pat help act _lhsIverbose
                            {-# LINE 952 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            DupUnique nt_ con_ attr_
                            {-# LINE 957 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 962 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_InducedCirc :: NontermIdent ->
                         CInterface ->
                         ([((Identifier,Identifier),[String],[String])]) ->
                         T_Error 
sem_Error_InducedCirc nt_ cinter_ cyclic_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 411, column 21)
                       _lhsOpp =
                           ({-# LINE 411 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["After scheduling, in nonterminal", getName nt_, "synthesized and inherited attributes have an INDUCED mutual dependency" ]
                                        >-< vlist (map showEdge cyclic_)
                                pat   = text ""
                                showInter (CInterface segs) = concat (snd (mapAccumL (\i c -> (i+1,("visit " ++ show i) : map ind (showsSegment c))) 0 segs))
                                help  = vlist (("Interface for nonterminal " ++ getName nt_ ++ ":") : map ind (showInter cinter_))
                                        >-< vlist (map showEdgeLong cyclic_)
                                act   = text "An unoptimized version was generated. It might hang when run."
                            in ppError (isError _lhsIoptions _me) noPos mesg pat help act _lhsIverbose
                            {-# LINE 984 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            InducedCirc nt_ cinter_ cyclic_
                            {-# LINE 989 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 994 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_InstCirc :: NontermIdent ->
                      ConstructorIdent ->
                      Identifier ->
                      Bool ->
                      ([String]) ->
                      T_Error 
sem_Error_InstCirc nt_ con_ attr_ o_visit_ path_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 391, column 21)
                       _lhsOpp =
                           ({-# LINE 391 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["Circular dependency for inst attribute", getName attr_
                                              , "of alternative", getName con_, "of nonterminal", getName nt_]
                                pat   = "SEM" >#< getName nt_
                                        >-< indent 2 ("|" >#< getName con_ >#< "inst." >|< getName attr_ >#< "="
                                                          >#< "..." >#< "@s.<some attribte>" >#< "...")
                                help  = if null path_
                                        then text "the definition is directly circular"
                                        else hlist ("The following attributes are involved in the cycle:": path_)
                                act   | o_visit_ = text "An unoptimized version was generated. It might hang when run."
                                      | otherwise = text "The generated program might hang when run."
                            in ppError (isError _lhsIoptions _me) (getPos (attr_)) mesg pat help act _lhsIverbose
                            {-# LINE 1021 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            InstCirc nt_ con_ attr_ o_visit_ path_
                            {-# LINE 1026 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 1031 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_LocalCirc :: NontermIdent ->
                       ConstructorIdent ->
                       Identifier ->
                       Bool ->
                       ([String]) ->
                       T_Error 
sem_Error_LocalCirc nt_ con_ attr_ o_visit_ path_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 379, column 21)
                       _lhsOpp =
                           ({-# LINE 379 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["Circular dependency for local attribute", getName attr_
                                              , "of alternative", getName con_, "of nonterminal", getName nt_]
                                pat   = "SEM" >#< getName nt_
                                        >-< indent 2 ("|" >#< getName con_ >#< "loc." >|< getName attr_ >#< "="
                                                          >#< "..." >#< "@loc." >|< getName attr_ >#< "...")
                                help  = if null path_
                                        then text "the definition is directly circular"
                                        else hlist ("The following attributes are involved in the cycle:": path_)
                                act   | o_visit_ = text "An unoptimized version was generated. It might hang when run."
                                      | otherwise = text "The generated program might hang when run."
                            in ppError (isError _lhsIoptions _me) (getPos (attr_)) mesg pat help act _lhsIverbose
                            {-# LINE 1058 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            LocalCirc nt_ con_ attr_ o_visit_ path_
                            {-# LINE 1063 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 1068 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_MissingInstSig :: NontermIdent ->
                            ConstructorIdent ->
                            Identifier ->
                            T_Error 
sem_Error_MissingInstSig nt_ con_ attr_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 434, column 21)
                       _lhsOpp =
                           ({-# LINE 434 "PrintErrorMessages.ag" #-}
                            let mesg = wfill ["Type signature needed, but not found for", showAttrDef _INST attr_ , "in alternative"
                                              , getName con_ , "of nonterminal",getName nt_ ,"."
                                              ]>-<
                                        wfill ["Location:", (showPos attr_),"."]
                                pat   = "SEM" >#< nt_
                                          >-< indent 2 ("|" >#< getName con_ >#< ppAttr _INST attr_ >#< ": ...")
                                help  = wfill ["The", showAttrDef _INST attr_, "in alternative", getName con_
                                              ,"of nonterminal", getName nt_, "is a non-terminal attribute, so "
                                              ,"its type is needed to attribute its value."
                                              ,"Please supply its type."
                                              ]
                                act  = wfill ["It is not possible to proceed without this signature."]
                            in ppError (isError _lhsIoptions _me) (getPos attr_) mesg pat help act _lhsIverbose
                            {-# LINE 1095 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            MissingInstSig nt_ con_ attr_
                            {-# LINE 1100 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 1105 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_MissingNamedRule :: NontermIdent ->
                              Identifier ->
                              Identifier ->
                              T_Error 
sem_Error_MissingNamedRule nt_ con_ name_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 291, column 23)
                       _lhsOpp =
                           ({-# LINE 291 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["Missing rule name ", show name_ , "in alternative"
                                              , getName con_ , "of nonterminal",getName nt_ ,"."
                                              ]
                                pat   =   "SEM" >#< nt_
                                      >-< indent 2 ("|" >#< getName con_ >#< show name_ >#< ": ... = ...")
                                help  = wfill ["There is a dependency on a rule with name ", show name_ , "in alternative"
                                              , getName con_ , "of nonterminal",getName nt_ ,", but no rule has been defined with this name. Maybe you misspelled it?"
                                              ]
                                act  = wfill ["Compilation cannot continue."]
                            in ppError (isError _lhsIoptions _me) (getPos name_) mesg pat help act _lhsIverbose
                            {-# LINE 1129 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            MissingNamedRule nt_ con_ name_
                            {-# LINE 1134 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 1139 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_MissingRule :: NontermIdent ->
                         ConstructorIdent ->
                         Identifier ->
                         Identifier ->
                         T_Error 
sem_Error_MissingRule nt_ con_ field_ attr_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 278, column 21)
                       _lhsOpp =
                           ({-# LINE 278 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["Missing rule for", showAttrDef field_ attr_ , "in alternative"
                                              , getName con_ , "of nonterminal",getName nt_ ,"."
                                              ]
                                pat   =   "SEM" >#< nt_
                                      >-< indent 2 ("|" >#< getName con_ >#< ppAttr field_ attr_ >#< "= ...")
                                help  = wfill ["The", showAttrDef field_ attr_, "in alternative", getName con_
                                              , "of nonterminal", getName nt_, "is missing and cannot be inferred"
                                              ,"by a copy rule, so you should add an appropriate rule."
                                              ]
                                act  = wfill ["The value of the attribute has been set to undefined."]
                            in ppError (isError _lhsIoptions _me) (getPos attr_) mesg pat help act _lhsIverbose
                            {-# LINE 1165 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            MissingRule nt_ con_ field_ attr_
                            {-# LINE 1170 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 1175 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_MissingSyn :: NontermIdent ->
                        Identifier ->
                        T_Error 
sem_Error_MissingSyn nt_ attr_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 481, column 20)
                       _lhsOpp =
                           ({-# LINE 481 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["Missing synthesized attribute"
                                              , getName attr_
                                              , "at nonterminal"
                                              , getName nt_, "."
                                              ]
                                pat   = "ATTR" >#< getName nt_ >#< "[ | | " >#< getName attr_ >#< " : ... ]"
                                help =  wfill ["An augment rule for a constructor for nonterminal" , getName nt_
                                              , "refers to a synthesized attribute named "
                                              , getName attr_
                                              ,"Maybe you misspelled it?"
                                              ,"Otherwise add an appropriate attribute definition."
                                              ]
                                act  = wfill ["It is not possible to proceed without this declaration."]
                            in ppError (isError _lhsIoptions _me) (getPos attr_) mesg pat help act _lhsIverbose
                            {-# LINE 1202 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            MissingSyn nt_ attr_
                            {-# LINE 1207 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 1212 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_MissingTypeSig :: NontermIdent ->
                            ConstructorIdent ->
                            Identifier ->
                            T_Error 
sem_Error_MissingTypeSig nt_ con_ attr_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 420, column 21)
                       _lhsOpp =
                           ({-# LINE 420 "PrintErrorMessages.ag" #-}
                            let mesg = wfill ["Type signature needed, but not found for", showAttrDef _LOC attr_ , "in alternative"
                                              , getName con_ , "of nonterminal",getName nt_ ,"."
                                              ]>-<
                                        wfill ["Location:", (showPos attr_),"."]
                                pat   =   "SEM" >#< nt_
                                      >-< indent 2 ("|" >#< getName con_ >#< ppAttr _LOC attr_ >#< ": ...")
                                help  = wfill ["The", showAttrDef _LOC attr_, "in alternative", getName con_
                                              ,"of nonterminal", getName nt_, "is needed in two separate visits to", getName nt_
                                              ,"so its type is needed to generate type signatures."
                                              ,"Please supply its type."
                                              ]
                                act  = wfill ["The type signatures of semantic functions are not generated."]
                            in ppError (isError _lhsIoptions _me) (getPos attr_) mesg pat help act _lhsIverbose
                            {-# LINE 1239 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            MissingTypeSig nt_ con_ attr_
                            {-# LINE 1244 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 1249 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_MissingUnique :: NontermIdent ->
                           Identifier ->
                           T_Error 
sem_Error_MissingUnique nt_ attr_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 448, column 21)
                       _lhsOpp =
                           ({-# LINE 448 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["Missing unique counter (chained attribute)"
                                              , getName attr_
                                              , "at nonterminal"
                                              , getName nt_, "."
                                              ]
                                pat   = "ATTR" >#< getName nt_ >#< "[ |" >#< getName attr_ >#< " : ... | ]"
                                help =  wfill ["A unique attribute signature in a constructor for nonterminal" , getName nt_
                                              , "refers to an unique counter (chained attribute) named "
                                              , getName attr_
                                              ,"Maybe you misspelled it?"
                                              ,"Otherwise either remove the signature or add an appropriate attribute definition."
                                              ]
                                act  = wfill ["It is not possible to proceed without this declaration."]
                            in ppError (isError _lhsIoptions _me) (getPos attr_) mesg pat help act _lhsIverbose
                            {-# LINE 1276 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            MissingUnique nt_ attr_
                            {-# LINE 1281 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 1286 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_ParserError :: Pos ->
                         String ->
                         String ->
                         T_Error 
sem_Error_ParserError pos_ problem_ action_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 72, column 21)
                       _lhsOpp =
                           ({-# LINE 72 "PrintErrorMessages.ag" #-}
                            let mesg = text ("parser expecting " ++ problem_)
                                pat  = text ""
                                help = text ""
                                act  = text action_
                             in ppError (isError _lhsIoptions _me) pos_ mesg pat help act _lhsIverbose
                            {-# LINE 1305 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            ParserError pos_ problem_ action_
                            {-# LINE 1310 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 1315 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_SuperfluousRule :: NontermIdent ->
                             ConstructorIdent ->
                             Identifier ->
                             Identifier ->
                             T_Error 
sem_Error_SuperfluousRule nt_ con_ field_ attr_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 303, column 21)
                       _lhsOpp =
                           ({-# LINE 303 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["Rule for non-existing", showAttrDef field_ attr_ , "at alternative"
                                              , getName con_ , "of nonterminal",getName nt_, "."
                                              ]
                                pat   =   "SEM" >#< getName nt_
                                      >-< indent 2 ("|" >#< getName con_ >#< ppAttr field_ attr_ >#< "= ...")
                                help =  wfill ["There is a rule for" , showAttrDef field_ attr_ , "in the definitions for alternative" , getName con_
                                              ,"of nonterminal" , getName nt_,  ", but this attribute does not exist. Maybe you misspelled it?"
                                              ,"Otherwise either remove the rule or add an appropriate attribute definition."
                                              ]
                                act  = wfill ["The rule has been ignored."]
                            in ppError (isError _lhsIoptions _me) (getPos attr_) mesg pat help act _lhsIverbose
                            {-# LINE 1341 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            SuperfluousRule nt_ con_ field_ attr_
                            {-# LINE 1346 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 1351 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_UndefAlt :: NontermIdent ->
                      ConstructorIdent ->
                      T_Error 
sem_Error_UndefAlt nt_ con_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 251, column 21)
                       _lhsOpp =
                           ({-# LINE 251 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["Constructor", getName con_, "of nonterminal" ,getName nt_, "is  not defined."
                                              ]
                                pat   =   "DATA" >#< getName nt_
                                      >-< indent 2 ("|" >#< getName con_ >#< "...")
                                help =  wfill ["There are rules for alternative", getName con_ , "of nonterminal" ,getName nt_
                                                      ,", but there is no definition for this alternative in the definitions of the"
                                                      ,"nonterminal" , getName nt_, ". Maybe you misspelled it? Otherwise insert a definition."
                                                      ]
                                act  = wfill ["All rules for the unknown alternative have been ignored."]
                            in ppError (isError _lhsIoptions _me) (getPos con_) mesg pat help act _lhsIverbose
                            {-# LINE 1374 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            UndefAlt nt_ con_
                            {-# LINE 1379 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 1384 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_UndefAttr :: NontermIdent ->
                       ConstructorIdent ->
                       Identifier ->
                       Identifier ->
                       Bool ->
                       T_Error 
sem_Error_UndefAttr nt_ con_ field_ attr_ isOut_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 346, column 21)
                       _lhsOpp =
                           ({-# LINE 346 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["Undefined"
                                              , if isOut_
                                                then showAttrDef field_ attr_
                                                else showAttrUse field_ attr_
                                              , "at constructor"
                                              , getName con_ , "of nonterminal",getName nt_, "."
                                              ]
                                pat   = "SEM" >#< getName nt_
                                      >-< indent 2 ("|" >#< getName con_ >#< "<field>.<attr> = "
                                                        >#< "..." >#< ppAttrUse field_ attr_ >#< "...")
                                help =  wfill ["A rule in the definitions for alternative" , getName con_ ,"of nonterminal"
                                              ,getName  nt_ , "contains an attribute that is not defined"
                                              ,"Maybe you misspelled it?"
                                              ,"Otherwise either remove the rule or add an appropriate attribute definition."
                                              ]
                                act  = wfill ["The generated program will not run."]
                            in ppError (isError _lhsIoptions _me) (getPos attr_) mesg pat help act _lhsIverbose
                            {-# LINE 1417 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            UndefAttr nt_ con_ field_ attr_ isOut_
                            {-# LINE 1422 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 1427 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_UndefChild :: NontermIdent ->
                        ConstructorIdent ->
                        Identifier ->
                        T_Error 
sem_Error_UndefChild nt_ con_ name_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 263, column 21)
                       _lhsOpp =
                           ({-# LINE 263 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["Constructor", getName con_, "of nonterminal" ,getName nt_
                                              , "does not have a nontrivial field named", getName name_ , "."
                                              ]
                                pat   =   "SEM" >#< nt_
                                      >-< indent 2 ("|" >#< getName con_ >#< ppAttr name_ (identifier "<attr>") >#< "= ...")
                                help =  wfill ["There are rules that define or use attributes of field" , getName name_
                                                      ,"in alternative" , getName con_ , "of nonterminal" , getName nt_
                                                      ,", but there is no field with AG-type in the definition of the alternative."
                                                      ,"Maybe you misspelled it? Otherwise insert the field into the definition,"
                                                      ,"or change its type from an HS-type to an AG-type."
                                                      ]
                                act  = wfill ["All rules for the unknown field have been ignored."]
                            in ppError (isError _lhsIoptions _me) (getPos name_) mesg pat help act _lhsIverbose
                            {-# LINE 1454 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            UndefChild nt_ con_ name_
                            {-# LINE 1459 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 1464 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_UndefLocal :: NontermIdent ->
                        ConstructorIdent ->
                        Identifier ->
                        T_Error 
sem_Error_UndefLocal nt_ con_ var_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 317, column 21)
                       _lhsOpp =
                           ({-# LINE 317 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["Undefined local variable or field",getName var_, "at constructor"
                                              , getName con_ , "of nonterminal",getName nt_, "."
                                              ]
                                pat   = "SEM" >#< getName nt_
                                      >-< indent 2 ("|" >#< getName con_ >#< "<field>.<attr> = "
                                                        >#< "..." >#< "@" >|< getName var_ >#< "..." )
                                help =  wfill ["A rule in the definitions for alternative" , getName con_ ,"of nonterminal"
                                              , getName nt_ , "contains a local variable or field name that is not defined. "
                                              ,"Maybe you misspelled it?"
                                              ,"Otherwise either remove the rule or add an appropriate definition."
                                              ]
                                act  = wfill ["The generated program will not run."]
                            in ppError (isError _lhsIoptions _me) (getPos var_) mesg pat help act _lhsIverbose
                            {-# LINE 1491 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            UndefLocal nt_ con_ var_
                            {-# LINE 1496 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 1501 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
sem_Error_UndefNont :: NontermIdent ->
                       T_Error 
sem_Error_UndefNont nt_  =
    (T_Error (\ _lhsIoptions
                _lhsIverbose ->
                  (let _lhsOpp :: PP_Doc
                       _lhsOme :: Error 
                       -- "PrintErrorMessages.ag"(line 241, column 21)
                       _lhsOpp =
                           ({-# LINE 241 "PrintErrorMessages.ag" #-}
                            let mesg  = wfill ["Nonterminal", getName nt_, "is not defined."
                                              ]
                                pat   = "DATA" >#< getName nt_ >#< "..."
                                help =  wfill ["There are attributes and/or rules for nonterminal" , getName nt_  ,", but there is no definition"
                                                      , "for" ,getName  nt_, ". Maybe you misspelled it? Otherwise insert a definition."
                                                      ]
                                act  = wfill ["Everything regarding the unknown nonterminal has been ignored."]
                            in ppError (isError _lhsIoptions _me) (getPos nt_) mesg pat help act _lhsIverbose
                            {-# LINE 1521 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _me =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            UndefNont nt_
                            {-# LINE 1526 "PrintErrorMessages.hs" #-})
                       -- self rule
                       _lhsOme =
                           ({-# LINE 60 "PrintErrorMessages.ag" #-}
                            _me
                            {-# LINE 1531 "PrintErrorMessages.hs" #-})
                   in  ( _lhsOme,_lhsOpp))) )
-- Errors ------------------------------------------------------
{-
   visit 0:
      inherited attribute:
         options              : Options
      synthesized attribute:
         pp                   : PP_Doc
   alternatives:
      alternative Cons:
         child hd             : Error 
         child tl             : Errors 
         visit 0:
            local verbose     : _
      alternative Nil:
         visit 0:
            local verbose     : _
-}
-- cata
sem_Errors :: Errors  ->
              T_Errors 
sem_Errors list  =
    (Prelude.foldr sem_Errors_Cons sem_Errors_Nil (Prelude.map sem_Error list) )
-- semantic domain
newtype T_Errors  = T_Errors (Options ->
                              ( PP_Doc))
data Inh_Errors  = Inh_Errors {options_Inh_Errors :: Options}
data Syn_Errors  = Syn_Errors {pp_Syn_Errors :: PP_Doc}
wrap_Errors :: T_Errors  ->
               Inh_Errors  ->
               Syn_Errors 
wrap_Errors (T_Errors sem ) (Inh_Errors _lhsIoptions )  =
    (let ( _lhsOpp) =
             (sem _lhsIoptions )
     in  (Syn_Errors _lhsOpp ))
sem_Errors_Cons :: T_Error  ->
                   T_Errors  ->
                   T_Errors 
sem_Errors_Cons (T_Error hd_ ) (T_Errors tl_ )  =
    (T_Errors (\ _lhsIoptions ->
                   (let _lhsOpp :: PP_Doc
                        _hdOoptions :: Options
                        _hdOverbose :: Bool
                        _tlOoptions :: Options
                        _hdIme :: Error 
                        _hdIpp :: PP_Doc
                        _tlIpp :: PP_Doc
                        -- "PrintErrorMessages.ag"(line 67, column 8)
                        _verbose =
                            ({-# LINE 67 "PrintErrorMessages.ag" #-}
                             verbose _lhsIoptions
                             {-# LINE 1583 "PrintErrorMessages.hs" #-})
                        -- use rule "PrintErrorMessages.ag"(line 63, column 49)
                        _lhsOpp =
                            ({-# LINE 63 "PrintErrorMessages.ag" #-}
                             _hdIpp >-< _tlIpp
                             {-# LINE 1588 "PrintErrorMessages.hs" #-})
                        -- copy rule (down)
                        _hdOoptions =
                            ({-# LINE 59 "PrintErrorMessages.ag" #-}
                             _lhsIoptions
                             {-# LINE 1593 "PrintErrorMessages.hs" #-})
                        -- copy rule (from local)
                        _hdOverbose =
                            ({-# LINE 59 "PrintErrorMessages.ag" #-}
                             _verbose
                             {-# LINE 1598 "PrintErrorMessages.hs" #-})
                        -- copy rule (down)
                        _tlOoptions =
                            ({-# LINE 63 "PrintErrorMessages.ag" #-}
                             _lhsIoptions
                             {-# LINE 1603 "PrintErrorMessages.hs" #-})
                        ( _hdIme,_hdIpp) =
                            (hd_ _hdOoptions _hdOverbose )
                        ( _tlIpp) =
                            (tl_ _tlOoptions )
                    in  ( _lhsOpp))) )
sem_Errors_Nil :: T_Errors 
sem_Errors_Nil  =
    (T_Errors (\ _lhsIoptions ->
                   (let _lhsOpp :: PP_Doc
                        -- "PrintErrorMessages.ag"(line 67, column 8)
                        _verbose =
                            ({-# LINE 67 "PrintErrorMessages.ag" #-}
                             verbose _lhsIoptions
                             {-# LINE 1617 "PrintErrorMessages.hs" #-})
                        -- use rule "PrintErrorMessages.ag"(line 63, column 49)
                        _lhsOpp =
                            ({-# LINE 63 "PrintErrorMessages.ag" #-}
                             text ""
                             {-# LINE 1622 "PrintErrorMessages.hs" #-})
                    in  ( _lhsOpp))) )