Translate.hs revision 658187feb755694eb5ff29561bda7109c22c743c
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndModule : $Header$
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndDescription : create legal THF mixfix identifier
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndCopyright : (c) A. Tsogias, DFKI Bremen 2011
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndLicense : GPLv2 or higher, see LICENSE.txt
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndMaintainer : Alexis.Tsogias@dfki.de
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndStability : provisional
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndPortability : portable
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndtranslate 'Id' to THF Constant
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndimport THF.As as THFAs
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndimport qualified Data.Map as Map
4b575a6b6704b516f22d65a3ad35696d7b9ba372rpluemmkTypesName c = case c of
4b575a6b6704b516f22d65a3ad35696d7b9ba372rpluem A_Lower_Word w -> N_Atomic_Word $ A_Lower_Word ("type_" ++ w)
4b575a6b6704b516f22d65a3ad35696d7b9ba372rpluem A_Single_Quoted s -> N_Atomic_Word $ A_Single_Quoted ("type_" ++ s)
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndmkConstsName c = case c of
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd A_Lower_Word w -> N_Atomic_Word $ A_Lower_Word ("const_" ++ w)
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd A_Single_Quoted s -> N_Atomic_Word $ A_Single_Quoted ("const_" ++ s)
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndmkDefName c = case c of
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd A_Lower_Word w -> N_Atomic_Word $ A_Lower_Word ("def_" ++ w)
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd A_Single_Quoted s -> N_Atomic_Word $ A_Single_Quoted ("def_" ++ s)
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndtransTypeId :: Id -> Result THFAs.Constant
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndtransTypeId id = case maybeElem id preDefHCTypeIds of
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd Just res -> return $ stringToConstant res
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd Nothing -> case transToTHFString $ show id of
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd Just s -> return $ stringToConstant s
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd Nothing -> fatal_error ("Unable to translate " ++ show id ++
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd " into a THF valide Constant.") nullRange
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndtransAssumpId :: Id -> Result THFAs.Constant
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndtransAssumpId id = case maybeElem id preDefHCAssumpIds of
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd Just res -> return $ stringToConstant res
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd Nothing -> case transToTHFString $ show id of
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd Just s -> return $ stringToConstant s
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd Nothing -> fatal_error ("Unable to translate " ++ show id ++
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd " into a THF valide Constant.") nullRange
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndtransAssumpsId :: Id -> Int -> Result THFAs.Constant
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndtransAssumpsId id int = if int == 1 then transAssumpId id else
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd case transToTHFString $ show id of
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd Just s -> return $ stringToConstant (s ++ show int)
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd Nothing -> fatal_error ("Unable to translate " ++ show id ++
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd " into a THF valide Constant.") nullRange
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndstringToConstant :: String -> THFAs.Constant
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndstringToConstant = A_Lower_Word . stringToLowerWord
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndstringToLowerWord :: String -> THFAs.LowerWord
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndstringToLowerWord (c1 : rc) = toLower c1 : rc
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndstringToVariable :: String -> THFAs.Variable
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndstringToVariable (c1 : rc) = toUpper c1 : rc
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndtransVarId :: Id -> Result THFAs.Variable
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndtransVarId id = case transToTHFString $ show id of
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd Just s -> return $ stringToVariable s
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd Nothing -> fatal_error ("Unable to translate " ++ show id ++
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd " into a THF valide Variable.") nullRange
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndtransToTHFString :: String -> Maybe String
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndtransToTHFString s = case s of
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd [] -> Just []
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd (c : rc) ->
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd if isTHFChar c
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd then fmap (c :) (transToTHFString rc)
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd else case Map.lookup c charMap of
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd Just res -> fmap (res ++) (transToTHFString rc)
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd Nothing -> Nothing
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndisTHFChar :: Char -> Bool
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndisTHFChar c = (isAlphaNum c && isAscii c) || c == '_'
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndisLowerTHFChar :: Char -> Bool
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndisLowerTHFChar c = isLower c && isAscii c
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndpreDefHCTypeIds :: Map.Map Id String
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndpreDefHCTypeIds = Map.fromList
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd [ (logId, "hct" ++ show logId)
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (predTypeId, "hct" ++ show predTypeId)
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (unitTypeId, "hct" ++ show unitTypeId)
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (lazyTypeId, "hctLazy")
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (arrowId FunArr, "hct__FunArr__")
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (arrowId PFunArr, "hct__PFunArr__")
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (arrowId ContFunArr, "hct__ContFunArr__")
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (arrowId PContFunArr, "hct__PContFunArr__")
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (productId 2 nullRange, "hct__X__")
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (productId 3 nullRange, "hct__X__X__")
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (productId 4 nullRange, "hct__X__X__X__")
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (productId 5 nullRange, "hct__X__X__X__X__") ]
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndpreDefHCAssumpIds :: Map.Map Id String
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndpreDefHCAssumpIds = Map.fromList
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd [ (botId, "hcc" ++ show botId)
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (defId, "hcc" ++ show defId)
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (notId, "hcc" ++ show notId)
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (negId, "hccNeg__")
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (whenElse, "hcc" ++ show whenElse)
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (trueId, "hcc" ++ show trueId)
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (falseId, "hcc" ++ show falseId)
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (eqId, "hcc__Eq__")
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (exEq, "hcc__ExEq__")
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (resId, "hcc" ++ show resId)
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (andId, "hcc__And__")
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (orId, "hcc__Or__")
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (eqvId, "hcc__Eqv__")
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (implId, "hcc__Impl__")
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd , (infixIf, "hcc" ++ show infixIf) ]
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndmaybeElem :: Id -> Map.Map Id a -> Maybe a
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndmaybeElem i m = helper i (Map.toList m)
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd helper :: Id -> [(Id, a)] -> Maybe a
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd helper id [] = Nothing
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd helper id ((eid, ea) : r) =
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd if myEqId id eid then Just ea else helper id r
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndmyEqId :: Id -> Id -> Bool
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndmyEqId (Id t1 c1 _) (Id t2 c2 _) = (t1, c1) == (t2, c2)
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd-- | a separate Map speeds up lookup
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndcharMap :: Map.Map Char String
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd [(' ' , "Space"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\n', "Newline"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\t', "Tab"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('!' , "Exclam"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('"' , "Quot"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('#' , "Hash"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('$' , "Dollar"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('%' , "Percent"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('&' , "Amp"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\'', "Apostrophe"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('(' , "OBr"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd (')' , "CBr"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('*' , "X"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('+' , "Plus"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd (',' , "Comma"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('-' , "Minus"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('.' , "Dot"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('/' , "Slash"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd (':' , "Colon"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd (';' , "Semi"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('<' , "Lt"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('=' , "Eq"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('>' , "Gt"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('?' , "Quest"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('@' , "At"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('[' , "OSqBr"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\\' , "Bslash"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd (']' , "CSqBr"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('^' , "Caret"), -- Hat?
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('`' , "Grave"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('{' , "LBrace"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('|' , "VBar"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('}' , "RBrace"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('~' , "Tilde"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\160', "Nbsp"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\161', "Iexcl"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\162', "Cent"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\163', "Pound"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\164', "Curren"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\165', "Yen"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\166', "Brvbar"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\167', "Sect"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\168', "Uml"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\169', "Copy"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\170', "Ordf"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\171', "Laquo"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\172', "Not"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\173', "Shy"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\174', "Reg"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\175', "Macr"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\176', "Deg"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\177', "Plusmn"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\178', "Sup2"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\179', "Sup3"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\180', "Acute"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\181', "Micro"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\182', "Para"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\183', "Middot"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\184', "Cedil"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\185', "Sup1"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\186', "Ordm"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\187', "Raquo"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\188', "Quarter"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\189', "Half"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\190', "Frac34"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\191', "Iquest"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\192', "Agrave"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\193', "Aacute"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\194', "Acirc"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\195', "Atilde"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\196', "Auml"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\197', "Aring"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\198', "AElig"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\199', "Ccedil"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\200', "Egrave"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\201', "Eacute"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\202', "Ecirc"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\203', "Euml"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\204', "Igrave"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\205', "Iacute"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\206', "Icirc"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\207', "Iuml"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\208', "ETH"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\209', "Ntilde"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\210', "Ograve"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\211', "Oacute"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\212', "Ocirc"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\213', "Otilde"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\214', "Ouml"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\215', "Times"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\216', "OSlash"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\217', "Ugrave"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\218', "Uacute"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\219', "Ucirc"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\220', "Uuml"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\221', "Yacute"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\222', "THORN"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\223', "Szlig"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\224', "Agrave"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\225', "Aacute"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\226', "Acirc"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\227', "Atilde"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\228', "Auml"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\229', "Aring"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\230', "Aelig"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\231', "Ccedil"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\232', "Egrave"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\233', "Eacute"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\234', "Ecirc"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\235', "Euml"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\236', "Igrave"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\237', "Iacute"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\238', "Icirc"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\239', "Iuml"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\240', "Eth"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\241', "Ntilde"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\242', "Ograve"),
9472e4d3c410be3b3f1addbf3b1db1769f64e765nd ('\243', "Oacute"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\244', "Ocirc"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\245', "Otilde"),
7f5b59ccc63c0c0e3e678a168f09ee6a2f51f9d0nd ('\246', "Ouml"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\247', "Divide"),
fac8c35bfb158112226ab43ddf84d59daca5dc30nd ('\248', "Oslash"),
f086b4b402fa9a2fefc7dda85de2a3cc1cd0a654rjung ('\249', "Ugrave"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\250', "Uacute"),
9c1260efa52c82c2a58e5b5f20cd6902563d95f5rbowen ('\251', "Ucirc"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\252', "Uuml"),
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd ('\253', "Yacute"),