• 大小: 779B
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2022-03-10
  • 语言: C/C++
  • 标签: c++  c语言  

资源简介

编制一个读单词过程,源程序为一个文件,读取该文件,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、界符五大类。并依次输出各个单词的内部编码及单词符号自身值。 单词的内部编码如下: 1、保留字:if、int、for、while、do、return、break、continue;单词种别码为1; 2、标识符:除保留字外的以字母开头,后跟字母、数字的字符序列;单词种别码为2; 3、常数为无符号整形数;单词种别码为3; 4、运算符包括:+、-、*、/、=;单词种别码为4; 5、分隔符包括:,、;、{、}、(、); 单词种别码为5。 例: 源程序文件内容如下: main() { int a, b; a = 10; b = a + 20; } 要求输出如下: (2,”main”) (5,”(”) (5,”)”) (5,”{“} (1,”int”) (2,”a”) (5,”,”) (2,”b”) (5,”;”) (2,”a”) (4,”=”) (3,10) (5,”;”) (2,”b”) (4,”=”) (2,”a”) (4,”+”) (3,20) (5,”;”) (5,”)”)

资源截图

代码片段和文件信息

#include
#include
#include
#include

char CH;
char *key[]={“if““int““for““while““do““return““break““continue“};//保留字
char *oper[]={“+““-““*““/““=“};//运算符 
char *border[]={“““;““(““)““{““}“};//分隔符 
ifstream fp(“a.txt“);

void IfKey(char A[])
{
int iflag=1;
for(i=0;i<10;i++)
{
if(strcmp(key[i]A)==0)
{
cout<<“(1\““< flag=0;
break;

}
if(flag)
cout<<“(2\““<}

void PinShu()
{
int p=0;
char B[10];
while(CH<=‘9‘&&CH>=‘0‘)
{
B[p]=CH;
p++;
fp.get(CH);
}
B[p]=‘\0‘;
cout<<“(3\““<}
void ZiFu()
{
int i;
for(i=0;i<10;i++)
{
if(strcmp(oper[i]&CH)==0)
{cout<<“(4\““< else if(strcmp(border[i]&CH)==0)
{cout<<“(5\““< }
}

int main()
{
int K;
char A[10];

fp.get(CH);
while(!fp.eof())
{
while(CH==‘ ‘||CH==‘\n‘)
fp.get(CH);
if(isalpha(CH))
{
K=0;
while(isalpha(CH)||isdigit(CH))
{
if(K<10)
{
A[K]=CH;
K++;
}
fp.get(CH);
}
A[K]=‘\0‘;
IfKey(A);
}
else if(CH<=‘9‘&&CH>=‘0‘)
PinShu();
else 
{
ZiFu();
fp.get(CH);
}
}
return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1316  2012-11-27 09:16  c.cpp

     文件         53  2012-11-26 23:04  a.txt

----------- ---------  ---------- -----  ----

                 1369                    2


评论

共有 条评论