相关疑难解决方法(0)

有什么理由我无法创建支持中缀,后缀和前缀功能的语言,还有更多?

我一直在考虑创建一种非常适合创建DSL的语言,允许定义中缀,后缀,前缀或甚至由多个单词组成的函数.例如,您可以按如下方式定义中缀乘法运算符(其中已定义了乘法(X,Y)):

a * b => multiply(a,b)
Run Code Online (Sandbox Code Playgroud)

或后缀"平方"运算符:

a squared => a * a
Run Code Online (Sandbox Code Playgroud)

或者是C或Java风格的三元运算符,它包含两个散布着变量的关键字:

a ? b : c => if a==true then b else c
Run Code Online (Sandbox Code Playgroud)

显然,在这种语言中存在大量的歧义空间,但如果它是静态类型的(使用类型推断),那么大多数歧义可以被消除,而剩下的那些可以被认为是语法错误(通过添加括号来纠正适当).

有什么理由我没有看到这会使这个极其困难,不可能,或者只是一个简单的坏主意?

编辑:很多人都指出了可以做到这一点或类似事情的语言,但我实际上对如何实现自己的解析器的指针感兴趣,或者如果这样做我可能会遇到的问题.

syntax parsing programming-languages infix-notation postfix-notation

5
推荐指数
1
解决办法
890
查看次数