[英]understanding basics of CFG
剛剛開始撰寫Sipser的書中有關CFL的章節,已經不了解其基礎知識。
讓這成為某種語言的語法:
S -> A0A
A -> 00A | 11A | 10A | 01A | e
我對這個A0A部分感到非常困惑。 這是否意味着從0開始的左側應始終與右側相同。 這是否意味着00011或000不是這種語言的?
任何S
是您對任何A
都有的任何選項,其后是單個文字0
,然后是A
另一個選項。 每個A
是獨立的。
字符串00011
是該語言的語言,因為您可以選擇兩個A
,例如,第一個為00A
,第二個為11A
。 如果遞歸地為兩個“剩余” A
s選擇空字符串( e
),則在將所有內容連接在一起時,最終將得到字符串00011
。
您可以執行類似的操作來獲取字符串000
。
A轉換為空,或者轉換為兩個二進制數字,然后轉換為A。這意味着A轉換為任何偶數個二進制數字序列。
S轉換為A,然后轉換為0,然后轉換為A。這意味着S轉換為二進制數的偶數,然后轉換為0,然后轉換為偶數。 也就是說,S是中間為0的任何奇數個二進制數字序列。
這是否意味着從0開始的左側應始終與右側相同。
沒有為什么? 兩個不同的A可以轉換為不同的序列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.