Dart 如何匹配块的起点和终点

Dart 如何匹配块的起点和终点,dart,petitparser,Dart,Petitparser,我想定义一个特殊的代码块,它可以由{[#的任何字符组合开始 例如: { block-content } {## block-content ##} #[[<{### block-content ###}>]]# { 块内容 } {## 块内容 ##} #[[]]# 有可能吗?是的,反向引用是可能的,但不是那么直接 首先,我们需要一个可以反转分隔符的函数。我提出了以下建议: 字符串反向限制(字符串标记){ 返回标记.split(“”).reverse

我想定义一个特殊的代码块,它可以由
{[#
的任何字符组合开始

例如:

{
    block-content
}

{##
    block-content
##}

#[[<{### 
    block-content 
###}>]]#
{
块内容
}
{##
块内容
##}
#[[]]#

有可能吗?

是的,反向引用是可能的,但不是那么直接

首先,我们需要一个可以反转分隔符的函数。我提出了以下建议:

字符串反向限制(字符串标记){
返回标记.split(“”).reversed.map((字符){
如果(char=='[')返回']';
if(char=='{')返回'}';
如果(char='';
返回字符;
}).join();
}
然后我们必须声明
stopDelimiter
解析器。此时它还没有定义,但一旦我们知道它,就会被真正的解析器替换

var stopDelimiter=undefined();
startDelimiter
的操作中,我们使用动态创建的解析器替换
stopDelimiter
,如下所示:

var startDelimiter=pattern('#