ANTLR3词法分析器中的动态引号

时间:2013-01-11 21:24:09

标签: antlr antlr3

我需要匹配像Perl regexp matcher

这样的东西
m/my regex!*/

其中引号可以是范围中的任何字符。所以上面和

一样
m%my regex!*%

对词法分析器规则的天真猜测是

REGEX: 'm' quote=. (~(quote))* quote;

但这不起作用,因为后者quote不是指quote=,而是指某些规则。

我可以使用很多自己的代码来完成,比如

REGEX: 'm' quote=. { ... implement the loop and final match myself ... } ;

但不知何故,我认为应该采用规范的方式来做这些事情。

2 个答案:

答案 0 :(得分:1)

  

...但不知何故,我认为应该采用规范的方式来做这些事情。

没有。您必须使用自定义代码执行此操作。

答案 1 :(得分:1)

看看PL / SQL解析器(here)。 Oracle还支持那些Perl样式的引用字符串。

像:

q':select * from employees where last_name = 'smith':'

使用自定义代码作为示例。 (它包含C和Java实现)。 也许在你的情况下它甚至可以简化。

伊万