【问题标题】:Embed Visitor/Listener Options in an ANTLR4 Grammar在 ANTLR4 语法中嵌入访问者/听众选项
【发布时间】:2014-07-23 14:59:47
【问题描述】:

我想从 g4 文件启用/禁用访问者/侦听器生成。

有没有办法在 ANTLR4 语法中嵌入访问者/听众选项?我正在寻找这样的东西:

grammar foo;

options {
    visitor=false;
    listener=false;
}

...

【问题讨论】:

    标签: antlr4


    【解决方案1】:

    不,不在options 块内。

    您可以提供Tool,它会生成这些类,命令行选项以确保不会生成这些类。

    例如,您为语法T 生成类,如下所示:

    java -cp antlr-4.4-complete.jar org.antlr.v4.Tool T.g4
    

    为了确保没有生成任何侦听器或访问者文件,请执行以下操作:

    java -cp antlr-4.4-complete.jar org.antlr.v4.Tool T.g4 -no-listener -no-visitor
    

    为了记录,这些是 ANTLR4 的命令行选项:

    $java -cp antlr-4.4-complete.jar org.antlr.v4.Tool
    
    ANTLR 解析器生成器版本 4.4
     -o ___ 指定生成所有输出的输出目录
     -lib ___ 指定语法、标记文件的位置
     -atn 生成规则增强转换网络图
     -encoding ___ 指定语法文件编码;例如,euc-jp
     -message-format ___ 指定 antlr、gnu、vs2005 中消息的输出样式
     -long-messages 在可用于错误和警告时显示异常详细信息
     -listener 生成解析树监听器(默认)
     -no-listener 不生成解析树监听器
     -visitor 生成解析树访问者
     -no-visitor 不生成解析树访问者(默认)
     -package ___ 为生成的代码指定一个包/命名空间
     -depend 生成文件依赖项
     -D

    【讨论】:

    • 原因是这些类的生成是应用程序和/或使用语法的目标语言的属性,并且完全独立于语法本身。 maven、ant 和 msbuild 集成(至少)支持指定这些选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    相关资源
    最近更新 更多