• 大小: 308KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-08-14
  • 语言: C/C++
  • 标签:

资源简介

编译原理实验一词法分析 实验二语法分析,C++程序编写,对编译原理实验一 二的详细编写

资源截图

代码片段和文件信息

#include    
#include    
#include    
#include    
#define LEN sizeof(struct Node)   
#define NULL 0   

struct Node   
{char data;   
struct Node *next;   
};   
 
void scaner();     
void getbc();   
void getch();   
void concat();   
int letter(char ch);   
int degit(char ch);   
int reserve();   
void retract();   
void back(int   achar   *b);   
struct Node   *head*p;   
char ch;     
char *key[]={“if““int““for““while““do““return““break““continue“};   
char token[20];    


int   main(void)   
{
FILE *fp;
char root[1000];
printf(“输入源程序地址:“);
scanf(“%s“root);
fp=fopen(root“r“); 

    if (fp==NULL)
{
      printf(“Error!\n“);
      return 0;
}

head=(struct Node *)malloc(LEN);
    head->next=NULL;   
    head->data=NULL;   
    p=head;
while ((p->data=fgetc(fp))!=EOF)
{
        p->next=(struct Node*)malloc(LEN);
p=p->next; 
}
void retract();  
p->next=NULL;
    p=head;   
    while(p->next!=NULL)   
    scaner();             
    return 0;   
}

void getbc()   
{   
while(ch==‘ ‘)
getch();   
}   

void getch()        
{   
ch=p->data;   
    p=p->next;   
}   

void concat()       
{   
unsigned int i;   
    i=strlen(token);   
    token[i]=ch;   
    token[i+1]=‘\0‘;   
}   

int letter(char ch)  
{
return isalpha((int)ch);   
}   

int digit(char   ch)      
{
return isdigit((int)ch);   
}   

int reserve()   
{
int k;   
    for(k=0;k<=6;k++)   
{
if(strcmp(key[k]token)==0)
return (1);
}
return 2;   
}   

void retract()   
{
struct Node *Q;
Q=head;
while(Q->next!=p)
Q=Q->next;
p=Q;   
}   

void back(int achar *b)        
{
printf(“(%d‘%s‘)“ab);
printf(“\n“);
}   


void scaner()    
{
int c;
token[0]=NULL;
getch();
getbc();   
if(letter(ch))   
{   
while(letter(ch)||digit(ch))   
{   
concat();   
getch();    
}   
retract();   
c=reserve();   
if(c!=2)   back(ctoken);   
else back(2token);   
}   
else if(digit(ch))   
{   
while(digit(ch))   
{   
concat();   
getch();   
}   
retract();   
printf(“(3‘%d‘)“atoi(token));
printf(“\n“);
}   
else   
switch(ch)    
{
     case‘+‘:   back(4“+“);break;  
     case‘-‘:   back(4“-“);break; 
 case‘*‘:   back(4“*“);break;   
     case‘/‘:   back(4“/“);break;
 case‘!=‘:  back(4“!=“);break;
     case‘<‘:   getch();
 if(ch==‘=‘)  back(4“<=“);
 else{   
 retract();
 back(4“<“);break;} 
 case‘>‘:   getch();   
 if(ch==‘=‘)  back(4“>=“);
 else{   
 retract();   
 back(4“>“);break;}
 case‘‘:   back(5““);break;
 case‘;‘:   back(5“;“);break;  
 case‘{‘:   back(5“{“);break;   
 case‘}‘:   back(5“}“);break;   
 case‘(‘:   back(5“(“);break;   
 case‘)‘:   back(5“)“);break;   
 case‘=‘:   back(4“=“);break; 
 case‘#‘:   back(5“#“);break; 
 ca

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

     文件       1196  2010-06-28 11:58  编译原理实验一词法分析 实验二语法分析\实验二\2222222.txt

     文件     195409  2010-04-30 09:53  编译原理实验一词法分析 实验二语法分析\实验二\LoginSample.rar

     文件       7442  2010-04-29 14:07  编译原理实验一词法分析 实验二语法分析\实验二\trytr.txt

     文件      29696  2010-04-29 23:18  编译原理实验一词法分析 实验二语法分析\实验二\新建 Microsoft Word 文档.doc

     文件       2045  2010-04-28 22:52  编译原理实验一词法分析 实验二语法分析\实验二\新建 文本文档 (3).txt

     文件       1285  2010-04-28 22:59  编译原理实验一词法分析 实验二语法分析\实验二\新建 文本文档 (4).txt

     文件       3182  2010-04-01 16:09  编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\bianyi.cpp

     文件       3401  2010-04-01 16:07  编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\bianyi.dsp

     文件        520  2010-04-01 16:11  编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\bianyi.dsw

     文件      33792  2010-04-01 16:11  编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\bianyi.ncb

     文件      48640  2010-04-01 16:11  编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\bianyi.opt

     文件        746  2010-04-01 16:09  编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\bianyi.plg

     文件     196697  2010-04-01 16:09  编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\Debug\bianyi.exe

     文件     200584  2010-04-01 16:09  编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\Debug\bianyi.ilk

     文件      16992  2010-04-01 16:09  编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\Debug\bianyi.obj

     文件     229528  2010-04-01 15:56  编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\Debug\bianyi.pch

     文件     484352  2010-04-01 16:09  编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\Debug\bianyi.pdb

     文件      33792  2010-04-01 16:10  编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\Debug\vc60.idb

     文件      53248  2010-04-01 16:09  编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\Debug\vc60.pdb

     文件         38  2010-04-01 15:34  编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\hello.txt

     目录          0  2010-04-01 16:09  编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序\Debug

     目录          0  2010-04-01 16:11  编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序\编译原理实验一词法分析程序

     目录          0  2010-04-30 10:51  编译原理实验一词法分析 实验二语法分析\实验二

     目录          0  2010-04-05 19:28  编译原理实验一词法分析 实验二语法分析\编译原理实验一词法分析程序

     目录          0  2010-06-22 15:48  编译原理实验一词法分析 实验二语法分析

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

              1542585                    25


评论

共有 条评论

相关资源