跳转至内容

Ada 编程/词法元素

来自维基教科书,自由的教科书

Ada. Time-tested, safe and secure.
Ada。经久考验,安全可靠。

字符集

[编辑 | 编辑源代码]

Ada 程序使用的字符集由以下组成:

  • 大写字母:A,...,Z和小写字母:a,...,z。
  • 数字:0,...,9。
  • 特殊字符。

请注意,在 Ada 95 中,字母范围包括重音字符和其他西欧语言中使用的字母,这些字母属于ISO Latin-1字符集,如 ç, ñ, ð 等。

Ada 2005中,字符集已扩展到完整的Unicode集,因此标识符和注释可以用世界上几乎任何语言编写。

Ada 是一种不区分大小写的语言,即除了字符字符串字面量和字符字面量外,大写字母集等效于小写字母集。

词法元素

[编辑 | 编辑源代码]

在 Ada 中,我们可以找到以下词法元素

示例

Temperature_In_Room := 25;  -- Temperature to be preserved in the room.

此行包含 5 个词法元素

  • 标识符 Temperature_In_Room
  • 复合分隔符 :=
  • 数字 25
  • 单个分隔符 ;
  • 注释 -- Temperature to be preserved in the room.

标识符

[编辑 | 编辑源代码]

BNF中的定义

identifier ::= letter { [ underscore ] letter | digit }
letter ::= A | ... | Z | a | ... | z
digit ::= 0 | ... | 9
underscore ::= _

根据此定义,我们必须排除作为语言中的保留字且不能用作标识符的关键字。

示例

以下单词是合法的 Ada 标识符

Time_Of_Day  TimeOfDay  El_Niño_Forecast  Façade  counter ALARM

以下单词是合法的 Ada 标识符

_Time_Of_Day  2nd_turn  Start_  Access  Price_In_$  General__Alarm

练习:你能说明每个单词不合法的原因吗?

数值字面量由以下字符组成:

  • 数字 0 .. 9
  • 小数点 .
  • 指数符号 eE
  • 负号 -(仅在指数中使用)和
  • 下划线 _

下划线用作分隔符,以提高人类的易读性,但编译器会忽略它。你可以根据任何原理分隔数字,例如,将十进制整数分成三组数字,或将二进制整数分成八组数字。

例如,实数如 98.4 可以表示为:9.84E198.4e0984.0e-10.984E+2,但不能表示为 984e-1

对于整数,例如 1900,可以写成 190019E2190e+11_900E+0

数值字面量也可以用不同的基数(不同于 10)表示,方法是在数字之间用 # 字符括起来,并在其前面加上基数,基数可以是 2 到 16 之间的数字。例如,2#101# 是 1012,即 510;带有指数的十六进制数为 16#B#E2,即 11 × 16² = 2,816。

请注意,没有负字面量;例如,-1 不是字面量,而是字面量 1 前面加上一元减号运算符。

字符字面量

[编辑 | 编辑源代码]

它们的类型为 标准.Character、Wide_Character 或 Wide_Wide_Character。它们由一个撇号(')分隔。

示例

'A' 'n' '%'

字符串字面量

[编辑 | 编辑源代码]

字符串字面量是 标准.String、Wide_String 或 Wide_Wide_String 类型。它们由引号(")分隔。

示例

"This is a string literal"

分隔符

[编辑 | 编辑源代码]

单个分隔符是以下特殊字符之一

&    '    (    )    *    +    ,    -    .    /    :    ;    <    =    >    

复合分隔符由两个特殊字符组成,它们是以下字符

=>    ..    **    :=    /=    >=    <=    <<    >>    <>

你可以在Ada 编程/分隔符中看到分隔符的完整参考。

Ada 中的注释以两个连续的连字符 (--) 开头,并在行尾结束。

-- This is a comment in a full line
My_Savings := My_Savings * 10.0; -- This is a comment in a line after a sentence
My_Savings := My_Savings * -- This is a comment inserted inside a sentence
    1_000_000.0;

注释可以出现在可以插入行尾的地方。

保留字

[编辑 | 编辑源代码]

保留字在大写字母和小写字母中是等效的,尽管典型的风格是参考手册中的风格,即用全小写字母写它们。

在 Ada 中,一些关键字根据上下文具有不同的含义。你可以参考Ada 编程/关键字和以下页面了解每个关键字。

Ada 关键字
abort else new return
abs elsif not reverse
abstract (Ada 95) end null
accept entry select
access exception of separate
aliased (Ada 95) exit or some (Ada 2012)
all others subtype
and for out synchronized (Ada 2005)
array function overriding (Ada 2005)
at tagged (Ada 95)
generic package task
begin goto parallel (Ada 2022) terminate
body pragma then
if private type
case in procedure
constant interface (Ada 2005) protected (Ada 95) until (Ada 95)
is use
declare raise
delay limited range when
delta loop record while
digits rem with
do mod renames
requeue (Ada 95) 异或

维基教科书

[编辑 | 编辑源代码]

Ada 参考手册

[编辑 | 编辑源代码]
华夏公益教科书