【发布时间】:2011-12-28 01:36:47
【问题描述】:
我研究对文件流进行操作的程序的源代码(用 C++ 编写)。但是我时不时地偶然发现一个叫做tokens的东西。您能否向我解释一下,代币有什么作用以及它们为什么有用?谢谢。
【问题讨论】:
标签: c++ stream filestream token
我研究对文件流进行操作的程序的源代码(用 C++ 编写)。但是我时不时地偶然发现一个叫做tokens的东西。您能否向我解释一下,代币有什么作用以及它们为什么有用?谢谢。
【问题讨论】:
标签: c++ stream filestream token
Stream 是指随着时间的推移可用的数据元素序列。流中的数据元素可以是任何类型的:字符、字符串、特殊用途的数据结构等。文本文件可以简单地解释为字符流。
在编程语言的上下文中,token这个词通常指的是来自字符流的一个或多个相关字符的序列。令牌在字符流之上提供了一定程度的抽象,并且它们本身通常被分组在流中以供进一步处理。
编程语言编译器中通常的处理顺序是从词法分析器将字符流转换为标记流,然后将其传递给解析器。令牌的典型表示由类型指示符和令牌内容组成。
这是一个例子:考虑这个 C++ 程序片段:
class MyClass {
public:
string name;
};
词法分析器将此程序分组为包含十个标记的流:
'class' (keyword)
'MyClass' (identifier)
'{' (opening brace)
'public' (keyword)
':' (colon)
'string' (identifier)
'name' (identifier)
';' (semicolon)
'}' (closing brace)
';' (semicolon)
【讨论】:
代币可以被认为是“占位符”。令牌代表一个特定的实体(字符串),通常是两个等价物之间的某种中间步骤。例如,标记通常用于表示给定语言语法的解析器中。
【讨论】: