Dumping and Manipulating the AST of Expressions

It’s difficult to manipulate or inspect the expressions created with the ExpressionLanguage component, because the expressions are plain strings. A better approach is to turn those expressions into an AST. In computer science, AST (Abstract Syntax Tree) is "a tree representation of the structure of source code written in a programming language". In Symfony, a ExpressionLanguage AST is a set of nodes that contain PHP classes representing the given expression.

ExpressionLanguage コンポーネントで作成された式は単純な文字列であるため、操作や検査が困難です。より良いアプローチは、これらの式を AST に変換することです。コンピューター サイエンスでは、AST (AbstractSyntax Tree) は「プログラミング言語で記述されたソース コードの構造をツリーで表現したもの」です。 Symfony では、ExpressionLanguage AST は、指定された式を表す PHP クラスを含む一連のノードです。

Dumping the AST

Call the getNodes() method after parsing any expression to get its AST:

式を解析して AST を取得した後、getNodes() メソッドを呼び出します。
1
2
3
4
5
6
7
8
9
10
11
12
use Symfony\Component\ExpressionLanguage\ExpressionLanguage;

$ast = (new ExpressionLanguage())
    ->parse('1 + 2', [])
    ->getNodes()
;

// dump the AST nodes for inspection
var_dump($ast);

// dump the AST nodes as a string representation
$astAsString = $ast->dump();

Manipulating the AST

The nodes of the AST can also be dumped into a PHP array of nodes to allow manipulating them. Call the toArray() method to turn the AST into an array:

AST のノードをノードの PHP 配列にダンプして、それらを操作できるようにすることもできます。 toArray() メソッドを呼び出して、AST を配列に変換します。
1
2
3
4
5
6
7
// ...

$astAsArray = (new ExpressionLanguage())
    ->parse('1 + 2', [])
    ->getNodes()
    ->toArray()
;