gpt4 book ai didi

c++ - Tokens 的作用是什么以及为什么需要在 C++ 编程中创建它们?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:59:15 24 4
gpt4 key购买 nike

我正在读一本书(Bjarne Stroustrup 的《编程原理与实践》)。

他在其中介绍了代币:

“ token 是一个字符序列,代表我们认为是一个单位的东西,例如数字或运算符。这就是 C++ 编译器处理其源代码的方式。实际上,以某种形式“标记化”是大多数文本分析的开始方式。”

class Token {
public:
char kind;
double value;
};

我确实明白它们是什么,但他从未详细解释过这一点,这让我很困惑。

最佳答案

标记化对于弄清程序功能的过程很重要。 Bjarne 所指的与 C++ 源代码相关的是程序含义如何受到标记化规则的影响。特别是,我们必须知道 token 是什么,以及它们是如何确定的。具体来说,当单个标记出现在其他字符旁边时,我们如何识别它?如果出现歧义,我们应该如何分隔标记。

例如,考虑前缀运算符 +++。假设我们只有一个 token + 可以使用。以下代码段的含义是什么?

int i = 1;
++i;

只有 + 时,上面的代码是否会在 i 上应用一元 + 两次?或者它会增加一次吗?这自然是模棱两可的。我们需要一个额外的标记,因此引入 ++,因为它在语言中是自己的“词”。

但现在还有另一个(虽然较小)问题。如果程序员只应用一元+ 两次而不递增怎么办?需要 token 处理规则。因此,如果我们确定空格始终是标记的分隔符,我们的程序员可能会这样写:

int i = 1;
+ +i;

粗略地说,C++ 实现从一个充满字符的文件开始,最初将它们转换为一系列标记(在 C++ 语言中具有含义的“单词”),然后检查标记是否出现在“句子”中有一定的意义。

关于c++ - Tokens 的作用是什么以及为什么需要在 C++ 编程中创建它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47308141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com