使用自动机和正则表达式判断字符串是否合法。

构造词法分析器的方法可以分为人工方法和自动化方法。

3.1.1 词法分析器的功能

①每当程序员敲击键盘上一个键时,自动向计算机输入一个相应的8位二进制码,这种码称为ASCII码。程序在计算机中被表示为ASCII码序列,通常称为源程序文件

②翻译时的最小语义单位是单词,Token是源程序中单词的内部表示,也称为记号

首先从源程序文件中一个字符一个字符的读字符,并逐个的分离出单词,然后构造他们的机内表示Token。(源程序的处理过程)

关于Token的结构没有统一的规定,至少包含两部分内容:一是单词的类别,二是单词的内容(语义 )。

单词的Token表示也没有固定的模式,其结构可随着编译器的不同而变化。

标识符单词、常量单词、保留字单词

【词法分析器的任务】根据程序的ASCII码序列依次拼出单词的ASCII码表示,然后将其转换成相应的Token码(分为语法分析器的子程序和编译器的独立一遍处理器)

3.1.2 单词识别

词法分时首要任务是如何从源文件中的ASCII码序列依次分离出单词,即如何判定新单词的开始、如何判定一个单词的结束以及如何判定是什么类的单词的问题。(但是比起语法分析还是词法分析简单)

3.1.3 词法分析的复杂性(有时需要根据后面遇到的符号往回扫描)

3.1.4 字符串

如何设计字符串空间?(字符数组法和(指针数组法)

3.1.5 保留字:关键字不能作为用户定义的标识符。两种处理方法:(保留字表)和(不用保留字表)

保留字表又分为三种(顺序表结构)、(散列表结构)和(散列和顺序表结合的一种结构)

不用保留字表主要思想是(在拼单词的过程中就判断是否为保留字,拼完就判断完了)

3.1.6 空格符、回车符、换行符

空格符分隔单词,回车符和换行符也没有任何实际意义,对错误处理有重要意义(判断bug在第几行出现)

3.1.7 括号类配对预检

有错误不停下,还会继续向下分析,预检就是增加计数器,左括号加一,右括号减一,最后结果为零就配对。

3.1.8 词法错误修正

程序错误可分为三层:(词法层)、(语法层)和(语义层)

词法层:错误的字符;语法层:错误的单词;语义层:语义中出现错误的语法单位。

3.1.9 词法分析独立化的意义

转载于:https://www.cnblogs.com/yangf428/p/10127817.html

第三章 - 有穷自动机与词法分析(一)相关推荐

  1. 第三章 - 有穷自动机与词法分析(二)

    3.2 有穷自动机 自动机一方面是单词的描述工具,另一方面可以比较容易构造出识别器程序. 有穷自动机FA分为(非确定有穷自动机NFA)和(确定有穷自动机DFA) 3.2.1 确定有穷自动机 包含以下五 ...

  2. 王道考研 计算机网络笔记 第三章:数据链路层

    本文基于2019 王道考研 计算机网络: 2019 王道考研 计算机网络 个人笔记总结 第一章:王道考研 计算机网络笔记 第一章:概述&计算机网络体系结构 第二章:王道考研 计算机网络笔记 第 ...

  3. 概率论与数理统计--第三章

    文章目录 概率论与数理统计--第三章 概率论与数理统计–第三章

  4. 《Linux内核设计与实现》读书笔记 第三章 进程管理

    第三章进程管理 进程是Unix操作系统抽象概念中最基本的一种.我们拥有操作系统就是为了运行用户程序,因此,进程管理就是所有操作系统的心脏所在. 3.1进程 概念: 进程:处于执行期的程序.但不仅局限于 ...

  5. 计算机组原理ppt,计算机组原理第三章.ppt

    计算机组原理第三章 计算机组成原理 毛典辉 北京工商大学计算机与信息工程学院 Email: amaode@ 进一步结论: 当最高有效位产生进位而符号位无进位时,产生上溢: 当最高有效位无进位而符号位有 ...

  6. 计算机应用基础第三章操作步骤,最新江西三校生计算机应用基础模拟操作题集锦(超实用!)...

    第二章 Windows XP 操作系统 ? [2011高考] 将计算机系统时间修改为2011年9月1日10:30.请写出操作步骤. 答:双击系统托盘中时间图标(或双击"控制面板"窗 ...

  7. c语言如何持续输入字符直到指定字符结束_《小白学C》第三章 常用输入输出函数...

    第三章 常用输入/输出函数 与其他高级语言一样, C语言的语句是用来向计算机系统发出操作指令的. 当我们提到输入时,这意味着要向程序填充一些数据.输入可以是以文件的形式或从命令行中进行.C 语言提供了 ...

  8. 第三章--数据链路层

    第三章--数据链路层 本章目录: 3.1使用点对点信道的数据链路层 3.1.1数据链路和帧 3.1.2三个基本问题 3.2点对点协议PPP 3.2.1PPP协议的特点 3.2.2PPP协议的帧格式 3 ...

  9. 第三章 用检验控件执行表单的验证

    第三章 用检验控件执行表单的检验 主要内容: l 使用客户端检验 l 必填域控件:RequiredFieldValidator l 检验表达式控件:RegularExpressionValidator ...

最新文章

  1. Mysql压测工具mysqlslap 讲解
  2. LBWE 和SBIW的关系
  3. mysql frm和ibd怎么恢复数据库_mysql数据库通过frm和ibd恢复数据
  4. Thread优先级之让步
  5. 爬虫笔记10Scrapy-框架
  6. JMeter中添加dubbo相关插件异常问题解决
  7. mongodb 性能测试_MongoDB性能测试
  8. SpringSource通过Spring for Android 1.0将Spring Framework引入到Android上
  9. 发微博/文章设计思路
  10. DroidBox的环境搭建与使用(Android沙箱、未验证)
  11. 使用struts2中默认的拦截器以及自定义拦截器
  12. 分区助手删除linux,分区助手彻底删除硬盘文件方法
  13. 烟雾检测模块ADPD188BI介绍与应用(一)
  14. HDU-2669 Romantic (欧几里得定理)
  15. ShuZu冒泡排序选择排序
  16. ESP32+TFT屏幕连接无线局域网投屏
  17. 360qqq的背后是什么?
  18. MySQL注入直接获取Shell的前提条件
  19. 分享|破世界纪录的OceanBase,如今入选了国际顶会VLDB 2022
  20. 使用Medusa美杜莎暴力破解SSH密码

热门文章

  1. 莫尔斯码(Morse Code)
  2. 生命科学名言01:物种起源
  3. 自我介绍php一句话,面试自我介绍经典语句,经典一句话自我介绍
  4. LB10S-ASEMI整流桥LB10S
  5. STM32 嵌入式学习入门(4)——PWM原理
  6. 使用Java集合实现麻将(准备牌、洗牌、发牌、看牌)
  7. 【bzoj2724】[Violet 6]蒲公英 (注意:题面有毒!)
  8. W ndows的中文翻译,微软windows的中文名字,就被翻译成了视窗。
  9. html倒计时代码+微信可用,微信小程序动态显示项目倒计时效果
  10. 传统手工特征方法整理--LBP,HAAR,SIFT,HOG,ORB,SURF