-
词法分析器
2018-05-09 16:06:37设计并实现一个词法分析器,实现对指定位置的类C语言源程序文本文件的读取,并能够对该源程序中的所有单词进行分类,指出其所属类型,实现简单的词法分析操作。 -
词法分析器-源码
2021-02-17 03:43:42词法分析器 -
c语言词法分析器代码_词法分析 | 词法分析器的手工构造
2021-01-19 03:32:30在词法分析器中使用怎么样的算法和数据结构是我们的主要研究内容。词法分析器的实现方法手工编码实现法相对复杂,且容易出错当能够对各个部分进行相当好的控制,效率高是目前非常流行的实现方法GCC, LLVM,...词法...在词法分析器中使用怎么样的算法和数据结构是我们的主要研究内容。
词法分析器的实现方法
- 手工编码实现法
- 相对复杂,且容易出错
- 当能够对各个部分进行相当好的控制,效率高
- 是目前非常流行的实现方法
- GCC, LLVM,...
- 是目前非常流行的实现方法
- 词法分析器的生成器
- 可快速原型、代码量少
- 但较难控制细节
如下是手工编码分析常用的转移图:
其中双圆圈表示接收/识别状态,一个单词的识别已经结束。
下面给出一个转移图算法的例子:
token nextToken(){ c = getChar(); switch(c){ case '<': c = getChar(); switch(c) { case '=': return LE; case '>': return NE; default: rollback(); return; } case '=': return EQ; case '>': c = nextChar(); switch(c): //similar } }
token nextToken(){ c = getChar(); switch(c){ // continued from abobe cases... case 'a', ..., 'z', 'A', ..., 'Z', '_': c = getChar(); while(c == 'a' || c == 'b' || ... || c == '_') c = getChar(); } }
识别关键字
(以 if 为例),有如下两种方法:
对于 标识符 和 关键字 其实是有很大的交集的:
- 从语法分析的角度看,关键字是标识符的一部分
- 以C语言为例:
- 标识符:以字母或下划线开头,后面跟零个或者多个字母、下划线、或数字。
- 关键字:if, while, else, ....
关键字表算法
- 对给定语言中所有的关键字,构架关键字构成的哈希表H
- 对所有的标识符和关键字,先统一按标识符的转移图进行识别
- 识别完成后,进一步查表H看是否是关键字
- 通过合理的构造哈希表H(完美哈希),可以O(1)时间完成
原文链接:
- 编译原理 - 网易云课堂
- 手工编码实现法
收藏数
4,810
精华内容
1,924
-
Glasterfs 分布式网络文件系统
-
Ubuntu安装工具篇
-
FTP 文件传输服务
-
用微服务spring cloud架构打造物联网云平台
-
IP-GUARD数据备份和加载支持网络路径使用说明.pdf
-
26、华为 华三中小型企业网络架构搭建 【内网安全部署之无线需要部署的安全技术】
-
【CSS】弹出框 文字一行水平居中 多行左对齐
-
办公软件有哪些?什么邮箱能用微信收发邮件呢?
-
一种实用的联网汽车无线攻击方法及车载安全协议
-
如何写出好的产品文案?
-
RapidScada从入门到精通
-
在 Linux 上构建企业级 DNS 域名解析服务
-
srt协议的caller模式的c语言源码
-
项目经理成长之路
-
Java报异常时getMessage()方法返回null
-
去除空白文件夹.bat
-
[005]节日庆典PPT模板[
-
使用 Linux 平台充当 Router 路由器
-
Galera 高可用 MySQL 集群(PXC v5.7+Hapro)
-
Java方法