0
所有,法|柔性規則操作忽略
我有圖案的在我的lex文件中指定類型:
"#"[ \\t]*"ifdef".* { action_ifdef_manager(yytext);}
如果這樣的文字encoutred #ifdef GLOBALVAR
動作action_ifdef_manager
不叫
感謝您的幫助。
所有,法|柔性規則操作忽略
我有圖案的在我的lex文件中指定類型:
"#"[ \\t]*"ifdef".* { action_ifdef_manager(yytext);}
如果這樣的文字encoutred #ifdef GLOBALVAR
動作action_ifdef_manager
不叫
感謝您的幫助。
唯一的問題是模式的不明確性。你應該有一個像 '的#ifdef' 類似的模式
a |
ab |
abc |
abcd ECHO; REJECT;
這裏的詞法分析器中的 「ABCD」 流返回所有四個驗證模式A,AB,ABC,ABCD
沒有一定的背景下回答你的問題幾乎是不可能的。顯然,如果這是您的詞法分析器中唯一的規則,那麼應該調用action_if_def_manager,但情況可能並非如此。試着簡化你的詞法分析來源,在你仍然觀察問題的最小范例中。 – 2013-02-19 11:43:48
@ArthurReutenauer我認爲這個問題不是來自我的詞法分析器中規則的模糊性,事實上,模式末尾的'。*'將詞法分析器推到找到'\ n'女巫是我的詞法分析器中的模式所以'\ n'的動作被調用。 – Aymanadou 2013-02-19 13:11:10
我不確定我是否理解你的觀點,但是這不完全是你的詞法分析器中的一個模棱兩可的問題?或者說,你設計它的方式是不明確的,Flex可以用你沒有想到的方式來解決這個問題。無論如何,如果換行符是這裏的問題,它可能足以將其排除在規則之外,例如通過使用'[^ \ n] *'而不是'。*' – 2013-02-19 15:43:39