77范文网 - 专业文章范例文档资料分享平台

编译原理--算符优先分析算法

来源:网络收集 时间:2018-11-01 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

编译原理实验

目录

编译原理实验 ................................................................................................................................... 1 一 实验目的 ................................................................................................................................... 2

二 实验过程 ................................................................................................................... 2 2.1实验过程 ............................................................................................................................ 2 2.2 各种单词符号对应的种别码 ........................................................................................... 2 2.3 算符优先程序的功能 ....................................................................................................... 2 三 设计源码 ................................................................................................................................. 3 四 实验结果 ................................................................................................................................... 14

一 实验目的

设计、编制并调试一个算符优先分析算法,加深对此分析法的理解

二 实验过程

2.1实验过程

先在算符栈置“$”,然后开始顺序扫描表达式,若读来的单词符号是操作数,这直接进操作数栈,然后继续读下一个单词符号。分析过程从头开始,并重复进行;若读来的是运算符θ2 则将当前处于运算符栈顶的运算符θ1的入栈优先数f与θ2的比较优先函数g进行比较。

2.2 各种单词符号对应的种别码

单词符号 Main Int Char if else for while letter(letter \\digit)* digit digit* = + -

种别码 1 2 3 4 5 6 7 10 20 14 15 16 单词符号 * / == != <= > >= = ; ( ) 等等 种别码 17 18 39 40 38 23 37 21 34 26 27 ? 2.3 算符优先程序的功能

完成一个交互式面向对象的算符优先分析程序,而一个交互式面向对象的算符

优先分析程序基本功能是: (1) 输入文法规则 (2) 对文法进行转换

(3) 生成每个非终结符的FirstVT和LastVT (4) 生成算符优先分析表 (5) 再输入文法符号

(6) 生成移进规约步骤

三 设计源码

算符优先分析器

#include \#include \#include \

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(\

printf(\请输入文法规则:\\n\ for(i=0;i

scanf(\存储文法规则,初始化FIRSTVT集和LASTVT集*/

first[i][0]=0; /*first[i][0]和last[i][0]分别表示st[i][0]非终极

符的FIRSTVT集和LASTVT集中元素的个数*/

last[i][0]=0; }

for(i=0;i

for(j=0;st[i][j]!='\\0';j++) {

if(st[i][0]<'A'||st[i][0]>'Z') {

printf(\不是算符文法!\\n\ exit(-1); }

if(st[i][j]>='A'&&st[i][j]<='Z') {

if(st[i][j+1]>='A'&&st[i][j+1]<='Z') {

printf(\不是算符文法!\\n\ exit(-1); } } } }

for(i=0;i

for(j=0;st[i][j]!='\\0';j++) {

if((st[i][j]<'A'||st[i][j]>'Z')&&st[i][j]!='-'&&st[i][j]!='>'&&st[i][j]!='|')

lable[k++]=st[i][j]; } }

lable[k]='#';

lable[k+1]='\\0'; table();

printf(\每个非终结符的FIRSTVT集为:\\n\输出每个非终结符的FIRSTVT集 for(i=0;i

printf(\ for(j=0;j

printf(\

}

printf(\ }

printf(\每个非终结符的LASTVT集为:\\n\输出每个非终结符的LASTVT集 for(i=0;i

printf(\ for(j=0;j

printf(\ }

printf(\ }

printf(\算符优先分析表如下:\\n\

for(i=0;lable[i]!='\\0';i++) printf(\

printf(\ for(i=0;i

printf(\ for(j=0;j

printf(\ }

printf(\ }

printf(\请输入文法输入符号串以#结束:\

scanf(\

deal(); }

void table() {

char text[20][10]; int i,j,k,t,l,x=0,y=0; int m,n; x=0;

for(i=0;i

firstvt(st[i][0]); lastvt(st[i][0]); }

for(i=0;i

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库编译原理--算符优先分析算法在线全文阅读。

编译原理--算符优先分析算法.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/249992.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: