一、程序語言的定義
編譯程序要對程序進行正確的翻譯,首先要對程序設計語言本身進行精確地定義和描述。對語言的描述是從三個方面來考慮(精簡地說):
語法:是對語言結構的定義(什么樣的符號序列是合法的);定義語言的詞法和語法的形式規則;
語義:是描述語言的含義;定義語言的單詞符號和語法單位的意義;
語用:是從使用的角度去描述語言。定義程序設計技術和語言成分的使用方法,它使語言的基本概念與語言的外界(如數學概念或計算機的對象和操作)聯系起來
比如說賦值語句 s = 2* 3.1416* r* (r+ h)的非形式化的描述如下:
語法:賦值語句由一個變量、后隨賦值號“=”、后跟一個表達式構成;
語義:首先計算語句右部表達式的值,然后把所得結果送入左部變量中;
語用:賦值語句可用來計算和保存表達式的值。
程序設計語言的定義是語言編譯程序實現的基礎,是語言使用者的用戶手冊;程序語言是符號語言,即一個記號系統,它主要有語法、語義和語用等三方面定義。
1.語法
任何語言程序都可看成是一定字符集(字母表)上的一字符串(有限序列)。
語言的語法規則定義了程序的形式結構,語法規則是指這樣的一組規則,用它可以形成和產生一個格式(合法)的程序。這些規則的一部分稱為詞法規則,另一部分稱為語法規則(或產生規則)。
字母表是一個有限的字符集,字符集中的字符是語言程序中可能出現的字符,它們是語言程序單詞的組成部分。
詞法規則定義了語言程序中單詞符號的形成規則。即什么樣的字符串是一個合法的單詞。如標識符、數值常量、運算符等單詞的構成規則。描述詞法規則和進行詞法分析的有效工具是正規式、正規文法和有限狀態自動機理論。
語法規則定義了語言程序中語法單位的形成規則。一般語言的語法單位有表達式、語句、分程序、函數、過程和程序等。描述語法規則和進行語法分析的有效工具是`上下文無關文法。
語法規則和詞法規則定義了程序的形式結構,定義語法單位的意義屬于語義問題。
2.語義
對于一個語言來說,不僅要給出它的詞法、語法規則,而且要定義它的單詞符號和語法單位的意義。這就是語義問題。離開語義,語言只不過是一堆符號的集合。
語言的語義是指這樣的一組規則,使用它可以定義一個程序的意義。這些規則稱為語義規則。
程序語言的每個組成成分(語法范疇)均有抽象邏輯和計算機實現兩方面的意義。前者描述在數學上的邏輯意義,后者注重其在計算機內的表示和實現的可能性與效率。
語義的描述方法有兩種。一種是自然語言描述,但是其存在隱藏錯誤、二義性和不完整性的缺陷。另外一種是形式描述。
形式語義學有操作語義學、代數語義學、公理語義學、指稱語義學等許多分支,它們分別用不同的形式系統來描述語義問題,但是目前還沒有一種公認的形式系統,因此也還沒有實用的語義自動分析方法。
目前編譯程序中常用的語義分析方法是一種基于屬性文法的語法制導翻譯。
即在語法分析的同時對其中識別出的語法單位進行語義的分析與翻譯工作;在描述文法的同時為定義的語法范疇加上它們的屬性計算規則,屬性可以是語法范疇的類型、地址、取值、執行動作等信息。
不過在本科生階段,編譯原理不會過多涉及到形式語義學,但是屬性文法是需要學習的。其他內容,研究生階段可能會需要學習。
二、高級語言的一般特性
1、高級語言的分類
高級語言可分為以下幾類:
一、強制式語言(Imperative Language)也稱過程式語言,特點是命令驅動,面向語句。如C、pascal屬于這類語言。
二、應用式語言(Applicative Language)也稱函數式 注重程序所表示的功能,程序的開發過程是從已有的函數出發構造更復雜的函數,程序的執行即函數的嵌套或遞歸調用。如LISP、 ML屬于這類語言。
三、基于規則的語言(Rule-based Language)也稱邏輯程序設計語言,程序的執行過程是檢查一定的條件(謂詞邏輯表達式),條件滿足則執行適當的動作。如Prolog屬于這類語言。
四、面向對象語言(Object-Oriented Language)特點是支持抽象、封裝性、繼承性、多態性和動態綁定。程序設計的方法是將數據和操作封裝在一起構成對象,對簡單對象進行擴充、繼承從而構造更復雜的對象,通過向對象發送消息獲得動作的執行。如C++、Java、C#屬于這類語言。
2、數據類型與操作
一個數據類型通常包括以下三個要素:
用于區別類型的數據對象的屬性;
這種類型的數據對象可以具有的值;
可以作用于類型的數據對象的操作。
程序設計語言從初始到復雜:
初等數據類型
數值數據、邏輯數據(布爾類型)、字符數據、指針類型。
數據結構
數組:由同一類型數據所組成的 n 維矩形結構??煞譃榇_定數組和可變數組;數組的內情向量包括:首地址、維數、各維的上下限及元素類型。
記錄:由已知類型(可以不同)的數據組合起來的結構。記錄中每個域的 OFFSET 是它相對于記錄首地址的地址位移量。
字符串、表格、棧和隊列:數組或記錄組合的訪問受限的復合結構。
關于標識符和名字:
雖然名字和標識符在形式上往往難于區分,但這兩個概念是有本質區別的。例如,對于‘PI’,我們有時說它是一個名字,有時又說它是一個標識符。標識符是一個沒有意義的字符序列,但名字卻有明確的意義和屬性。作為標識符的PI,無非是兩個字母的并置,但作為名字的PI,常常被用來代表圓周率。在髙級語言中常用“局部名”、“全局名”之稱,但 少有“局部標識符”、“全局標識符”之分。
3、語句與控制結構
除了提供數據的表示、構造及運算機制外,程序設計語言還有可執行的語句??刂平Y構定義了語句的執行次序,語言所提供的控制結構的集合對可讀和可維護的軟件的編寫有很大影響。
(1)表達式
表達式是由運算量和運算符組成的。運算量亦稱操作數,可以是數據引用或函數調用;運算符有算術運算符、邏輯運算符、關系運算符等,運算符之間有規定的優先級和結合律。
(2)語句
1、賦值句:變量名 = 表達式。
2、控制語句:無條件轉移語句、條件語句、循環語句、過程調用語句、返回語句。
3、說明語句:用于定義名字的性質。
4、簡單句和復合句:語句1;語句2;語句3;……
感謝各位的閱讀,以上就是“高級語言的特性有哪些”的內容了,經過本文的學習后,相信大家對高級語言的特性有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是本站,小編將為大家推送更多相關知識點的文章,歡迎關注!
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
在一個夏天的下午,我看到了上海的黎明。在中潭陶瓷公司的院子里,三輛貨車正在加緊裝貨,準備連夜將一批陶壇送往茅臺鎮。負責裝車的司機都是在這條運輸線上來回跑了幾年甚至20年的師傅,但當被問及這些陶壇的具體去向時,他們只回答“剛來這里,不了解?!迸俑鶈柕椎脑?,一個好脾氣的司機會暗地告訴你:“茅臺鎮的一個小酒廠”。在這里,每批貨物的流向都是商業秘密——尤其是當買家是大酒廠的時候。土陶小鎮中坦陶瓷位于“中國...
在辦公室坐八個小時,不知不覺總會出現各種小問題。腰有點酸,肩膀總有小疼,還有皮膚干燥,月經不調,等等。這些小問題是否讓你只是單純的“累”來說明問題?疲勞、壓力、坐姿甚至辦公室里的空音調都可能不斷侵犯你的健康和美麗,調整這些不良狀況并不難。學習中醫艾灸,每天只需10分鐘,就能讓你輕松告別小毛??!迎來一個精神清爽、膚色如春的全新好狀態。古老而神秘的艾灸,如今已經成為養生專家和美容專家之間的新時尚。艾灸...
民生信用卡額度的調整方法為:1、電腦登錄民生銀行客服官網,然后在頁面點擊“我的信用卡-我要調額”即可調整自己的信用卡額度;2、打開并登錄民生的全民生活APP,然后在頁面依次點擊“精選-調額度”進行信用卡額度的調整。不同途徑申請調整額度的審核結果是一樣的,如果申請失敗了可以過段時間再重新申請,期間保持信用卡按時還款不要逾期。民生信用卡額度為什么升不了?...