1.在.jjt文件将以下代码替换main中的代码,这里我的名称是默认的MyNewGrammar,如果不一样要改
System.out.println("Reading from standard input...");
System.out.print("Enter an expression like \"1+(2+3)*var;\" :");
MyNewGrammar parser = new MyNewGrammar(System.in);
try
{
SimpleCharStream stream = new SimpleCharStream(System.in);
MyNewGrammarTokenManager myNewGrammarTokenManager = new MyNewGrammarTokenManager(stream);
Token token = myNewGrammarTokenManager.getNextToken();
while(token.kind!=0) {
System.out.println("("+token.kind+","+token.image+")");
token = myNewGrammarTokenManager.getNextToken();
}
}
catch (Exception e)
{
System.out.println("Oops.");
System.out.println(e.getMessage());
}
2.在.jjt文件SKIP后添加以下代码,只要保证keywords在IDENTIFIERS之前就行
TOKEN : /* keywords */
{
< IF : "if">
| < ELSE : "else" >
| < INT : "int" >
| < RETURN : "return" >
| < VOID : "void" >
| < WHILE : "while" >
| < MAIN : "main" >
}
TOKEN : /* operator */
{
< ADD : "+">
| < MUL : "*" >
| < JIAN : "-" >
| < CHU : "/" >
| < DAYV : ">" >
| < XIAOYV : "<" >
| < DENGYV : "=" >
}
TOKEN : /* separators */
{
< COMMA : ",">
| < SEMI : ";" >
| < BL : "{" >
| < BR : "}" >
| < ML : "[" >
| < MR : "]" >
| < SL : "(" >
| < SR : ")" >
}