【问题标题】:Definition of the adjective lexical形容词词法的定义
【发布时间】:2014-07-23 00:00:44
【问题描述】:

在互联网上,我读到了形容词词汇的一般含义:一个单词与物理世界或抽象概念相关的含义,而不涉及该单词可能出现的任何句子。

我已经看到这个词在许多不同的上下文中使用过:词法作用域、词法分析、词法常量、词法运算符等。

为什么人们选择在作用域之类的东西前面使用词法这个词?我看不出词法的定义和词法范围之间有任何关系。词法分析、词法常量等也是如此。

我知道您想给某个东西起个名字,这样您就可以更容易地引用它,但是为什么要给它起一个没有意义的名字呢?如果它确实有意义,那么你能澄清它是如何做到的吗?


我看到一个不同的线程,其中有人询问 C++ 中的词法含义:What does the term "lexical" means in C++?

该问题的最佳答案解释了词法意味着它与源代码相关。那么我的问题是:编程中的任何东西与源代码无关?不是每一种范围、常数、形式的代码分析都与源代码有关吗?还有,词法的定义和源代码的关系有什么关系?

【问题讨论】:

    标签: language-agnostic terminology lexical


    【解决方案1】:

    “词法上”这个词根据上下文有几种不同的含义。

    在编译器的上下文中,“词法”通常是指源文件中的单个标记或获取这些标记的过程,而不考虑由这些标记形成的整体结构。例如,在 C 中,输入

    int main() {
        printf("Hi!\n");
        return 0;
    }
    

    会分解成

    int
    main
    (
    )
    {
    printf
    (
    "Hi!\n"
    )
    ;
    return
    0
    ;
    }
    

    然后将使用它们的令牌类型进行标记,例如“标识符”或“开括号”。

    在词法分析期间,(通常)不会尝试在更广泛的范围内确定这些标记的整体含义。这就是解析(语法分析)或进一步语义分析的工作。这类似于您给出的定义 - 词法分析是确定标记是什么,而不是确定它们在上下文中的含义。

    有时,“词法上的”仅仅意味着“它出现在源代码中”。例如,词法作用域的变量是作用于它们出现在源文件中的块的变量,而不是基于该程序的动态执行的作用域。这有点用词不当。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2012-11-12
      • 1970-01-01
      • 1970-01-01
      • 2018-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多