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:詞法元素、分隔符和定界符 [註釋]
