Translate.hs revision 658187feb755694eb5ff29561bda7109c22c743c
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd{- |
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndModule : $Header$
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndDescription : create legal THF mixfix identifier
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndCopyright : (c) A. Tsogias, DFKI Bremen 2011
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndLicense : GPLv2 or higher, see LICENSE.txt
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndMaintainer : Alexis.Tsogias@dfki.de
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndStability : provisional
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndPortability : portable
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndtranslate 'Id' to THF Constant
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd-}
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndmodule THF.Translate where
27e52281f1522522b170cafc76b08b58aa70ccaand
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndimport Common.Id
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndimport Common.Result
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd
4b5981e276e93df97c34e4da05ca5cf8bbd937dandimport HasCASL.Builtin
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndimport HasCASL.AsUtils
9472e4d3c410be3b3f1addbf3b1db1769f64e765nd
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndimport THF.As as THFAs
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd
7f5b59ccc63c0c0e3e678a168f09ee6a2f51f9d0ndimport Data.Char
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndimport qualified Data.Map as Map
fac8c35bfb158112226ab43ddf84d59daca5dc30nd
f086b4b402fa9a2fefc7dda85de2a3cc1cd0a654rjung
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndmkTypesName :: THFAs.Constant -> THFAs.Name
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)
4b575a6b6704b516f22d65a3ad35696d7b9ba372rpluem
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndmkConstsName :: THFAs.Constant -> THFAs.Name
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)
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndmkDefName :: THFAs.Constant -> THFAs.Name
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)
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd
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
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd
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
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd
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
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndstringToConstant :: String -> THFAs.Constant
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndstringToConstant = A_Lower_Word . stringToLowerWord
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndstringToLowerWord :: String -> THFAs.LowerWord
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndstringToLowerWord (c1 : rc) = toLower c1 : rc
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndstringToVariable :: String -> THFAs.Variable
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndstringToVariable (c1 : rc) = toUpper c1 : rc
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd
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
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd
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
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndisTHFChar :: Char -> Bool
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndisTHFChar c = (isAlphaNum c && isAscii c) || c == '_'
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndisLowerTHFChar :: Char -> Bool
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndisLowerTHFChar c = isLower c && isAscii c
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd
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__") ]
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd
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) ]
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndmaybeElem :: Id -> Map.Map Id a -> Maybe a
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndmaybeElem i m = helper i (Map.toList m)
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd where
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
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndmyEqId :: Id -> Id -> Bool
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndmyEqId (Id t1 c1 _) (Id t2 c2 _) = (t1, c1) == (t2, c2)
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34nd-- | a separate Map speeds up lookup
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndcharMap :: Map.Map Char String
97a3ecc40b65d5f8e865bbe0b1c9325d8c016e34ndcharMap = Map.fromList
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"),
('\254', "Thorn"),
('\255', "Yuml")]