2013-03-28 41 views
3

在PowerShell语言规范中,该语法有一个名为“主表达式”的术语。什么是“主要表达”?

 
primary-expression: 
    value 
    member-access 
    element-access 
    invocation-expression 
    post-increment-expression 
    post-decrement-expression 

从语义上讲,主要表达是用来描述什么?

+0

我认为这是可以在使用'_ $'的表达式中引用的东西。 – RinoTom 2013-03-28 09:27:44

+0

看起来像是决定主表达式应该被当作命令还是表达式的优先化测试路径,不是吗? – x0n 2013-03-28 16:09:45

回答

1

据我所知有两个部分是:

  1. 形式文法分手之类的表达式,所以运算符优先级是隐含的。

    例如,如果语法有

    expression: 
        value 
        expression * expression 
        expression + expression 
        … 
    

    有将需要一个单独的机制来定义*为比+具有较高的优先级。当使用工具将语法直接转换为记号器/解析器时,这个 变得重要。

  2. 有这么多不同的具体规则(考虑运营商在PowerShell中的号码),使用较少的规则将更难理解,因为每个规则会这么长。


我怀疑,因为它是高度上下文相关的(表达VS命令模式,然后再考虑调用非内置的可执行文件),这不是使用PowerShell的情况。但是跨语言的这种语法往往有很多共同点,所以风格也可以结转(不要重新发明轮子)。

1

我对它的解释是表达式是一个命令/参数和/或操作符/操作数的排列,它们一起执行和执行一个操作或产生一个结果(即使它是$ null)到一个变量或发送管道。术语“主表达式”用于将整个表达式与可能包含在其中的任何子表达式$()区分开来。

0

思$(大量的语句)会是这样一个复杂的表达式 和的powershell大多数事情可以像 $ A =一个表达式如果($ y)的{1}否则{2} 所以主要表达是可能经典表达式的最小公分母 单个函数返回值 是否显式值,调用某事物..从变量$ xy调用某个变量或属性,或者增量操作的结果$ z ++ 但是即使是一个简单的数学“表达”不会匹配这个4 +2 +(3/4),那更像是一个复杂的表达式。

所以我想到了它背后的原因,起初有人提到它可能有助于确定命令/表达模式,但调查不是这样。然后,我想也许这是什么可以在命令模式作为参数显式传递,但那不是,因为如果您将$ x ++作为参数传递给cmdlet,您将获得一个字符串。

我认为它可能只是表达式的最小公分母,因此下一个问题是语法中包含的其他表达式,以及它在哪里使用?