这是我的第一个JFLEX程序,所以我不明白为什么会遇到这些错误。当我运行代码时,它会给我消息"文件宏的意外结束",并且没有指定错误已打开的行。另外,在评论了%eof
代码(即第18至24行(之后,它给了我一个错误的"意外符号",并且指向我第一个正则表达式的开始。有人可以告诉我为什么我会遇到这些问题吗?
import java.io.*;
import java.util.*;
%%
%class test
%line
%column
%{
PrintWriter pw = new PrintWriter(new File(args[0]));
int ids = 0;
int nums = 0;
int comments = 0;
int literals = 0;
%}
%eof{
pw.println("number of identifiers = " + ids);
pw.println("number of numbers = " + nums);
pw.println("number of comments = " + comments);
pw.println("number of string literals = " + literals);
pw.close();
eof%}
[A-Za-z_][A-Z-a-z_0-9]* {ids++;
System.out.print(ids);}
(n|s|t)[0-9](n|s|t) {nums++;
System.out.print(nums);}
/*.*/ {comments++;
System.out.print(comments);}
p{Punct} {literals++;
System.out.print(literals);}
System.out.println(literals);}
您需要将%
符号放在文件宏的结尾标签的eof
之前。
%eof{
/* Code to put at the end */
%eof}