コード例 #1
0
ファイル: Calculator.java プロジェクト: darlansf1/bc-compiler
 public static final int factor() throws ParseException {
   int i;
   switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
     case LPAR:
       jj_consume_token(LPAR);
       i = expr();
       jj_consume_token(RPAR);
       {
         if (true) return i;
       }
       break;
     case INTEGER:
       i = num();
       {
         if (true) return i;
       }
       break;
     default:
       jj_la1[5] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
   }
   throw new Error("Missing return statement in function");
 }
コード例 #2
0
ファイル: Calculator.java プロジェクト: darlansf1/bc-compiler
 /*
   	<start> ::= (<expr>)*
 	<expr> 	::= <term> {(+|-) <term>}
 	<term> 	::= <factor> {(*|/) <factor>}
 	<factor>::= (<expr>) | <num>
 	<num> 	::= int
 */
 public static final void start() throws ParseException {
   /*var locais*/
   int value;
   label_1:
   while (true) {
     value = expr();
     jj_consume_token(EOL);
     System.out.println("> result: " + value);
     switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
       case LPAR:
       case INTEGER:;
         break;
       default:
         jj_la1[0] = jj_gen;
         break label_1;
     }
   }
 }
コード例 #3
0
ファイル: Calculator.java プロジェクト: darlansf1/bc-compiler
  public static final int expr() throws ParseException {
    Token t;
    int t1, t2;
    Operation op = null;
    // <expr> 	::= <term> {(+|-) <term>}
    t1 = term();
    label_2:
    while (true) {
      switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
        case PLUS:
        case MINUS:;
          break;
        default:
          jj_la1[1] = jj_gen;
          break label_2;
      }
      switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
        case PLUS:
          t = jj_consume_token(PLUS);
          System.out.printf(
              "@(%d,%d)\u005ctPLUS\u005ct-\u005ct%s\u005cn", t.beginLine, t.beginColumn, t);
          op = new Sum();
          break;
        case MINUS:
          t = jj_consume_token(MINUS);
          System.out.printf(
              "@(%d,%d)\u005ctMINUS\u005ct-\u005ct%s\u005cn", t.beginLine, t.beginColumn, t);
          op = new Sub();
          break;
        default:
          jj_la1[2] = jj_gen;
          jj_consume_token(-1);
          throw new ParseException();
      }
      t2 = term();
      t1 = op.calculate(t1, t2);
      // System.out.println("<TERM>" + t.beginLine + " " + t.beginColumn);

    }
    {
      if (true) return t1;
    }
    throw new Error("Missing return statement in function");
  }
コード例 #4
0
ファイル: Calculator.java プロジェクト: darlansf1/bc-compiler
 public static final int term() throws ParseException {
   Token t;
   int f1, f2;
   Operation op = null;
   // <term> 	::= <factor> {(*|/) <factor>}
   f1 = factor();
   label_3:
   while (true) {
     switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
       case MUL:
       case DIV:;
         break;
       default:
         jj_la1[3] = jj_gen;
         break label_3;
     }
     switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
       case MUL:
         t = jj_consume_token(MUL);
         op = new Mul();
         System.out.printf(
             "@(%d,%d)\u005ctMUL\u005ct-\u005ct%s\u005cn", t.beginLine, t.beginColumn, t);
         break;
       case DIV:
         t = jj_consume_token(DIV);
         op = new Div();
         System.out.printf(
             "@(%d,%d)\u005ctDIV\u005ct-\u005ct%s\u005cn", t.beginLine, t.beginColumn, t);
         break;
       default:
         jj_la1[4] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
     }
     f2 = factor();
     f1 = op.calculate(f1, f2);
   }
   {
     if (true) return f1;
   }
   throw new Error("Missing return statement in function");
 }