首先是關于語言:
我們無法确定一個有着有序符号的一串排列算不算是語言的一部分,于是Formal Language 提供了一個更加精确的規則來
管理什麼樣的字元串是屬于語言的範疇,Formal Language包括了程式設計語言,資料庫查詢語言以及一些不同的檔案格式,
而相比之下,英文法語什麼的不屬于formal language的範疇,縱然你仍然可以寫一些關于他們的一些規則。
怎麼樣去形容或者講授一個文法:
1. 一些不太正式的表達:
一個算法表達式一般是由一些變量和數字和一些插入的操作符(+,-,*,/)組成的,然後一些子表達式也會被一
些插入語依附....之類的東西
2. 例如:a42是一個有效的變量名,而42a不是的,因為變量名不能以數字開頭
3. 是以我們需要一些注釋來更準确的表達這些description
這一門課主要是:表示正規語言的符号(notations for representing formal languages),為我們提供了:
1. 更加準确的定義
2. 創造編譯器去識别語言
3. 提供方法去檢驗:
·
· 一串符号是否屬于語言的範疇
· 兩種可替換的語言描述是否是相同的語言
在程式設計語言中:
編譯階段:
1.詞法分析:把字元串序列分成符号,類似于變量名,操作符,标記這種。
2.轉換:鑒别符号之間的關系
3.生成代碼
4.代碼最優化