编译原理实战课---词法分析

 我来答
户如乐9318
2022-07-11 · TA获得超过6667个赞
知道小有建树答主
回答量:2559
采纳率:100%
帮助的人:140万
展开全部

本节课主要涉及词法分析,将一段话使用分词器tokenizer 进行分词,关键是怎么分词?分词的规则是啥?一般我们会联想到正则文法进行匹配? 如果正则满足不了呢?等等一系列的问题。

在分词过程中我们需要有一个数学模型-有限自动机(Finite-state Automaton,FSA),或者叫做有限状态自动机(Finite-state Machine,FSM),什么是状态机呢?

状态机是有限状态自动机的简称,是现实事物运行规则抽象而成的一个数学模型。

说白了就是一张状态转换图,这里会涉及到四个概念:

上图是对数字字面量和标识符的状态转移过程; 进入初始状态(单线圈标识临时状态),遇到数字进入1,如果接下里还是数字继续处于1状态,如果接下来是空格,这代表此状态结束进入初始状态,此时前面的数字部分就是一个单独的token; 同理初始遇到的是一个字母,则进入2状态,接下来一个字符是数字或者字母则继续呆在2状态,除非遇到空白字符或者其他标识符导致异常出现

词法分析的过程,其实就是对一个字符串进行模式匹配的过程

词法分析器

词法分析器生成工具 lex(及 GNU 版本的 flex)能够基于规则自动生成词法分析器。

DFA 它是“Deterministic Finite Automaton”的缩写,即确定的有限自动机。它的特点是:该状态机在任何一个状态,基于输入的字符,都能做一个确定的状态转换。前面例子中的有限自动机,都属于 DFA。

NFA,它是“Nondeterministic Finite Automaton”的缩写,即不确定的有限自动机。它的特点是:该状态机中存在某些状态,针对某些输入,不能做一个确定的转换。

掌握语法分析阶段的核心需要两个基本功:

第一,必须能够阅读和书写语法规则,也就是掌握上下文无关文法;

第二,必须要掌握递归下降算法。两种算法思路:一种是自顶向下的语法分析,另一种则是自底向上的语法分析。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
VSH艾羽
2024-10-27 广告
Abaqus作为一款领先的有限元分析软件,其优势在于全面覆盖多种物理场的仿真分析,从结构力学到流体力学、热传递、电磁学等,满足复杂工程需求。Abaqus具备强大的非线性求解能力,适用于高精度、高复杂度的场景,如汽车碰撞模拟和航空航天器结构分... 点击进入详情页
本回答由VSH艾羽提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式