跳轉至內容

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 參考手冊

[編輯 | 編輯原始碼]
華夏公益教科書