什么是词法分析?
词法分析是编译器的第一步,它一次读取一个字符并将其转换为标记数组。
Token - 令牌是程序中有意义的字符集合。这些标记可以是关键字,包括do、if、while等,标识符包括x、num、count等,运算符符号包括>、>=、+等,标点符号包括括号或逗号。词法分析器阶段的输出传递到称为语法分析器或解析器的下一个阶段。
示例- 语句 a = b + 5 将具有标记。
词法分析的作用
词法分析的主要功能如下 -
它可以将标记从程序中分离出来,并根据它的请求将这些标记返回给解析器。
它可以消除字符串中的注释、空格、换行符等。
它可以将令牌插入符号表中。
词法分析将为每个标记返回一个整数给解析器。
编译器在词法分析器与源程序期间产生的相关错误消息。
它可以实现宏的扩展,在源代码中使用宏预处理器的情况下。
Example1 - 词法分析阶段对输入字符串 a = b + 5 执行的操作是什么。
解决方案
找出令牌及其类型。
代币类型 | 价值观 |
---|---|
IDENTIFIER | 一种 |
IDENTIFIER | b |
ASSIGN-OPERATOR | = |
ADD-OPERATOR | + |
CONSTANT | 5 |
将有关令牌的信息放入符号表中。
地址 | 代币类型、价值 |
---|---|
330 | id,整数,值 = a |
332 | id,整数,值 = b |
. . . | |
360 | 常量,整数,值 = 5 。 . . |
找出令牌并将它们存储到符号表中后,生成令牌流如下 -
[i= id, 330] = [id, 332] + [const, 360]
其中每对的形式为 [token – type, index]
token-type - 它告诉它是否是常量、标识符、标签等。
index - 它告诉符号表中令牌的地址。
Example2 - 词法分析对语句执行的操作是什么。如果 (A=10) 则转到 200。
解决方案
代币将
Token Type | 价值观 |
Keywords | 如果,那么,转到 |
Identifiers | 一种 |
Assign-Operators | = |
Label | 200 |
Delimiters | (,) |
符号表
地址 | 代币类型、价值 |
---|---|
236 | id,整数,值 = A |
238 | 常量,整数,值 = 10 |
………… | |
288 | 标签,值 = 200 |
……. | ………….. |
令牌流将是
If ([id, 236] = [constant, 238]) then GOTO [label, 288]
以上是 什么是词法分析? 的全部内容, 来源链接: utcz.com/z/363278.html