1

如果你看到我的另一个问题,你现在会更好地实现我的目标。看看:https ://stackoverflow.com/questions/19510039/from-regex-to-parser-generators 。

当我想成为一个好孩子时,我正在阅读自述文件(参见https://java.net/projects/javacc/sources/svn/show/tags/release_60/examples/SimpleExamples?rev=555)。

  1. 在语法输入文件上运行 javacc 以生成一堆实现解析器和词法分析器(或令牌
    管理器)的 Java 文件:

    javacc Simple1.jj

  2. 现在编译生成的 Java 程序:

    javac *.java

  3. 解析器现在可以使用了。要运行解析器,请键入:

    java简单1

我的尝试:

D:\tests\javacc\simple1>javacc ..\Simple1.jj
Java Compiler Compiler Version 6.0_beta (Parser Generator)
(type "javacc" with no arguments for help)
Reading from file ..\Simple1.jj . . .
File "TokenMgrError.java" does not exist.  Will create one.
File "ParseException.java" does not exist.  Will create one.
File "Token.java" does not exist.  Will create one.
File "SimpleCharStream.java" does not exist.  Will create one.
Parser generated successfully.

D:\tests\javacc\simple1>javac *.java
SimpleCharStream.java:474: error: non-static variable this cannot be referenced from a static context
  static void setTrackLineColumn(boolean trackLineColumn) { this.trackLineColumn = trackLineColumn; }
                                                            ^
1 error

我的java版本:

java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) Client VM (build 24.45-b08, mixed mode, sharing)

我敢肯定“这些”家伙知道他们在做什么,我敢肯定我做错了什么,但是什么?在使用 javacc 的第一次测试中遇到类似的简单错误?

我该如何解决这个问题并继续我的讲座?

4

2 回答 2

1

我建议现在使用 5.0 版。版本 6 中有很多变化,这些变化伴随着一些错误。应该很快就会更新到第 6 版。https://java.net/projects/javacc/downloads

于 2013-10-24T11:37:37.383 回答
0

你会放代码来看看它还是你的完整调用。我认为,这是代码错误,或者您调用了错误的 .java 存档。例如:

我有:Mytokens.jj 和 javaCode.java 好吗?好,你需要说:

javacc Mytokens.jj
javac javaCode.java
java javaCode <test1.txt>

我给你我的 *.bat 进行测试。您创建一个新的 txt 并编写它:

CALL javacc nameJJ.jj
@pause
CALL javac NameJava.java
@pause
java NameJava <prueba1> salida.txt
type salida.txt
@pause

如果您的 javacc/bin 和您的练习目录中有副本,则当您双击它时,它会为您进行测试。

于 2015-03-27T20:44:50.627 回答