没有合适的资源?快使用搜索试试~ 我知道了~
编译原理--算符优先分析算法[定义].pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 130 浏览量
2021-10-12
05:58:27
上传
评论
收藏 122KB PDF 举报
温馨提示
试读
14页
编译原理--算符优先分析算法[定义].pdf
资源推荐
资源详情
资源评论
编译原理实验
目录
编译原理实验 ................................................................................................................................... 1
一 实验目的 ................................................................................................................................... 2
二 实验过程 ................................................................................................................... 2
2.1 实验过程 ............................................................................................................................ 2
2.2 各种单词符号对应的种别码 ........................................................................................... 2
2.3 算符优先程序的功能 ....................................................................................................... 2
三 设计源码 ................................................................................................................................. 3
四 实验结果 ................................................................................................................................... 14
一 实验目的
设计、编制并调试一个算符优先分析算法,加深对此分析法的理解
二 实验过程
2.1 实验过程
先在算符栈置 “$”,然后开始顺序扫描表达式, 若读来的单词符号是操作数,
这直接进操作数栈, 然后继续读下一个单词符号。 分析过程从头开始, 并重复进
行;若读来的是运算符 θ2 则将当前处于运算符栈顶的运算符 θ1 的入栈优先数 f
与θ
2
的比较优先函数 g 进行比较。
2.2 各种单词符号对应的种别码
单词符号 种别码 单词符号 种别码
Main 1 * 17
Int 2 / 18
Char 3 == 39
if 4 != 40
else 5 <= 38
for 6 > 23
while 7 >= 37
letter (letter
\digit )*
10 = 21
digit digit* 20 ; 34
= 14 ( 26
+ 15 ) 27
- 16 等等 ,
2.3 算符优先程序的功能
完成一个交互式面向对象的算符优先分析程序, 而一个交互式面向对象的算符
优先分析程序基本功能是:
(1) 输入文法规则
(2) 对文法进行转换
(3) 生成每个非终结符的 FirstVT 和 LastVT
(4) 生成算符优先分析表
(5) 再输入文法符号
(6) 生成移进规约步骤
三 设计源码
算符优先分析器
#include "stdio.h"
#include "stdlib.h"
#include "iostream.h"
char data[20][20]; // 算符优先关系
char s[100]; // 模拟符号栈 s
char lable[20]; // 文法终极符集
char input[100]; // 文法输入符号串
char string[20][10]; // 用于输入串的分析
int k;
char a;
int j;
char q;
int r; // 文法规则个数
int r1;
int m,n,N; // 转化后文法规则个数
char st[10][30]; // 用来存储文法规则
char first[10][10]; // 文法非终结符 FIRSTVT集
char last[10][10]; // 文法非终结符 LASTVT集
int fflag[10]={0}; // 标志第 i 个非终结符的 FIRSTVT集是否已求出
int lflag[10]={0}; // 标志第 i 个非终结符的 LASTVT集是否已求出
int deal(); // 对输入串的分析
int zhongjie(char c); // 判断字符 c 是否是终极符
int xiabiao(char c); // 求字符 c 在算符优先关系表中的下标
void out(int j,int k,char *s); // 打印 s 栈
void firstvt(char c); // 求非终结符 c 的 FIRSTVT集
void lastvt(char c); // 求非终结符 c 的 LASTVT集
void table(); // 创建文法优先关系表
void main()
{
int i,j,k=0;
printf(" 请输入文法规则数: ");
scanf("%d",&r);
printf(" 请输入文法规则: \n");
for(i=0;i<r;i++)
{
scanf("%s",st[i]); // 存储文法规则,初始化 FIRSTVT集和 LASTVT集*/
剩余13页未读,继续阅读
资源评论
czq131452007
- 粉丝: 2
- 资源: 12万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功