括号内的关联性

问题描述 投票:0回答:2

此MSDN link说,“(”和“)”已经离开的左联。

请问该怎么做有意义吗?有人可以给我一个例子吗?

associative
2个回答
2
投票

在正式语法左到右的优先级操作是左递归。因此,与二进制加法:

S -> E
E -> E + a
E -> a

所以树将如下所示:

    S
    |
    E
    |
  E + a
  |
E + a
|
a

正如你所看到的前两个a的是后两个前加入。

对于右结合操作,你的语法将包含右递归。因此,与二进制幂:

S -> E
E -> a ** E
E -> a

随后您解析树将如下所示:

    S
    |
    E
    |
  a ** E
       |
     a ** E
          |
          a

正如你所看到的最后两个a的是指数化,第一次,那结果是第一a的力量(这是幂适当的关联性,顺便说一句)。

对于施加相同的图案三元和更高的运营商,递归规则要么是最左边的非终结或最右边的非终结。在一元运算符的情况下,虽然,它是否是左或右递归分别取决于是否在左侧或者非终结的权利。在( E )的情况下,存在在任一侧上的端子,和非终结符,虽然递归的,既不是左也不从视图,以便语法点右递归我认为MSDN文章已经任意地宣布它为“左向右“。

括号中的关联性对事实d之前评估在a+b+cd+(a+b+c)和对a+b+c的关联性没有影响,以及没有任何影响,所以我不知道对方是什么贾里德在谈论。


0
投票

什么是不清楚的吗?他们有一对,只要你有一个(你将有一个)。一旦他们进入你从左至右工作arythmatic所以如果你有d+(a+b+c)你会做a+b然后a+b的总和加入到c然后a,b,c的总和增加d

© www.soinside.com 2019 - 2024. All rights reserved.