请教如果想在新的语言当中定义新的多元运算符一般采用什么形式?

发布于 2022-09-15 00:15:55 字数 77 浏览 8 评论 9

在一个新的语言中想要定义新的多元运算符一般采用什么形式? 这种知识一般在那方面的书上可以看到? 离散数学?形式语言?  请高手指点一二

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

幼儿园老大 2022-09-19 17:38:12

回复 8# cjaizss 对  哈哈  不过不知道一般这种多元运算符定义的时候采用什么形式

蓝眼睛不忧郁 2022-09-19 17:38:12

真没觉得非要从函数中剥离出来有什么实际用途

不疑不惑不回忆 2022-09-19 17:38:00

有点类似于C++的符号重载对吗?和C++不同的,你可以在用该语言写程序的时候自己造操作符,对不?其实和函数真没有什么不同,只是在这种新的语言的语法种稍有不同而已 ,规约的方法稍有不同,规约之后和函数一样处理罢了.

分分钟 2022-09-19 17:37:57

回复 4# EricFisher
那个应该是语法设计者的事情。好像需要很深形式语言基础才能设计语法的。那样的设计可以保证运算符的优先级和结合性,我自己猜的。

岁月染过的梦 2022-09-19 17:37:34

回复 5# cjaizss
想做一个表达式分析器,提供一些新的多元运算符。在实现功能上和函数是一样的。

_失温 2022-09-19 16:43:17

函数不就行了?

眼眸里的快感 2022-09-19 16:22:49

本帖最后由 prolj 于 2010-10-14 11:19 编辑

哦,其实我一直好奇,语法规则是如何设计的,比如现有的c语法,为什么就是这样:

(6.5.1) primary-expression:
               identifier
               constant
               string-literal
               ( expression )

(6.5.2) postfix-expression:
               primary-expression
               postfix-expression [ expression ]
               postfix-expression ( argument-expression-listopt )
               postfix-expression . identifier
               postfix-expression -> identifier
               postfix-expression ++
               postfix-expression --
               ( type-name ) { initializer-list }
               ( type-name ) { initializer-list , }

(6.5.2) argument-expression-list:
               assignment-expression
               argument-expression-list , assignment-expression

(6.5.3) unary-expression:
               postfix-expression
               ++ unary-expression
               -- unary-expression
               unary-operator cast-expression
               sizeof unary-expression
               sizeof ( type-name )

(6.5.3) unary-operator: one of
               & * + - ~              !

(6.5.4) cast-expression:
               unary-expression
               ( type-name ) cast-expression

(6.5.5) multiplicative-expression:
               cast-expression
               multiplicative-expression * cast-expression
               multiplicative-expression / cast-expression
               multiplicative-expression % cast-expression

(6.5.6) additive-expression:
                multiplicative-expression
                additive-expression + multiplicative-expression
                additive-expression - multiplicative-expression
(6.5.7) shift-expression:
                additive-expression
                shift-expression << additive-expression
                shift-expression >> additive-expression

(6.5.8) relational-expression:
                shift-expression
                relational-expression     shift-expression
                                       <
                relational-expression     shift-expression
                                       >
                relational-expression     shift-expression
                                       <=
                relational-expression     shift-expression
                                       >=

(6.5.9) equality-expression:
                relational-expression
                equality-expression == relational-expression
                equality-expression != relational-expression

(6.5.10) AND-expression:
                equality-expression
                AND-expression & equality-expression

(6.5.11) exclusive-OR-expression:
                AND-expression
                exclusive-OR-expression ^ AND-expression

(6.5.12) inclusive-OR-expression:
                exclusive-OR-expression
                inclusive-OR-expression | exclusive-OR-expression

(6.5.13) logical-AND-expression:
                inclusive-OR-expression
                logical-AND-expression && inclusive-OR-expression

(6.5.14) logical-OR-expression:
                logical-AND-expression
                logical-OR-expression || logical-AND-expression

(6.5.15) conditional-expression:
                logical-OR-expression
                logical-OR-expression ? expression : conditional-expression

(6.5.16) assignment-expression:
              conditional-expression
              unary-expression assignment-operator assignment-expression

(6.5.16) assignment-operator: one of
              = *= /= %= +=            -=    <<=    >>=   &=    ^=    |=

(6.5.17) expression:
              assignment-expression
              expression , assignment-expression

(6.6) constant-expression:
              conditional-expression

风轻花落早 2022-09-19 15:53:05

回复 2# EricFisher

    比如c语言中的?:就是个三目的运算符 。 想法是可以设定比三更大的数目,假如是五元的,那么就让给出的五个操作数进行我所指定的操作。具体操作的含义可以是很复杂的,不局限于基本的算术和逻辑运算,有点儿像多元函数的意思。
   我有这样的想法:加入有一个5元运算符,采用这样的形式  operater: arg1,arg2,arg3,arg4,arg5 然后让5个参数执行我所指定的操作。
   可不可以采用下面这种形式,即用空格来代替:和,   
   operater  arg1  arg2  arg3 arg4 arg5

苦妄 2022-09-18 05:38:16

多元运算符?能举个例子么?

看起来是要扩展语言,增加一种表达式,要作词法,语法分析。。。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文