終結符號和非終結符號

2021-10-04 18:58:53 字數 493 閱讀 9864

1.終結符

它們不能被分解成更小的單位。確切地說,乙個語法的規則不能改變終結符。例如說,下面的語法有兩個規則:

x -> xa

x -> ax

在這種語法之中,a是乙個終結符,因為沒有規則可以把a變成別的符號。不過,有兩個規則可以把x變成別的符號,所以x是非終結符。乙個形式語法所推導的形式語言必須完全由終結符構成。

2.非終結符

非終結符是可以被取代的符號。乙個形式文法中必須有乙個起始符號;這個起始符號屬於非終結符的集合。

3.舉例

下面使用巴科斯正規化的變種來表示:

integer ::= [』-』] digit

digit::= 『0』 | 『1』 | 『2』 | 『3』 | 『4』 | 『5』 | 『6』 | 『7』 | 『8』 | 『9』

在這個例子之中,符號 (-,0,1,2,3,4,5,6,7,8,9) 都是終結符,而 digit 和 integer 都是非終結符。

參考:wiki

《編譯原理》文法 終結符和非終結符

終結符和非終結符在編譯原理的文法部分是出現得最多的概念,但由於在熟悉編譯原理的人看來,這是個不值一提的簡單概念,所以一般書上都沒有對這兩個概念做明確定義,這導致很多學員在沒有直正的理解其含義的情況下,開始了文法的學習,所以學起來非常吃力。這句話說得真好。就是那些無視後來人的彙編高手給偶們這些初學的帶...