{"id":79733,"date":"2026-03-02T23:49:35","date_gmt":"2026-03-02T15:49:35","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/79733.html"},"modified":"2026-03-02T23:49:35","modified_gmt":"2026-03-02T15:49:35","slug":"antlr%e5%85%a5%e9%97%a8%e6%8c%87%e5%8d%97","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/79733.html","title":{"rendered":"antlr\u5165\u95e8\u6307\u5357"},"content":{"rendered":"<\/p>\n<h4>\u6587\u7ae0\u76ee\u5f55<\/h4>\n<ul>\n<li>\u603b\u4f53\u6d41\u7a0b<\/li>\n<li>\u4e0b\u8f7dantlr\u4ee3\u7801\u751f\u6210\u5668<\/li>\n<li>\u5199g4\u6587\u4ef6<\/li>\n<li>\u6267\u884c\u547d\u4ee4<\/li>\n<li>\u6dfb\u52a0maven\u4f9d\u8d56<\/li>\n<li>\u5199\u7f16\u8bd1\u4ee3\u7801<\/li>\n<li>\u6d4b\u8bd5<\/li>\n<\/ul>\n<h2>\u603b\u4f53\u6d41\u7a0b<\/h2>\n<p>  #mermaid-svg-2JvJCzlmwXuPqmKy{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-2JvJCzlmwXuPqmKy .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-2JvJCzlmwXuPqmKy .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-2JvJCzlmwXuPqmKy .error-icon{fill:#552222;}#mermaid-svg-2JvJCzlmwXuPqmKy .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-2JvJCzlmwXuPqmKy .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-2JvJCzlmwXuPqmKy .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-2JvJCzlmwXuPqmKy .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-2JvJCzlmwXuPqmKy .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-2JvJCzlmwXuPqmKy .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-2JvJCzlmwXuPqmKy .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-2JvJCzlmwXuPqmKy .marker{fill:#333333;stroke:#333333;}#mermaid-svg-2JvJCzlmwXuPqmKy .marker.cross{stroke:#333333;}#mermaid-svg-2JvJCzlmwXuPqmKy svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-2JvJCzlmwXuPqmKy p{margin:0;}#mermaid-svg-2JvJCzlmwXuPqmKy .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-2JvJCzlmwXuPqmKy .cluster-label text{fill:#333;}#mermaid-svg-2JvJCzlmwXuPqmKy .cluster-label span{color:#333;}#mermaid-svg-2JvJCzlmwXuPqmKy .cluster-label span p{background-color:transparent;}#mermaid-svg-2JvJCzlmwXuPqmKy .label text,#mermaid-svg-2JvJCzlmwXuPqmKy span{fill:#333;color:#333;}#mermaid-svg-2JvJCzlmwXuPqmKy .node rect,#mermaid-svg-2JvJCzlmwXuPqmKy .node circle,#mermaid-svg-2JvJCzlmwXuPqmKy .node ellipse,#mermaid-svg-2JvJCzlmwXuPqmKy .node polygon,#mermaid-svg-2JvJCzlmwXuPqmKy .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-2JvJCzlmwXuPqmKy .rough-node .label text,#mermaid-svg-2JvJCzlmwXuPqmKy .node .label text,#mermaid-svg-2JvJCzlmwXuPqmKy .image-shape .label,#mermaid-svg-2JvJCzlmwXuPqmKy .icon-shape .label{text-anchor:middle;}#mermaid-svg-2JvJCzlmwXuPqmKy .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-2JvJCzlmwXuPqmKy .rough-node .label,#mermaid-svg-2JvJCzlmwXuPqmKy .node .label,#mermaid-svg-2JvJCzlmwXuPqmKy .image-shape .label,#mermaid-svg-2JvJCzlmwXuPqmKy .icon-shape .label{text-align:center;}#mermaid-svg-2JvJCzlmwXuPqmKy .node.clickable{cursor:pointer;}#mermaid-svg-2JvJCzlmwXuPqmKy .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-2JvJCzlmwXuPqmKy .arrowheadPath{fill:#333333;}#mermaid-svg-2JvJCzlmwXuPqmKy .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-2JvJCzlmwXuPqmKy .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-2JvJCzlmwXuPqmKy .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-2JvJCzlmwXuPqmKy .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-2JvJCzlmwXuPqmKy .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-2JvJCzlmwXuPqmKy .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-2JvJCzlmwXuPqmKy .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-2JvJCzlmwXuPqmKy .cluster text{fill:#333;}#mermaid-svg-2JvJCzlmwXuPqmKy .cluster span{color:#333;}#mermaid-svg-2JvJCzlmwXuPqmKy div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-2JvJCzlmwXuPqmKy .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-2JvJCzlmwXuPqmKy rect.text{fill:none;stroke-width:0;}#mermaid-svg-2JvJCzlmwXuPqmKy .icon-shape,#mermaid-svg-2JvJCzlmwXuPqmKy .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-2JvJCzlmwXuPqmKy .icon-shape p,#mermaid-svg-2JvJCzlmwXuPqmKy .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-2JvJCzlmwXuPqmKy .icon-shape rect,#mermaid-svg-2JvJCzlmwXuPqmKy .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-2JvJCzlmwXuPqmKy .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-2JvJCzlmwXuPqmKy .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-2JvJCzlmwXuPqmKy :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}#mermaid-svg-2JvJCzlmwXuPqmKy .download&gt;*{fill:#e1f5fe!important;stroke:#01579b!important;stroke-width:2px!important;}#mermaid-svg-2JvJCzlmwXuPqmKy .download span{fill:#e1f5fe!important;stroke:#01579b!important;stroke-width:2px!important;}#mermaid-svg-2JvJCzlmwXuPqmKy .grammar&gt;*{fill:#fff9c4!important;stroke:#fbc02d!important;stroke-width:2px!important;}#mermaid-svg-2JvJCzlmwXuPqmKy .grammar span{fill:#fff9c4!important;stroke:#fbc02d!important;stroke-width:2px!important;}#mermaid-svg-2JvJCzlmwXuPqmKy .generate&gt;*{fill:#e8f5e9!important;stroke:#2e7d32!important;stroke-width:2px!important;}#mermaid-svg-2JvJCzlmwXuPqmKy .generate span{fill:#e8f5e9!important;stroke:#2e7d32!important;stroke-width:2px!important;}#mermaid-svg-2JvJCzlmwXuPqmKy .code&gt;*{fill:#f3e5f5!important;stroke:#7b1fa2!important;stroke-width:2px!important;}#mermaid-svg-2JvJCzlmwXuPqmKy .code span{fill:#f3e5f5!important;stroke:#7b1fa2!important;stroke-width:2px!important;}#mermaid-svg-2JvJCzlmwXuPqmKy .test&gt;*{fill:#ffebee!important;stroke:#c62828!important;stroke-width:2px!important;}#mermaid-svg-2JvJCzlmwXuPqmKy .test span{fill:#ffebee!important;stroke:#c62828!important;stroke-width:2px!important;}#mermaid-svg-2JvJCzlmwXuPqmKy .result&gt;*{fill:#eceff1!important;stroke:#455a64!important;stroke-width:2px!important;stroke-dasharray:5 5!important;}#mermaid-svg-2JvJCzlmwXuPqmKy .result span{fill:#eceff1!important;stroke:#455a64!important;stroke-width:2px!important;stroke-dasharray:5 5!important;}<\/p>\n<p>         <span class=\"nodeLabel\">5. \u6d4b\u8bd5\u9a8c\u8bc1<\/span><\/p>\n<p>         <span class=\"nodeLabel\">4. \u9879\u76ee\u5f00\u53d1\u4e0e\u7f16\u8bd1<\/span><\/p>\n<p>         <span class=\"nodeLabel\">3. \u751f\u6210 Java \u4ee3\u7801<\/span><\/p>\n<p>         <span class=\"nodeLabel\">2. \u5b9a\u4e49\u8bed\u6cd5\u89c4\u5219<\/span><\/p>\n<p>         <span class=\"nodeLabel\">1. \u73af\u5883\u51c6\u5907<\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u5f00\u59cb<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u4e0b\u8f7d ANTLR Java \u751f\u6210\u5668antlr-4.13.2-complete.jar<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u7f16\u5199 json.g4 \u6587\u4ef6\u5b9a\u4e49 Lexer \u548c Parser \u89c4\u5219<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u5305\u542b: STRING, NUMBER, obj, arr, value \u7b49\u89c4\u5219<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u6267\u884c\u751f\u6210\u547d\u4ee4java -jar &#8230; -visitor json.g4<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u62f7\u8d1d\u751f\u6210\u7684 Java \u6587\u4ef6\u5230\u6e90\u4ee3\u7801\u5305\u4e2d<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u6dfb\u52a0 Maven \u4f9d\u8d56antlr4-runtime 4.9.3<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u7f16\u5199 Main.java \u7f16\u8bd1\u4ee3\u7801\u5b9e\u73b0 CharStream -&gt; Lexer -&gt; Parser -&gt; Visitor\/Print<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u51c6\u5907\u6d4b\u8bd5\u6570\u636e test.json<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u8fd0\u884c Main \u7c7b<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u8f93\u51fa\u89e3\u6790\u7ed3\u679c<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u793a\u4f8b\u8f93\u51fa:(&#034;name&#034;&#061;&#034;John&#034;,&#034;friends&#034;&#061;{&#034;Tom&#034;,&#034;Lily&#034;})<\/p>\n<p><\/span><\/p>\n<h2>\u4e0b\u8f7dantlr\u4ee3\u7801\u751f\u6210\u5668<\/h2>\n<p>antlr java\u4e0b\u8f7d\u5730\u5740 https:\/\/github.com\/antlr\/antlr4\/blob\/master\/doc\/java-target.md<\/p>\n<p>https:\/\/www.antlr.org\/download\/antlr-4.13.2-complete.jar<\/p>\n<h2>\u5199g4\u6587\u4ef6<\/h2>\n<p>\/\/ \u8bed\u6cd5\u540d\u79f0<br \/>\ngrammar JSON;<\/p>\n<p>\/\/ \u89e3\u6790\u5668\u89c4\u5219 (\u5c0f\u5199\u5f00\u5934)<br \/>\n\/\/ 1. \u5165\u53e3\u89c4\u5219&#xff1a;\u5339\u914d\u4efb\u4f55\u5408\u6cd5\u7684 JSON \u503c<br \/>\njson<br \/>\n    : value<br \/>\n    ;<\/p>\n<p>\/\/ 2. \u5b9a\u4e49 JSON \u7684\u503c\u7c7b\u578b<br \/>\nvalue<br \/>\n    : STRING             # StringLiteral   \/\/ \u5b57\u7b26\u4e32<br \/>\n    | NUMBER             # NumberLiteral   \/\/ \u6570\u5b57<br \/>\n    | obj                # JsonObject      \/\/ \u5bf9\u8c61<br \/>\n    | arr                # JsonArray       \/\/ \u6570\u7ec4<br \/>\n    | &#039;true&#039;             # TrueLiteral     \/\/ \u5e03\u5c14\u503c true<br \/>\n    | &#039;false&#039;            # FalseLiteral    \/\/ \u5e03\u5c14\u503c false<br \/>\n    | &#039;null&#039;             # NullLiteral     \/\/ null \u503c<br \/>\n    ;<\/p>\n<p>\/\/ 3. \u5b9a\u4e49 JSON \u5bf9\u8c61\u7ed3\u6784 { key: value, &#8230; }<br \/>\nobj<br \/>\n    : &#039;{&#039; pair (&#039;,&#039; pair)* &#039;}&#039;<br \/>\n    | &#039;{&#039; &#039;}&#039; \/\/ \u7a7a\u5bf9\u8c61<br \/>\n    ;<\/p>\n<p>\/\/ 4. \u5b9a\u4e49\u952e\u503c\u5bf9\u7ed3\u6784<br \/>\npair<br \/>\n    : STRING &#039;:&#039; value<br \/>\n    ;<\/p>\n<p>\/\/ 5. \u5b9a\u4e49\u6570\u7ec4\u7ed3\u6784 [ value, value, &#8230; ]<br \/>\narr<br \/>\n    : &#039;[&#039; value (&#039;,&#039; value)* &#039;]&#039;<br \/>\n    | &#039;[&#039; &#039;]&#039; \/\/ \u7a7a\u6570\u7ec4<br \/>\n    ;<\/p>\n<p>\/\/ 6. \u8bcd\u6cd5\u5206\u6790\u89c4\u5219 (\u5927\u5199\u5f00\u5934)<br \/>\n\/\/ \u5b57\u7b26\u4e32&#xff1a;\u53cc\u5f15\u53f7\u5305\u56f4&#xff0c;\u652f\u6301\u8f6c\u4e49\u5b57\u7b26<br \/>\nSTRING<br \/>\n    : &#039;&#034;&#039; (ESC | ~[&#034;\\\\\\\\])* &#039;&#034;&#039;<br \/>\n    ;<\/p>\n<p>\/\/ \u6570\u5b57&#xff1a;\u652f\u6301\u8d1f\u6570\u3001\u5c0f\u6570\u3001\u79d1\u5b66\u8ba1\u6570\u6cd5<br \/>\nNUMBER<br \/>\n    : &#039;-&#039;? INT (&#039;.&#039; [0-9]&#043;)? EXP?<br \/>\n    ;<\/p>\n<p>\/\/ \u8df3\u8fc7\u7a7a\u767d\u5b57\u7b26 (\u7a7a\u683c, \u6362\u884c, \u5236\u8868\u7b26)<br \/>\nWS<br \/>\n    : [ \\\\t\\\\n\\\\r]&#043; -&gt; skip<br \/>\n    ;<\/p>\n<p>\/\/ \u7247\u6bb5\u89c4\u5219 (\u4ec5\u4f9b\u5176\u4ed6\u8bcd\u6cd5\u89c4\u5219\u4f7f\u7528&#xff0c;\u4e0d\u4f1a\u5355\u72ec\u5339\u914d)<br \/>\n\/\/ \u8f6c\u4e49\u5b57\u7b26\u5904\u7406<br \/>\nfragment ESC<br \/>\n    : &#039;\\\\\\\\&#039; [&#034;\\\\\\\\\/bfnrt]<br \/>\n    | UNICODE_ESCAPE<br \/>\n    ;<\/p>\n<p>\/\/ Unicode \u8f6c\u4e49<br \/>\nfragment UNICODE_ESCAPE<br \/>\n    : &#039;\\\\\\\\&#039; &#039;u&#039; HEX HEX HEX HEX<br \/>\n    ;<\/p>\n<p>\/\/ \u5341\u516d\u8fdb\u5236\u5b57\u7b26<br \/>\nfragment HEX<br \/>\n    : [0-9a-fA-F]<br \/>\n    ;<\/p>\n<p>\/\/ \u6574\u6570\u90e8\u5206<br \/>\nfragment INT<br \/>\n    : &#039;0&#039;<br \/>\n    | [1-9] [0-9]*<br \/>\n    ;<\/p>\n<p>\/\/ \u79d1\u5b66\u8ba1\u6570\u6cd5<br \/>\nfragment EXP<br \/>\n    : [Ee] [&#043;-]? [0-9]&#043;<br \/>\n    ;<\/p>\n<h2>\u6267\u884c\u547d\u4ee4<\/h2>\n<p>java -jar .\\\\antlr-4.13.2-complete.jar -visitor json.g4<\/p>\n<p>\u7136\u540e\u5c06\u83b7\u5f97\u7684java\u6587\u4ef6\u62f7\u8d1d\u5230\u6e90\u4ee3\u7801\u76f8\u5e94\u7684\u5305\u4e2d\u3002<\/p>\n<h2>\u6dfb\u52a0maven\u4f9d\u8d56<\/h2>\n<p><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>dependency<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><br \/>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>groupId<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>org.antlr<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>groupId<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><br \/>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>artifactId<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>antlr4-runtime<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>artifactId<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><br \/>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>version<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>4.9.3<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>version<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><br \/>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>dependency<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><\/p>\n<h2>\u5199\u7f16\u8bd1\u4ee3\u7801<\/h2>\n<p><span class=\"token keyword\">package<\/span> <span class=\"token namespace\">cn<span class=\"token punctuation\">.<\/span>edu<span class=\"token punctuation\">.<\/span>ncepu<span class=\"token punctuation\">.<\/span>antlr<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">org<span class=\"token punctuation\">.<\/span>antlr<span class=\"token punctuation\">.<\/span>v4<span class=\"token punctuation\">.<\/span>runtime<span class=\"token punctuation\">.<\/span><\/span><span class=\"token operator\">*<\/span><\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">org<span class=\"token punctuation\">.<\/span>antlr<span class=\"token punctuation\">.<\/span>v4<span class=\"token punctuation\">.<\/span>runtime<span class=\"token punctuation\">.<\/span>tree<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">ParseTree<\/span><\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>io<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">IOException<\/span><\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>nio<span class=\"token punctuation\">.<\/span>file<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">Paths<\/span><\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>util<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">List<\/span><\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token comment\">\/**<br \/>\n * \u6d4b\u8bd5<br \/>\n * 2026-03-02<br \/>\n *<br \/>\n * &#064;author \u9192\u8fc7\u6765\u6478\u9c7c<br \/>\n *\/<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Main<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> args<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">throws<\/span> <span class=\"token class-name\">IOException<\/span> <span class=\"token punctuation\">{<\/span><\/p>\n<p>        <span class=\"token class-name\">CharStream<\/span> input <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">CharStreams<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">fromPath<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Paths<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;antlr-learn\/test.json&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">JSONLexer<\/span> lexEngine <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">JSONLexer<\/span><span class=\"token punctuation\">(<\/span>input<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">CommonTokenStream<\/span> tokens <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">CommonTokenStream<\/span><span class=\"token punctuation\">(<\/span>lexEngine<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">JSONParser<\/span> jsonParser <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">JSONParser<\/span><span class=\"token punctuation\">(<\/span>tokens<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">JSONParser<span class=\"token punctuation\">.<\/span>JsonContext<\/span> json <span class=\"token operator\">&#061;<\/span> jsonParser<span class=\"token punctuation\">.<\/span><span class=\"token function\">json<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span>json<span class=\"token punctuation\">.<\/span><span class=\"token function\">value<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token class-name\">String<\/span> <span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">ParserRuleContext<\/span> json<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>json <span class=\"token keyword\">instanceof<\/span> <span class=\"token class-name\">JSONParser<span class=\"token punctuation\">.<\/span>StringLiteralContext<\/span> string<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> string<span class=\"token punctuation\">.<\/span><span class=\"token function\">STRING<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">toString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><\/p>\n<p>        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>json <span class=\"token keyword\">instanceof<\/span> <span class=\"token class-name\">JSONParser<span class=\"token punctuation\">.<\/span>JsonArrayContext<\/span> jsonArrayContext<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> <span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span>jsonArrayContext<span class=\"token punctuation\">.<\/span><span class=\"token function\">arr<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><\/p>\n<p>        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>json <span class=\"token keyword\">instanceof<\/span> <span class=\"token class-name\">JSONParser<span class=\"token punctuation\">.<\/span>JsonObjectContext<\/span> jsonObjectContext<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> <span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span>jsonObjectContext<span class=\"token punctuation\">.<\/span><span class=\"token function\">obj<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><\/p>\n<p>        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>json <span class=\"token keyword\">instanceof<\/span> <span class=\"token class-name\">JSONParser<span class=\"token punctuation\">.<\/span>PairContext<\/span> pairContext<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> pairContext<span class=\"token punctuation\">.<\/span><span class=\"token function\">STRING<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token operator\">&#043;<\/span> <span class=\"token string\">&#034;&#061;&#034;<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span>pairContext<span class=\"token punctuation\">.<\/span><span class=\"token function\">value<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><\/p>\n<p>        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>json <span class=\"token keyword\">instanceof<\/span> <span class=\"token class-name\">JSONParser<span class=\"token punctuation\">.<\/span>ArrContext<\/span> arrContext<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token class-name\">List<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">JSONParser<span class=\"token punctuation\">.<\/span>ValueContext<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> value <span class=\"token operator\">&#061;<\/span> arrContext<span class=\"token punctuation\">.<\/span><span class=\"token function\">value<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token class-name\">StringBuilder<\/span> builder <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">StringBuilder<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;{&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token keyword\">boolean<\/span> first <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">JSONParser<span class=\"token punctuation\">.<\/span>ValueContext<\/span> valueContext <span class=\"token operator\">:<\/span> value<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                <span class=\"token class-name\">String<\/span> print <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span>valueContext<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>print <span class=\"token operator\">!&#061;<\/span> <span class=\"token keyword\">null<\/span> <span class=\"token operator\">&amp;&amp;<\/span> <span class=\"token operator\">!<\/span>print<span class=\"token punctuation\">.<\/span><span class=\"token function\">isBlank<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>first<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                        first <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                        builder<span class=\"token punctuation\">.<\/span><span class=\"token function\">append<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;,&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                    <span class=\"token punctuation\">}<\/span><br \/>\n                    builder<span class=\"token punctuation\">.<\/span><span class=\"token function\">append<\/span><span class=\"token punctuation\">(<\/span>print<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                <span class=\"token punctuation\">}<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><br \/>\n            builder<span class=\"token punctuation\">.<\/span><span class=\"token function\">append<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;}&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token keyword\">return<\/span> builder<span class=\"token punctuation\">.<\/span><span class=\"token function\">toString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><\/p>\n<p>        <span class=\"token class-name\">StringBuilder<\/span> builder <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">StringBuilder<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;(&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">boolean<\/span> first <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> json<span class=\"token punctuation\">.<\/span><span class=\"token function\">getChildCount<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token class-name\">ParseTree<\/span> child <span class=\"token operator\">&#061;<\/span> json<span class=\"token punctuation\">.<\/span><span class=\"token function\">getChild<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>child <span class=\"token keyword\">instanceof<\/span> <span class=\"token class-name\">ParserRuleContext<\/span> context<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                <span class=\"token class-name\">String<\/span> print <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span>context<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>print <span class=\"token operator\">!&#061;<\/span> <span class=\"token keyword\">null<\/span> <span class=\"token operator\">&amp;&amp;<\/span> <span class=\"token operator\">!<\/span>print<span class=\"token punctuation\">.<\/span><span class=\"token function\">isBlank<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>first<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                        first <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                        builder<span class=\"token punctuation\">.<\/span><span class=\"token function\">append<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;,&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                    <span class=\"token punctuation\">}<\/span><br \/>\n                    builder<span class=\"token punctuation\">.<\/span><span class=\"token function\">append<\/span><span class=\"token punctuation\">(<\/span>print<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                <span class=\"token punctuation\">}<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        builder<span class=\"token punctuation\">.<\/span><span class=\"token function\">append<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;)&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> builder<span class=\"token punctuation\">.<\/span><span class=\"token function\">toString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h2>\u6d4b\u8bd5<\/h2>\n<p>\u6211\u4f7f\u7528\u7684\u6d4b\u8bd5\u6570\u636e\u5982\u4e0b&#xff1a;<\/p>\n<p><span class=\"token punctuation\">{<\/span><br \/>\n  <span class=\"token string-property property\">&#034;name&#034;<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">&#034;John&#034;<\/span><span class=\"token punctuation\">,<\/span><br \/>\n  <span class=\"token string-property property\">&#034;friends&#034;<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token string\">&#034;Tom&#034;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">&#034;Lily&#034;<\/span><span class=\"token punctuation\">]<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u6d4b\u8bd5\u7ed3\u679c&#xff1a;<\/p>\n<p><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;name&#034;<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token string\">&#034;John&#034;<\/span>,<span class=\"token string\">&#034;friends&#034;<\/span><span class=\"token operator\">&#061;<\/span><span class=\"token punctuation\">{<\/span><span class=\"token string\">&#034;Tom&#034;<\/span>,<span class=\"token string\">&#034;Lily&#034;<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6587\u7ae0\u76ee\u5f55\u603b\u4f53\u6d41\u7a0b\u4e0b\u8f7dantlr\u4ee3\u7801\u751f\u6210\u5668\u5199g4\u6587\u4ef6\u6267\u884c\u547d\u4ee4\u6dfb\u52a0maven\u4f9d\u8d56\u5199\u7f16\u8bd1\u4ee3\u7801\u6d4b\u8bd5\u603b\u4f53\u6d41\u7a0b #mermaid-svg-2JvJCzlmwXuPqmKy{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stro<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[81,190],"topic":[],"class_list":["post-79733","post","type-post","status-publish","format-standard","hentry","category-server","tag-python","tag-190"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>antlr\u5165\u95e8\u6307\u5357 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/79733.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"antlr\u5165\u95e8\u6307\u5357 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"\u6587\u7ae0\u76ee\u5f55\u603b\u4f53\u6d41\u7a0b\u4e0b\u8f7dantlr\u4ee3\u7801\u751f\u6210\u5668\u5199g4\u6587\u4ef6\u6267\u884c\u547d\u4ee4\u6dfb\u52a0maven\u4f9d\u8d56\u5199\u7f16\u8bd1\u4ee3\u7801\u6d4b\u8bd5\u603b\u4f53\u6d41\u7a0b #mermaid-svg-2JvJCzlmwXuPqmKy{font-family:&quot;trebuchet ms&quot;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stro\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/79733.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-02T15:49:35+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/79733.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/79733.html\",\"name\":\"antlr\u5165\u95e8\u6307\u5357 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2026-03-02T15:49:35+00:00\",\"dateModified\":\"2026-03-02T15:49:35+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/79733.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/79733.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/79733.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"antlr\u5165\u95e8\u6307\u5357\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"antlr\u5165\u95e8\u6307\u5357 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/79733.html","og_locale":"zh_CN","og_type":"article","og_title":"antlr\u5165\u95e8\u6307\u5357 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"\u6587\u7ae0\u76ee\u5f55\u603b\u4f53\u6d41\u7a0b\u4e0b\u8f7dantlr\u4ee3\u7801\u751f\u6210\u5668\u5199g4\u6587\u4ef6\u6267\u884c\u547d\u4ee4\u6dfb\u52a0maven\u4f9d\u8d56\u5199\u7f16\u8bd1\u4ee3\u7801\u6d4b\u8bd5\u603b\u4f53\u6d41\u7a0b #mermaid-svg-2JvJCzlmwXuPqmKy{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stro","og_url":"https:\/\/www.wsisp.com\/helps\/79733.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2026-03-02T15:49:35+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"5 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/79733.html","url":"https:\/\/www.wsisp.com\/helps\/79733.html","name":"antlr\u5165\u95e8\u6307\u5357 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2026-03-02T15:49:35+00:00","dateModified":"2026-03-02T15:49:35+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/79733.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/79733.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/79733.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"antlr\u5165\u95e8\u6307\u5357"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/79733","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=79733"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/79733\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=79733"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=79733"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=79733"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=79733"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}