像Haskell这样的语言允许您创建自己的运算符。以下答案解释了运算符中允许使用哪些标点字符:https://stackoverflow.com/a/10548541/783743
另一方面,像JavaScript这样的语言不允许您在变量名中使用标点符号($
旁边)。 [1]
我正在编写一个编译器,它将Haskell的一个子集编译为JavaScript,我不知道如何将运算符转换为有效的JavaScript标识符。
因此我决定将每个标点符号映射到基本的拉丁文小写字母(即a-z
)。例如:
& = a
| = l
@ = q
然而,我不是要为自己决定角色映射,而是首先想知道其他人是否已经做过同样的事情,或者是否有一个标准决定如何映射它们。
我意识到这个问题可能主要基于意见(由于某种原因,StackOverflow严格禁止)。因此,我只是在寻找规范性的答案,这些答案最终明确表示"这是做到这一点的方式" (也许有一个链接)。如果你想观看,那么你可以在评论中这样做。
我希望将19个字符映射到字母:
! # $ % & * + . / < = > ? @ \ ^ | - ~
虽然$
是JavaScript中标识符的有效字符,但将其映射到字母表也不错。
[1] 属性名称可以包含特殊字符,但这是一个丑陋的黑客。
答案 0 :(得分:3)
Ghc使用他们所谓的z编码。例如,>>=
编码为zgzgze
。见https://ghc.haskell.org/trac/ghc/wiki/Commentary/Compiler/SymbolNames