编绎技术上机报告之简单语法分析
编绎技术上机报告之简单语法分析|上机实验实习报告|计算机上机实习报告|简单的语法分析程序的设计
实验目的
通过本次实验对语法分析的目的,语法分析
二.实验内容:
简单的语法分析程序的设计
三.实验流程图
四.实验原代码:
<程序>->begin<语句>end
<语句>-><赋值语句>|<条件语句>
<赋值语句>-><变量>:=<表达式>
<条件语句>->if<表达式>then<语句>
<表达式>-><变量>|<表达式>+<变量>
<变量>->x
#include<stdio.h>
#include<ctype.h>
char ch;
int T();
int F();
int P();
int E()
{
int es=0;
es=T();
if(ch=='+')
{
ch=getchar();
es=T();
printf("+");
return (es);
}
else return(es);
}
int T()
{
int es=0;
es=F();
if(ch=='*')
{
ch=getchar();
es=P();
printf("*");
return(es);
}
else return(es);
}
int P()
{
int es=0;
es=F();
if(ch=='=')
{
ch=getchar();
es=T();
printf("=");
return(es);
}
else return(es);
}
int F()
{
int es=0;
if(ch=='(')
{
ch=getchar();
es=E();
if(ch!=')')return(3);
else
{
ch=getchar();
return(es);
}
}
else
{
if(isalpha(ch))
{
printf("%c",ch);
ch=getchar();
return(es);
}
else return(4);
}
}
void main()
{
int es=0;
printf("请输入算术表达式:");
ch=getchar();
printf("算术表达式:");
es=E();
if(es==0)
printf("\n翻译成功!\n");
else
printf("\n表达式有语法错误!\n");}
五.实验结果:若图片无法显示请联系站长QQ3249114
六.实验总结
语法分析程序一词法分析输出的符号串作为输入,在分析过程中检查这个符号串是否为该程序语言的句子.若是,则输出该句子的分析树;否则就表示源程序存在语法错误.它的主要任务是按照程序语言的语法规则,从由词法分析输出的源程序符号中识别出各类语法成分,同时进行语法检查,为语义分析和代码生成作准备.执行语法分析任务的程序叫语法分析程序.