编译原理-词法分析javacc实现1.在.jjt⽂件将以下代码替换main中的代码,这⾥我的名称是默认的MyNewGrammar,如果不⼀样要改 System.out.println("Reading from ");
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 = NextToken();
while(token.kind!=0) {
线内钩子>雀榕叶System.out.println("("+token.kind+","+token.image+")");
token = NextToken();
}
}
合成皮革catch (Exception e)
{
System.out.println("Oops.");
System.out.Message());
}
2.在.jjt⽂件SKIP后添加以下代码,只要保证keywords在IDENTIFIERS之前就⾏
TOKEN : /* keywords */
pigi{
< 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 : ")" >
}