[英]Lex: Breaking up long regular expressions over multiple lines
在.l文件中的多行上打破長lex正則表達式的正確語法是什么?
例如,假設我有一個正則表達式,例如:
word1|word2|word3|word4 ECHO;
當我嘗試這樣做時:
word1|word2|
word3|word4 ECHO;
我得到一個錯誤。 在lex的多行中分解正則表達式的正確方法是什么?
使用flex(作為標准lex語法的擴展),您可以使用(?x:…)
語法,類似於PCRE / Perl擴展語法。 請注意,與PCRE不同,x標志所應用的文本用括號括起來。 [注1]。
在括號內,注釋和空格將被忽略,除非將其轉義或引用。 所以你可以這樣寫:
(?x:
word1 |
word2 |
word3 |
word4 ) ECHO;
注意:此語法不能在“定義”部分中使用,只能在“規則”部分中使用。 我不知道這是設計使然,還是未來的增強功能可能會解除限制。
有關更多詳細信息,請參見flex手冊 。 (在以“(?rs:pattern)”開頭的部分中)
(?x) --- extended regex
,並且擴展將一直持續到regex的末尾,除非您將其關閉。 我什至不會嘗試解釋Perl用於檢測擴展正則表達式結尾的規則。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.