fbpx
维基百科

保留字

保留字(英語:Reserved word),有时也叫关键字keyword[1][2],是编程语言中的一类语法结构。在特定的编程语言里,这些保留字具有较为特殊的意义,并且在语言的格式说明里被预先定义。通常,保留字包括用来支持类型系统的原始数据类型的标记,并可以用来识别诸如循环结构、语句块、条件、分支等程序结构。

保留字在编程语言设计之时就被定义。有时,语言说明具有一定的灵活性,软件商可能会在其生产的编译器中添加非标准的语言特性。同样,当发展得更加成熟时,编程语言的保留字标准可能会扩展一些额外的特性,例如,在传统的编程语言中增加面向对象程序设计的特性。有时,编程语言说明会包含一些将来版本可能需要用到的保留字。在Java中,constgoto就是两个保留字——它们在Java中目前没有被使用,因此不具有意义,但是不能够被用作标识符。[3]通过“保留”这个术语,它们可以在Java的未来版本中补充,而不需要“破坏”旧的Java源代码。不像预定义函数、方法和子程序,保留字不能被程序员定义,而前面那些的名称通常被归类于标识符,而不是保留字。

语言间的比较

不是所有的编程语言都有相同数量的保留字。例如,Java(以及其他C语言[4]派生的语言),具有相对较少的保留字,大约有50个。而COBOL则具有大约400个保留字。相反的极端则是Prolog,没有保留字。

一个语言具有的保留字数量与其功能“强大”程度没有必然联系。COBOL在20世纪50年代被设计成一种商业语言,它是一种自存档(self-documenting)、使用类似英语结构的元素(例如动词、子句、语句等)。而相反地,C语言被设计成一种在句法上较为简练的编程语言。例如,比较下列来自C语言和COBOL的两段计算单周收入的等价语句块:

// 使用C语言计算: if (salaried)  amount = 40 * payrate; else  amount = hours * payrate; 
* 使用COBOL计算 IF Salaried THEN  MULTIPLY Payrate BY 40 GIVING Amount ELSE  MULTIPLY Payrate BY Hours GIVING Amount END-IF. 
* 另一个使用COBOL计算的例子 IF Salaried   COMPUTE Amount = Payrate * 40 ELSE  COMPUTE Amount = hours * payrate END-IF. 

上述例子中彩色的部分即是它们各自的保留字。

纯的Prolog语言使用关系式来表达,并通过询问这些关系触发处理方法。诸如循环的结构通过使用循环、递归的关系来实现。

虽然以上三個例子具有不同的保留字,但是它们都能胜任解决上述问题。程序的功能取决于它们对一系列图灵语言的归属。

一些跨语言的保留字

微软.NET框架下的通用语言架构允许程序源代码以超过40种不同的编程语言混合编译,并生成一个解决方案。鉴于此,标识符、保留字的冲突可能会在一种语言写成的源代码试图处理另一种语言的源代码的过程中发生。例如,一个Visual Basic .NET库可能会包含这样一个类:

' Class Definition of This in Visual Basic.NET: Public Class this  ' This class does something... End Class 

假设这一段源代码被编译,并被作为一个工具箱的一部分,那么一个C#[5]程序员在同一程序中定义this类的变量就会遇到问题,因为this是C#中的一个保留字,因此,下列的源代码将不能成功编译:

// Using This Class in C#: this x = new this(); // Won't compile! 

类似的问题在访问成员、覆盖虚方法以及识别命名空间的情况中出现。

为了解决这个问题,语言说明允许C#程序员在保留字前面加上符号“@”,从而强制编译器将后面的保留字看成一般的标识符,而非保留字。[6]例如:

// Using This Class in C#: @this x = new @this(); // Will compile! 

相反地,也可在 VB 中使用 [] 括起来以达到相似的目的:

//C#: public class Me{ ... } 
//VB: Dim myMe As New [Me]() 

为了保持连贯性,这样的用法也可以在非公有情况下使用,例如声明局部变量、参数名称以及私有成员。

另一例子是 SQL 中也可用 [] 括起数据库对象名(表、列等),而被括的不仅限于 SQL 保留字 / 关键字:

select [1st col] from [select] 

这将选出名为“select”表中“1st col”列的数据。

参考文献

  1. ^ The Java Language Specification, 3rd Edition, Section 3.9: Keywords. Sun Microsystems. 2000 [2009-06-17]. (原始内容于2012-02-13). The following character sequences, formed from ASCII letters, are reserved for use as keywords and cannot be used as identifiers[...] 
  2. ^ ISO/IEC 9899:TC3, Section 6.4.1: Keywords (PDF). International Organization for Standardization JTC1/SC22/WG14. 2007-09-07 [2011-09-28]. (原始内容 (PDF)于2018-01-11). The above tokens (case sensitive) are reserved (in translation phases 7 and 8) for use as keywords, and shall not be used otherwise. 
  3. ^ Java Language Keywords. Oracle. [2011-09-28]. (原始内容于2011-11-20). 
  4. ^ C++ Reference Material Keywords. Saint Mary's University. [2011-09-28]. (原始内容于2020-02-15). 
  5. ^ C# Keywords. MSDN. [2011-09-28]. (原始内容于2017-01-28). 
  6. ^ C# FAQ: What does at sign identifier mean. C# Online.NET. [2011-09-28]. (原始内容于2020-07-02). 

保留字, 英語, reserved, word, 有时也叫关键字, keyword, 是编程语言中的一类语法结构, 在特定的编程语言里, 这些具有较为特殊的意义, 并且在语言的格式说明里被预先定义, 通常, 包括用来支持类型系统的原始数据类型的标记, 并可以用来识别诸如循环结构, 语句块, 条件, 分支等程序结构, 在编程语言设计之时就被定义, 有时, 语言说明具有一定的灵活性, 软件商可能会在其生产的编译器中添加非标准的语言特性, 同样, 当发展得更加成熟时, 编程语言的标准可能会扩展一些额外的特性, 例如, 在. 保留字 英語 Reserved word 有时也叫关键字 keyword 1 2 是编程语言中的一类语法结构 在特定的编程语言里 这些保留字具有较为特殊的意义 并且在语言的格式说明里被预先定义 通常 保留字包括用来支持类型系统的原始数据类型的标记 并可以用来识别诸如循环结构 语句块 条件 分支等程序结构 保留字在编程语言设计之时就被定义 有时 语言说明具有一定的灵活性 软件商可能会在其生产的编译器中添加非标准的语言特性 同样 当发展得更加成熟时 编程语言的保留字标准可能会扩展一些额外的特性 例如 在传统的编程语言中增加面向对象程序设计的特性 有时 编程语言说明会包含一些将来版本可能需要用到的保留字 在Java中 const和goto就是两个保留字 它们在Java中目前没有被使用 因此不具有意义 但是不能够被用作标识符 3 通过 保留 这个术语 它们可以在Java的未来版本中补充 而不需要 破坏 旧的Java源代码 不像预定义函数 方法和子程序 保留字不能被程序员定义 而前面那些的名称通常被归类于标识符 而不是保留字 语言间的比较 编辑不是所有的编程语言都有相同数量的保留字 例如 Java 以及其他C语言 4 派生的语言 具有相对较少的保留字 大约有50个 而COBOL则具有大约400个保留字 相反的极端则是Prolog 没有保留字 一个语言具有的保留字数量与其功能 强大 程度没有必然联系 COBOL在20世纪50年代被设计成一种商业语言 它是一种自存档 self documenting 使用类似英语结构的元素 例如动词 子句 语句等 而相反地 C语言被设计成一种在句法上较为简练的编程语言 例如 比较下列来自C语言和COBOL的两段计算单周收入的等价语句块 使用C语言计算 if salaried amount 40 payrate else amount hours payrate 使用 COBOL计算 IF Salaried THEN MULTIPLY Payrate BY 40 GIVING Amount ELSE MULTIPLY Payrate BY Hours GIVING Amount END IF 另一个使用 COBOL计算的例子 IF Salaried COMPUTE Amount Payrate 40 ELSE COMPUTE Amount hours payrate END IF 上述例子中彩色的部分即是它们各自的保留字 纯的Prolog语言使用关系式来表达 并通过询问这些关系触发处理方法 诸如循环的结构通过使用循环 递归的关系来实现 虽然以上三個例子具有不同的保留字 但是它们都能胜任解决上述问题 程序的功能取决于它们对一系列图灵语言的归属 一些跨语言的保留字 编辑微软 NET框架下的通用语言架构允许程序源代码以超过40种不同的编程语言混合编译 并生成一个解决方案 鉴于此 标识符 保留字的冲突可能会在一种语言写成的源代码试图处理另一种语言的源代码的过程中发生 例如 一个Visual Basic NET库可能会包含这样一个类 Class Definition of This in Visual Basic NET Public Class this This class does something End Class 假设这一段源代码被编译 并被作为一个工具箱的一部分 那么一个C 5 程序员在同一程序中定义this类的变量就会遇到问题 因为this是C 中的一个保留字 因此 下列的源代码将不能成功编译 Using This Class in C this x new this Won t compile 类似的问题在访问成员 覆盖虚方法以及识别命名空间的情况中出现 为了解决这个问题 语言说明允许C 程序员在保留字前面加上符号 从而强制编译器将后面的保留字看成一般的标识符 而非保留字 6 例如 Using This Class in C this x new this Will compile 相反地 也可在 VB 中使用 括起来以达到相似的目的 C public class Me VB Dim myMe As New Me 为了保持连贯性 这样的用法也可以在非公有情况下使用 例如声明局部变量 参数名称以及私有成员 另一例子是 SQL 中也可用 括起数据库对象名 表 列等 而被括的不仅限于 SQL 保留字 关键字 select 1 st col from select 这将选出名为 select 表中 1st col 列的数据 参考文献 编辑 The Java Language Specification 3rd Edition Section 3 9 Keywords Sun Microsystems 2000 2009 06 17 原始内容存档于2012 02 13 The following character sequences formed from ASCII letters are reserved for use as keywords and cannot be used as identifiers ISO IEC 9899 TC3 Section 6 4 1 Keywords PDF International Organization for Standardization JTC1 SC22 WG14 2007 09 07 2011 09 28 原始内容存档 PDF 于2018 01 11 The above tokens case sensitive are reserved in translation phases 7 and 8 for use as keywords and shall not be used otherwise Java Language Keywords Oracle 2011 09 28 原始内容存档于2011 11 20 C Reference Material Keywords Saint Mary s University 2011 09 28 原始内容存档于2020 02 15 C Keywords MSDN 2011 09 28 原始内容存档于2017 01 28 C FAQ What does at sign identifier mean C Online NET 2011 09 28 原始内容存档于2020 07 02 取自 https zh wikipedia org w index php title 保留字 amp oldid 73645292, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。