我一直在使用Flex /野牛約6小時,現在,這裏是我不縫的第一個問題是能夠解決:Flex正則表達式不匹配?
我有以下的文件...
state state1: {
1-3: 255
4: 255
}
...我用cat和|傳遞給我的flex/bison程序。 柔性文件包含此行:
\bstate\b { return STATE; }
進一步壓低這一個:
.* { fprintf(stderr, "Lexer error on line %d: \"%s\"\n", linenum, yytext); exit(-1); }
每個人都應該認爲\ bstate \乙方應在文件中得到匹配,但事實並非如此。相反,我得到以下輸出:
"exer error on line 1: "state state1: {
這在很多方面都很奇怪。首先,Lexer接縫中的L被替換爲「,但更重要的是,狀態沒有得到匹配。爲什麼???當然,\ bstate \ b在。*之前,它們是在右側部分。
感謝您的幫助, 揚
好的,這是有道理的。我雖然只有第一場比賽會被採取。關於這個問題的兩個問題:1:是否有一些關於Flex Regexes的文檔(我應該用什麼來代替\ b?)2:有沒有其他方法匹配時匹配。*,無論匹配更多? – Jan
1)'info flex'是我的指南(也可從http://flex.sourceforge.net/manual/獲得)。模式是第6節。1a)由於順序標記算法,我從來沒有覺得需要\ b。對我來說幸運,因爲我不認爲有一個。 2)不,但通常的做法是匹配列表末尾的「。\ n」。如果這是你想要做的,或者使用開始條件(參見第10節),你可以跳到行動的最後。 – rici
@Jan,如上所示,萬一SO沒有通知你。很明顯,我太晚了。 – rici