自制脚本语言(5) 自制的编译器——LR(1) parser

摘要:针对自定义的脚本语言,设计LR(1) parser。LR(1) parser利用之前的parser generator生成的action table和grammar表格,生成抽象语法树(AST)作为中间语言(IR)。

代码地址:https://github.com/nklofy/Compiler

也可以在我的上传资源中下载

  先说LR的自动生成的parser和LL的手写的parser。业界上常用的语言的编译器,往往手写的LL的较多。这是因为LR的编译器,状态数特别多,复杂度过高,人脑往往不能直观的思考,这样就依赖于parser generator自动生成。而parser generator自动生成,必须保证语法产生式设计合理,无冲突,无bug,如果是作为练手的玩具还好,如果业界实用的编程语言,往往corner case太多,难以用一张语法表清晰地归纳出来。调试也较困难,因为往往问题出在语法产生式的设计上。手写的LL编译器,代码结构即反映了语法规则,corner case可以随意发挥,调试起来也容易定位。但是缺点是正确性难以保证,而LR parser只需保证语法产生式的正确性。

   前面已经写好了lex analyzer和parser generator,接下来的任务就是定义语法式。这个版本的脚本语言,支持的语言特性有:

1,基本类型。int(内部实现为long,只支持64位);double;bool;string;char。以后会再增加class类型、数组类型。对应TypeExp,产生语法树的类型是AST_TypeExp。

2,变量定义与赋值。与C的

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《P2P技术揭秘:P2P网络技术原理与典型系统开发》从一个全新的视角向读者展示了从P2P初步入门到应用实践的学习之路。《P2P技术揭秘:P2P网络技术原理与典型系统开发》从理论到实践,从基础到项目,循序渐进地讲解了P2P技术的基本知识体系,同时配合开发案例引导读者进行P2P应用实战开发。书中对每一个知识点、原理思想、应用方法及实例都进行了深入浅出的阐述和分析,力求让读者读完《P2P技术揭秘:P2P网络技术原理与典型系统开发》后有所学、有所悟、有所得。 《P2P技术揭秘:P2P网络技术原理与典型系统开发》共14章,分为3篇。主要内容包括P2P概述、P2P网络拓扑结构、P2P网络搜索技术、P2P关键技术及应用、P2P网络中的nat穿透技术、基于P2P的bittorrent(后文简称bt)技术、基于P2P的emule文件共享技术、基于P2P的skype即时通信技术、基于P2P的流媒体技术、基于java的P2P开发平台搭建、sloape的开发包及插件开发技术、基于P2P的即时通信系统的开发与实现、bt系统分析及客户端开发、jxta技术等。另外,《P2P技术揭秘:P2P网络技术原理与典型系统开发》配书光盘中收录了专门为《P2P技术揭秘:P2P网络技术原理与典型系统开发》录制的多媒体教学视频及书中涉及的源代码,便于读者更加直观、高效地学习。 《P2P技术揭秘:P2P网络技术原理与典型系统开发》适合P2P技术入门人员及网络视频、网络电话、多线程下载等网络软件开发人员。另外,《P2P技术揭秘:P2P网络技术原理与典型系统开发》对于大中专院校相关专业的学生和老师也有很好的借鉴意义。 ——《豆瓣读书》

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值