⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2.1.cpp

📁 语法分析 C2.1 实验目的 编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析. C2.2 实验要求 利用C语言编制递归下降分析程序,并对简单语言进行语法分析.
💻 CPP
字号:

#include "wordscan.h"
//char prog[80];
//int syn,p,m,n,kk,sum=0;
//char ch;
void lrparser();
void yucu();
void statement();
void expression();
void term();
void factor();
int kk=0;

void lrparser()
{
if (syn==1) //begin
{
   scaner();
   yucu();
   if (syn==6)   //end
   {
    scaner();
    if (syn==0 && kk==0) printf("success \n");
   }
   else 
   {   
    if(kk!=1) printf("error,lose 'end' ! \n");
    kk=1;
   }
}
else 
{
   printf("error,lose 'begin' ! \n");
   kk=1;
} 
    return;
}

void yucu()
{
statement();
while(syn==26) //;
{
   scaner();
   statement();
}
return;
}

void statement()
{
if (syn==10) //为标识符 
{
   scaner();
   if (syn==18)   //为 :=
   {
    scaner();
    expression();
   }
   else 
   {
    printf("error!");
    kk=1;
   }
}
else
{
        printf("error!");
   kk=1;
}
return;
}


void expression()
{
term();
while(syn==13 || syn==14)
{
   scaner();
   term();
}
return;
}


void term()
{
factor();
while(syn==15 || syn==16)
{
   scaner();
   factor();
}
return;
}


void factor()
{
if(syn==10 || syn==11)   scaner(); //为标识符或整常数时,读下一个单词符号
else if(syn==27)
{
   scaner();
   expression();
   if(syn==28)   scaner();
        else {printf(" ')' 错误\n"); kk=1;}
}
    else { printf("表达式错误\n"); kk=1;}
return;
}


void main()
{
p=0; 
printf("********************语法分析程序***************\n");
printf("请输入源程序:\n");
do
{
   scanf("%c",&ch);
   prog[p++]=ch;
}while(ch!='#');
p=0;
scaner();
    lrparser();
printf("语法分析结束!\n");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -