Cette traduction peut être obsolète.

Inspecter l'CST

mago cst affiche soit l'arbre syntaxique abstrait, soit le flux de tokens d'un seul fichier PHP. Utile pour déboguer un parsing délicat, comprendre comment Mago perçoit un bout de syntaxe, ou alimenter un autre outil qui veut le parseur de Mago. Cette commande ne fait pas partie du flux régulier formateur / linter / analyseur / guard ; traitez-la comme une commande de débogage, au même titre que list-files et autres.

Vue arbre

Avec example.php :

<?php

echo 'Hello, World!';
mago cst example.php
Program
├── Statement
│ └── OpeningTag
│ └── FullOpeningTag
└── Statement
 └── Echo
 ├── Keyword
 ├── Expression
 │ └── Literal
 │ └── LiteralString "Hello, World!"
 └── Terminator ;

Vue tokens

--tokens affiche le flux de tokens du lexer à la place. Utile pour déboguer des problèmes de syntaxe bas niveau.

mago cst example.php --tokens
 Kind                      Value                                              Span
 ─────────────────────────────────────────────────────────────────────────────────────────────
 OpenTag                   "<?php"                                            [0..5]
 Whitespace                "\n\n"                                             [7..7]
 Echo                      "echo"                                             [7..11]
 Whitespace                " "                                                [12..12]
 LiteralString             "'Hello, World!'"                                  [12..27]
 Semicolon                 ";"                                                [27..28]
 Whitespace                "\n"                                               [29..29]

Sortie JSON

--json bascule l'une ou l'autre vue en JSON formaté. À combiner avec --tokens pour le flux de tokens en JSON, ou seul pour l'CST complet.

mago cst example.php --json
{
    "error": null,
    "program": {
        "file_id": 9370985751100973094,
        "source_text": "<?php\n\necho 'Hello, World!';\n",
        "statements": { "nodes": [] },
        "trivia": { "nodes": [] }
    }
}

Référence

Usage: mago cst [OPTIONS] <FILE>
ArgumentDescription
<FILE>Le fichier PHP à inspecter. Requis.
OptionDescription
--tokensAffiche le flux de tokens du lexer à la place de l'CST.
--jsonAffiche la sortie (CST ou flux de tokens) en JSON formaté.
--namesExécute le résolveur de noms sur l'CST analysé et affiche les noms pleinement qualifiés de chaque symbole. Incompatible avec --tokens.
-h, --helpAffiche l'aide et quitte.

Les options globales doivent précéder cst. Voir l'aperçu CLI pour la liste complète.

Piloter le parseur depuis Rust

Si vous construisez un outil en Rust et avez besoin d'un parseur PHP rapide, vous pouvez utiliser directement les crates de Mago :

  • mago-syntax : le lexer, le parseur, les définitions de nœuds CST et des helpers pour parcourir l'arbre.
  • mago-names : la résolution de noms, qui transforme un nom de classe local en sa forme pleinement qualifiée.

↳ Modifier cette page →