编译原理4

152 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第18天,点击查看活动详情

确定有限自动机(DFA)

一个确定有限自动机(DFA)M是一个五元式M=(S,Σ,∂,s0,F)

S是一个有限集,它的每个元素称为一个状态,

Σ是一个有穷字母表,它的每个元素称为一个输入字符,

∂是一个从SxΣ至S的单值部分映射。∂(s,a)=s',意味着:当现行状态为s、输入字符为a时,将转换到下一个状态s'。我们称s'为s的一个后继状态,

s0∈S,是唯一的初态,

F⊆S,是一个终态集(可空),

显然,一个 DFA可用-一个矩阵表示,该矩阵的行表示状态,列表示输入字符,矩阵元素表示∂(s,a)的值。这个矩阵称为状态转换矩阵。

非确定有限自动机(NFA)

一个非确定有限自动机(NFA)是一个五元式M=(S,Σ,∂,S0,F)

S、Σ同上,

∂是一个从SxΣ到S的子集的映照,即∂:SxΣ→2^S,

S0⊆S,是一个非空初态集,

F⊆S,是一个终态集(可空)。

正规式与有限自动机的等价性:

(1)对任何FA M,都存在一个正规式r,使得L(r)=L(M)。
(2)对任何正规式r,都存在一个FA M,使得L(M)= L(r)。

确定有限自动机的化简:寻找一个状态数比M少的DFA M',使得L(M)=L(M')。

语法分析器的功能:语法分析是编译过程的核心部分。它的任务是在词法分析识别出单词符号串的基础上,分析并判定程序的语法结构是否符合语法规则。

自上而下分析面临的问题

顾名思义,自上而下就是从文法的开始符号出发,向下推导,推出句子。

自上而下分析的主旨是,对任何输入串,试图用一切可能的办法,从文法开始符号(根结)出发,自上而下地为输入串建立一棵语法树。或者说,为输入串寻找一个最左推导。这种分析过程本质上是一种试探过程,是反复使用不同产生式谋求匹配输入串的过程。