gpt4 book ai didi

java - 为什么我的 Java ANTLR 语法文件没有编译?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:17:01 25 4
gpt4 key购买 nike

我得到了 Java 编译器子集(称为静态 Java 编译器)的 ANTLR 语法。我正在尝试扩展语法以包含更多 Java 功能,例如,我刚刚添加了 For Loops 的语法。

使用 Eclipse 和 ANTLR 插件,然后我做了“编译 ANTLR 语法”。它没有编译,而是在代码的第一位产生了两个错误:

grammar ExtendedStaticJava;

options { backtrack=true; memoize=true; }

@header
{
package sjc.parser.extended;
import java.math.BigInteger;

/**
* Extended StaticJava parser.
* @author <myname>
*/
}

// the rest of the grammar has been excluded.

第一个错误在第 1 行:'Unexpected Token: grammar'第二个错误在第 5 行:'Unexpected char: @'

为什么它不能识别这个基本的 ANTLR 语法?我的第一个想法是我在类路径中遗漏了一些东西,但我转到项目的属性并确保以下 JAR 包含在下:

  • antlr-2.7.7.jar
  • stringtemplate-3.2.1.jar
  • antlr.jar
  • antlr-runtime-3.0.1.jar

有什么想法或建议吗?

最佳答案

antlr-2.7.7.jar 是错误的:您的语法是 ANTLR v3+ 语法。全部删除:

  • antlr-2.7.7.jar
  • stringtemplate-3.2.1.jar
  • antlr.jar
  • antlr-runtime-3.0.1.jar

从你的项目/类路径,只坚持 this ANTLR v3 JAR在其中(其中包含您需要的一切:运行时、字符串模板、工程!)。

祝你好运!


编辑

就个人而言,我使用 Ant 构建脚本进行 IDE 集成。我像这样生成词法分析器和解析器:

<target name="generate.parser" depends="init" description="Generates the lexer, parser and tree-walker from the grammar files.">
<echo>Generating the lexer and parser...</echo>
<java classname="org.antlr.Tool" fork="true" failonerror="true">
<arg value="-fo" />
<arg value="${main.src.dir}/${parser.package}" />
<arg value="${parser.grammar.file}" />
<classpath refid="classpath" />
</java>
<!-- snip -->
</target>

classpath refid 看起来像:

<path id="classpath">
<!-- snip -->
<fileset dir="lib">
<include name="*.jar" />
</fileset>
</path>

并且 lib/ 目录包含 ANTLR v3 JAR(没有其他 ANTLR JAR!(抱歉敲打那个 :)))

关于java - 为什么我的 Java ANTLR 语法文件没有编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5236448/

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