我正在使用flex开发我的词法分析器,我需要创建一个匹配''
(两个单引号)的规则和一个除了两个单引号之外的任何规则。第一部分很简单,只有\'\'
完成工作,但我不确定如何编写其他规则。我想它需要某种逆正则表达式,但我不熟悉flex正则表达式。
由于
答案 0 :(得分:0)
您可以使用此规则:
([^']+|\'[^']+)+|([^']+|\'[^']+)+\'$
因为您定义了另一个规则:''
,因为flex将占用一个位置的最长匹配。此规则不能匹配两个(或更多)连续引号,并允许在字符串末尾使用单引号。
答案 1 :(得分:0)
对于第二个任务,使用分隔符''
拆分字符串。所以你有所有不包含分隔符并由它分隔的子字符串。
答案 2 :(得分:0)
在flex中试试这个:
(([^'])|(\'[^']))+
解释:
[^']
匹配任何字符,但只有一个引号。
\'[^']
匹配单个引号,后跟任何其他字符。
编辑:添加额外的parens以确保正确的优先权。