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

📄 test30.l

📁 使用flex和bison
💻 L
📖 第 1 页 / 共 3 页
字号:
				printtokenerror(nexttoken,"startrecord");
 		}
		if(newstmt==0) 	
		{
			printf("%s(%d): syntax error: missing ';' before identifier 'startrecord' \n",filename,lineno);
			errcount ++;
		}
		newstmt = 0;
			 

		return STARTRECORD;
} 
"setoricallee"  {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"setoricallee");
 		}
		if(newstmt==0) 	
		{
			printf("%s(%d): syntax error: missing ';' before identifier 'setoricallee' \n",filename,lineno);
			errcount ++;
		}
		newstmt = 0;
			 

		return SETORICALLEE;
} 
"requestservice" {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"requestservice");
 		}
		if(newstmt==0) 	
		{
			printf("%s(%d): syntax error: missing ';' before identifier 'requestservice' \n",filename,lineno);
			errcount ++;
		}
		newstmt = 0;

		return REQUESTSERVICE;
} 
"interservice" {
	{
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"interservice");
 		}
		if(newstmt==0) 	
		{
			printf("%s(%d): syntax error: missing ';' before identifier 'interservice' \n",filename,lineno);
			errcount ++;
		}
		newstmt = 0;
			 

		return INTERSERVICE;
} 
}
"startrecordctoc"  {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"startrecordctoc");
 		}
		if(newstmt==0) 	
		{
			printf("%s(%d): syntax error: missing ';' before identifier 'startrecordctoc' \n",filename,lineno);
			errcount ++;
		}
		newstmt = 0;
			 

		return STARTRECORDCTOC;
} 
"startlinerecord"  {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"startlinerecord");
 		}
		if(newstmt==0) 	
		{
			printf("%s(%d): syntax error: missing ';' before identifier 'startlinerecord' \n",filename,lineno);
			errcount ++;
		}
		newstmt = 0;
			 

		return STARTLINERECORD;
} 
"checknetconnnection"  {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"checknetconnnection");
 		}
		if(newstmt==0) 	
		{
			printf("%s(%d): syntax error: missing ';' before identifier 'checknetconnnection' \n",filename,lineno);
			errcount ++;
		}
		newstmt = 0;
			 

		return CHECKNETCONNECTION;
} 
"addnetconnnection"  {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"addnetconnnection");
 		}
		if(newstmt==0) 	
		{
			printf("%s(%d): syntax error: missing ';' before identifier 'addnetconnnection' \n",filename,lineno);
			errcount ++;
		}
		newstmt = 0;
			 

		return ADDNETCONNECTION;
} 

"setdialintime"  {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"setdialintime");
 		}
		if(newstmt==0) 	
		{
			printf("%s(%d): syntax error: missing ';' before identifier 'setdialintime' \n",filename,lineno);
			errcount ++;
		}
		newstmt = 0;
			 

		return SETDIALINTIME;
} 
"getfreechan"  { 
	if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"getfreechan");
 		}
			

	return GETFREECHAN;
}
"getfreechanwithlink"  { 
	if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"getfreechanwithlink");
 		}
			

	return GETFREECHANWITHLINK;
}
"getusedchan"  { 
	if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"getusedchan");
 		}
			

	return GETUSEDCHAN;
}
"getfreeconfno"  {
	if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"getfreeconfno");
 		}
		

	return GETFREECONFNO;
}
"hangupdest" {
if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"hangupdest");
 		}
		
	newstmt = 0;
	return HANGUPDEST;
}
"getfreeipchanno"  {
	if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"getfreeipchanno");
 		}
		

	return GETFREEIPCHANNO;
}
"getsubstring"  {
	if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"getsubstring");
 		}
			 

	return GETSUBSTRING;
}
"getnowtime"  {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"getnowtime");
 		}
			

	 return GETNOWTIME;
}

"getdialintime"  {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"getdialintime");
 		}
			

	 return GETDIALINTIME;
}

"getrand"  {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"getrand");
 		}
		

	return GETRAND;
}
"getconfnomembers"  {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"getconfnomembers");
 		}
		

	return GETCONFNOMEMBERS;
}
"getrandkey" {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"getrandkey");
 		}
			 

	return GETRANDKEY;
}
"findfile"  {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"findfile");
 		}
			 

	return FINDFILE;
}
"checkintsection"  {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"checkintsection");
 		}
			 

	return CHECKINTSECTION;
}
"checkstringsection"  {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"checkstringsection");
 		}
			 

	return CHECKSTRINGSECTION;
}
"timespan"  {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"timespan");
 		}
			 

	return TIMESPAN;
}
"{"   {
	nexttoken = -1;
		newstmt = 1;	
    if(sectionflag)
	{
		sectionk++;
	}
	return LEFTK;
}
"}"  {
	if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"}");
 		}
	if(string_k==1&&hangupstate == 1)
	{
		hangupstate = 0;

	}	 
	if(sectionflag)
	{
		sectionk --;
		if(sectionk<0)
		  {
				printf("%s(%d): syntax error: not pipei near 'beginsection' \n",filename,lineno);
				errcount ++;
		  }
	}
	return RIGHTK;
}
":"   {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,":");
 		}
			

		return COLON;
}
"("   {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"(");
 		}
		

	return LEFTC;
}
")"   {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,")");
 		}
			 

	return RIGHTC;
}
">"  {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,">");
 		}
			 

	return LEFTV;
}
"<"  {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"<");
 		}
			
	return RIGHTV;
}
">="  {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,">=");
 		}
			

	return LEFTVE;
}
"<="  {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"<=");
 		}
		

	return RIGHTVE;
}
"=="  {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"==");
 		}
		

	return VVEE;
}
"!="  {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"!=");
 		}
		

	return NOTVVEE;
}
"="  {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,"=");
 		}
    	if(newstmt==0&&definestmtflag==0) 	
		{
			printf("%s(%d): syntax error: missing ';' near line %d  \n",filename,lineno,lineno);
			errcount ++;
		}
		newstmt = 0;
			

		return ASSIGN;
}
";"	 { 
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,";");
 		}
	if(newstmt==1) 
	{
		printf("%s(%d): syntax error: too many sombol ';' \n",filename,lineno);
		errcount ++;
	}
	newstmt = 1;
	if(assignstmtflag==1)
	{
		if(assignstmtflag2==2)
		{
			printf("%s(%d): syntax error: before sombol ';' \n",filename,lineno);
			errcount ++;
		}
	}
	assignstmtflag2 = 0;
	assignstmtflag = 0;
		

	return STMTEND;
	}
"+" {
	if(assignstmtflag==1)
	{
		if(assignstmtflag2 !=1)
		{
			printf("%s(%d): syntax error: near sombol '+' \n",filename,lineno);
			errcount ++;
		}
		assignstmtflag2 = 2;
		
	}
	else
	{
			printf("%s(%d): syntax error: near sombol '+' \n",filename,lineno);
				errcount ++;	
	}
		 

	return PLUS;
}
"-" {
	if(assignstmtflag==1)
	{
		if(assignstmtflag2 !=1)
		{
			printf("%s(%d): syntax error: near sombol '-' \n",filename,lineno);
				errcount ++;
		}
		assignstmtflag2 = 2;
	
	}
	else
	{
			printf("%s(%d): syntax error: near sombol '-' \n",filename,lineno);
			errcount ++;	
	}
		

	return MINUS;
}
"*" {
	if(assignstmtflag==1)
	{
		if(assignstmtflag2 !=1)
		{
			printf("%s(%d): syntax error: near sombol '*' \n",filename,lineno);
				errcount ++;
		}
		assignstmtflag2 = 2;
	}
	else
	{
			printf("%s(%d): syntax error: near sombol '*' \n",filename,lineno);
				errcount ++;	
	}
		 

	return TIMES;
}
"/" {
	if(assignstmtflag==1)
	{
		if(assignstmtflag2 !=1)
		{
			printf("%s(%d): syntax error: near sombol '/' \n",filename,lineno);
				errcount ++;
		}
		assignstmtflag2 = 2;
	}
	else
	{
			printf("%s(%d): syntax error: near sombol '/' \n",filename,lineno);
				errcount ++;	
	}
		 

	return DIV;
}
"%" {
	if(assignstmtflag==1)
	{
		if(assignstmtflag2 !=1)
		{
			printf("%s(%d): syntax error: near sombol 1 '%' \n",filename,lineno);
				errcount ++;
		}
		assignstmtflag2 = 2;
	}
	else
	{
			printf("%s(%d): syntax error: near sombol 2 '%' \n",filename,lineno);
				errcount ++;	
	}
		 

	return MOD;
}
"jumpflow"  {
	if(nexttoken!=-1)
	{
				printtokenerror(nexttoken,"jumpflow");
 	}

return JUMPFLOW;
}
-?[0-9]+   {
		if(nexttoken!=-1)
		 {
				printtokenerror(nexttoken,yytext);
 		} 
	yylval.iValue = atoi(yytext); 
	 
	return NUMBER;
}
\"[^"]*\"  {
	int fnlen,i,j,flag;
	char temp[1024];
	//printf("line %d: %s \n",lineno,yytext);

	if(nexttoken!=-1)
	{
				printtokenerror(nexttoken,yytext);
 	} 
	strncpy(temp , yytext+1,yyleng-2);
	fnlen = yyleng - 2;
	temp[fnlen]='\0';
	j = 0;
	if(fnlen!=0)
	{
	   for(i = 0;i<fnlen;i++)
	   {
			if(temp[i]=='\n'||temp[i]=='\r'||temp[i]=='\t')
			{	
				if(temp[i]=='\n')
				    lineno++;
				if(flag==0)
				{
					yylval.szValue[j++]=' ';
				}
				flag = 1;
			}
			else
			{
			yylval.szValue[j++]=temp[i];
			flag = 0;
			}
		}
	}
	yylval.szValue[j]='\0'; 
	//printf("调整后: %s \n",yylval.szValue);
	sprintf(yytext,"%s","");

	return STR;
}
([a-zA-Z]|[$])([0-9]|[_]|[a-zA-Z])*  	 {
    int ret = 0;
	if(nexttoken!=-1)
	{
			printtokenerror(nexttoken,yytext);
 	} 
  strcpy(yylval.szValue , yytext);
  sprintf(yytext,"%s","");
  ret = lookconstanttable(yylval.szValue);
  if(ret==-100)
	return ID;
   else
   {
	yylval.iValue = ret;  
	return NUMBER;
	}


}
\n 	    {
	lineno++;
    //printf("lineno = %d\n",lineno);
	//strcat(linebuf,yytext);
	/*
	if(instring == 1)
	{
		printf("%s(%d): syntax error: miss '\"'   before  line %d end \n",filename,lineno,lineno);
		instring = 0;
		
	}
	*/
	}
. 	 {

return yytext[0];
}
%%

⌨️ 快捷键说明

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