gpt4 book ai didi

ant - 如何使用 ant 为 antlr3 生成的类添加包声明?

转载 作者:行者123 更新时间:2023-12-04 04:52:28 25 4
gpt4 key购买 nike

我的 build.xml 如下所示:

<property name="lib" value="${basedir}/lib" />
<property name="src" value="${basedir}/src" />
<property name="package" value="com/package/antlr" />

<path id="compile.classpath">
<fileset dir="${lib}">
<include name="antlr-3.5-complete.jar" />
</fileset>
</path>

<!-- Check if ANTLR3 can be found in the classpath -->
<target name="antlr_classpath">

<whichresource property="antlr.in.classpath" class="org.antlr.Tool">
<classpath>
<path refid="compile.classpath" />
</classpath>
</whichresource>
<fail message="ANTLR3 not found in CLASSPATH">
<condition>
<not>
<isset property="antlr.in.classpath" />
</not>
</condition>
</fail>
<echo>ANTLR3 found via CLASSPATH</echo>
</target>


<!-- Antlr3 is called here -->

<target name="antlr" depends="antlr_classpath">
<java classname="org.antlr.Tool" fork="true" failonerror="true">
<classpath>
<path refid="compile.classpath" />
</classpath>
<arg value="-verbose" />
<arg value="-make"/>
<arg value="-o" />
<arg path="${src}/${package}" />
<arg path="${src}/${package}/BoolExpr.g" />
</java>
</target>

它在文件夹/src/com/package/antlr 中生成 BoolExprLexer.java 和 BoolExprParser.java,这是我想要的,但生成的文件属于默认包。我怎样才能让它们成为 com.package.antlr 的一部分?

最佳答案

ANTLR 3

对于词法分析器语法或解析器语法,请将以下内容添加到您的语法文件中:

@header {
package com.package.antlr;
}

对于组合语法(同一语法文件中的词法分析器和解析器),请将以下内容添加到您的语法文件中:
@lexer::header {
package com.package.antlr;
}

@parser::header {
package com.package.antlr;
}

ANTLR 4

当您从语法生成词法分析器/解析器时,将以下参数传递给 ANTLR 工具:
-package com.package.antlr

这可以在 Ant 构建期间通过将以下两行添加到您的构建脚本中来完成:
    <arg value="-package"/>
<arg value="com.package.antlr" />

关于ant - 如何使用 ant 为 antlr3 生成的类添加包声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17240652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com