这个问题可能很幼稚,所以请随时向我提问。我是从数学背景来学习计算机科学的,所以人们一直告诉我,Haskell之类的函数式编程语言对我来说会很自然,但是我发现许多语言(不仅是函数式语言)的语法非常丑陋且不直观。
[在Haskell中,举一个小例子,类型声明用::
编写,例如
str :: String
str = "Hello, World!"
我有没有办法在自己的系统中修改语法,以便::
的功能可以由诸如:::
或;;
或更佳的:is_a:
之类的其他东西执行,所以我可以执行与上述相同的功能:
str ::: String
str = "Hello, World!"
明确地说,如果我修改系统中的语法,就共享代码的困难我不会担心任何务实的担忧;我只是想知道理论上是否可以修改编程语言的基本语法,如果可以,如何进行修改。
请随时修改标签,或要求澄清。
绝对有可能重新定义编程语言的语法。在这种情况下,您正在做的是发明一种新的编程语言,该语言具有与原始语言相同的功能,但是语言构造的语法不同。
这不是一件很简单的事情,但这是两种可能的方法:
您可以编写一个程序,以新的语法读取文件,对其进行解析,然后将其转换为具有原始语言的文件。那时可以使用原始的编译器/解释器。
这种方法的主要优点是您只需要提供翻译即可。其他一切都可以重用。
主要缺点是您仍然会遇到大多数错误消息(例如,键入错误),这些错误消息指向翻译并提及原始语言的语法。您也许可以将它们翻译回去,但这取决于语法的差异。
没有什么可以阻止您下载GHC源代码(或GCC或...)并修改其解析器和漂亮的打印机以使用新语法。您必须找到正确的位置来在大量文件中进行修改,但是可以做到这一点。
这里的主要缺点是,每当发布新版本的GHC或坚持使用较旧的版本时,您都必须重新合并更改。
具有良好的语法很不错,但并不重要。如今,PL理论的研究人员从不讨论语法问题,而只讨论语义问题:新功能,新类型,新优化等。
如果愿意,可以随意修改任何语言的语法。这可能是一个有趣的项目,这是一种挑战自我的方式,足以理解庞大的代码库,足以在此处和此处进行一些更改。但是请记住,其他人很可能不想阅读用您自己的语法编写的代码:周围已经有太多的语言,而为一种已知的语言学习新的语法可能会被视为浪费精力,可以用来学习真正的新东西。
这是一个非常广泛的主题,您可能会在Stack Exchange的软件工程和计算机科学论坛上获得更多详细的答案。但我会尝试给出一些指示。