编译技术图式(第三章 词法分析)

编译技术图式(第三章 词法分析)

1、词法分析概述



2、词法分析器和语法分析器的关系



(1)词法分析作为单独的一遍

(2)词法分析作为子程序

3、词法分析器的输出



二元式 (单词类别<整数编码>,单词属性)

依赖于所对应的程序设计语言

  关键字“一字一码”

  标点符号“一字一码”

  对标识符、常数、字符串等“一类一码”

  丢弃其它不相关字符 (注释、空白符等)

4、词法分析器的实现



1)正则表达式:一种用来描述字符串集合的工具

2)字母表:一个有限的符号集合

集合{0, 1}是二进制字母表

3)字母表上的一个“串”或“句子” :字母表中符号的一个有穷序列

串s的长度,记作 |s|,指s中符号出现的次数

空串是长度为0的串,用ε表示

4)语言:给定字母表上一个任意的可数的串集合

5)正则表达式的递归定义

R*任意多次、R+至少一次

原文地址:https://www.cnblogs.com/ggotransfromation/p/11612348.html

时间: 2024-08-28 23:44:36

编译技术图式(第三章 词法分析)的相关文章

编译技术图式(第四章 语法分析)01文法和语法的定义

编译技术图式(第四章 语法分析)01文法和语法的定义 1.基本概念 1)词法规则: 哪些字符串合法或者不合法 字母表:语言允许使用字符的集合 词汇:由字符组成的有限串(字符串) 标识符:函数名,变量名等 2)语法规则: 句子:一个“词汇序列” 确定句子在形式上是否合法 提供句子的结构: if ( 表达式 ) 语句 else 语句 3)语法的表示: (1)自然语言描述 (2)形式化描述(BNF) (3)转换图(语法图) 2.形式化描述 终结符.非终结符.产生式 1)定义 2)产生式的表示    

编译技术图示(第一章 编译概述)

编译技术图示(第一章 编译概述) 源程序——>机器代码 分析(前端):分成小部分,找出小部分属性,包括:词法分析.语法分析.语义分析.中间代码生成 合成(后端),包括:中间代码优化.目标代码生成.目标代码优化 1.词法分析:识别.删除单词符号.词法检查 输入:源代码,输出:二元式<单词类别,单词属性> 2.语法分析 输出:抽象语法树(AST),从下向上看 3.语义分析 有限,大部分都是类型(运算)检查 4.中间代码生成 eg:x=a+b —> t1=a+b x=t1 为什么分为两个

编译原理-第三章 词法分析-3.7 从正则表达式到自动机-从正则表达式构造NFA

基于MYT算法从正则表达式构造NFA 基本思想: 性质: 对于加括号的正则式(s),使用N(s)本身作为它的NFA 一.构造识别ε和字母表中一个符号的NFA 1.特点 仅一个接受状态,它没有向外的转换 2.示例 二.构造识别主算符为选择正则式的NFA 1.特点 仅一个接受状态,它没有向外的转换 2.示例 三.构造识别主算符为连接正则式的NFA 1.特点 仅一个接受状态,它没有向外的转换 2.示例 四.构造识别主算符为闭包正则式的NFA 1.特点 仅一个接受状态,它没有向外的转换 2.示例 五.例

《数据挖掘概念与技术》--第三章 数据预处理

一.数据预处理 1.数据如果能够满足其应用的要求,那么他是高质量的. 数据质量涉及许多因素:准确性.完整性.一致性.时效性.可信性.可解释性. 2.数据预处理的主要任务:数据清洗.数据集成.数据规约.数据变换. 二.数据清理:试图填充缺失值,光滑噪声.识别利群点.纠正数据中的不一致. 1.缺失值的处理: 1)忽略元组:缺少类标号时通常这么做.但是忽略的元组其他属性也不能用,即便是有用的. 2)人工填写:该方法很费事费时,数据集很大.缺失值很多时可能行不通. 3)使用一个全局常量填充缺失值:将缺失

第三章-词法分析

(1)编码 词法分析将Java源文件的字符流转变为对应的Token流.一些规范的Token定义在Token枚举类中,如下: 其实在形成一个Token流时,在词法分析的过程中,可以归纳为三类,分别是: /** An interface that defines codes for Java source tokens * returned from lexical analysis. */ public enum Token implements Formattable { EOF, ERROR,

android apk 防止反编译技术第三篇-加密

上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372.接下来我们将介绍另一种防止apk反编译的技术-运行时修改字节码.这种方法是在工作中在实现app wrapping时,看到国外的一篇关于android 安全的介绍实现的并且独创.下面我们来介绍一下这种方法. 我们知道apk生成后所有的java生成的class文件都被dx命令整合成了一个classes.dex文件,当apk运行时d

阅读《大型网站技术架构》 第三章心得

今天阅读了<大型网站技术架构> 的第三章,这一章主要讲解了大型网站核心架构要素,并且概括的讲解了相应的实现方法. 软件架构除了系统功能需求外,还需要关注性能.可用性.伸缩性.扩展性.安全性. 其中性能是网站的重要指标.优化网站性能的手段有很多种其中包括: 1.使用CD和反响代理加快反应速度. 2.在应用服务器端实现本地缓存和分布式缓存. 3.通过异步操作将用户的请求发送至消息队列等待后续任务处理,而当前请求直接返回响应给用户. 4.多台应用服务器组成集群. 5.代码层面使用多线程.改善内存管理

[email&#160;protected]第三章@编译Android版@V1.0.0

 驾驭开源库WebRTC 第三章-编译Android版 作者:adam 鸣谢:老张.aaalaniz 日期:2015-4-6 版本:1.0.0 欢迎转载,有问题反馈Q:2780113541,尽量完善系列教程. depot_tools代理设置参考老张<史上最牛逼的墙内下载webrtc代码说明_20150401> 编译定制参考aaalaniz的脚本: https://github.com/pristineio/webrtc-build-scripts/blob/master/android/b

android apk 防止反编译技术第三篇-加密apk

经过了忙碌的一周终于有时间静下来写点东西了,我们继续介绍android apk防止反编译技术的另一种方法.前两篇我们讲了加壳技术和运行时修改字节码,如果有不明白的可以查看我的博客的前两篇中关于这两种技术的介绍.接下来我们将介绍另一种简单适用的防止apk反编译的技术-伪加密. 一.伪加密技术原理 我们知道android apk本质上是zip格式的压缩包,我们将android应用程序的后缀.apk改为.zip就可以用解压软件轻松的将android应用程序解压缩.在日常生活或者工作中,我们通常为了保护