Рубрики
Без рубрики

Абстрактное синтаксическое дерево (AST)

Что такое АСТ? Это древовидное представление абстрактной синтаксической структуры исходного кода… Помечено как opensource, java, требуются участники, тестирование.

Что такое АСТ?

Это древовидное представление абстрактной синтаксической структуры исходного кода, написанного на языке программирования. Каждый узел дерева обозначает конструкцию, встречающуюся в исходном коде.

Применение в компиляторах

Абстрактные синтаксические деревья – это структуры данных, широко используемые в компиляторах для представления структуры программного кода. AST обычно является результатом этапа синтаксического анализа компилятора. Он часто служит промежуточным представлением программы на нескольких этапах, которые требуются компилятору, и оказывает сильное влияние на конечный результат компилятора.

Например, Это Исходный код.

class GFG {
    public static void main (String[] args) {
        System.out.println("Hello World!");
    }
}

АСТ приведенного выше исходного кода:

CLASS_DEF -> CLASS_DEF [1:0]
|--MODIFIERS -> MODIFIERS [1:0]
|   `--LITERAL_PUBLIC -> public [1:0]
|--LITERAL_CLASS -> class [1:7]
|--IDENT -> GFG [1:13]
`--OBJBLOCK -> OBJBLOCK [1:17]
    |--LCURLY -> { [1:17]
    |--METHOD_DEF -> METHOD_DEF [2:4]
    |   |--MODIFIERS -> MODIFIERS [2:4]
    |   |   |--LITERAL_PUBLIC -> public [2:4]
    |   |   `--LITERAL_STATIC -> static [2:11]
    |   |--TYPE -> TYPE [2:18]
    |   |   `--LITERAL_VOID -> void [2:18]
    |   |--IDENT -> main [2:23]
    |   |--LPAREN -> ( [2:27]
    |   |--PARAMETERS -> PARAMETERS [2:34]
    |   |   `--PARAMETER_DEF -> PARAMETER_DEF [2:34]
    |   |       |--MODIFIERS -> MODIFIERS [2:34]
    |   |       |--TYPE -> TYPE [2:34]
    |   |       |   `--ARRAY_DECLARATOR -> [ [2:34]
    |   |       |       |--IDENT -> String [2:28]
    |   |       |       `--RBRACK -> ] [2:35]
    |   |       `--IDENT -> args [2:37]
    |   |--RPAREN -> ) [2:41]
    |   `--SLIST -> { [2:43]
    |       |--EXPR -> EXPR [3:26]
    |       |   `--METHOD_CALL -> ( [3:26]
    |       |       |--DOT -> . [3:18]
    |       |       |   |--DOT -> . [3:14]
    |       |       |   |   |--IDENT -> System [3:8]
    |       |       |   |   `--IDENT -> out [3:15]
    |       |       |   `--IDENT -> println [3:19]
    |       |       |--ELIST -> ELIST [3:27]
    |       |       |   `--EXPR -> EXPR [3:27]
    |       |       |       `--STRING_LITERAL -> "Hello World!" [3:27]
    |       |       `--RPAREN -> ) [3:41]
    |       |--SEMI -> ; [3:42]
    |       `--RCURLY -> } [4:4]
    `--RCURLY -> } [5:0]

Как сделать АСТ:

  1. Запустите исходный код в вашей локальной среде.

  2. Загрузите командную строку Checkstyle: checkstyle-8.43-all.jar из Здесь .

  3. Проведите аудит программы с помощью Checkstyle в вашем терминале: java -jar checkstyle-8.43-all.jar -с/google_checks.xml YourFile.java

  4. После аудита запустите эту команду в вашем терминале, чтобы получить ПОСЛЕДНИЙ из вашего предпочтительного кода: java -jar checkstyle-8.43-all.jar – т YourFile.java

  5. Твоя ЗАДНИЦА готова.

Чтобы узнать больше об AST и Checkstyle: Нажмите здесь

Оригинал: “https://dev.to/rk7/abstract-syntax-tree-ast-43p0”