@@ -51,7 +51,7 @@ codegenJavaScript definitions filename outputType = do
52translateIdentifier :: String -> String
52translateIdentifier :: String -> String
53translateIdentifier =
53translateIdentifier =
54− concatMap replaceBadChars
54+ replaceReserved . concatMap replaceBadChars
55 where replaceBadChars :: Char -> String
55 where replaceBadChars :: Char -> String
56 replaceBadChars ' ' = "_"
56 replaceBadChars ' ' = "_"
57 replaceBadChars '_' = "__"
57 replaceBadChars '_' = "__"
@@ -84,6 +84,53 @@ translateIdentifier =
84 replaceBadChars c
84 replaceBadChars c
85 | isDigit c = "_" ++ [c] ++ "_"
85 | isDigit c = "_" ++ [c] ++ "_"
86 | otherwise = [c]
86 | otherwise = [c]
88+ | s `elem` reserved = '_' : s
88translateNamespace :: Name -> [String]
135translateNamespace :: Name -> [String]
89translateNamespace (UN _) = [idrNamespace]
136translateNamespace (UN _) = [idrNamespace]
@@ -112,8 +159,8 @@ translateConstant c =
113translateParameterlist =
160translateParameterlist =
114 map translateParameter
161 map translateParameter
115− where translateParameter (MN i name) = name ++ show i
162+ where translateParameter (MN i name) = translateIdentifier name ++ show i
116− translateParameter (UN name) = name
163+ translateParameter (UN name) = translateIdentifier name
118translateDeclaration :: ([String], SDecl) -> String
165translateDeclaration :: ([String], SDecl) -> String
119translateDeclaration (path, SFun name params stackSize body) =
166translateDeclaration (path, SFun name params stackSize body) =