1
假設我有一個像處理Lex中的錯誤條件而不是Yacc?
[aA][0-9]{2,2}[pP][sS][nN]? { return TOKEN; }
如果用戶輸入法正則表達式
A75PsN
A75PS
它將匹配
但是,如果一個用戶說像
A75PKN
我希望它錯誤,並說「字符K未被識別,期待S 「
什麼我現在所做的一切只是寫它像
let [a-zA-Z]
num [0-9]
{let}{num}{2,2}{let}{2,3}
然後基本上是重新詞法在Yacc的繩子,讓我能有有意義的錯誤條件
我怎樣才能解決這個?
我能想到的唯一事情就是使用命名組?
Wow很棒的迴應。不應validate_id_string()是否像validate_id_string(yytext)?通過yytext驗證? – DevDevDev 2009-09-30 18:13:32
@DevDevDev:因爲yytext是全局的,所以傳遞yytext是可選的。它部分取決於你是否在其他地方使用該功能。是的,參數比全局變量更好。但我正在說明一般技術,而不是一些好的編碼風格。 – 2009-09-30 19:47:33
謝謝!我沒有試圖評論編碼風格,我只是想知道你的意思是validate_id_string會訪問yytext。 – DevDevDev 2009-09-30 23:02:04