首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
dejavudwh
掘友等级
学生
|
大三咸鱼
一名咸鱼大学生
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
0
文章 0
沸点 0
赞
0
返回
|
搜索文章
最新
热门
从零写一个编译器(八):语义分析之构造符号表
在之前完成了描述符号表的数据结构,现在就可以正式构造符号表了。符号表的创建自然是要根据语法分析过程中走的,所以符号表的创建就在LRStateTableParser里的takeActionForReduce方法 这里其实是完成一个完成的定义,像int x,y;后把拿到Specif…
从零写一个编译器(七):语义分析之符号表的数据结构
前面我们通过完成一个LALR(1)有限状态自动机和一个reduce信息来构建了一个语法解析表,正式完成了C语言的语法解析。接下来就是进入语义分析部分,和在第二篇提到的一样,语义分析的主要任务就是生成符号表来记录变量和变量的类型,并且发现不符合语义的语句 修饰符则是由变量名或者代…
从零写一个编译器(六):语法分析之表驱动语法分析
主要逻辑从while开始,遍历所有节点,先从跳转信息的Map里拿出跳转关系和跳转的目的节点,然后把这个跳转关系(这个本质上对应的是一开始Token枚举的标号)和目的节点的标号拷贝到另一个map里。接着拿到reduce信息,找到之前对应在lookahead set里的符号,把它们…
从零写一个编译器(五):语法分析之自动机的缺陷和改进
这时候通过状态节点0输入t跳转到这个节点,但是这时候状态机无法分清是根据推导式1做reduce还是根据推导式2做shift操作,这种情况就称之为shift / reduce矛盾。 如果构建的状态机,出现reduce / shift矛盾的节点都可以根据上面的原则处理的话,那么这种…
从零写一个编译器(四):语法分析之构造有限状态自动机
0: s -> . e 负责这个操作的方法在StateNodeManager类中,前面先判断当前目录下是不是已经构建好语法分析表了,如果有的话就不需要再次构建了。 productionManager.buildFirstSets();可以先略过,后面会讲到。 注意之前的 . ,…
从零写一个编译器(三):语法分析之几个基础数据结构
这个系列算作为我自己在学习写一个编译器的过程的一些记录,算法之类的都没有记录原理性的东西,想知道原理的在龙书里都写得非常清楚,但是我自己一开始是不怎么看得下来,到现在都还没有完整的看完,它像是一本给已经有基础的人写的书。 比如下面这个就对应C语言的变量声明语句的推导式,PROG…
从零写一个编译器(二):语法分析之前置知识
在之前完成了词法分析之后,得到了Token流,那么接下来就是实现语法分析器来输入Token流得到抽象语法树 (Abstract Syntax Tree,AST)。但是在完成这个语法分析器不像词法分析器,直接手撸就好了,还是需要一些前置的知识。 如果我们把词法分析看成是组合单词,…
从零写一个编译器(一):输入系统和词法分析
从半抄半改的完成一个把C语言编译到Java字节码到现在也有些时间,一直想写一个系列来回顾整理一下写一个编译器的过程,也算是学习笔记吧。就从今天开始动笔吧。 支持C语言的大部分使用,具体可以到上面的链接去看,当然依旧是比玩具级还玩具级的编译器。 主要分为自顶向下和自底向上的语法分…
个人成就
文章被点赞
62
文章被阅读
69,739
掘力值
1,475
关注了
0
关注者
93
收藏集
0
关注标签
34
加入于
2018-08-14