PowerShell 言語仕様では、文法には「一次式」と呼ばれる用語があります。
一次式: 価値 会員アクセス 要素アクセス 呼び出し式 ポストインクリメント式 減分後式
意味的に、説明することを意図した主な表現は何ですか?
PowerShell 言語仕様では、文法には「一次式」と呼ばれる用語があります。
一次式: 価値 会員アクセス 要素アクセス 呼び出し式 ポストインクリメント式 減分後式
意味的に、説明することを意図した主な表現は何ですか?
私の理解では、式はコマンド/引数および/または演算子/オペランドの配置であり、一緒に実行してアクションを実行するか、結果を生成します (たとえ $null であっても) 変数またはパイプラインを下に送ります。「一次式」という用語は、式全体を、その中に含まれる可能性のあるサブ式 $() と区別するために使用されます。
私が理解しているように、これには2つの部分があります。
正式な文法は式などを分割するため、演算子の優先順位は暗黙的です。
例えば。文法があれば
expression:
value
expression * expression
expression + expression
…
*
よりも優先順位が高いと定義するには、別のメカニズムが必要です+
。これは、ツールを使用して文法をトークナイザー/パーサーに直接変換する場合に重要になります。1
非常に多くの異なる特定のルール (PowerShell の演算子の数を考慮してください) があるため、使用するルールの数を減らすと、各ルールが非常に長くなるため理解が難しくなります。
1これは PowerShell には当てはまらないと思われます。なぜなら、PowerShell はコンテキスト依存性が高いからです (エクスプレス モードとコマンド モード、そして非組み込みの実行可能ファイルの呼び出しを検討してください)。しかし、このような言語間での文法には多くの共通点があるため、スタイルも継承できます (車輪を再発明しないでください)。
$( 多数のステートメント ) は複雑な式のようになり、powershell ではほとんどのものは $a = if ($y) { 1 } else { 2} のような式になる可能性があるため、一次式はおそらく古典的な式の最小公分母です。明示的な値、何かを呼び出す.. 変数の取得、変数 $xy からのプロパティ、またはインクリメント操作 $z++ の結果など、値を返す単一のものですが、単純な数学の「式」でさえ、これと一致しません+2 + (3 / 4 ) 、それはより複雑な式になります。
だから私はその背後にある理由を考えていました. 最初は、コマンド/式モードを決定するのに役立つ可能性があると言われましたが、調査するとそうではありませんでした. 次に、コマンド モードで明示的に引数として渡すことができるものだと思いましたが、そうではありません。コマンドレットにパラメーターとして $x++ を渡すと、文字列が得られるからです。
それはおそらく式の最小公分母であり、構成要素であると思います。次の問題は、文法には他にどのような式が含まれているのか、そしてこの式はどこで使用されているのかということです。