在互联网上,我读到了形容词词法的一般含义:与物理世界或抽象概念相关的单词的含义,而不涉及该单词可能出现的任何句子。
我见过这个词在许多不同的上下文中使用:词法范围、词法分析、词法常量、词法运算符等。
为什么人们选择在范围之类的东西前面使用词法这个词?我没有看到词法定义和词法范围之间的任何关系。词法分析、词法常量等也是如此。
我知道您想给一些东西起一个名字,这样您就可以更容易地引用它,但是为什么要给它起一个没有意义的名字呢?如果它确实有意义,那么你能解释一下它是如何工作的吗?
我看到了一个不同的线程,其中有人询问 C++ 中词法的含义:What does the term "lexical" means in C++?
该问题的最佳答案解释了词法意味着它与源代码相关。那么我的问题是:编程中的任何事情都与源代码无关?代码分析的每一种作用域、常量、形式不都与源代码有关吗?另外,词法的定义与源代码的关系有何关系?
最佳答案
“词汇”这个词根据上下文有几种不同的含义。
在编译器的上下文中,“词法”通常是指源文件中的单个标记或获取这些标记的过程,而不考虑由这些标记形成的整体结构。例如,在 C 中,输入
int main() {
printf("Hi!\n");
return 0;
}
会分解成
int
main
(
)
{
printf
(
"Hi!\n"
)
;
return
0
;
}
然后这些将被标记为它们的 token 类型,例如“标识符”或“左括号”。
在词法分析期间,(通常)不会尝试在更广泛的范围内确定这些标记的整体含义。这是解析(语法分析)或进一步语义分析的工作。这类似于您给出的定义 - 词法分析是确定标记是什么,而不是确定它们在上下文中的含义。
有时,“词汇上”仅表示“在源代码中出现的那样”。例如,词法作用域变量是作用域为它们出现在源文件中的 block 的变量,而不是基于该程序的动态执行作用域。这有点用词不当。
希望这对您有所帮助!
关于language-agnostic - 形容词词法的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24001811/