当前位置: 代码迷 >> 其他开发语言 >> LEX规则的写法
  详细解决方案

LEX规则的写法

热度:5679   发布时间:2013-02-26 00:00:00.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!
  相关解决方案