Compiler construction lexer的用途是什么?

Compiler construction lexer的用途是什么?,compiler-construction,lexical-analysis,Compiler Construction,Lexical Analysis,我正在读你的答案 我似乎找不到答案来解释为什么有人需要单独使用lexer 这是程序在编译过程中所经历的步骤之一吗? 有人能简单地解释一下为什么我需要一个lexer,以及它的用途吗?维基百科就是一个很好的例子 例如,如果要计算表达式“(33+3)*2”,第一步是将字符串拆分为标记“(”、“33”、“+”、“3”、“”、“*”、“2”。就我记忆中的编译器课程而言,这是由最长匹配词自动机完成的。lexer将获取输入字符流并将其转换为令牌 这可以用于多种目的。您可以对词素应用转换,以进行简单的文本处理和

我正在读你的答案 我似乎找不到答案来解释为什么有人需要单独使用lexer

这是程序在编译过程中所经历的步骤之一吗?
有人能简单地解释一下为什么我需要一个lexer,以及它的用途吗?

维基百科就是一个很好的例子


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

lexer将获取输入字符流并将其转换为令牌

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

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

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


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

是的,这是编译过程的第一步,将程序的纯文本拆分为一系列标记。