You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ANTLR4 Visitor的ctx中获取指定词法规则内容(JavaScript)

如何在ANTLR4 JavaScript Visitor中单独获取FUNCTION_NAME的内容

ANTLR会为生成的ParserContext自动生成对应语法元素的访问方法,你可以直接通过上下文对象的专属方法定位到FUNCTION_NAME对应的Token,再提取它的文本内容,不用取整个节点的全部文本。

修改你的visitor.js代码如下:

visitFunction(ctx) {
    // 获取FUNCTION_NAME对应的词法单元文本
    const functionName = ctx.FUNCTION_NAME().getText();
    console.log("visitFunction - 函数名:", functionName);

    // 若需要处理参数,可遍历expression节点
    const args = ctx.expression().map(exprCtx => this.visit(exprCtx));

    // 返回结构化数据,方便构建嵌套数组
    return {
        name: functionName,
        arguments: args
    };
}

关键说明:

  • ctx.FUNCTION_NAME():这是ANTLR根据你的function语法规则自动生成的方法,用于精准获取规则中定义的FUNCTION_NAME对应的Token对象
  • 调用Token的getText()方法,就能拿到该词法单元的纯字符串内容,不会包含括号、参数等其他部分
  • 如果规则中存在多个同类型的词法单元(比如多个FUNCTION_NAME),可以用ctx.FUNCTION_NAME(index)来获取对应位置的Token(index从0开始计数)

内容的提问来源于stack exchange,提问作者roman_kh122

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 18:37:02