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
- 小数点
.
- 指数符号
e
或E
- 负号
-
(仅在指数中使用)和 - 下划线
_
。
下划线用作分隔符,以提高人类的易读性,但编译器会忽略它。你可以根据任何原理分隔数字,例如,将十进制整数分成三组数字,或将二进制整数分成八组数字。
例如,实数如 98.4 可以表示为:9.84E1
,98.4e0
,984.0e-1
或 0.984E+2
,但不能表示为 984e-1
。
对于整数,例如 1900,可以写成 1900
,19E2
,190e+1
或 1_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) |
异或
|
- 第 2 节:词法元素 [注释]
- 2.1:字符集 [注释]
- 2.2:词法元素、分隔符和定界符 [注释]