⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 senseparser.java

📁 tinyos最新版
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
		public String errorMsg = "no errors";		private boolean errorSet = false;		public void report_error(String message, Object info) {		Symbol cur_token = (Symbol) info;				//System.out.println("errorMsg = " + errorMsg);		//System.out.println("cur_token.sym = " + cur_token.sym);						if (message.equals("Syntax error")) {			if (cur_token.sym == 0)				errorMsg = "Bad Syntax - Possibly missing clause";			else				errorMsg = "Syntax error at " + cur_token.value;			errorSet = true;		}				if (!errorSet) {			errorMsg = "Can't parse query string";		}				System.out.println("errorMsg = " + errorMsg);	}		public void syntax_error(Symbol cur_token) {		report_error("Syntax error", cur_token);	}			
}

/** Cup generated class to encapsulate user supplied action code.*/
class CUP$senseParser$actions {

		byte queryId = 1;	int epochDur = 1024;	TinyDBQuery tinyDBQuery = new TinyDBQuery(queryId, epochDur);		Vector aggFields = new Vector();	Vector selList = new Vector();	HashMap fields = new HashMap();	Vector conds = new Vector();	Vector eventParams = new Vector();	short fieldIndex = 0;	short groupIdx = -1;	String catalogTableName = null;		Catalog catalog = Catalog.curCatalog;		class ArithExpressionClass {	    String fieldOp;	    short fieldConstant;	    FieldInfo finf;	    boolean isAttr;	}		class AggField {	    AggOp fieldOp;	    ArithExpressionClass fieldData;	}		class FieldInfo {	    boolean isAgg;	    AggField af;	    QueryField qf;	}		class SelStmt {	    SelOp op;	    ArithExpressionClass aexp;	    short c;		short c2;		short c3;	    String s;	}		public QueryField getQueryField(String column, byte aggOp, short fid) {	    QueryField qf = null;	    String hashKey = column + aggOp;			    if (fields.get(hashKey) == null) {			//we can't verify that this is a valid query field just yet,			//since we don't know the source table			qf = new QueryField(column, QueryField.UNKNOWN_TYPE);						qf.setIdx(fid);			qf.setOp(aggOp);			fields.put(hashKey, qf);			//System.out.println("ADDED FIELD : " + column);			//tinyDBQuery.addField(qf);	    } else qf = (QueryField) fields.get(hashKey);	    return qf;	}		public QueryField getQueryField(String column, byte aggOp) {	    String hashKey = column + aggOp;	    if (fields.get(hashKey) != null)			return ((QueryField)fields.get(hashKey));	    else			return getQueryField(column, aggOp, fieldIndex++);	}		public short removeField(String name, byte aggOp) {	    String hashKey = name + aggOp;	    //System.out.println("IN REMOVEFIELD: " + name + "  ,OP  " + aggOp);	    QueryField qf = (QueryField)fields.get(hashKey);	    if (qf != null) {			fields.remove(hashKey);			return qf.getIdx();	    }	    else return 0xFF;	}		public boolean validEpochDur(int epochDur) {	    return (epochDur > 64 && epochDur < 700000);	}		
  private final senseParser parser;

  /** Constructor */
  CUP$senseParser$actions(senseParser parser) {
    this.parser = parser;
  }

  /** Method with the actual generated action code. */
  public final java_cup.runtime.Symbol CUP$senseParser$do_action(
    int                        CUP$senseParser$act_num,
    java_cup.runtime.lr_parser CUP$senseParser$parser,
    java.util.Stack            CUP$senseParser$stack,
    int                        CUP$senseParser$top)
    throws java.lang.Exception
    {
      /* Symbol object for return from actions */
      java_cup.runtime.Symbol CUP$senseParser$result;

      /* select the action based on the action number */
      switch (CUP$senseParser$act_num)
        {
          /*. . . . . . . . . . . . . . . . . . . .*/
          case 65: // arith_expr ::= attr 
            {
              Object RESULT = null;
		int aleft = ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-0)).left;		int aright = ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-0)).right;		FieldInfo a = (FieldInfo)((java_cup.runtime.Symbol) CUP$senseParser$stack.elementAt(CUP$senseParser$top-0)).value;				// e.g. light		ArithExpressionClass exp = new ArithExpressionClass();	exp.isAttr = true;	exp.finf = a;	RESULT = exp;	
              CUP$senseParser$result = new java_cup.runtime.Symbol(18/*arith_expr*/, ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-0)).left, ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-0)).right, RESULT);
            }
          return CUP$senseParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 64: // arith_expr ::= LPAREN attr ARITHMETIC_OP CONSTANT RPAREN 
            {
              Object RESULT = null;
		int aleft = ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-3)).left;		int aright = ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-3)).right;		FieldInfo a = (FieldInfo)((java_cup.runtime.Symbol) CUP$senseParser$stack.elementAt(CUP$senseParser$top-3)).value;		int arithOpleft = ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-2)).left;		int arithOpright = ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-2)).right;		String arithOp = (String)((java_cup.runtime.Symbol) CUP$senseParser$stack.elementAt(CUP$senseParser$top-2)).value;		int arithConstleft = ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-1)).left;		int arithConstright = ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-1)).right;		Integer arithConst = (Integer)((java_cup.runtime.Symbol) CUP$senseParser$stack.elementAt(CUP$senseParser$top-1)).value;				// e.g. (light * 20)		ArithExpressionClass exp = new ArithExpressionClass();		//if (a.qf.getType() == QueryField.STRING) {	//    SensorQueryer.errorMessage = "Arithmetic operations not supported on STRING fields";	//	//    return null;	//}		exp.finf = a;	exp.fieldOp = arithOp;	exp.fieldConstant = arithConst.shortValue();	exp.isAttr = false;	RESULT = exp;	
              CUP$senseParser$result = new java_cup.runtime.Symbol(18/*arith_expr*/, ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-4)).left, ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-0)).right, RESULT);
            }
          return CUP$senseParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 63: // arith_expr ::= attr ARITHMETIC_OP CONSTANT 
            {
              Object RESULT = null;
		int aleft = ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-2)).left;		int aright = ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-2)).right;		FieldInfo a = (FieldInfo)((java_cup.runtime.Symbol) CUP$senseParser$stack.elementAt(CUP$senseParser$top-2)).value;		int arithOpleft = ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-1)).left;		int arithOpright = ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-1)).right;		String arithOp = (String)((java_cup.runtime.Symbol) CUP$senseParser$stack.elementAt(CUP$senseParser$top-1)).value;		int arithConstleft = ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-0)).left;		int arithConstright = ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-0)).right;		Integer arithConst = (Integer)((java_cup.runtime.Symbol) CUP$senseParser$stack.elementAt(CUP$senseParser$top-0)).value;				// e.g. light * 20		ArithExpressionClass exp = new ArithExpressionClass();		//if (a.qf.getType() == QueryField.STRING) {	//    SensorQueryer.errorMessage = "Arithmetic operations not supported on STRING fields";	//    return null;	//}	exp.finf = a;	exp.fieldOp = arithOp;	exp.fieldConstant = arithConst.shortValue();	exp.isAttr = false;	RESULT = exp;	
              CUP$senseParser$result = new java_cup.runtime.Symbol(18/*arith_expr*/, ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-2)).left, ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-0)).right, RESULT);
            }
          return CUP$senseParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 62: // action_stat ::= 
            {
              Object RESULT = null;
		 
              CUP$senseParser$result = new java_cup.runtime.Symbol(16/*action_stat*/, ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-0)).right, ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-0)).right, RESULT);
            }
          return CUP$senseParser$result;

          /*. . . . . . . . . . . . . . . . . . . .*/
          case 61: // action_stat ::= ACTION NAME LPAREN CONSTANT RPAREN 
            {
              Object RESULT = null;
		int nleft = ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-3)).left;		int nright = ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-3)).right;		String n = (String)((java_cup.runtime.Symbol) CUP$senseParser$stack.elementAt(CUP$senseParser$top-3)).value;		int cleft = ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-1)).left;		int cright = ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-1)).right;		Integer c = (Integer)((java_cup.runtime.Symbol) CUP$senseParser$stack.elementAt(CUP$senseParser$top-1)).value;				//System.out.println("NAME: " + n);		tinyDBQuery.setOutputCommand(n, c.shortValue());	
              CUP$senseParser$result = new java_cup.runtime.Symbol(16/*action_stat*/, ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-4)).left, ((java_cup.runtime.Symbol)CUP$senseParser$stack.elementAt(CUP$senseParser$top-0)).right, RESULT);
            }
          return CUP$senseParser$result;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -