编译原理-词法分析javacc实现

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 : ")" >
}

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值