是否有任何现有语言可供程序员随时更改语言的语法?
这意味着可以用自己喜欢的语法编写语言,并且有一些翻译器将其翻译回某些“标准代码”,可以编译或解释。
代码也是可读的,因为“标准代码”可以转换为另一个编码器喜欢的代码版本。
我有这个问题,因为有些人可能喜欢语言的设计,但不喜欢语法。 (例如,Lisp用[]代替(),Lisp用f(x)代替(f x))。
此外,如果有人能就此类主题提供一些学术资源,那就太好了。
编辑:我找到了一个,FreeForm。
答案 0 :(得分:6)
在Lisp的具体案例中:
答案 1 :(得分:2)
有各种各样的东西倾向于那个方向......但我怀疑我的名单会受到“哦不,这根本不是魔法!”综合征。
但是...
答案 2 :(得分:1)
你的问题需要澄清一些。
转化(f x) <---> f(x)
似乎被命名为镜头,而不是语法糖。镜片是双向转换,其中语法糖通常被认为是单向转换。 Boomerang项目提供了一些制作镜头的工具;这里列出了一些研究论文:http://www.seas.upenn.edu/~harmony/。尽管如此,我同意某些语法糖可以用作镜片。
一般来说,允许在同一个地方同时使用“含糖”和“脱糖”的句法形式,而f(x)
和(f x)
似乎是相互排斥的。 (f x g(h y))
是(f x g (h y))
还是(f x (g h y))
?是的,您可以通过将空间视为重要来消除歧义,但存在一些缺点。
在任何时候改变语言语法都是另一回事。这样的内联子句作为“现在忘记(f x)语法并使用f(x)语法”可能被视为不一致的来源;另一方面,诸如“使用二元运算符#$扩展当前二元运算符集”之类的子句可能被视为一个有用的特性。
需要进一步澄清。
我打算列出所有可以在进一步澄清之后改变其语法的语言;可能,这将是http://programmers.stackexchange.com
的新问题