⑴ 編譯原理中,a和b的個數相等的正則表達式該怎麼寫
判定a和b的個數相等不能使用正則語言,需要使用上下文無關語言,下推自動機利用堆棧記憶和處理a和b的個數之間的關系。
所以沒有能夠描述你所要求的正則表達式。
⑵ java中的正則表達式跟編譯原理有什麼聯系
首先,正則表達式不僅在Java里有,其它語言裡面也有,它是一個數學上的概念,各個語言中的正則表達式是它的不同形式的實現。
其次,編譯原理的詞法分析里,會用到正則表達式去匹配源程序中的各種token(記號),比如說
int a = 8;
里識別出:
類型名:int
變數名:a
運算符:=
數字:8
結尾分號:;
總之,二者有聯系,但不是一回事。
⑶ [編譯原理]構造一個正則表達式,它接受S={a, b, c}上符合以下規則的字元串:
(1)如果以a開頭,則串內至少包含一個c ----> 可以寫成a(a|b|c)*c(a|b|c)*
(2)如果以b開頭,則串內至多包含一個 a ----> 有兩種情況,一個是不包含a,可以寫成b(b|c)*;另一個是只有一個a,可以寫成b(b|c)*a(b|c)* ,結合起來就是b(b|c)* | b(b|c)*a(b|c)*
(3)綜合前面(1)和(2),有
a(a|b|c)*c(a|b|c)* | b(b|c)* | b(b|c)*a(b|c)*
⑷ 編譯原理:c語言標識符的正則表達式
C語言中的標識符:
標識符由字母、數字、下劃線「_」組成,並且首字母不能是數字.
java語言中的標識符:
標識符由字母、數字、下劃線「_」、美元符號「$」組成,並且首字母不能是數字。
一般標識符由字母、數字、下劃線「_」組成
如果只能以下劃線、英文字母開頭,後跟單詞字元的話:
^[A-Za-z_][A-Za-z0-9_]*$
⑸ 編譯原理正則表達式化簡
你好,語言L={a}{a,b}∗({ϵ}∪({.,_}{a,b}{a,b}∗))L={a}{a,b}
∗
({ϵ}∪({.,_}{a,b}{a,b}
∗
))
這個語言是指,由a開頭,後接任意長度的a、b串,然後再接空串(代表結束)。或者是接以.或_開頭的,後接長度大於等於1的a、b串。
正則表達式(Regular Expression, RE)是一種用來描述正則語言的更緊湊的表示方法。
⑹ 編譯原理中的正則表達式與正規表達式有什麼區別
完全相同,是對regular expression的不同翻譯
⑺ 編譯原理中, regular expression (正則表達式)和regular language(正則語言)有什麼區別
正則表達式是對正則語言的一個描述。正則語言是一個集合,這個集合里的元素都滿足正則表達式描述的規則。
⑻ 編譯原理,正則表達式的低級基礎問題
1、正則表達式:0(0|1)*1
2、由於不方便畫圖,最簡DFA用狀態表表示如下:
(1)開始狀態S------輸入0------->狀態A
(2)狀態A-------輸入0-------->狀態A
(3)狀態A-------輸入1-------->狀態B(可接受狀態)
(4)狀態B-------輸入0-------->狀態A
(5)狀態B-------輸入1-------->狀態B(可接受狀態)
⑼ 編譯原理 正則表達式
/^(?!.*001)[01]+$/
⑽ 編譯原理-用正則表達式表示下面的內容
(1)[a-z]
(2)^[24680]+$ 所有數字都為偶數 ^(?=[1-9])\d*[02468]$|^[02468]$ 所有偶數
(3)^(?=[a-zA-Z0-9]+).*@[^\.]+\.[a-z]+$
測試有效