C#语句标记

C#语句标记,c#,C#,我在某个地方读到: 语句由标记组成。这些标记可以是关键字、标识符(变量)、运算符和语句终止符,即分号(;) 我想知道,这些是构成C#语句的唯一“标记”吗?还有其他没有提到的吗?这是编译器编写者谈论语句的方式。标记由lexer(又名词法分析器)生成,解析器对其进行解释以解析有效语句。并非特定于C语言,几乎所有语言都是这样工作的。列表中缺少文字,注释和文件结尾可以是标记 具体到C#编译器,它的源代码现在很容易获得,没有关键字标记,但每个关键字本身就是一个标记。比如TID_代表“FOR”关键字,TID

我在某个地方读到:

语句由标记组成。这些标记可以是关键字、标识符(变量)、运算符和语句终止符,即分号(;)


我想知道,这些是构成C#语句的唯一“标记”吗?还有其他没有提到的吗?

这是编译器编写者谈论语句的方式。标记由lexer(又名词法分析器)生成,解析器对其进行解释以解析有效语句。并非特定于C语言,几乎所有语言都是这样工作的。列表中缺少文字,注释和文件结尾可以是标记

具体到C#编译器,它的源代码现在很容易获得,没有关键字标记,但每个关键字本身就是一个标记。比如TID_代表“FOR”关键字,TID_字节代表“BYTE”关键字,等等。有四种文字标记:数字、字符串、带@的字符串和字符。四种注释:单行、多行、///单行和///多行

C#lexer没有对运算符进行分类,只对构成运算符的字符进行分类。因为,“[”和“]”可能意味着不同的事情(索引运算符与属性声明)。解析器根据解析器状态判断出哪种解释是正确的


C#有上下文关键字,比如“yield”。语法分析器被lexer分类为常规标识符,当它看到它后跟“return”时,就会识别它。上下文关键字很好,因为它们可以避免中断意外使用“yield”作为变量名的程序。这是一种在不破坏现有程序的情况下向版本5添加“异步”和“等待”的方法。

是的。质子、电子和中子。xDLiterals似乎丢失了,我想知道
()
是否是运算符。这句话似乎是非正式的,请恕我直言。