词法分析阶段的错误处理

news/2024/6/17 8:20:19 标签: 编译原理, 词法分析, 错误处理

文章目录

词法分析阶段可检测错误的类型:

  • 单词拼写错误:
    • 例:int i = 0x3G(16进制数表示错误)、float j = 1.05e(指数表示错误)
  • 非法字符:例如~、@等

词法错误检测:

如果当前状态与当前输入符号在转换表对应项中的信息为空意为在当前状态下不应该接受到当前接受到的字符)。则报错,并调用错误处理程序。

错误处理

  • 查找已扫描字符串中最后一个对应于某终态的字符。
    • 如果找到了,将该字符与其前面的字符识别成一个单词 。然后将输入指针退回到该字符,扫描器回到初始状态,继续识别下一单词。
    • 如果没找到,则确定出错,采用错误恢复策略。

错误恢复策略例如最简单的恐慌模式(panic mode)。即从剩余的输入中不断删除字符,直到词法分析器能够在剩余的开头发现一个正确的字符为止。


http://www.niftyadmin.cn/n/1700938.html

相关文章

socket传照片java服务器python客户端

Java服务器 package Socket;import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket;public class SS {public static void main(String[] args) throws Exception{ServerSocket ss new …

急躁

2019独角兽企业重金招聘Python工程师标准>>> 写代码,过于急躁不行。最近写的比较开心,每天抱着笔记本,比抱着老婆的时间都长(恨不得二十四小时坐在电脑面前写),可见我是多么的急功近利啊&#x…

python读取数据文件夹_在Python中按路径读取数据文件的几种方式

我们知道,写Python代码的时候,如果一个包(package)里面的一个模块要导入另一个模块,那么我们可以使用相对导入: 假设当前代码结构如下图所示: img 其中test_1是一个包,在util.py里面…

Electron入门—Hello world

不论是学习语言亦或是各种框架,最开始上手都必然是"Hello World"类型的简单编程。那么我作为一个Electron的初学者自然也不例外。 Electron应用从开发的角度来看可以视作是一个Node.js应用。所以一个基本的Electron应用的文件目录应该会是下面这个样子的…

numpy whl_如何安装NumPy库

1 NumPy 简介NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travi…

cuda和cudnn下载地址

https://developer.nvidia.com/cuda-downloads? https://developer.nvidia.com/rdp/cudnn-download

自顶向下分析概述

文章目录自顶向下的分析(Top-Down Parsing)最左推导(Left-most Derivation)最右推导最左推导和最右推导的唯一性最左推导例子自顶向下语法分析的通用形式递归下降分析(Recursive-Descent Parsing)预测分析(Predictive Parsing)自顶向下的分析(Top-Down Parsing) 从分析树的顶部…

C#中如何计算时间差?

C#中怎么计算两时间相差多少。计算2个时间之间的差,可以计算到时分秒! <1> label1.Text "2004-1-1 15:36:05"; label2.Text "2004-3-1 20:16:35"; DateTime d1 new DateTime(2004,1,1,15,36,05); DateTime d2 new DateTime(2004,3,1,20,16,35); Ti…