Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Mago Laravel Package

carthage-software/mago

Mago is an extremely fast PHP linter, formatter, and static analyzer written in Rust. It helps teams catch issues early, enforce consistent style, and improve code quality across projects, with multiple install options like script, Homebrew, Composer, and Cargo.

View on GitHub
Deep Wiki
Context7

+++ title = "查看 CST" description = "mago cst 命令用于查看解析器输出。这是调试工具,不是日常流程的一部分。" nav_order = 75 nav_section = "指南" +++

查看 CST

mago cst 打印一个 PHP 文件的抽象语法树或 token 流。适合用来调试棘手的解析、了解 Mago 如何看待某段语法,或者把输出提供给其他需要 Mago 解析器的工具。它并不属于格式化器 / linter / 分析器 / guard 的常规流程;请把它当作调试命令,和 list-files 之类的命令一起对待。

树状视图

给定 example.php:

<?php

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

Token 视图

--tokens 改为打印词法分析器的 token 流。可用于排查低层语法问题。

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]

JSON 输出

--json 把上述任一视图切换为美化后的 JSON。可与 --tokens 组合得到 token 流 JSON,或单独使用得到完整 CST。

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

参考

Usage: mago cst [OPTIONS] <FILE>
参数 说明
<FILE> 要检查的 PHP 文件。必填。
选项 说明
--tokens 打印词法分析器的 token 流而非解析后的 CST。
--json 以美化后的 JSON 输出(CST 或 token 流)。
--names 在解析后的 CST 上运行名称解析器,打印每个符号的完全限定名。不能与 --tokens 同时使用。
-h, --help 打印帮助并退出。

全局选项必须出现在 cst 之前。完整列表见 CLI 概览

在 Rust 中直接驱动解析器

如果你正用 Rust 构建工具并需要一个快速的 PHP 解析器,可以直接使用 Mago 的 crate:

  • mago-syntax:词法分析器、语法分析器、CST 节点定义,以及遍历 CST 的辅助工具。
  • mago-names:名称解析,将本地类名转换为其完全限定形式。
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
calmfox/watch-sylius
damienfern/grpc-symfony-bundle
atoolo/index-bundle
atoolo/genai-bundle
coprotoai/laravel-ticket
davidjln/llm-carbon-bundle
cryonighter/valid-request-bundle
coolms/taxonomy-bundle
coolms/field-bundle
articulate-orm/symfony
aaix/laravel-tall-architect
ephoto/akeneo-connector
emmanuelballery/eb-plantumlbundle
emielburgman/symfony-visitor-beacon
emielburgman/symfony-visit-storage
emielburgman/symfony-security-headers
emielburgman/symfony-log-viewer
emarref/xdebug-bundle
emarref/pubnub-bundle
elriseio/finance-money-bundle