• 大小: 204KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-08-14
  • 语言: 其他
  • 标签: 文件读  编译原理  

资源简介

编译原理 词法分析器实验代码 从文件读入 cbb.cpp文件

资源截图

代码片段和文件信息

#include
#include
#include
#define _KEY_WORD_END “waiting for you expanding“
typedef struct {
int typenum;
char* word;
}WORD;
char input[255];
char token[255]=““;
int p_input;
int p_token;
char ch;
char* rwtab[]={“begin““if““then““while““do““end“_KEY_WORD_END};
WORD* scaner();

//char str[] = “begin x:=9;if x>0then x:=2*x+1/3;end#“;
char str[] = “begin 8x:=9;if x>0then x:=2*x+1/3;end#“;
FILE *fp1*fp2;

void main(int argc char* argv[])
{
int over=1;
WORD* oneword=new WORD;

fp1 = fopen(“text.txt““w“);
if(fp1 == NULL){
printf(“can not open file: text.txt\n“);
exit(0);
}

fputs(strfp1);
fclose(fp1);

fp2 = fopen(“text.txt““rt“);
fgets(input43fp2);

    p_input=0;
printf(“Your words:\n%s\n“input);
while(over<1000)
{
oneword=scaner();
if(oneword->typenum<1000 && oneword->typenum != -1 )
printf(“(%d%s)“oneword->typenumoneword->word);
else if(oneword->typenum<1000)
printf(“error“);
over=oneword->typenum;
}
printf(“\npress # to exit:“);
scanf(“%[^#]s“input);
}

char m_getch()
{
ch=input[p_input];
p_input=p_input+1;
return (ch);
}
void getbc()
{
while(ch==‘ ‘||ch==10)
{
ch=input[p_input];
p_input=p_input+1;
}
}
void concat()
{
token[p_token]=ch;
    p_token=p_token+1;
token[p_token]=‘\0‘;
}
int letter()
{
if(ch>=‘a‘&&ch<=‘z‘||ch>=‘A‘&&ch<=‘Z‘)
return 1;
else return 0;
}
int digit()
{
if(ch>=‘0‘&&ch<=‘9‘)
return 1;
else return 0;
}
int reserve()
{
int i=0;
while(strcmp(rwtab[i]_KEY_WORD_END))
{
if(!strcmp(rwtab[i]token))
{
return i+1;
}
i=i+1;
}
return 10;
}
void retract()
{
p_input=p_input-1;
}
char* dtb()
{
return NULL;
}
WORD* scaner()
{
WORD* myword=new WORD;
myword->typenum=10;
myword->word=““;
p_token=0;
m_getch();
getbc();

  if(letter())
  {
while(letter()||digit())
{
concat();
/*myword->typenum=reserve();
if(myword->typenum != 10)
break;*/
m_getch();
}
retract();
myword->typenum=reserve();
myword->word=token;
return(myword);
  }
      else if(digit())
  {
while(digit())
{
concat();
m_getch();
}
if(letter()){
            myword->typenum=-1;
myword->word=“error“;
return (myword);
}
        else{
retract();
myword->typenum=11;
myword->word=token;
return(myword);
}
  }
else switch(ch)
{
case‘=‘:
myword->typenum=21;
myword->word=“==“;
return (myword);
break;
case‘+‘:myword->typenum=13;
    myword->word=“+“;
    return (myword);
    break;
case‘-‘:myword->typenum=14;
    myword->word=“-“;
    return (myword);
    break;
case‘*‘:myword->typenum=15;
    myword->word=“*“;
    return (myword);
    break;
case‘/‘:myword->typenum=16;
    myword->word=“/“;
    return (myword);
    break;
case‘(‘:myword->typenum=27;
    myword->word=“

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

    .......       930  2014-09-26 13:39  sbb\sbb.dsw

    .......     50176  2014-09-26 13:39  sbb\sbb.ncb

    .......     59904  2014-09-26 13:39  sbb\sbb.opt

     文件     459776  2012-01-02 09:42  sbb\sbb1\Debug\sbb1.pdb

    .......      1780  2014-09-26 13:39  sbb\sbb1\Debug\StdAfx.obj

     文件      41984  2012-01-02 09:42  sbb\sbb1\Debug\vc60.idb

     文件      53248  2012-01-02 09:42  sbb\sbb1\Debug\vc60.pdb

     文件       3370  2014-09-28 09:10  sbb\sbb1\Debug\text.obj

     文件     172080  2012-01-02 09:42  sbb\sbb1\Debug\sbb1.exe

     文件     226020  2012-01-02 09:17  sbb\sbb1\Debug\sbb1.pch

     文件     198552  2012-01-02 09:42  sbb\sbb1\Debug\sbb1.ilk

     文件      16828  2012-01-02 09:42  sbb\sbb1\Debug\sbb1.obj

    .......      1196  2014-09-26 13:39  sbb\sbb1\ReadMe.txt

     文件       1104  2012-01-02 09:42  sbb\sbb1\sbb1.plg

    .......       291  2014-09-26 13:39  sbb\sbb1\StdAfx.cpp

    .......       769  2014-09-26 13:39  sbb\sbb1\StdAfx.h

     文件        769  2014-09-28 08:07  sbb\sbb1\text\StdAfx.h

     文件        291  2014-09-28 08:07  sbb\sbb1\text\StdAfx.cpp

     文件       1196  2014-09-28 08:07  sbb\sbb1\text\ReadMe.txt

     文件       4512  2014-09-28 08:07  sbb\sbb1\text\text.dsp

     文件        531  2014-09-28 08:07  sbb\sbb1\text\text.dsw

     文件      33792  2014-09-28 08:22  sbb\sbb1\text\text.ncb

     文件      48640  2014-09-28 08:22  sbb\sbb1\text\text.opt

     文件        119  2012-01-02 08:38  sbb\sbb1\text\text.cpp

     文件       3575  2014-09-28 08:55  sbb\sbb1\word_scaner.cpp

     文件      50176  2012-01-02 09:44  sbb\sbb1\sbb1.ncb

     文件        330  2014-09-28 09:44  sbb\sbb1\sbb1.sln

    ..A..H.      7680  2014-09-28 09:44  sbb\sbb1\sbb1.suo

     文件         38  2012-01-02 09:42  sbb\sbb1\text.txt

     文件       4376  2012-01-02 09:44  sbb\sbb1\sbb1.cpp

............此处省略11个文件信息

评论

共有 条评论