我可以使用JavaCC的解析单个文件:解析一组输入文件由JavaCC的
BufferedReader br = new BufferedReader(new FileReader(
pathFile));
if (parser == null)
parser = new MaNouvGrammaire(br);
else
MaNouvGrammaire.ReInit(br);
我的问题是:“如何我可以分析几个输入文件”
我可以使用JavaCC的解析单个文件:解析一组输入文件由JavaCC的
BufferedReader br = new BufferedReader(new FileReader(
pathFile));
if (parser == null)
parser = new MaNouvGrammaire(br);
else
MaNouvGrammaire.ReInit(br);
我的问题是:“如何我可以分析几个输入文件”
以下是如何使用STATIC = false选项时的操作方法。 使用循环:
while(<there are more files>) {
File pathFile = <next file> ;
BufferedReader br = new BufferedReader(new FileReader(pathFile));
MaNouvGrammaire parser = new MaNouvGrammaire(br);
paser.start() ; // or whatever your start nonterminal is
}
与静态= true选项,我觉得它是一样的东西,你有什么
while(<there are more files>) {
File pathFile = <next file> ;
BufferedReader br = new BufferedReader(new FileReader(pathFile));
if (parser == null)
parser = new MaNouvGrammaire(br);
else
MaNouvGrammaire.ReInit(br);
parser.start() ; // or whatever your start nonterminal is
}
此外,确保parser
被声明为该类的静态成员初始化为null
。
两者都应该工作。如上所示,非静态解析器的初始化稍微简单一些。非静态解析器也可用于多线程使用和递归使用(例如递归读取包含文件)。
非常感谢您的回复。但我不明白这一说法: while(<还有更多文件>) 我该如何实现,谢谢 – terre
我不知道你的文件是如何访问的,所以这只是一个占位符。酌情填写。例如。你可以使用'for(File f:ListOfFiles){...}'。 –
我不认为你展示的代码实际上解析任何东西。它只是实例化解析器。另外你是什么意思,我如何解析多个文件'?如果你有解析一个文件的代码,你可以把它放在一个循环中吗?或者你的意思是你想要解析多个文件重新使用相同的解析器实例?你可能需要修正这个问题,a)提供一个更好的代码片段,b)阐明你想要达到的目标。 – Kris
您好,感谢您的回复 在现实中,我会解析一个文件,其中包含另一个相同的文件类型。例如: 例如:文件1包含其中存在文件2调用的源代码。 如何解析调用另一个文件的文件。在我的文件.jjt或.jj文件中? – terre