在flex中,如何定义词法分析器规则,例如$$
之外的任何规则。对于单个字符,它定义为:
[^\$]
对于$$
,它是否等于[^\$\$]
?
答案 0 :(得分:1)
您的单个字符是正确的,现在只需加倍:[^\$][^\$]
。这将接受任何两个不是'$'的字符。如果你想允许一个'$',那么你需要提供它作为替代:[^\$][^\$]|\$[^\$]|[^\$]\$
。
最终无论如何最终会成为DFA,所以没有效率问题。如果您需要多次执行此操作,请为模式指定一个名称,这样您只需要使用一次。