JOVIAL語言編譯程式

JOVIAL語言編譯程式

JOVIAL語言是一種高級程式設計語言。它是美國空軍航空電子工程的產物。

概述

JOVIAL語言是一種高級程式設計語言。它是美國空軍航空電子工程的產物。從一九五八年至今,JOVIAL語言一直是航空電子工程主要程式語言。近三十年來.,它先後被用來完成SAGE,SACCS等大型骯空作戰及控制系統。在此期何,根據工程中出現的問題及所獲得的經驗,JOVIAL語言歷經了多次修訂,至今,它已成為一種適用面廣,功能強的實時程式語言。

在JOVIAL語言發展的過程中,出現過許多JOVIAL版本。其中,有影響的版本有J3,J3B, J73等。JOVIAL語言的各種版本已在多種機器上實現,並在許多領域內得到了廣泛的套用。典型的套用領域有航空電子,控制及指揮以及飛彈飛行控制等。

JOYIAL語言支持模組化或結構化程式設計。使用COMPOOL模組,可對數據對象及子程式特性進行集中描述,從而有益於進行模組連線及數據共享。結構化的控制流結構使程式具有良好的結構,進而易於理解及維護。JOVIAL語言支持的數據有:簡單項(ITEM),結構型表(TABLE )以及組合型塊(BLOCK)。數據類型有:整型,枚舉,浮點,定點,字元,位串以及指針。控制流結構有:循環,分支,條件,過程調用以及停機等。從JOVIAL程式的結構來看,JOYIAL屬於ALGOL族,其程式結構呈嵌套式。

數據對象及其說明

JOVIAL數據對象

JOVIAL語言所支持的數據對象是面向工程及控制的,而不是面向商務的。

1、整型:分有符號和無符號兩種。整型的用途在於完成計數,如循環次數。

2、浮點:具有浮動比例因子,用來記錄一些物理量,特別是那些取值範圍積大的物理量,如距離,速度,溫度,時間等。

3、定點:具有常數比例因子,可表示取值範圍不大的物理量。定點運算比浮點運算節省時間和空間。

4、位串:即二進制位串,可用來表示開關設備的狀態,如記錄控台開關的設定狀況。

5、字元串:即字元序列。字元串用來表示某種通信信息,如當程式某一部分失效後,可將一字元串回送到控制台,告訴控制台入員失效的原因,位置等。

6、狀態:狀態數據是一些特殊字,用來表示某一時刻或系統某一部分的狀態。如用狀態字'V(OK)','V(WEAK)'或'V(BAD)'可表示某一電源電力狀況。

7、指針:地址型數據,表示數據或過程的地址。通過指針可間接訪問數據。

8、表:由上述簡單數據構成的一種結構型數據,相當於其他高級語言中的數組。

9、塊:集中在某一存儲區內的一組數據,用來支持存儲管理。塊中可包含各類數據,也可包含塊型數據。

數據對象的說明

JOYIAL程式中的各類數據對象是通過說明語句引入的。說明語句給編譯程式提供了有關數據對象存取所需的信息,編譯程式根據這些信息給數據對象分配地址。例如:

ITEM COUNT U 10;

說明COUNT是一個無符號整數,至少占10個二進制位的空間。編譯程式很可能會給它分配多於10位的空間以便於以後進行運算。

上例中,用戶指明COUNT至少得占10位空間。用戶也可以不指明這一點讓編譯程式自動給COUNT分配一預設大小的空間。這類數據的預設空間與具體的實現有關,如上例說明,一種實現預設大小為16,而另一種實現中也可能是32。

符號

JOVIAL符號是由48個符號的字母粗成。它倆是26個英文字母,10個數字,以及雜七雜八的符號(包括空白,基本符號,美元符號$等)。

字母:A; B; C; D; E; F; G; H; I; J; A; L; M; N; O; P; Q; R; S; T; U; Y; W; X; Y; Z

數字:0; 1; 2; 3; 4; 5; 6; 7; 8; 9

符號:字母;數字;空白; ( ; ) ; + ; 一 ; * ; / ; · ; ,; ‘ ; = ; $

這些符號粗成的一定的行稱為JOVIAL的符號:定義符;標識符;和常數,它們又一起再構成語言的短語和句子。為了便於閱讀,這些符號之間可用任意個空白隔開。因此可以包括非嵌入的空白,在JOVIAL中行拮束不執行什麼,這是必要的致使符號可以跨行。

定義符

定義符(所謂定義符即它們的語法功能在於限定標識符和常數用的)是JOVIAL的動詞和標點。它們有著固定的意義,定義如下:

算術算符:+ ; 一 ; * ; / ; **

關係算符:EQ; GR; CQ; LQ; LS; NQ

邏輯算符:AND; OR; NOT

順序算符:IF; GOTO; FOR; TEST; CLOSE; RETURN; STOP; IFEITHer; ORIF

檔案操作符:OPEN; SHUT; INPUT; OUTPUT

函式符:BIT; BYTE; MANT; CHAR; ODD; NENT; NWDSEN; ALL;ENTRY;POSition

分隔設定:· ; , ; = ; == ; ' ; … ; $

括弧:( ; ) ; (/;/) ; ($;$) ; “ ; “ ;BEGIN; END; DIRECT; JOVIAL; START;TERM

說明符:ITEM; MODE; ARRAY; TABLE; STRING; OVERLAY; DEFINE;SWITCH; PROCedure; FILE

敘述符:Floating; Fised; Dual; Signed; Unsigned; Rounded; Hollerith; Transmission; Status; Boolean; Variable; Rigid; Preset; Like; Parallel;Serial; Dense; Medium; No; Binary

標識符

任何程式都耍藉助於符號經常地引用它周圍的信息。一個機器語言程式通過記憶體的地址或包括某信息的存儲裝置來調用所需的信息。JOVIAL程式是通過標識符來稠用信息的。因此JOVIAL的標識符就是一個語句名,一個開關名,一個過程名,一個項目名,一個表格名或者一個檔案名稱。

一個標識符是一個任意的字母數字名(當然按通常記憶需耍)它們用以標示JOVIAL程式周圍信息中的一個具體元素。

名字$字母:[字母;數字]s[']

名字的構成可以適應程式設計者的習慣,但是,為了提高閱讀能力,應儘可能的記述下來。一個名字必須以一字母打頭,後面跟上若干個字母或數字,為了便於閱讀它們可以用'號隔開,因為不允許內嵌空白,一個基本符號可用來聯結多字的名字。

一個名字不可以和定義符的拼寫相重,也不能以一個基本記號桔束。

標識符的作用域是由這樣一組句子粗成,對這些句子來說標識符是有定義的。在這個域內,標識符必須有一致的拼寫。然而語句名和開關名可以從上下文關係與過程名,項目名,表格名和檔案名稱區分開。因此對這兩類簡的唯一性實際上井不要求(例如,語句名可以再次用作項目名,但是實用時不提倡這樣做)。

除了語句名字可由上下文來確定外,所有的JOVIAL標識符必須通過某種說明來定義,以使得標識符與外圍信息的關係確立起來。這種就明或直接由程式設計者明確提供,或者簡接的由系統說明的COMPOOL表來提供,但用到的標識符若沒有在過程(或程式)中定義,必須在某個較高極中即在程式(或COMPOOL)中定義。

標識符可以只對一個過程,一個程式或一個完整的程式系擾而定義。定義在一個程式或過程內的標識符一律是局部的,井不與該程式或過程之外的拼寫一致的標識符發生衝突。在這種情況下可能發生衝突,即所謂“外面”的標識符的作用域包括了“裡面”標識符的作用域。

常數

一常數表示一個具體數據的值,該值不受程式執行的影響,JOVIAL程式處理四種數據:由有理數及有理數對組成的數值,由JOVIAL符號串組成的文字值,狀態值(如Good, Fair, Poor等任意命名的一些獨立的狀態);以及布爾值(即True和Ealse兩值)四種。於是一個JOVIAL常數指示了一個具體的值如同用具體機器的語言符號所表示的一樣。

數值,整數,定點,浮點常數通常按十進制理解;八進常數很明顯只有整數意義。雙值數則表示數值對的意義。文字常數表示一個JOVIAL符號串,這些符號是用兩種可能的每個符號6bit(二進制數位)的編碼方式之一來表示的;狀態常數是一個記憶名指出質量或種類,而不是指示數值;布爾常數或者指示True或指示False。

常數$整常數;浮點常數;定點常數;八進常數;雙值常數;文字常數;狀態常數;布爾常數。

JOVIAL常數已包含了全部所需的信息,以便翻譯程式執行必要的常數向機器符號的轉換,又因表示常數值的機器符號是不能再複雜了,一個單鈍的符號就可以表示很多不同的值。

相關詞條

熱門詞條

聯絡我們