5

我正在阅读这个问题的答案。 我似乎找不到为什么有人需要单独使用词法分析器的答案

它是程序在编译过程中经历的步骤之一吗?有人可以简单地解释一下为什么我需要一个词法分析器,它的用途是什么?

4

3 回答 3

5

词法分析器将获取输入字符流并将其转换为标记。

这可以用于多种目的。您可以对词位应用转换以进行简单的文本处理和操作。

或者可以将词位流提供给解析器,解析器将其转换为解析器树。

如果目标是编译,那么词法分析是第一步。将其视为获取字符并将其转换为标记的较低级别的步骤。解析器是一种更高级别的机制,其字母表由标记(由词法分析器创建)组成,它解析并创建解析树。

如果目标是文本操作,那么操作规则可以应用于词位本身。

于 2012-07-25T10:45:51.320 回答
4

Wikipedia http://en.wikipedia.org/wiki/Lexical_analysis就是一个很好的例子。

例如,如果要计算表达式“(33+3)*2”,第一步是将字符串拆分为标记“(”、“33”、“+”、“3”、“)”、“* ”、“2”。据我记得我的编译器课程是由最长匹配词自动机完成的。

于 2012-07-07T15:13:46.530 回答
1

重要的是要知道您不需要词法分析器进行解析。

词法分析器是许多编译器用来在某些方面简化解析的传统步骤。但它并不总是简化解析,事实上它可能会因为它创建中间对象而减慢解析速度。自上而下的递归下降解析器或诸如 PEG 解析表达式语法之类的东西不使用词法分析器,而是直接解析整个文本。

词法分析器可用于在概念上简化解析,但这不是必需的。

于 2021-08-21T09:38:13.303 回答