云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 编译原理-实验3-LL(1)分析文法构造

编译原理-实验3-LL(1)分析文法构造

  • 62 次阅读
  • 3 次下载
  • 2025/6/16 17:53:14

六、实验小结

1、在本次实验中,通过设计、编制、调试一个递归下降语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析,掌握LL(1)分析法的基本原理、掌握LL(1)分析表的构造方法、掌握LL(1)驱动程序的构造方法;

2、通过本次实验,对LL(1)递归下降分析程序的构造和设计有了更为全面的认识,对LL(1)文法分析程序的实现有了进一步了解;

3、实验输入串以‘$’结束,才用栈的形式,依次弹出进行处理;

附录:程序代码:

#coding:utf-8

from prettytable import PrettyTable

def LL1(): global c,flag if(c=='E'): if(a[k]=='i' or a[k]=='('): table.add_row([a[k:], \ stack.append('X') stack.append('T') print stack c=stack.pop() else: error() flag=1 elif(c=='X'): if(a[k]=='+'): table.add_row([a[k:], \ stack.append('X') stack.append('T') stack.append('+') print stack c=stack.pop() elif(a[k]==')' or a[k]=='$'): table.add_row([a[k:], \ε\ print stack c=stack.pop()

else: error() flag=1 elif(c=='T'): if(a[k]=='i' or a[k]=='('): table.add_row([a[k:], \ stack.append('Y') stack.append('F') print stack c=stack.pop() else: error() flag=1 elif(c=='Y'): if(a[k]=='*'): table.add_row([a[k:], \ stack.append('Y') stack.append('F') stack.append('*') print stack c=stack.pop() elif(a[k]=='+' or a[k]==')' or a[k]=='$'): table.add_row([a[k:], \ε\ print stack c=stack.pop() else: error() flag=1 elif(c=='F'): if(a[k]=='i'): table.add_row([a[k:], \ stack.append('i') print stack c=stack.pop() elif(a[k]=='('): table.add_row([a[k:], \ stack.append(')') stack.append('E') stack.append('(') print stack c=stack.pop()

else: error() flag=1

def error(): global k

table.add_row([a[k], \ print stack k+=1

if __name__ == '__main__':

a=raw_input(\ a=a+'$'

for temp in a: if(temp!='i' and temp!='+' and temp!='*' and temp!='(' and temp!=')' and temp!='$'):

print \ exit(0)

table = PrettyTable([\ table.padding_width = 1 table.align[\ table.align[\ stack=[] k=0 flag=0

stack.append('$') stack.append('E')

table.add_row([a[k:],\ print stack c=stack.pop() while(c!='$'): if(c==a[k]): table.add_row([a[k+1:],'{'+a[k]+'}'+\ print stack k+=1 c=stack.pop() elif(c==')' and c!=a[k]): error() flag=1

break elif(flag==1): break

elif(a[k]=='$' and c=='$'): break else: LL1()

print table if(flag==0): print \else: print \

搜索更多关于: 编译原理-实验3-LL(1)分析文法构造 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

六、实验小结 1、在本次实验中,通过设计、编制、调试一个递归下降语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析,掌握LL(1)分析法的基本原理、掌握LL(1)分析表的构造方法、掌握LL(1)驱动程序的构造方法; 2、通过本次实验,对LL(1)递归下降分析程序的构造和设计有了更为全面的认识,对LL(1)文法分析程序的实现有了进一步了解; 3、实验输入串以‘$’结束,才用栈的形式,依次弹出进行处理; 附录:程序代码: #coding:utf-8 from prettytable import PrettyTable def LL1(): global c,flag if(c=='E'): if(a[k]=='i' or a[k]=

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com