第3章词法分析
- 格式:ppt
- 大小:2.08 MB
- 文档页数:127
编译原理第三章练习题答案编译原理第三章练习题答案编译原理是计算机科学中的重要课程之一,它研究的是将高级语言程序转化为机器语言的过程。
在编译原理的学习过程中,练习题是提高理解和应用能力的重要途径。
本文将为大家提供编译原理第三章的练习题答案,希望能够对大家的学习有所帮助。
1. 什么是词法分析?请简要描述词法分析的过程。
词法分析是编译过程中的第一个阶段,它的主要任务是将源程序中的字符序列划分为有意义的词素(token)序列。
词法分析的过程包括以下几个步骤:1)扫描:从源程序中读取字符序列,并将其转化为内部表示形式。
2)识别:根据预先定义的词法规则,将字符序列划分为不同的词素。
3)分类:将识别出的词素进行分类,如关键字、标识符、常量等。
4)输出:将分类后的词素输出给语法分析器进行进一步处理。
2. 什么是正则表达式?请给出一个简单的正则表达式示例。
正则表达式是一种用于描述字符串模式的工具,它由一系列字符和操作符组成。
正则表达式可以用于词法分析中的词法规则定义。
以下是一个简单的正则表达式示例:[a-z]+该正则表达式表示匹配一个或多个小写字母。
3. 请简要描述DFA和NFA的区别。
DFA(Deterministic Finite Automaton)和NFA(Nondeterministic Finite Automaton)是有限状态自动机的两种形式。
它们在词法分析中常用于构建词法分析器。
DFA是一种确定性有限状态自动机,它的状态转换是确定的,每个输入符号只能对应一个状态转换。
相比之下,NFA是一种非确定性有限状态自动机,它的状态转换是非确定的,每个输入符号可以对应多个状态转换。
4. 请简要描述词法分析器的实现过程。
词法分析器的实现过程包括以下几个步骤:1)定义词法规则:根据编程语言的语法规范,定义词法规则,如关键字、标识符、常量等。
2)构建正则表达式:根据词法规则,使用正则表达式描述不同类型的词素。
3)构建有限状态自动机:根据正则表达式,构建DFA或NFA来识别词素。
戴新宇南京大学计算机科学与技术系Outline词法分析的作用词法单元的规约(正则表达式) 词法单元的识别(状态转换图) 有穷自动机词法分析器生成工具及设计词法分析器作用词法分析是读入源程序的输入字符、将它们组成词素,生成并输出一个词法单元序列,每个词法单元对应于一个词素。
常见的做法是:由语法分析器调用,需要的时候不断读取、生成词法单元可以避免额外的输入输出在识别出词法单元之外,还会完成一些不需要生成词法单元的简单处理,比如删除注释、将多个连续的空白字符压缩成一个字符等。
词法分析和语法分析通常,将编译过程的分析划分成两个阶段的原因: 简化编译器的设计,任务分解提高编译器的效率增强编译器的可移植性词法分析相关概念词法单元(Token):包含单元名(Token-name)和可选的属性值(attribute-value) 单元名是表示某种词法单位抽象符号。
语法分析器通过单元名即可确定词法单元序列的结构。
词素(Lexeme)源程序中的字符序列,它和某类词法单元的模式匹配,被词法分析器识别为该词法单元的实例。
模式(Pattern)词法单元的词素可能具有的形式。
可以用正则表达式来表示。
词法单元示例词法单元的属性一个模式匹配多个词素时,必须通过属性来传递附加的信息。
属性值将被用于语义分析、代码生成等阶段。
不同的目的需要不同的属性。
因此,属性值通常是一个结构化数据。
词法单元id的属性词素、类型、第一次出现的位置、…词法单元示例(名和属性值)词法分析器的构造实现两种方法:基于词法单元的词法结构图或其它描述,手工编写代码扫描输入中的每个词素,并返回识别到的词法单元信息。
使用词法分析器生成工具(如lex flex)。
给出描述词素的模式,利用工具编译为具有词法分析器功能的代码。
高效且简单。
正则表达式一种描述词素模式的重要表示方法Outline词法分析的作用词法单元的规约(正则表达式) 词法单元的识别(状态转换图) 有穷自动机词法分析器生成工具及设计相关概念字母表:一个有限的符号集合二进制{0,1}ASCIIUnicode典型的字母表包括字母、数位和标点符号串:字母表中符号组成的一个有穷序列 串s的长度|s|空串ε,长度为0的串语言:给定字母表上一个任意的可数的串的集合 语法正确的C程序的集合,英语,汉语相关概念(2)和串有关的术语(banana)前缀:从串的尾部删除0个或多个符号后得到的串。