構文チェックでのプロパティ名

プロパティ名に関する構文の検証を正確に実行するために、プロパティ名がリテラルでなく関数の結果であるまれな場合には、プロパティ名を必要とする関数が部分的に評価されます。

次の例を確認してください。

  • PropValue(Concat(Core.Abbrev))は有効ですが、プロパティ名を検証するにはConcat関数の評価が必要です(構文の検証のみではなく)。

  • PropValue(If(NodeIsLeaf(),Core.Abbrev,Custom.Label))は有効ですが、プロパティ名を検証するにはIf関数の評価が必要です。

問題のプロパティ名が式の一部でしかない場合、プロパティ名の決定に必要な部分のみが評価されます。たとえば、式Add(PropValue(Concat(Core.,I,D)),If(NodeIsLeaf(),0,1)の場合、構文検証のために評価される式の部分はConcat関数とそのパラメータのみです。

このような式の一部が評価されるという事実は、PropValue(PropValue(NodeType))などの場合に重要です。この式では、Custom.NodeTypeプロパティに値を指定しないかぎり構文検証は失敗します。