JavaCC--Linuxのインストールと使用
5199 ワード
概要
JavaCC https://javacc.java.net/。
JavaCC 、 , YACC Lex。JavaCC SUN , Java Compiler Compiler , 。 JavaCC , , 。JavaCC Java , 。 BNF EBNF 。
インストール
" zip.vim version v22
" Browsing zipfile /home/zfl/test/javacc-6.0src/javacc-6.0/bin/lib/javacc.jar
" Select a file with cursor and press ENTER
META-INF/
META-INF/MANIFEST.MF
org/
org/javacc/
org/javacc/jjdoc/
org/javacc/jjdoc/test/
org/javacc/jjtree/
org/javacc/parser/
org/javacc/parser/test/
org/javacc/utils/
templates/
templates/cpp/
javacc.class
jjdoc.class
jjtree.class
org/javacc/JavaCCTestCase.class
org/javacc/Version.class
org/javacc/jjdoc/BNFGenerator.class
JavaCCコードパッケージのディレクトリexamplesを使用するのはJavaCCが持参した例であり、ここではSimpleExamplesを例に挙げる:Simple 1.jjは括弧に一致する(This is a simple JavaCC grammar that recognizes a set of left braces followed by the same number of right braces and finally followed by zero or more line terminators and finally an end of file.).(1) javacc( PATH javacc.jar , javacc , 。 , javacc。)
/javacc-6.0/bin/lib :
[zfl@search-engine---dev4 lib]$ java -cp javacc.jar javacc Simple1.jj
Java Compiler Compiler Version 6.0_1 (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.
[zfl@search-engine---dev4 lib]$ ll
total 440
-rw-rw-r-- 1 zfl zfl 6147 May 18 03:18 ParseException.java
-rw-rw-r-- 1 zfl zfl 7203 May 18 03:18 Simple1.java
-rw-rw-r-- 1 zfl zfl 2512 May 17 22:29 Simple1.jj
-rw-rw-r-- 1 zfl zfl 429 May 18 03:18 Simple1Constants.java
-rw-rw-r-- 1 zfl zfl 5238 May 18 03:18 Simple1TokenManager.java
-rw-rw-r-- 1 zfl zfl 12351 May 18 03:18 SimpleCharStream.java
-rw-rw-r-- 1 zfl zfl 4055 May 18 03:18 Token.java
-rw-rw-r-- 1 zfl zfl 4399 May 18 03:18 TokenMgrError.java
-rwxrwxrwx 1 zfl zfl 386322 May 17 21:13 javacc.jar
(2) JavaCC Java , .class
[zfl@search-engine---dev4 lib]$ javac *.java
[zfl@search-engine---dev4 lib]$ ll
total 476
-rw-rw-r-- 1 zfl zfl 3038 May 18 03:24 ParseException.class
-rw-rw-r-- 1 zfl zfl 6147 May 18 03:18 ParseException.java
-rw-rw-r-- 1 zfl zfl 5134 May 18 03:24 Simple1.class
-rw-rw-r-- 1 zfl zfl 7203 May 18 03:18 Simple1.java
-rw-rw-r-- 1 zfl zfl 2512 May 17 22:29 Simple1.jj
-rw-rw-r-- 1 zfl zfl 423 May 18 03:24 Simple1Constants.class
-rw-rw-r-- 1 zfl zfl 429 May 18 03:18 Simple1Constants.java
-rw-rw-r-- 1 zfl zfl 3877 May 18 03:24 Simple1TokenManager.class
-rw-rw-r-- 1 zfl zfl 5238 May 18 03:18 Simple1TokenManager.java
-rw-rw-r-- 1 zfl zfl 6609 May 18 03:24 SimpleCharStream.class
-rw-rw-r-- 1 zfl zfl 12351 May 18 03:18 SimpleCharStream.java
-rw-rw-r-- 1 zfl zfl 985 May 18 03:24 Token.class
-rw-rw-r-- 1 zfl zfl 4055 May 18 03:18 Token.java
-rw-rw-r-- 1 zfl zfl 2307 May 18 03:24 TokenMgrError.class
-rw-rw-r-- 1 zfl zfl 4399 May 18 03:18 TokenMgrError.java
-rwxrwxrwx 1 zfl zfl 386322 May 17 21:13 javacc.jar
(3) , , ; , 。
[zfl@search-engine---dev4 lib]$ java Simple1
{{}
Exception in thread "main" ParseException: Encountered " "
" "
"" at line 1, column 4.
Was expecting:
"}" ...
at Simple1.generateParseException(Simple1.java:239)
at Simple1.jj_consume_token(Simple1.java:177)
at Simple1.MatchedBraces(Simple1.java:57)
at Simple1.Input(Simple1.java:14)
at Simple1.main(Simple1.java:9)
[zfl@search-engine---dev4 lib]$ java Simple1
{}{}
Exception in thread "main" ParseException: Encountered " "{" "{ "" at line 1, column 3.
Was expecting one of:
"
" ...
"\r" ...
at Simple1.generateParseException(Simple1.java:239)
at Simple1.jj_consume_token(Simple1.java:177)
at Simple1.Input(Simple1.java:42)
at Simple1.main(Simple1.java:9)
[zfl@search-engine---dev4 lib]$ java Simple1
{{{{{}}}}}
[zfl@search-engine---dev4 lib]$ java Simple1
{}