📄 test30.l
字号:
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 + -