Package java_cup_11a.runtime

Examples of java_cup_11a.runtime.Scanner


      L.alloy_filename = filename;
      L.alloy_lineoffset = lineOffset;
      L.alloy_seenDollar = seenDollar;
      // Replace "ID : RUN/CHECK ID"   with "RUN/CHECK ID ID"
      // Replace "ID : RUN/CHECK {"    WITH "RUN/CHECK ID  {"
      final Scanner A = new Scanner() {
         private Symbol a, b, c, d;
         public final Symbol next_token() throws Exception {
            if (a==null) a=L.next_token(); if (a.sym==EOF) { b=a; c=a; d=a; }
            if (b==null) b=L.next_token(); if (b.sym==EOF) { c=b; d=b; }
            if (c==null) c=L.next_token(); if (c.sym==EOF) { d=c; }
            if (d==null) d=L.next_token();
            if (a.sym==ID && b.sym==COLON && (c.sym==RUN || c.sym==CHECK) && (d.sym==ID || d.sym==LBRACE)) {
               Symbol x=c; b=d; c=null; d=null; return x;
            }
            Symbol x=a; a=b; b=c; c=d; d=null; return x;
         }
      };
      // Merges   "pred" "/" "xxx"       into the actual symbol
      // Merges   "fun" "/" "xxx"        into the actual symbol
      // Merges   ! { in = < <= > >= }   into a single symbol
      // Merges   {..}=>{..}             into a single symbol
      final Scanner B = new Scanner() {
         private Symbol undo;
         public final Symbol next_token() throws Exception {
            Symbol x = undo;
            undo = null;
            if (x==null) x = A.next_token();
            if (x.sym==NOT) {
               Symbol y = A.next_token();
               if (y.sym==IN)     return merge(x, y, NOTIN);
               if (y.sym==EQUALS) return merge(x, y, NOTEQUALS);
               if (y.sym==LT)     return merge(x, y, NOTLT);
               if (y.sym==LTE)    return merge(x, y, NOTLTE);
               if (y.sym==GT)     return merge(x, y, NOTGT);
               if (y.sym==GTE)    return merge(x, y, NOTGTE);
               undo = y;
            } else if (x.sym==PRED) {
               Symbol y = A.next_token();
               if (y.sym!=SLASH) { undo=y; return x; }
               Symbol z = A.next_token();
               if (z.sym==ID && ((ExprVar)(z.value)).label.equals("totalOrder")) return merge(x, z, TOTALORDER);
               undo = z;
            } else if (x.sym==FUN) {
               Symbol y = A.next_token();
               if (y.sym!=SLASH) { undo=y; return x; }
               Symbol z = A.next_token();
               if (z.sym==ID && ((ExprVar)(z.value)).label.equals("add"))   return merge(x, z, INTADD);
               if (z.sym==ID && ((ExprVar)(z.value)).label.equals("sub"))   return merge(x, z, INTSUB);
               if (z.sym==ID && ((ExprVar)(z.value)).label.equals("mul"))   return merge(x, z, INTMUL);
               if (z.sym==ID && ((ExprVar)(z.value)).label.equals("div"))   return merge(x, z, INTDIV);
               if (z.sym==ID && ((ExprVar)(z.value)).label.equals("rem"))   return merge(x, z, INTREM);
               if (z.sym==ID && ((ExprVar)(z.value)).label.equals("min"))   return merge(x, z, INTMIN);
               if (z.sym==ID && ((ExprVar)(z.value)).label.equals("max"))   return merge(x, z, INTMAX);
               if (z.sym==ID && ((ExprVar)(z.value)).label.equals("next"))  return merge(x, z, INTNEXT);
            } else if (x.sym==ONE) {
               Symbol y = A.next_token();
               if (y.sym!=ARROW) { undo=y; return x; }
               Symbol z = A.next_token();
               if (z.sym==ONEreturn merge(x, z, ONE_ARROW_ONE);
               if (z.sym==LONE) return merge(x, z, ONE_ARROW_LONE);
               if (z.sym==SOME) return merge(x, z, ONE_ARROW_SOME);
               if (z.sym==SETreturn merge(x, z, ONE_ARROW_ANY); else { undo=z; return merge(x, y, ONE_ARROW_ANY); }
            } else if (x.sym==LONE) {
               Symbol y = A.next_token();
               if (y.sym!=ARROW) { undo=y; return x; }
               Symbol z = A.next_token();
               if (z.sym==ONEreturn merge(x, z, LONE_ARROW_ONE);
               if (z.sym==LONE) return merge(x, z, LONE_ARROW_LONE);
               if (z.sym==SOME) return merge(x, z, LONE_ARROW_SOME);
               if (z.sym==SETreturn merge(x, z, LONE_ARROW_ANY); else { undo=z; return merge(x, y, LONE_ARROW_ANY); }
            } else if (x.sym==SOME) {
               Symbol y = A.next_token();
               if (y.sym!=ARROW) { undo=y; return x; }
               Symbol z = A.next_token();
               if (z.sym==ONEreturn merge(x, z, SOME_ARROW_ONE);
               if (z.sym==LONE) return merge(x, z, SOME_ARROW_LONE);
               if (z.sym==SOME) return merge(x, z, SOME_ARROW_SOME);
               if (z.sym==SETreturn merge(x, z, SOME_ARROW_ANY); else { undo=z; return merge(x, y, SOME_ARROW_ANY); }
            } else if (x.sym==SET) {
               Symbol y = A.next_token();
               if (y.sym!=ARROW) { undo=y; return x; }
               Symbol z = A.next_token();
               if (z.sym==ONEreturn merge(x, z, ANY_ARROW_ONE);
               if (z.sym==LONE) return merge(x, z, ANY_ARROW_LONE);
               if (z.sym==SOME) return merge(x, z, ANY_ARROW_SOME);
               if (z.sym==SETreturn merge(x, z, ARROW); else { undo=z; return merge(x, y, ARROW); }
            } else if (x.sym==ARROW) {
               Symbol z = A.next_token();
               if (z.sym==ONEreturn merge(x, z, ANY_ARROW_ONE);
               if (z.sym==LONE) return merge(x, z, ANY_ARROW_LONE);
               if (z.sym==SOME) return merge(x, z, ANY_ARROW_SOME);
               if (z.sym==SETreturn merge(x, z, ARROW); else { undo=z; }
            }
            return x;
         }
      };
      // Merge "- number" into "-number" whenever it is not immediately following ")" "]" "}" DISJ TOTALORDER INT SUM ID NUMBER STR IDEN THIS INTMIN INTMAX INTNEXT UNIV SIGINT NONE
      final Scanner C = new Scanner() {
         private Symbol last, undo;
         public final Symbol next_token() throws Exception {
            Symbol x = undo;
            undo = null;
            if (x==null) x = B.next_token();
View Full Code Here

TOP

Related Classes of java_cup_11a.runtime.Scanner

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.