我是JavaCC的初学者,我正在尝试生成文件解析器。
我已经能够生成成功的解析器,该解析器可以穿透在键盘上输入的一行。当我输入“ First Name:William”键盘的解析器示例时,我设法在屏幕上显示了变量的名称和值。
现在我有一个.txt文件,其中包含大量名称和它们的值,我想在屏幕上成功显示它们。
下面是我已经编写的.jj文件,用于生成键入行的解析器
现在我想要相同的内容,但是要保存一个文件。
options
{
static = true;
}
PARSER_BEGIN(parser_name)
public class parser_name
{
public static void main(String args []) throws ParseException
{
System.out.println("Waiting for the Input:");
parser_name parser = new parser_name(System.in);
parser.Start();
}
}
PARSER_END(parser_name)
SKIP :
{
" "
| "\r"
| "\t"
| "\n"
}
TOKEN : { < DIGIT : (["0"-"9"])+ > }
TOKEN : { <VARIABLE: (["a"-"z", "A"-"Z"])+> }
TOKEN : { <VALUE: (~["\n",":"])+> }
TOKEN : { <ASSIGNMENT: ":"> }
void Start(): { Token t,t1,t2;}
{
t=<VARIABLE>
t1=<ASSIGNMENT>
t2=<VALUE>
{ System.out.println("The Variable is "+t.image+",and the Value is "+t2.image); }
}
我已经尝试用文件类型的对象替换解析器构造函数中的“ System.in”,然后逐行读取该文件,但是它不起作用。
将阅读器传递给解析器的构造函数。