是否有一种编程语言,您可以在其中设置自己的语法配置,并将代码转换为您选择的语言?
例如,您可以选择特定的配置,如“Python的索引块”、[a,b,c]初始化数组、用于指数运算的^等。一个脚本会把它转换成你选择的语言的等价物。
发布于 2012-01-21 17:24:00
是的,但可能不是你想的那样。
Lisp及其相关的宏系统功能强大,可以对源执行任意转换,因此原则上您可以使用宏(以及字符级的读取器宏)来进行您喜欢的任何扩展。反义词语 (以及相关领域的作者编写的语言)具有类似元编程功能的潜力。这方面的一个很好的例子是第四,其中许多语法结构(如注释)可以由用户定义。对于一个当代的、非深奥的例子,还有一项工作是在Perl 5的基础上改进Perl 6对用户定义语法的支持。
发布于 2012-01-22 01:18:39
听起来像概念规划。
我不太熟悉它,但是XL是一种专门为它设计的语言。
XL功能程序员-可重构的语法和语义。编译器插件可用于向语言添加新功能。
Lisp和Forth也支持概念编程,尽管小于XL。我建议Lisp因为它是非常实用和有效的。最重要的是一个清晰灵活的语法,而不是Lisp提供的符号。
例如,您可以选择特定的配置,如“Python的索引块”、"a、b、c“初始化数组、"^”进行指数运算等。
您可能对Haskell这样的语言感兴趣,它具有非常灵活但统一的语法。
发布于 2012-01-22 00:24:25
据我所知不是。
我也不认为这是一个特别好的主意--标准语言语法的主要好处之一是很多人都能读懂它,如果每个人都发明了自己的语法,那么没有人能够理解其他人的代码……因此,这种语言对一个爱好者来说可能很有趣,但对任何实际应用来说却没有多大用处。
最接近的可能是Lisp,宏系统允许您以非常灵活的方式编写自己的新语言结构。通常,您仍然坚持Lisp语法,但是如果您真的愿意的话,可以有效地重新定义所有内容。
因此,Lisps在实现DSL方面特别受欢迎。一个很好的例子是这个Clojure中的数据访问DSL (Korma),它负责数据库访问所需的所有样板代码。
https://softwareengineering.stackexchange.com/questions/131196
复制相似问题