电子科技大学编译原理复习笔记(五):词法分析

文章介绍了词法分析在编译过程中的作用,包括识别单词符号、错误处理和符号表的管理。词法分析器使用状态转换图进行设计,并讨论了为何将词法分析与语法分析分离的原因,旨在提高编译器效率和可移植性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

重点一览

词法分析概述

词法分析的功能

词法分析器的输出形式

词法分析器的结构

状态转换图

状态转换图的构造

词法分析器的设计

基本结构

内容

符号表

目的

组成

在词法分析中的作用

符号表的一般形式

常用的符号表结构

总结与补充 

为何分离词法和语法分析

本章小结


前言

本复习笔记基于张老师的课堂PPT,供自己期末复习与学弟学妹参考用。

开始进入最最重点部分,下面是剩余知识的概要框架


重点一览


词法分析概述

词法分析的功能

扫描源程序的字符串,按照词法规则识别出单词符号作为输出,对于识别过程中发现的此法错误,则输出有关的错误信息(可以给出错信息赋予一个行号)。

词法分析器和语法分析器的关系

① 词法分析器可以作为单独的一环

② 词法分析器可以作为语法分析器的子程序

词法分析器的输出形式

单词的种类

单词输出形式

二元式             

单词类别划分:基本字(保留字)一字一码;标识符(字母开头的字母数字串)单列一种;常数按类型分类(整形、实型、布尔型、字符型……)


词法分析器的结构

  • 输入缓冲区:存放源程序 
  • 预处理程序:取消注解、提出无用的空白、制表、换行、回车等符号
  • 扫描缓冲区(词法分析真正要使用的):从输入缓冲区输入固定长度的字符串到另一个
  • 缓冲区(扫描缓冲区),词法分析器可以直接在此缓冲区进行符号识别

词法分析技术——超前搜索:为了判定一个单词符号的类别,必须多扫描一个或几个单位 


状态转换图

定义:一张有限有向图,圆圈表示节点,代表状态,有向边连接节点,其上的标记字符表示该状态下可能接受或识别的字符,有唯一初态,若干终态。

加*的状态表示如果最后识别的字符不在单词表中则需要退回一个字符

用状态转换图识别单词符号:

1)从初态开始;
2)从输入串中读一个字符;
3)判明读入字符与从当前状态出发的哪条
弧上 的标记相匹配,便转到相应匹配的那
条弧所指向的状态;
4)重复3),均不匹配时便告失败;到达终态时便识别出一个单词符号。
  • 如何区别符合标识符的基本字/保留字?
  • 在符号表中预留保留字,并指明它们不是标识符。为保留字建立单独的状态转换图 

状态转换图的构造


词法分析器的设计

基本结构

内容

  • 单词
  • 单词表
  • 状态转换图 
  • 匹配算法

符号表

目的

程序中,用户用标识符定义了很多名称来代表不同的数据对象,编译程序可以将这些名称保存在符号表

组成

符号表除了记录名称本身,还记录了与名称关联的各种属性信息

在词法分析中的作用

  • 建立符号表、查填符号表
  • 将不重复的标识符、数字常数和字符常数的性质填入符号表
  • 将变量/常数在符号表中的入口地址写到其自身的单词(token)中 

符号表的一般形式

每个名字对应一个表项,一个表项包括名字域和信息域

信息域设若干子域和标志位,内容和名字有关

常用的符号表结构

线性表

用N个数组来存放符号表的N个子域

HASH表/哈希表

 

总结与补充 

 

为何分离词法和语法分析

  • 简化编译器的设计
  • 提高编译器的效率
  • 增强编译器的可移植性

本章小结

 

 

<think>好的,用户想知道在Ubuntu 20.04上如何配置校园网连接。根据提供的引用内容,有两种方法:命令行配置和图形界面配置。 首先,我需要确认用户使用的是服务器版还是桌面版Ubuntu。引用[1]提到的是树莓派安装Ubuntu Server 20.04,使用命令行配置。而引用[2]是桌面版的图形界面方法。所以应该分两种情况回答。 对于命令行配置,需要编辑Netplan的YAML文件,设置WiFi的SSID、密码以及可能的认证方式。校园网可能需要WPA2-Enterprise,但引用[2]中提到勾选“No certificate”选项,可能意味着使用不验证证书的方式,比如PEAP的某些配置。这里需要注意语法是否正确,比如缩进和冒号的使用,避免YAML格式错误。 图形界面方法相对简单,直接通过系统托盘图标选择网络,输入账号密码。但校园网可能有额外设置,比如EAP方法选择PEAP,阶段2认证选MSCHAPV2,不需要证书。需要提醒用户根据学校的具体要求调整,比如是否需要CA证书。 还要考虑生成相关问题,比如连接失败怎么办,或者如何用Netplan配置静态IP。这些问题能帮助用户进一步解决问题。需要确保问题相关且有帮助,覆盖可能的后续疑问。 最后,检查引用是否正确标注,确保每个引用对应正确的方法,没有混淆命令行和图形界面步骤。同时,保持回答结构清晰,分点说明,让用户容易跟随。</think>Ubuntu 20.04连接校园网的配置方法可通过命令行或图形界面实现,以下是具体步骤: ### 一、命令行配置方法(适用于服务器版) 1. 编辑Netplan网络配置文件: $$sudo vi /etc/netplan/50-cloud-init.yaml$$ 2. 在配置文件中添加WiFi参数: ``` wifis: wlan0: access-points: "SSID-NAME": password: "your_password" dhcp4: true optional: true ``` 其中SSID-NAME需替换为校园网名称,密码字段根据认证类型可能需要改用`auth`参数[^1] 3. 应用配置: $$sudo netplan apply$$ ### 二、图形界面配置(适用于桌面版) 1. 点击右上角网络图标,选择「Select Network」 2. 在WiFi列表中选择校园网SSID 3. 认证设置: - 安全类型:选择「WPA & WPA2 Enterprise」 - 认证方法:选择「Protected EAP (PEAP)」 - 取消勾选CA证书验证(No certificate required) - 输入校园网账号密码[^2] $$注意:不同学校可能要求不同的EAP类型,常见组合为PEAP+MSCHAPv2$$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vec_Kun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值