- 博客(8)
- 资源 (1)
- 收藏
- 关注
转载 自己动手开发编译器(六)上下文无关语言和文法
上回我们已经学习了语法分析第一阶段——词法分析的原理和工具,介绍了正则表达式、正则语言和DFA等工具。今次我们要开始涉及编译器前端最重要的阶段——语法分析。简单而言,这一步就要完整地分析整个编程语言的语法结构。上回说到词法分析的结果是将输入的字符串分解成一个个的单词流,也就是诸如关键字、标识符这样有特定意义的单词。一种完整的编程语言,必须在此基础上定义出各种声明、语句和表达式的语法规则。观察我们所
2013-12-26 17:04:34 1942
转载 First/Follow集合的求法
First集合的求法: First集合最终是对产生式右部的字符串而言的,但其关键是求出非终结符的First集合,由于终结符的First集合就是它自己,所以求出非终结符的First集合后,就可很直观地得到每个字符串的First集合。1. 直接收取:对形如U-a…的产生式(其中a是终结符),把a收入到First(U)中2. 反复传送:对形入U-P…的产生式(其中P是非终结符),应
2013-12-20 11:23:58 856
转载 SDL用法:"PiratesHo!"全集
SDL用法:"PiratesHo!"的诞生Sam Lantinga, 首席程序员, Loki Entertainment SoftwareLauren MacDonell, 首席程序员, Loki Entertainment Software2000 年 2 月 01 日Simple DirectMedia Layer (SDL) 的作者 Sam L
2013-12-19 10:59:19 1960
转载 怎样把一部老旧的安卓机变成远程安全摄像头
为什么我要这么做?好吧,我们不喜欢去假设,但是我们猜测你打开这篇教程的原因是:你有一些需要格外留意的东西。你需要了解快递是否已经送达到门口,或是怀疑是否有小家伙把你的貂裘当作高端大气的睡床在上面撒欢。亦或是当你打扫房间的时候,想获知在外面玩耍的小孩的情况如何,这些都是你可能面临的问题。我们可以帮助你完成上面的所有的事情,而花费仅仅是一些你身边吃灰的老旧硬件(或者是可以在某宝上轻易买
2013-12-18 10:19:27 4644
转载 有写编译器的冲动?这些资料很重要
关于编译器的图书资料汇总,可以参考《a list of compiler books — 汗牛充栋的编译器参考资料》。工作如果是和编译器相关的或者编译器爱好者们,谁没有点冲动想自己写个编译器出来。我也做了一些调研,分享如下:How to write your own compiler–介绍如何使用JAVA语言完成一个面向LLVM后端的编译器,以mja
2013-12-17 17:50:41 897
转载 NodeCast & Leapcast
6.Nodecast或Leapcast受谷歌Chromecast技术的启发,开发者使用NodeJS开发出不少Chromecast仿真应用。如Nodecast或Leapcast。在PC上运行Nodecast或Leapcast,启动移动设备,选择一个支持Chromecast的应用程序,然后你就可以把移动广播上的内容映射到电脑上了,把电脑当成一个流媒体使用。在这两个应用中,Nodecas
2013-12-17 15:25:34 1453
转载 yymore & yyless
1) yymore() 当需下一次被匹配的字符串被添加在当前识别出的字符串后面,即不使下一次的输入替换yytext中已有的内容而是接在它的内容之后,必须在当前的动作中调用yymore() 例 假设一个语言规定它的字符串括在两个双引号之间,如果某字符串中含有双引号,则在它前面加上反斜线\。用一个正规式来表达该字符串的定义很不容易,不如用下面较简明的正规式与yymore()配合来识别:
2013-12-09 15:20:05 3535
转载 BNF 规则
BNF基本要点(部分):BNF的基本语法: ::= 双引号(" ")中的字符串("word")代表这些字符本身,而double_quote代表双引号。双引号外的字符串(有可能带下划线)代表语法部分。尖括号()中的内容为必选项。方括号([ ])中的内容为可选项。大括号({ })中的内容为可重复0至无限次的项。竖线(|)表示其左右两侧任选一项,相当于 OR 的意思。::= 符号表示 “被
2013-12-03 16:19:36 4042
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人