2013-01-11 46 views
1

我需要像Perl的正則表達式匹配ANTLR3動態報價在詞法

m/my regex!*/ 

其中引號都可以從範圍內的任何字符相匹配的東西。所以上面是一樣的

m%my regex!*% 

一個詞法規則的幼稚的猜測是

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

,但不起作用,因爲後者quote是不是指的quote=,但一些規則。

我可以有很多的自己的代碼做到這一點,像

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

但不知何故,我覺得應該有做這種事情的規範方式。

回答

1

......但不知何故,我認爲應該有一個規範的方式來做這樣的事情。

沒有。您必須使用自定義代碼執行此操作。

1

查看PL/SQL解析器(here)。 Oracle還支持那些Perl風格的帶引號的字符串。

像:

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

使用自定義的代碼作爲例子。 (它包含C和Java實現)。 也許在你的情況下,它甚至可以被簡化。

Ivan Ivan

+0

這是令人驚訝的接近我提出的簡單情況。稍後當我想在詞法分析器中轉換\ -escape時,它有點討厭。即使你沒有真正回答我的問題,無論如何我都會支持你,以幫助其他人尋找解決方案。 – Thraidh