91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 5KB
    文件類型: .cpp
    金幣: 1
    下載: 1 次
    發布日期: 2021-07-19
  • 語言: C/C++
  • 標簽:

資源簡介

輸入:源程序 輸出:二元組(詞法記號,屬性值/其在符號表中的位置)構成的序列。

資源截圖

代碼片段和文件信息

//?詞法分析器.cpp?:?定義控制臺應用程序的入口點。
//

#include?“stdafx.h“
#include
#include
#include
#include?
#include
#include?
#include?
#include?
#include?
#include
#define?MAX?20
typedef?struct?
{
int?syn;???
char?value[MAX];?
int?line;
}WS;
int?linenum=1;
char?ch;
FILE?*fp;
void?getbc()?
{
while(ch==‘?‘)
ch=fgetc(fp);
}
int?letter()?
{????
if((ch>=‘A‘)&&(ch<=‘Z‘)||(ch>=‘a‘)&&(ch<=‘z‘))?
return?1;
else?
return?0;
}
int?linee()
{
if(ch==‘\n‘)
return?1;
else?
return?0;
}
int?digit()?
{
if((ch>=‘0‘)&&(ch<=‘9‘))?
return?1;
else?
return?0;
}
int?reserve(char?*token)???
{
int?key=10i;
char?WORDS_KEY[8][20]={“main““do““then““if““else““for““while““void“};
for(i=0;i<8;i++)?????
if(strcmp(tokenWORDS_KEY[i])==0)
{
key=i+1;?
break;
}?
return?key;
}
void?error(WS?*wd)?
{
printf(“There?has?some?wrong?words?or?mistakes\n“);
}
void?print(WS?*wd)?
{
if(wd->syn!=-2)
{
printf(“<%d%s>\n“wd->synwd->value);
}
else
{
printf(“?Line?%d\n“wd->line);
// printf(“\n“);
}
}
WS?scaner()?
{
char?token[20];
WS?wd;
int?c;
int?i=0;????
ch=fgetc(fp);
getbc();

if(linee())
{ wd.line=linenum++;
wd.syn=-2;

// linenum++;
// if()
return?wd;
}
???else
???if(letter())
???{
???reserve((char?*)token);
while(letter()||digit())
{
token[i]=ch;
ch=fgetc(fp);
i++;
}
token[i]=‘\0‘;
fseek(fp-1L1);?
c=reserve(token);
if(c!=10)?
{
wd.syn=c;
strcpy(wd.valuetoken);?
return?wd;
}
else??????
{?
wd.syn=10;
strcpy(wd.valuetoken);
return?wd;
}
}
else?if(digit())?
{
while(digit())
{?????????
token[i]=ch;
ch=fgetc(fp);
i++;
}
if(letter())
{
wd.syn=-1;
while(ch!=‘;‘)
{
token[i]=ch;
ch=fgetc(fp);
i++;
}
return?wd;
}
else
{
fseek(fp-1L1);????
token[i]=‘\0‘;
wd.syn=11;
strcpy(wd.valuetoken);
return?wd;
}
}

else?
{
switch(ch)?
{ ?
case?‘+‘:?
ch=fgetc(fp); ??????
if(ch==‘+‘)?
{
wd.syn=13;
wd.value[0]=‘+‘;
wd.value[1]=‘+‘;??
wd.value[2]=‘\0‘;??
return?wd;?
break;
} ???????
fseek(fp-1L1); ??????????
wd.syn=25;
wd.value[0]=‘+‘;?
wd.value[1]=‘\0‘;?
return?wd;?
break;?????????
case?‘-‘:?
wd.syn=14;
wd.value[0]=‘-‘;?
wd.value[1]=‘\0‘;?
return?wd;?
break;
case?‘*‘:?
wd.syn=15;
wd.value[0]=‘*‘;?
wd.value[1]=‘\0‘;??

評論

共有 條評論

相關資源