language-agnostic - 形容词词法的定义

标签 language-agnostic terminology lexical

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

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

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

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


我看到了一个不同的线程,其中有人询问 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/

相关文章:

math - float 学有问题吗?

localization - 用于语言和文化感知软件的术语

c - 使用词法进行词法分析

machine-learning - NLTK(python)中的语料库和词典有什么区别

iphone - 词法或预处理器问题错误(未找到 UIKit/UIKit.h 文件)

language-agnostic - 多少抽象就太多了?

algorithm - 匈牙利算法和多重因素

algorithm - 什么是排序算法的稳定性,为什么它很重要?

reference - 开发术语和定义引用

url - URL 和 LINK 有什么区别?