編譯器構造/詞彙表
外觀
< 編譯器構造
詞彙表旨在提供與編譯相關的詞語或短語的定義,而不是提供一般計算機術語的定義,對於這些術語,參考維基百科可能更合適。
如果您想要查詢的詞語或短語未在此處
- 嘗試在維基百科上查詢。
- 嘗試使用 Google 或類似工具搜尋全球資訊網。
如果您找到了該詞語或短語,請考慮將其新增到此詞彙表中,並附帶解釋和/或參考。
如果您沒有找到該詞語或短語,或者無法理解您找到的內容,請將該詞語或短語本身新增到此詞彙表中,但不提供解釋,並留待其他人解釋。
新增詞語或短語時,請儘量保持字母順序,以便其他人更容易找到。
以下準則將使此詞彙表保持一致性(只需按照一些現有條目的風格即可)
- 關鍵字或短語應
- 以空行開頭,
- 以 **粗體** 顯示,
- 單獨佔一行。
- 實際的定義/描述應該縮排。
- 對該詞彙表中其他條目的交叉引用應以 *斜體* 顯示。
- 字母分割可以根據需要進行細化,以嘗試將每個部分的條目數量保持在 20 個以下。
- 定址模式
- Algol 60
- 彙編/組合語言
- Tiny BASIC 語言
- BASIC
- BNF:巴科斯-諾爾正規化
- 引導
- C
- C++
- 喬姆斯基
- 喬姆斯基層次結構
- 編譯器
- 計算機體系結構
- CPU 設計
- EBNF:擴充套件 BNF
- FORTRAN
- 高階語言
- 低階語言
- 直譯器
- Pascal
- PL/0 - Wirth 的玩具/示例編譯器,來自 A+DS=P
- PL/1
- 遞迴
- 副作用
- Ada
檢查含義
- 這是 *語義分析* 的另一種說法。
註釋
- 源程式的一部分, предназначена для человека-читателя и игнорируется компилятором. Как минимум, все переменные и все подпрограммы должны иметь пояснительные комментарии. Комментарий может пытаться объяснить соседний код, но проблемы возникают, если код обновляется, а комментарий нет. В идеале комментарии должны рассказывать, ЧТО делает код, а не КАК; код должен быть самоочевидным.
編譯
- 由 *編譯器* 執行的翻譯行為。
編譯器
- 一個計算機程式,它將用一種計算機語言(稱為 *源語言*)編寫的計算機程式翻譯成用另一種計算機語言(稱為 *目標語言*)編寫的等效程式。
編譯時
- 程式被編譯期間的時間段,不同於程式實際執行時的 *執行時*。某些錯誤可以在編譯時檢測到(例如,拼寫錯誤的識別符號),而其他錯誤可能直到執行時才能檢測到(例如,除以 0)。
GNU
- 遞迴首字母縮略詞“GNU's Not Unix”。獨立編寫的類 Unix 系統,可以與 Linux 核心組合,生成 GNU/Linux - 一個有用的免費作業系統。
GPL
- GNU 通用公共許可證。許多受版權保護的免費軟體,包括 GNU/Linux,都可以在 此許可證 下獲得。其總體目的是確保此類軟體始終可供任何人免費使用和/或修改。
識別符號
- 程式中使用的名稱。通常是字母和數字的某種(可能難以發音的)組合,以字母開頭。一些程式語言可能允許其他字元,如下劃線 '_' 或井號 '#'。識別符號可以由程式設計師定義,也可以由語言預定義(例如,'sqrt' 通常是預定義的識別符號,用於引用“平方根”函式)。較舊的程式語言曾經將識別符號限制為最多 6 個字元 - 產生的縮寫往往使程式更難理解。許多程式語言允許幾乎任何長度的識別符號,但一些語言可能只考慮前 32 個字元。寫長識別符號有兩種主要風格:要麼 now_for_some_long_name,要麼 NowForSomeLongName。
實現語言
- 這是編寫編譯器或直譯器的程式語言。它可能與 *源語言* 或 *目標語言* 相同。
中間語言
- 某種中等低階的語言,用作編譯器前端和後端之間的介面。
直譯器
- 一個計算機程式,它檢查用某種 *源語言* 編寫的計算機程式,並或多或少地直接執行該程式所需的行動,而不會將其翻譯成其他語言。與編譯程式相比,可能速度較慢,特別是如果計算量很大。
即時編譯
- 編譯器和直譯器之間的交叉。*源語言* 在即時中被解析並翻譯成 *機器語言*,並立即執行。底層機器執行程式碼,而在直譯器中,它自己完成工作。
關鍵字
- 許多程式語言保留一些識別符號作為關鍵字,用於在指示程式結構時使用,例如,**if** 通常用於指示一些條件程式碼。像 Pascal/C/C++ 這樣的語言大約有 50 個保留關鍵字,Fortran 沒有,COBOL 大約有 300 個。
詞法分析
- 這是 *掃描* 或 *標記化* 的另一種說法。詞法分析的功能是掃描源程式(按行排列的一系列字元)並將其轉換為一系列有效的 *標記*。通常也會在此階段刪除所有 *註釋*。*語法分析* 負責檢查它是否是一個有效的序列。
機器語言
- 這是最低階的語言。它只包含二進位制數字。它只在計算機剛發明時被用來建立第一個編譯器。
解析
- 這是 *語法分析* 的另一種說法。
遍
- 為了編譯程式,必須掃描或重新掃描源文字的次數。由於主記憶體有限,一些早期編譯器有很多遍(大約 60 遍)。
編譯指示
- 這有時被稱為重要的 *註釋*。目的是在源程式的不同位置向 *編譯器* 或 *預處理器* 傳遞指令。這些指令可能指示速度還是空間更重要,或者是否應抑制某些檢查,或者是否應計時某個特定例程等。
預處理器
- 一個程式,它接收文字並對其執行詞法轉換。轉換可能包括宏替換、條件包含和其他檔案的包含。這可用於透過排除在某些平臺上不必要的原始檔來編寫平臺無關的程式碼,而無需更改構建指令。
保留字
- 這是 *關鍵字* 的另一種說法。
執行時
- 程式執行/執行/執行一些有希望有用的工作的時間段,不同於程式被翻譯時的 *編譯時*。
掃描
- 這是 *詞法分析* 或 *標記化* 的另一種說法。
語義分析
- 語義分析的功能是檢查源程式是否有意義。請注意,程式可以具有有效的含義,但如果它沒有做真正想要做的事情,它仍然是錯誤的。
源語言
- *編譯器* 接受的輸入語言,並將其翻譯/編譯成 *目標語言*。它通常是高階語言,用英語單詞和數學符號的混合體編寫。
語法分析
- 這是 *解析* 的另一種說法。語法分析的功能是檢查源程式是否語法正確,即我們是否具有有效的 *標記* 序列。檢查源程式是否真的有意義是 *語義分析* 的工作。
目標語言
- *編譯器* 輸出的語言。它通常是低階語言,如組合語言,用機器指令的某種隱晦的縮寫編寫,但也可以是某個實際或虛擬計算機的機器程式碼。
標記
- 由 *語法分析* 處理的基本符號。標記可以是 *識別符號* 'Result'、保留關鍵字 **if**、複合符號 '<=' 或單個字元 '+'。
標記化
- 這是 *詞法分析* 或 *掃描* 的另一種說法。它意味著“轉換為標記”。