![](/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.