求一个LEX规则的写法

qiuzhuoxian 2010-03-10 05:58:20
一个SQL语句类似于
select * from table where contains(name,'xiaoming')>0;

关于识别'xiaoming'的规则,我的写法是

'[^'\n]*' {
yyless(yyleng);
if(yytext[yyleng]!='\''){

yylval.str = strdup((char*)yytext);return SCONST;
}else yymore();
}

这个写法是参照《lex与yacc》这本书上改写的
这个没问题,是可以识别,但只能识别单引号里面的字符本身没有'的情况

现在发现,在oracle下,若contains里面本身就带有单引号,例如想查询xiao'ming这个词的话,里面的单引号是可以通过双写单引号来达到转义的目的
即语句变为select * from table where contains(name,'xiao''ming')>0

这种情况的LEX识别规则应该怎么写?如果后面执行体不变的话,只是将前面的规则改为'[^\n]*'是不行的,我试过了

请各位大虾帮忙呀
...全文
116 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
大熊猫侯佩 2010-03-12
  • 打赏
  • 举报
回复
mark!

3,424

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 其他开发语言
社区管理员
  • 其他开发语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧