on master help sign in
javascript: check for keywords as identifiers
commit2407cbb89de7289fdfb330bf9e0ba34208760223 authorraichoo <raichoo@googlemail.com> dateMon 4 Feb 2013, 18:05 (14 years ago) parent3a27fde
1 file changed+50−3
src/IRTS/CodegenJavaScript.hs+50−3
src/IRTS/CodegenJavaScript.hs+50−3
@@ -51,7 +51,7 @@ codegenJavaScript definitions filename outputType = do
5151
5252translateIdentifier :: String -> String
5353translateIdentifier =
54− concatMap replaceBadChars
54+ replaceReserved . concatMap replaceBadChars
5555 where replaceBadChars :: Char -> String
5656 replaceBadChars ' ' = "_"
5757 replaceBadChars '_' = "__"
@@ -84,6 +84,53 @@ translateIdentifier =
8484 replaceBadChars c
8585 | isDigit c = "_" ++ [c] ++ "_"
8686 | otherwise = [c]
87+ replaceReserved s
88+ | s `elem` reserved = '_' : s
89+ | otherwise = s
90+ reserved = [ "break"
91+ , "case"
92+ , "catch"
93+ , "continue"
94+ , "debugger"
95+ , "default"
96+ , "delete"
97+ , "do"
98+ , "else"
99+ , "finally"
100+ , "for"
101+ , "function"
102+ , "if"
103+ , "in"
104+ , "instanceof"
105+ , "new"
106+ , "return"
107+ , "switch"
108+ , "this"
109+ , "throw"
110+ , "try"
111+ , "typeof"
112+ , "var"
113+ , "void"
114+ , "while"
115+ , "with"
116+
117+ , "class"
118+ , "enum"
119+ , "export"
120+ , "extends"
121+ , "import"
122+ , "super"
123+
124+ , "implements"
125+ , "interface"
126+ , "let"
127+ , "package"
128+ , "private"
129+ , "protected"
130+ , "public"
131+ , "static"
132+ , "yield"
133+ ]
87134
88135translateNamespace :: Name -> [String]
89136translateNamespace (UN _) = [idrNamespace]
@@ -112,8 +159,8 @@ translateConstant c =
112159
113160translateParameterlist =
114161 map translateParameter
115− where translateParameter (MN i name) = name ++ show i
116− translateParameter (UN name) = name
162+ where translateParameter (MN i name) = translateIdentifier name ++ show i
163+ translateParameter (UN name) = translateIdentifier name
117164
118165translateDeclaration :: ([String], SDecl) -> String
119166translateDeclaration (path, SFun name params stackSize body) =