词法分析

词法分析

记号化(tokenization)即将输入字符串分割为记号、进而将记号进行分类的过程。生成的记号随后便被用来进行语法分析。

例如对于如下字符串:

The quick brown fox jumps over the lazy dog

计算机并不知道这是以空格分隔的九个英语单词,只知道这是普通的43个字符构成的字符串。可以通过一定的方法(这里即使用空格作为分隔符)将语素(这里即英语单词)从输入字符串中分割出来。分割后的结果用XML可以表示如下:

The

quick

brown

fox

jumps

over

the

lazy

dog

然而,语素只是一类字符构成的字符串(字符序列),要构建记号,语法分析器需要第二阶段的评估器(Evaluator)。评估器根据语素中的字符序列生成一个“值”,这个“值”和语素的类型便构成了可以送入语法分析器的记号。一些诸如括号的语素并没有“值”,评估器函数便可以什么都不返回。整数、标识符、字符串的评估器则要复杂的多。评估器有时会抑制语素,被抑制的语素(例如空白语素和注释语素)随后不会被送入语法分析器。

例如对于某程序设计语言的源程序片段:

net_worth_future = (assets - liabilities);

在进行语法分析后可能生成以下单词流(空格被抑制):

NAME "net_worth_future"

EQUALS

OPEN_PARENTHESIS

NAME "assets"

MINUS

NAME "liabilities"

CLOSE_PARENTHESIS

SEMICOLON

尽管在某些情况下需要手工编写词法分析器,一般情况下词法分析器都用自动化工具生成。

相关推荐

motiveIELTS重点词汇
必发365手机版下载

motiveIELTS重点词汇

📅 06-27 ⭐ 9836
手机停机保号怎么恢复
365bat提现

手机停机保号怎么恢复

📅 07-04 ⭐ 8481
【备战月全食科普系列#1】关于月食,你不可不知的那些事
港版相机验机经验与工具分享
必发365手机版下载

港版相机验机经验与工具分享

📅 07-06 ⭐ 4180
太阳我想对你说
365bat提现

太阳我想对你说

📅 07-02 ⭐ 2846
狼人杀游戏客服电话是多少 联系方式查询及问题解答
推荐阅读 ❤️