![](/img/trans.png)
[英]Using flex:1 causes cards to stack, without flex shows list but no scrolling
[英]Using flex to identify variable name without repeating characters
我不太確定如何表達我的問題,很抱歉粗略的標題。
我正在嘗試創建一種模式,該模式可以識別具有以下限制的變量名稱:
因此,例如,這些都是有效的:
但以下內容無效:
我可以用我當前的標識符滿足前三個要求,但我真的很難改變它,這樣它就不會選擇完全是字母 X 的變量。
這是我到目前為止所擁有的: [az][a-z0-9\-]* {return (NAME);}
任何人都可以建議一種編輯方法以避免僅由字母 X 組成的變量嗎?
處理這種要求的最簡單方法是使用一種模式來匹配異常字符串,另一種模式隨后出現在文件中,它匹配所有字符串:
[xX]+ { /* matches all-x tokens */ }
[[:alpha:]][[:alnum:]-]* { /* handle identifiers */ }
這是有效的,因為如果兩個模式匹配相同的最長標記,則 lex(以及幾乎所有 lex 派生詞)select 是第一個匹配項。
當然,您需要知道要使用特殊符號做什么。 如果你只是想接受它作為某種令牌類型,那沒問題; 你只是那樣做。 另一方面,如果打算將其分解為子標記,也許是單個字母,那么您將不得不使用yyless()
,並且您可能希望切換到新的詞法分析 state 以避免重復匹配相同的X
的長序列。 但也許這對你的情況並不重要。
有關詳細信息和示例,請參閱flex 手冊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.