Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
b1fb36c56This file is pinned to the selected release. Download the original to open it in your design tool.
FILE *infile;
static int cur_char=' ';
char tkname[MAXLEN];
int yylex()
{
char *p=tkname;
int tmp;
while(isspace(cur_char))
cur_char=getc(infile);
if(isdigit(cur_char)){
do{
*p++=cur_char;
cur_char=getc(infile);
}while(isdigit(cur_char));
if(cur_char=='.'){
*p++=cur_char;
cur_char=getc(infile);
while(isdigit(cur_char)){
*p++=cur_char;
cur_char=getc(infile);
}
}
*p++=0;
return TKNUMBER;
}
if(isalpha(cur_char)){
do{
*p++=cur_char;
cur_char=getc(infile);
}while(isalnum(cur_char));
*p++=0;
if(!strcmp(tkname,"int"))
return TKINT;
if(!strcmp(tkname,"real"))
return TKREAL;
if(!strcmp(tkname,"if"))
return TKIF;
if(!strcmp(tkname,"else"))
return TKELSE;
if(!strcmp(tkname,"while"))
return TKWHILE;
if(!strcmp(tkname,"return"))
return TKRETURN;
return TKIDENTIFIER;
}
tmp=cur_char;
cur_char=getc(infile);
if(tmp=='!'&&cur_char=='='){
cur_char=getc(infile);
return TKNEQ;
}
if(tmp=='<'&&cur_char=='='){
cur_char=getc(infile);
return TKLEQ;
}
if(tmp=='>'&&cur_char=='='){
cur_char=getc(infile);
return TKGEQ;
}
if(tmp=='&'&&cur_char=='&'){
cur_char=getc(infile);
return TKAND;
}
if(tmp=='|'&&cur_char=='|'){
cur_char=getc(infile);
return TKOR;
}
if(tmp==':'&&cur_char=='='){
cur_char=getc(infile);
return TKASSIGN;
}
return tmp;
}