3

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

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

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

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


我看到了一个不同的线程,其中有人问 C++ 中的词法是什么意思:“词法”一词在 C++ 中是什么意思?

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

4

1 回答 1

3

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

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

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

会被分解成

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

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

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

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

希望这可以帮助!

于 2014-06-03T00:55:53.950 回答