首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 其他开发语言 >

LEX规则的写法

2012-03-29 
求一个LEX规则的写法一个SQL语句类似于select * from table where contains(name,xiaoming)0关于识别

求一个LEX规则的写法
一个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]*'是不行的,我试过了

请各位大虾帮忙呀

[解决办法]

[解决办法]
mark!

热点排行