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

📄 lexical.cpp

📁 基于单片机的 snmp协议解析的一些原代码 给有用的 同行
💻 CPP
📖 第 1 页 / 共 4 页
字号:
   }

   if(strcmp(token,"intToString")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"stringToInt")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"floatToString")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"floor")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"ceiling")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"compare")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"copy")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"concat")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"beep")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"getResponseValue")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"calcCRC")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"getNodeInfo")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"getNodeObjects")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"getInstance")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"getNextInstance")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"getNodeName")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"getNodeSyntax")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"getNodeAccess")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"getNodeStatus")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"getNodeDescription")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"getNodeOID")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"getNodeValue")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"getNodeMin")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"getNodeMax")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"getNodeTimestamp")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strcmp(token,"setNodeAsn1Syntax")==0)
   {
   	safe_free(token);
      return(1);
   }
   if(strcmp(token,"clearErrorState")==0)
   {
   	safe_free(token);
      return(1);
   }

   if(strncmp(token,"setF",4)==0)
   {
   	if(strcmp(token,"setField_pdu")==0)
      {
      	safe_free(token);
         return(1);
      }
      if(strcmp(token,"setField_classtype")==0)
      {
      	safe_free(token);
         return(1);
      }
      if(strcmp(token,"setField_community")==0)
      {
      	safe_free(token);
         return(1);
      }
      if(strcmp(token,"setField_AddressDrop")==0)
      {
      	safe_free(token);
         return(1);
      }
      if(strcmp(token,"setField_GroupAddress")==0)
      {
      	safe_free(token);
         return(1);
      }
      if(strcmp(token,"setField_SizeOfTheArray")==0)
      {
      	safe_free(token);
         return(1);
      }
      if(strcmp(token,"setField_arraylist")==0)
      {
      	safe_free(token);
         return(1);
      }
      if(strcmp(token,"setField_valuelist")==0)
      {
      	safe_free(token);
         return(1);
      }
      if(strcmp(token,"setField_asn1syntax")==0)
      {
      	safe_free(token);
         return(1);
      }
	   fseek(fp,fpos,SEEK_SET);
      safe_free(token);
      return(0);
   }

   if(strncmp(token,"getF",4)==0)
   {
   	if(strcmp(token,"getField_pdu")==0)
      {
      	safe_free(token);
         return(1);
      }
      if(strcmp(token,"getField_classtype")==0)
      {
      	safe_free(token);
         return(1);
      }
      if(strcmp(token,"getField_community")==0)
      {
      	safe_free(token);
         return(1);
      }
      if(strcmp(token,"getField_AddressDrop")==0)
      {
      	safe_free(token);
         return(1);
      }
      if(strcmp(token,"getField_GroupAddress")==0)
      {
      	safe_free(token);
         return(1);
      }
      if(strcmp(token,"getField_SizeOfTheArray")==0)
      {
      	safe_free(token);
         return(1);
      }
      if(strcmp(token,"getField_arraylist")==0)
      {
      	safe_free(token);
         return(1);
      }
      if(strcmp(token,"getField_valuelist")==0)
      {
      	safe_free(token);
         return(1);
      }
      if(strcmp(token,"getField_asn1syntax")==0)
      {
      	safe_free(token);
         return(1);
      }
	   fseek(fp,fpos,SEEK_SET);
      safe_free(token);
      return(0);
   }

   if(strncmp(token,"send",4)==0)
   {
   	if(strcmp(token,"sendGet")==0)
      {
      	safe_free(token);
         return(1);
      }
      if(strcmp(token,"sendGetNext")==0)
      {
      	safe_free(token);
         return(1);
      }
      if(strcmp(token,"sendSetDec")==0)
      {
      	safe_free(token);
         return(1);
      }
      if(strcmp(token,"sendSetNoDec")==0)
      {
      	safe_free(token);
         return(1);
      }
      if(strcmp(token,"sendSetAsc")==0)
      {
      	safe_free(token);
         return(1);
      }
      if(strcmp(token,"sendSetNoAsc")==0)
      {
      	safe_free(token);
         return(1);
      }
	   fseek(fp,fpos,SEEK_SET);
      safe_free(token);
      return(0);
   }

   if(strncmp(token,"check",5)==0)
   {
   	if(strcmp(token,"checkProtocolMismatch")==0)
      {
      	safe_free(token);
         return(1);
      }
   	if(strcmp(token,"checkInvalidResponse")==0)
      {
      	safe_free(token);
         return(1);
      }
   	if(strcmp(token,"checkNoResponse")==0)
      {
      	safe_free(token);
         return(1);
      }
   	if(strcmp(token,"checkEncodingStyle")==0)
      {
      	safe_free(token);
         return(1);
      }
   	if(strcmp(token,"checkNoInstance")==0)
      {
      	safe_free(token);
         return(1);
      }
   	if(strcmp(token,"checkObjectMismatch")==0)
      {
      	safe_free(token);
         return(1);
      }
   	if(strcmp(token,"checkInvalidSequence")==0)
      {
      	safe_free(token);
         return(1);
      }
   	if(strcmp(token,"checkInvalidLength")==0)
      {
      	safe_free(token);
         return(1);
      }
   	if(strcmp(token,"checkScrambled")==0)
      {
      	safe_free(token);
         return(1);
      }
   	if(strcmp(token,"checkInvalidAddress")==0)
      {
      	safe_free(token);
         return(1);
      }
   	if(strcmp(token,"checkInvalidControl")==0)
      {
      	safe_free(token);
         return(1);
      }
   	if(strcmp(token,"checkInvalidCRC")==0)
      {
      	safe_free(token);
         return(1);
      }
   	if(strcmp(token,"checkInvalidIPI")==0)
      {
      	safe_free(token);
         return(1);
      }
	   fseek(fp,fpos,SEEK_SET);
      safe_free(token);
      return(0);
	}

   //Not an fname...
   fseek(fp,fpos,SEEK_SET);
   safe_free(token);
   return(0);
}


int parse_logicexpr(FILE *fp)
{
	if(parse_bool2(fp))
   {
   	if(parse_bool1(fp))
      {
      	return(1);
      }
      else
      	return(0);
   }
   else
   	return(0);
}

int parse_bool1(FILE *fp)
{
	char *token;
   long fpos;

   fpos = ftell(fp);
   token = (char *)safe_alloc(TOKEN_SIZE,sizeof(char));
   token = get_next_token(fp,token);

   if(strcmp(token,"||")==0)
   {
   	if(parse_bool2(fp))
      {
      	if(parse_bool1(fp))
         {
         	//Valid bool1
            //production bool1:: || bool2 bool1
            safe_free(token);
            return(1);
         }
         else
         {
	      	//pushback - invalid bool1
   	      fseek(fp,fpos,SEEK_SET);
      	   safe_free(token);
         	return(0);
         }
      }
      else
      {
      	//pushback - invalid bool1
         fseek(fp,fpos,SEEK_SET);
         safe_free(token);
         return(0);
      }
   }
   else
   {
   	//pushback input
      //Valid bool1
      //production bool1::e
      fseek(fp,fpos,SEEK_SET);
      safe_free(token);
      return(1);
   }
}

int parse_bool2(FILE *fp)
{
	if(parse_bool4(fp))
   {
   	if(parse_bool3(fp))
      {
      	return(1);
      }
      else
      	return(0);
   }
   else
   	return(0);
}

int parse_bool3(FILE *fp)
{
	char *token;
   long fpos;

   fpos = ftell(fp);
   token = (char *)safe_alloc(TOKEN_SIZE,sizeof(char));
   token = get_next_token(fp,token);

   if(strcmp(token,"&&")==0)
   {
   	if(parse_bool4(fp))
      {
      	if(parse_bool3(fp))
         {
         	//Valid bool3
            //production bool3:: && bool4 bool3
            safe_free(token);
            return(1);
         }
         else
         {
	      	//pushback - invalid bool3
   	      fseek(fp,fpos,SEEK_SET);
      	   safe_free(token);
         	return(0);
         }
      }
      else
      {
      	//pushback - invalid bool3
         fseek(fp,fpos,SEEK_SET);
         safe_free(token);
         return(0);
      }
   }
   else
   {
   	//pushback input
      //Valid bool3
      //production bool3::e
      fseek(fp,fpos,SEEK_SET);
      safe_free(token);
      return(1);
   }
}

int parse_bool4(FILE *fp)
{
	char *token;
   long fpos;

   fpos = ftell(fp);

   if(parse_expr(fp))
   {
   	//look for relational operator (< <= >= > == !=)
	   token = (char *)safe_alloc(TOKEN_SIZE,sizeof(char));
      token = get_next_token(fp,token);
      if(strcmp(token,"<")==0)
      {
      	if(parse_expr(fp))
         {
         	//Valid bool4
            //production bool4::expr < expr
            safe_free(token);
            return(1);
         }
         else
         {
         	//invalid missing expr after operator
            fseek(fp,fpos,SEEK_SET);
            safe_free(token);
            return(0);
         }
      }
      if(strcmp(token,"<=")==0)
      {
      	if(parse_expr(fp))
         {
         	//Valid bool4
            //production bool4::expr <= expr
            safe_free(token);
            return(1);
         }
         else
         {
         	//invalid missing expr after operator
            fseek(fp,fpos,SEEK_SET);
            safe_free(token);
            return(0);
         }
      }
      if(strcmp(token,">=")==0)
      {
      	if(parse_expr(fp))
         {
         	//Valid bool4
            //production bool4::expr >= expr
            safe_free(token);
            return(1);
         }
         else
         {
         	//invalid missing expr after operator
            fseek(fp,fpos,SEEK_SET);
            safe_free(token);
            return(0);
         }
      }
      if(strcmp(token,">")==0)
      {
      	if(parse_expr(fp))
         {
         	//Valid bool4
            //production bool4::expr > expr
            safe_free(token);
            return(1);
         }
         else
         {
         	//invalid missing expr after operator
            fseek(fp,fpos,SEEK_SET);
            safe_free(token);
            return(0);
         }
      }
      if(strcmp(token,"==")==0)
      {
      	if(parse_expr(fp))
         {
         	//Valid bool4
            //production bool4::expr == expr
            safe_free(token);
            return(1);
         }
         else
         {
         	//invalid missing expr after operator
            fseek(fp,fpos,SEEK_SET);
            safe_free(token);
            return(0);
         }
      }
      if(strcmp(token,"!=")==0)
      {
      	if(parse_expr(fp))
         {
         	//Valid bool4
            //production bool4::expr != expr
            safe_free(token);
            return(1);
         }
         else
         {
         	//invalid missing expr after operator
            fseek(fp,fpos,SEEK_SET);
            safe_free(token);
            return(0);
         }
      }

⌨️ 快捷键说明

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