在互联网上,我已经读过形容词词汇的一般含义:与物理世界或抽象概念相关的单词的含义,而没有提及该单词可能出现的任何句子。

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

人们为什么选择在诸如范围之类的词前使用词汇一词?我看不到词汇的定义和词汇范围之间的任何关系。词法分析,词法常量等也是如此。

我知道您想给一个名称起一个名字,以便您可以更轻松地引用它,但是为什么要命名一个没有意义的名字呢?如果确实有道理,那么您能澄清一下它是怎么做的吗?



我看到了一个不同的线程,有人问C ++中的词汇是什么意思:What does the term "lexical" means in C++?

该问题的最高答案说明词法意味着它与源代码有关。然后我的问题是:编程中的任何东西与源代码无关吗?并非每种范围,常数,形式的代码分析都与源代码有关吗?另外,词汇的定义与与源代码的关系如何相关?

最佳答案

根据上下文,“词汇上”一词具有几种不同的含义。

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

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


将被分解成

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


然后将使用其标记类型(例如“标识符”或“开放括号”)对其进行标记。

在词法分析过程中,(通常)没有尝试更广泛地确定这些标记的整体含义。这就是解析(语法分析)或进一步的语义分析的工作。这类似于您给出的定义-词法分析是确定标记的含义,而不是上下文中标记的含义。

有时,“词汇上”仅表示“在源代码中出现”。例如,词法作用域变量是指作用域在变量中出现在源文件中的变量,而不是根据该程序的动态执行而作用域。这有点用词不当。

希望这可以帮助!

10-04 23:28
查看更多