2017-02-14 118 views
0

我想匹配BNF語法匹配開始標記和結束標記

\begin{alpha} 
content_between 
\end{alpha} 

其中content_between非常複雜,在幾個步驟定義,所以使用正則表達式一個我無法定義它。

最重要的一點是,開始標記和結束標記具有相同的alpha內容,如在HTML,所以我的想法是要做得像:

tokens=[ 
    BEGIN='regexp:\\begin\s*\{([a-zA-Z]+)\}' 
    END='regexp:\\end\s*\{$1\}' 
] 

content_between ::= ... 
begin_to_end ::= BEGIN content_between* END 

是否有一種方式來獲得第一alpha在第二個正則表達式,而不是在一個正則表達式中做?

回答

0

使用PsiViewer插件的IntelliJ中分析XML文檔

<xml><a></b></xml> 

後,我注意到,結束標記沒有在語法,但稍後的「檢查」檢查。

基本上

tokens=[ 
    BEGIN='regexp:\\begin\s*\{[a-zA-Z]+\}' 
    END='regexp:\\end\s*\{[a-zA-Z]+\}' 
] 

將檢查開始標記和結束標記的正確方法,後來一個應該檢查是否開始標籤等於結束標記。

在以下屏幕截圖中,可以看到,開始標記a的結束標記b(均爲紫色)沒有錯誤(與語法有關)。

enter image description here

相關問題