Как я могу построить дерево AST для арифметических выражений? - PullRequest
0 голосов
/ 20 апреля 2019

Я собрал вас всех здесь, чтобы задать вам один простой вопрос. Мне нужно построить дерево AST.

Например, у меня есть выражение 22 * ​​x + (z – 5) * 2. Как я могу сделать это проще с powershell?

1 Ответ

0 голосов
/ 20 апреля 2019

Вам не нужно вручную создавать AST - PowerShell сделает это за вас!

Обернуть выражение в блоке сценария (должен быть синтаксически допустимым PowerShell, конечно):

$AST = {22*$x+($z–5)*2}.Ast

Вуаля, $AST.Endblock теперь содержит корневой элемент AST вашего выражения.

Вы также можете создать AST, явно передав выражение Parser.ParseInput() в виде строки:

$AST = [System.Management.Automation.Language.Parser]::ParseInput('22*$x+($z–5)*2', [ref]$null, [ref]$null)
...