One possible solution that occurred to me was to replace the '{' with some unique text that couldn't possibly occur in newLISP source code, then to replace it again once I'd finished the other characters. But is this the most efficient way of doing a sequence of changes? It looks inefficient as well, but perhaps it isn't.
Code: Select all
(set 'c to some string)
(set 'uuid1 (uuid))
(set 'uuid2 (uuid))
(replace "{" c uuid1)
(replace "}" c uuid2)
(replace {\} c {\letterbackslash{}})
(replace {$} c {\letterdollar{}} )
(replace {#} c {\letterhash{}})
(replace {!} c {\letterexclamationmark{}} )
(replace {|} c {\letterbar{}})
(replace {@} c {\letterat{}})
(replace {^} c {\letterhat{}})
(replace "%" c {\letterpercent{}} )
(replace "/" c {\letterslash{}} )
(replace "<" c {\letterless{}} )
(replace ">" c {\lettermore{}} )
(replace "~" c {\lettertilde{}} )
(replace "&" c {\letterampersand{}})
(replace "?" c {\letterquestionmark{}})
(replace "_" c {\letterunderscore{}})
(replace "’" c {\lettersinglequote{}})
; finally, replace the { and }
(replace uuid1 c {\letteropenbrace{}})
(replace uuid2 c {\letterclosebrace{}})