【问题标题】:What is the purpose of a lexer?词法分析器的目的是什么?
【发布时间】:2012-07-07 17:34:22
【问题描述】:

我正在阅读this question. 的答案 我似乎无法找到为什么有人会单独需要词法分析器的答案

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

【问题讨论】:

    标签: compiler-construction lexical-analysis


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      或者可以将词位流馈送到解析器,该解析器会将其转换为解析器树。

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

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

      【讨论】:

        【解决方案3】:

        一个很好的例子是在维基百科http://en.wikipedia.org/wiki/Lexical_analysis

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

        【讨论】:

        • 是的,这是编译过程的第一步,将程序的纯文本拆分为一系列标记。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-16
        • 2011-08-25
        • 2021-10-21
        • 1970-01-01
        • 2023-04-05
        相关资源
        最近更新 更多