资源简介

使用javacc自动生成cmm语法分析器,使用jjt文件生成语法树,支持错误处理。

资源截图

代码片段和文件信息

/* Generated By:JJTree&JavaCC: Do not edit this line. EG1.java */
public class EG1/*@bgen(jjtree)*/implements EG1TreeConstants EG1Constants {/*@bgen(jjtree)*/
  protected static JJTEG1State jjtree = new JJTEG1State();public static void main(String args []) throws ParseException
  {
        EG1 parser = new EG1(System.in);
    while(true)
    {

      try
      {
        System.out.println(“Enter some cmm sentences:“);
        SimpleNode n = EG1.one_line();
        n.dump(““);
        System.out.println(“Thank you.“);
      }
      catch (Exception e)
      {
        System.out.println(“error.“);
        System.out.println(e.getMessage());
        EG1.ReInit(System.in);
      }
      catch (Error e)
      {
        System.out.println(“Oops.“);
        System.out.println(e.getMessage());
        break;
      }

    }
  }

/*Entrance*/
  static final public SimpleNode one_line() throws ParseException {
 /*@bgen(jjtree) one_line */
  SimpleNode jjtn000 = new SimpleNode(JJTONE_LINE);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      Procedure();
      jj_consume_token(SEMICOLON);
    jjtree.closeNodeScope(jjtn000 true);
    jjtc000 = false;
   {if (true) return jjtn000;}
    } catch (Throwable jjte000) {
    if (jjtc000) {
      jjtree.clearNodeScope(jjtn000);
      jjtc000 = false;
    } else {
      jjtree.popNode();
    }
    if (jjte000 instanceof RuntimeException) {
      {if (true) throw (RuntimeException)jjte000;}
    }
    if (jjte000 instanceof ParseException) {
      {if (true) throw (ParseException)jjte000;}
    }
    {if (true) throw (Error)jjte000;}
    } finally {
    if (jjtc000) {
      jjtree.closeNodeScope(jjtn000 true);
    }
    }
    throw new Error(“Missing return statement in function“);
  }

/*Main Program*/
  static final public void Procedure() throws ParseException {
 /*@bgen(jjtree) Procedure */
  SimpleNode jjtn000 = new SimpleNode(JJTPROCEDURE);
  boolean jjtc000 = true;
  jjtree.openNodeScope(jjtn000);
    try {
      label_1:
      while (true) {
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case IF:
        case WHILE:
        case READ:
        case WRITE:
        case INT:
        case REAL:
        case IDENTIFIER:
          Statement();
          break;
        case LBRACE:
          Block();
          break;
        default:
          jj_la1[0] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
        }
        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
        case IF:
        case WHILE:
        case READ:
        case WRITE:
        case INT:
        case REAL:
        case LBRACE:
        case IDENTIFIER:
          ;
          break;
        default:
          jj_la1[1] = jj_gen;
          break label_1;
        }
      }
    } catch (Throwable jjte000) {
   if (jjtc000) {
     jjtree.clearNodeScope(jjtn000);
     jjtc000 = false;
   } 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        301  2014-10-14 00:29  javacc_exercise2(2)\.classpath

     文件        578  2014-10-14 00:29  javacc_exercise2(2)\.project

     文件        598  2014-10-14 00:29  javacc_exercise2(2)\.settings\org.eclipse.jdt.core.prefs

     文件        507  2014-10-14 00:29  javacc_exercise2(2)\.settings\sf.eclipse.javacc.prefs

     文件      20823  2014-11-22 13:43  javacc_exercise2(2)\bin\cmm2.jj

     文件       4296  2014-10-14 00:30  javacc_exercise2(2)\bin\cmm2.jjt

     文件      17862  2014-11-22 13:43  javacc_exercise2(2)\bin\EG1.class

     文件       2320  2014-11-22 13:43  javacc_exercise2(2)\bin\EG1Constants.class

     文件      11051  2014-11-22 13:43  javacc_exercise2(2)\bin\EG1TokenManager.class

     文件       2332  2014-11-22 13:43  javacc_exercise2(2)\bin\EG1TreeConstants.class

     文件       2585  2014-11-22 13:43  javacc_exercise2(2)\bin\JJTEG1State.class

     文件        304  2014-11-22 13:43  javacc_exercise2(2)\bin\Node.class

     文件       3592  2014-11-22 13:43  javacc_exercise2(2)\bin\ParseException.class

     文件       8162  2014-11-22 13:43  javacc_exercise2(2)\bin\SimpleCharStream.class

     文件       2549  2014-11-22 13:43  javacc_exercise2(2)\bin\SimpleNode.class

     文件       1153  2014-11-22 13:43  javacc_exercise2(2)\bin\Token.class

     文件       2809  2014-11-22 13:43  javacc_exercise2(2)\bin\TokenMgrError.class

     文件      20823  2014-11-22 13:43  javacc_exercise2(2)\src\cmm2.jj

     文件       4296  2014-10-14 00:30  javacc_exercise2(2)\src\cmm2.jjt

     文件      30920  2014-11-22 13:43  javacc_exercise2(2)\src\EG1.java

     文件       2869  2014-11-22 13:43  javacc_exercise2(2)\src\EG1Constants.java

     文件      21159  2014-11-22 13:43  javacc_exercise2(2)\src\EG1TokenManager.java

     文件       1904  2014-11-22 13:43  javacc_exercise2(2)\src\EG1TreeConstants.java

     文件       3320  2014-11-22 13:43  javacc_exercise2(2)\src\JJTEG1State.java

     文件       1316  2014-11-22 13:43  javacc_exercise2(2)\src\Node.java

     文件       6332  2014-11-22 13:43  javacc_exercise2(2)\src\ParseException.java

     文件      12645  2014-11-22 13:43  javacc_exercise2(2)\src\SimpleCharStream.java

     文件       2251  2014-11-22 13:43  javacc_exercise2(2)\src\SimpleNode.java

     文件       4184  2014-11-22 13:43  javacc_exercise2(2)\src\Token.java

     文件       4544  2014-11-22 13:43  javacc_exercise2(2)\src\TokenMgrError.java

............此处省略7个文件信息

评论

共有 条评论