lexer中的ANTLR3动态引号
我需要匹配Perl regexp匹配器之类的东西lexer中的ANTLR3动态引号,antlr,antlr3,Antlr,Antlr3,我需要匹配Perl regexp匹配器之类的东西 m/my regex!*/ 其中引号可以是范围中的任意字符。因此,上述内容与 m%my regex!*% 对lexer规则的天真猜测是 REGEX: 'm' quote=. (~(quote))* quote; 但这不起作用,因为后者不是指quote=,而是指某种规则 我可以用很多自己的代码,比如 REGEX: 'm' quote=. { ... implement the loop and final match myself ... }
m/my regex!*/
其中引号可以是范围中的任意字符。因此,上述内容与
m%my regex!*%
对lexer规则的天真猜测是
REGEX: 'm' quote=. (~(quote))* quote;
但这不起作用,因为后者不是指quote=
,而是指某种规则
我可以用很多自己的代码,比如
REGEX: 'm' quote=. { ... implement the loop and final match myself ... } ;
但不知何故,我认为应该有一个规范的方式来做这些事情
。。。但不知何故,我认为应该有一个规范的方式来做这些事情
没有。您必须使用自定义代码执行此操作 看看PL/SQL解析器()。Oracle还支持那些Perl风格的带引号的字符串 比如: 以自定义代码为例。(它包含C和Java实现)。 也许在你的情况下,它甚至可以简化
伊万这与我提出的简单案例惊人地接近。后来,当我想在lexer中转换逃逸时,情况变得有点糟糕。即使你没有回答我的问题,我也会投票支持你,帮助其他人寻找解决方案。
q':select * from employees where last_name = 'smith':'