2013-04-30 26 views
0

我會先把我的lex代碼(只lex身體)。使用^(插入符號)裏面的國家在Lex/flex

%% 
ps  {BEGIN STATE1;} 
.  ; 
<STATE1>^[0-9] print("number after ps".) 

與此代碼我試圖匹配字母「ps」後的數字。這就是爲什麼我使用^字符。 但代碼不匹配任何正確的字符串,如PS3,ps4fd,ps554等 然後我刪除了^和嘗試,但隨後它的工作,但也符合像pserd7,psfh45,psfhdjh4er等

我知道弦我可以在不使用狀態的情況下解決問題(ps [0-9]。*)。但我必須與國家做到這一點。我怎樣才能解決這個問題?謝謝....

回答

2

與此代碼我試圖匹配一個數字後字母「ps」。這就是爲什麼我使用^字符

但^並不意味着。它意味着'開始行'。

我知道我可以在不使用狀態(ps [0-9]。*)的情況下解決問題。但我必須與國家做到這一點。

爲什麼?非常奇怪的要求。

您需要添加更多規則來涵蓋其他可能性。例如:

<STATE1>. { BEGIN INITIAL; } 

但是這取決於還有什麼其他的東西在'ps'之後是否合法。