ExpressionTree[expr]
式 expr の構造からのTreeオブジェクトを与える.
ExpressionTree[expr,struct]
struct によって指定されたデータと部分木を持つ式 expr の構造からのTreeオブジェクトを与える.
ExpressionTree
ExpressionTree[expr]
式 expr の構造からのTreeオブジェクトを与える.
ExpressionTree[expr,struct]
struct によって指定されたデータと部分木を持つ式 expr の構造からのTreeオブジェクトを与える.
詳細とオプション
- ExpressionTreeは,リスト,配列,規則,XML,および指定された任意の式からTreeオブジェクトが構築できる.
- 次は,任意の式に対する struct の可能な形である. »
-
"HeadTrees" レベルごとの式の部分式の頭部に相当する木 "Heads" レベルごとの式の部分式の頭部 "Subexpressions" レベルごとの式の部分式 "Atoms" レベル-1の式の原子部分式 Null レベルごとのデータのない式の部分式 None 式それ自体 - ExpressionTreeには,Treeと同じオプションに以下を加えたものが使える.
-
Heads False 式の頭部とその部分を部分木として含む - デフォルトのオプション設定がHeadsFalseの式 f[a,b][g[1,2],x]の可能な構造には以下がある.
- オプション設定がHeadsTrueのこれらの構造には以下がある. »
- 任意の式に対する struct のホールドされた形には以下がある.
-
"HeldHeadTrees" レベルごとの式の部分式のホールドされた頭部に相当する木 "HeldHeads" レベルごとの式の部分式のホールドされた頭部 "HeldSubexpressions" レベルごとの式のホールドされた部分式 "HeldAtoms" レベル-1の式のホールドされた原子部分式 - 次は,一般的な型の式に対する struct の可能な形である.
-
"XML" XMLオブジェクトのタグ,属性および要素 - 次は,ネストしたリストと連想の struct の可能な形である. »
-
"List" ネストしたリストの要素 "Association" ネストした連想の要素 "Dataset" データ集合のヘッダとデータ - 次は,ネストした規則の struct の可能な形である. »
-
"Rules" ネストした規則の左辺と葉 "JSON" JSONオブジェクトの名前と値,名前をデータとして使う "RawJSON" JSONオブジェクトの名前と値,名前をキーとして使う "FileSystem" ファイルシステム内のディレクトリとファイル
例題
すべて開く すべて閉じる例 (4)
ExpressionTree[f[a, b, c[p, q, r]]]ExpressionTree[f[a, b, c[p, q, r]], Heads -> True]ExpressionTree[f[a, b, c[p, q, r]], "Subexpressions", Heads -> True]ExpressionTree[XMLElement["tag", {"attr" -> "value"}, {"data", XMLElement["tag2", {}, {"data2"}]}], "XML"]ExpressionTree[Unevaluated[1 + 1], "HeldHeads"]ExpressionTree[<|a -> <|x -> 1, y -> 2|>, b -> <|x -> 3, y -> 4|>|>, "Association"]スコープ (14)
任意の式 (6)
"HeadTrees" (1)
AtomQ[head]がTrueを与えるなら,ExpressionTree[head[arg1,arg2,…],"HeadTrees"]は根が head を含み子がExpressionTree[argi,"HeadTrees"]で与えられる木を与える:
ExpressionTree[f[g[1, 2], x], "HeadTrees"]AtomQ[head]がFalseを与えるなら,ExpressionTree[head[arg1,arg2,…],"HeadTrees"]は根が head ではなくExpressionTree[head,"HeadTrees"]を含む木を与える:
ExpressionTree[f[a, b][g[1, 2], x], "HeadTrees"]ExpressionTree[f[a, b][g[1, 2], x], "HeadTrees", Heads -> True]ExpressionTree[atom,"HeadTrees"]は原子式 atom を含む葉を与える:
ExpressionTree[1, "HeadTrees"]"Heads" (1)
ExpressionTree[head[arg1,arg2,…],"Heads"]は根が head を含み子がExpressionTree[argi,"Heads"]で与えられる木を与える:
ExpressionTree[f[a, b][g[1, 2], x], "Heads"]ExpressionTree[f[a, b][g[1, 2], x], "Heads", Heads -> True]ExpressionTree[atom,"Heads"]は原子式 atom を含む葉を与える:
ExpressionTree[1, "Heads"]"Subexpressions" (1)
ExpressionTree[expr0[expr1,expr2,…],"Subexpressions"]は根がexpr0[expr1,expr2,…]を含み子がExpressionTree[expri,"Subexpressions"]で与えられる木を与える:
ExpressionTree[f[a, b][g[1, 2], x], "Subexpressions"]ExpressionTree[f[a, b][g[1, 2], x], "Subexpressions", Heads -> True]ExpressionTree[atom,"Subexpressions"]は原子式 atom を含む葉を与える:
ExpressionTree[1, "Subexpressions"]"Atoms" (1)
ExpressionTree[expr0[expr1,expr2,…],"Atoms"]は子がExpressionTree[expri,"Atoms"]で与えられる木を与える:
ExpressionTree[f[a, b][g[1, 2], x], "Atoms"]ExpressionTree[f[a, b][g[1, 2], x], "Atoms", Heads -> True]ExpressionTree[atom,"Atoms"]は原子式 atom を含む葉を与える:
ExpressionTree[1, "Atoms"]Null (1)
ExpressionTree[expr0[expr1,expr2,…],Null]は子がExpressionTree[expri,Null]で与えられる木を与える:
ExpressionTree[f[a, b][g[1, 2], x], Null]ExpressionTree[f[a, b][g[1, 2], x], Null, Heads -> True]ExpressionTree[atom,Null]は原子式 atom にNullを含む葉を与える:
ExpressionTree[1, Null]None (1)
ExpressionTree[expr,None]は expr を含む葉を与える:
ExpressionTree[f[a, b][g[1, 2], x], None]一般的な式 (1)
ネストしたリストと連想 (3)
"Association" (1)
"Dataset" (1)
ExpressionTree[{
<|"a" -> 1, "b" -> "x", "c" -> {1}|>,
<|"a" -> 2, "b" -> "y", "c" -> {2, 3}|>,
<|"a" -> 3, "b" -> "z", "c" -> {3}|>,
<|"a" -> 4, "b" -> "x", "c" -> {4, 5}|>,
<|"a" -> 5, "b" -> "y", "c" -> {5, 6, 7}|>,
<|"a" -> 6, "b" -> "z", "c" -> {}|>}, "Dataset"]ネストした規則 (4)
"Rules" (1)
"JSON" (1)
"RawJSON" (1)
オプション (11)
Heads (2)
デフォルトのオプション設定のHeadsFalseでは,式の頭部はどのレベルの部分としても含まれない:
ExpressionTree[f[a, b][g[1, 2], x], Heads -> False]HeadsTrueとすると,頭部が式の他の要素と同じように含まれる:
ExpressionTree[f[a, b][g[1, 2], x], Heads -> True]ExpressionTree[f[a, b][g[1, 2], x], "Subexpressions", Heads -> False]ExpressionTree[f[a, b][g[1, 2], x], "Subexpressions", Heads -> True]個々の木の要素のスタイル付け (2)
ExpressionTree[a[b, c], TreeElementLabel -> "?"]ExpressionTree[1[2[5, 6, 7], 3[8, 9, 10], 4[11, 12, 13]],
TreeElementLabel -> {___, _ ? EvenQ} -> None, TreeElementStyle -> {___, _ ? OddQ} -> {LightRed, EdgeForm[{Red, Dashed}]}]木全体のスタイル付け (4)
ExpressionTree[6[5[4[3, 2], 3[2, 1]], 4[3[2, 1], 2[1, 0]]], TreeElementLabel -> All -> None, TreeElementStyle -> All -> EdgeForm[Red]]ExpressionTree[6[5[4[3, 2], 3[2, 1]], 4[3[2, 1], 2[1, 0]]], BaseStyle -> LightRed]ExpressionTree[6[5[4[3, 2], 3[2, 1]], 4[3[2, 1], 2[1, 0]]], BaseStyle -> {Dashed, EdgeForm[{Dashing[{}], Thick}]}]ExpressionTree[6[5[4[3, 2], 3[2, 1]], 4[3[2, 1], 2[1, 0]]], BaseStyle -> {Red, EdgeForm[None]}, TreeElementStyle -> All -> Opacity[0]]木のレイアウトとグラフィックスオプション (3)
ExpressionTree[1[2[4, 5], 3[6, 7]], TreeLayout -> Bottom]ExpressionTree[$CellContext`a[...], TreeLayout -> "BalloonEmbedding", IconizedObject[«labels»]]Graphicsオプションを指定する:
ExpressionTree[a[b, c], Background -> LightBlue, ImageSize -> 50]アプリケーション (1)
特性と関係 (15)
ExpressionTree[f[a, b, g[c, d], e]]TreeExpression[%]TreeExpression[[image]]ExpressionTree[%]ExpressionTree[Groupings[{1, 2, 3, 4}, f -> 2]]デフォルト構造の"HeadTrees"では,ExpressionTreeはデータを含む部分木が部分式の頭部の木構造を与える木を構築する:
ExpressionTree[f[g[1, 2], h][x, y[1, 2, 3]], "HeadTrees"]構造"Heads"は"HeadTrees"と同じデータを表すがデータには部分式自体の頭部が含まれている木を与える:
ExpressionTree[f[g[1, 2], h][x, y[1, 2, 3]], "Heads"]ExpressionTree[expr,"Heads"]はTreeForm[expr]に類似した出力を与える:
TreeForm[f[g[1, 2], h][x, y[1, 2, 3]]]構造"Subexpressions"は"Heads"が与えるものと同じ形状の木に部分式の頭部ではなく部分式それ自体を含むデータを添えて与える:
ExpressionTree[f[g[1, 2], h][x, y[1, 2, 3]], "Subexpressions"]頭部を除いてレベル n の式の部分に相当するレベル n の木の部分木:
Level[f[g[1, 2], h][x, y[1, 2, 3]], {0}]Level[f[g[1, 2], h][x, y[1, 2, 3]], {1}]Level[f[g[1, 2], h][x, y[1, 2, 3]], {2}]ExpressionTree[f[g[1, 2], h][x, y[1, 2, 3]], "Subexpressions", Heads -> True]Level[f[g[1, 2], h][x, y[1, 2, 3]], {0}, Heads -> True]Level[f[g[1, 2], h][x, y[1, 2, 3]], {1}, Heads -> True]Level[f[g[1, 2], h][x, y[1, 2, 3]], {2}, Heads -> True]構造"Atoms"は"Subexpressions"が与えるものと同じ形状の木を葉のノードにだけデータを格納して与える:
ExpressionTree[f[g[1, 2], h][x, y[1, 2, 3]], "Atoms"]構造Nullは等しい形状でデータを持たない木を与える:
ExpressionTree[f[g[1, 2], h][x, y[1, 2, 3]], Null]ExpressionTree[1[2[3, 4], 5[6, 7]], "Heads"]TreeFoldを使って各部分木の上に親ノードを挿入する:
TreeFold[Tree[f, {Tree[##]}]&, %]TreeExpression[%, "Heads"]Mapは,デフォルトで,式の引数にマッピングする:
% === Map[f, 1[2[3, 4], 5[6, 7]], {0, -2}]ExpressionTree[1[2, 3][4[5, 6], 7[8, 9]], "Atoms", Heads -> True]TreeFoldを使って各部分木の前に兄弟ノードを挿入する:
TreeFold[Tree[{f, Tree[##]}]&, %]TreeExpression[%, "Atoms", Heads -> True]MapはHeadsTrueで式の中の部分式にマッピングする:
% === Map[f, 1[2, 3][4[5, 6], 7[8, 9]], {0, -2}, Heads -> True]ExpressionTree[1[2[3, 4], 5[6, 7]], "Heads"]TreeMapは木の中の部分木のデータにマッピングする:
TreeMap[f, %, All]TreeExpression[%, "Heads"]Mapは頭部と葉に直接マッピングすることができる:
mapAtData[f_][head_[args___]] := f[head][args]
mapAtData[f_][expr_] := f[expr]Map[mapAtData[f], 1[2[3, 4], 5[6, 7]], All]ExpressionTree[1[2, 3][4[5, 6], 7[8, 9]], "Atoms", Heads -> True]TreeMapは木の葉だけのデータにマッピングできる:
TreeMap[f, %, {-1}]TreeExpression[%, "Atoms", Heads -> True]Mapは式の中の原子に直接マッピングできる:
% === Map[f, 1[2, 3][4[5, 6], 7[8, 9]], {-1}, Heads -> True]Depth[expr]はTreeDepth[ExpressionTree[expr]]+1に等しい:
ExpressionTree[f[g[h]][a, b, c]]TreeDepth[%] + 1Depth[f[g[h]][a, b, c]]Depth[expr,HeadsTrue]はTreeDepth[ExpressionTree[expr,"Subexpressions"]]+1に等しい:
ExpressionTree[f[g[h]][a, b, c], Heads -> True]TreeDepth[%] + 1Depth[f[g[h]][a, b, c], Heads -> True]ExpressionTreeは木を構築する前に部分式を評価する:
ExpressionTree[Today + Quantity[1, "Days"], "Subexpressions"]Unevaluatedを使って部分式の評価を木の構築後まで先送りする:
ExpressionTree[Unevaluated[Today + Quantity[1, "Days"]], "Subexpressions"]ホールドされた構造はすべての評価が行われないように部分式をHoldFormで包み込む:
ExpressionTree[Unevaluated[Today + Quantity[1, "Days"]], "HeldSubexpressions"]HoldCompleteラッパーを示す:
InputForm[%]ExpressionTree[Inactivate[Unevaluated[1 + 2 * 3]], "Heads"]テキスト
Wolfram Research (2021), ExpressionTree, Wolfram言語関数, https://reference.wolfram.com/language/ref/ExpressionTree.html (2022年に更新).
CMS
Wolfram Language. 2021. "ExpressionTree." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2022. https://reference.wolfram.com/language/ref/ExpressionTree.html.
APA
Wolfram Language. (2021). ExpressionTree. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ExpressionTree.html
BibTeX
@misc{reference.wolfram_2026_expressiontree, author="Wolfram Research", title="{ExpressionTree}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/ExpressionTree.html}", note=[Accessed: 16-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_expressiontree, organization={Wolfram Research}, title={ExpressionTree}, year={2022}, url={https://reference.wolfram.com/language/ref/ExpressionTree.html}, note=[Accessed: 16-September-2026]}