/*
待分析的简单语言的语法
用扩充的BNF表示如下:
⑴<程序>::=begin<语句串>end
⑵<语句串>::=<语句>{;<语句>}
⑶<语句>::=<赋值语句>
⑷<赋值语句>::=ID:=<表达式>
⑸<表达式>::=<项>{+<项> | -<项>}
⑹<项>::=<因子>{*<因子> | /<因子>
⑺<因子>::=ID | NUM | (<表达式>)
*/
#include "stdio.h"
#include "string.h"
char prog[100],token[8],ch;//prog[100],用来存储要处理的对象,token用来与关键字比较,ch用来存储一个字符
char *rwtab[6]={"begin","if","then","while","do","end"};//关键字表
int syn,p,m,n,sum;
/*syn是种别码,p为prog数组的指针,m为token数组的指针,n为rwtab数组的指针,sum为词法分析器里的数字数值大小*/
int flag;//flag与判断是否end有关
void factor(void);//因式 factor
void expression(void);//表达式 expression
void yu
编译原理实验 —— 语法分析器
最新推荐文章于 2024-06-20 09:53:53 发布
本文详细探讨了编译原理中的语法分析器,包括其工作原理、LR分析和LL分析等关键概念,并通过实例展示了如何构建一个简单的语法分析器。读者将了解如何解析源代码并转换为抽象语法树。
摘要由CSDN通过智能技术生成