我正在尝试使用Perl6语法实现Markdown解析器,但被块引号卡住了。块引号段落不能用嵌套大括号表示,因为它是一个特定格式行的列表。但从语义上讲,它是一个嵌套的标记。
基本上可以归结为以下定义:
token mdBlockquote {
<mdBQLine>+ {
my $quoted = [~] $m<mdBQLine>.map: { $_<mdBQLineBody> };
}
}
mdBQLine令牌的实际实现与此无关。唯一需要注意的是,mdBQLineBody键包含实际引用的带有
> # quote1
> quote2
>
> quote3
quote3.1
$引用
标量将包含:
# quote1
quote2
quote3
quote3.1
现在,关键是要对上述数据进行解析,并将其注入到Match对象中。这就是我完全不知道的地方。最明显的解决方案:
token mdBlockquote {
<mdBQLine>+ {
my $quoted = [~] $m<mdBQLine>.map: { $_<mdBQLineBody> };
$<mdBQParsed> = self.parse( $quoted, actions => self.actions );
}
}
一次失败有两个原因:第一,
$/
是只读对象;其次,<代码>。parse有效地修改了它,使其无法向原始树中注入任何内容。
是否有任何解决方案,然后对解析后的数据进行分析,提取并重新解析块引号,重复。。。?
对@HåkonHægland的评论进行一点扩展。。。
是只读对象。。。有效地使其无法向原始树中注入任何内容。
不完全是:
>
但你指的是一个键的赋值。分配的语义由分配给的项决定。如果它们是不是容器的普通对象,那么它们将不支持左值语义,并且您将得到一个不能修改不可变的 错误,如果您尝试分配给他们。在这个意义上,匹配对象是不可变的。
您可以做的是使用. make
方法将任意数据挂在任何Match
对象上。(make
例程在$/
上调用此方法。)这就是您在解析树中存储自定义数据的方式。
要访问解析树的给定节点中的内容,请调用。在该节点上生成(或同义词ast)。
通常,您为解析树中的较高节点制作的
包括为较低级别节点制作的内容。
请尝试以下未经测试的代码,看看您得到了什么,如果它失败得很惨,并且您无法找到使其工作的方法,请发表评论,或者根据上面的最后两段进行构建,并对其工作方式发表评论:
token mdBlockquote {
<mdBQLine>+ {
make .parse: [~] $m<mdBQLine>.map: { $_<mdBQLineBody> };
}
}
考虑一个简单的2人游戏,如下所示:偶数枚硬币排成一行。每个玩家轮流在一行的一端移除硬币。目标是当所有硬币都被拿走时,硬币的价值最高。 玩家1找到所有偶数硬币和所有奇数硬币的总和。如果奇数硬币的总和较高,玩家1拿最左边的硬币;否则他拿最右边的。 玩家2现在有一个选择,有奇数个硬币。选择第一个硬币或最后一个硬币将导致玩家1的硬币列表略有不同。玩家2使用递归搜索的结果来确定是选择第一个还是最后一个硬币。
本文向大家介绍如何在python中实现线性回归,包括了如何在python中实现线性回归的使用技巧和注意事项,需要的朋友参考一下 线性回归是基本的统计和机器学习技术之一。经济,计算机科学,社会科学等等学科中,无论是统计分析,或者是机器学习,还是科学计算,都有很大的机会需要用到线性模型。建议先学习它,然后再尝试更复杂的方法。 本文主要介绍如何逐步在Python中实现线性回归。而至于线性回归的数学推导、
假设不是将递归调用的结果与来自 convertString 的字符串拼接到 toStr,我们修改了算法,以便在进行递归调用之前将字符串入栈。此修改的算法的代码展示在 ActiveCode 1 中。 from pythonds.basic.stack import Stack rStack = Stack() def toStr(n,base): convertString =
本文向大家介绍在PostgreSQL中实现递归查询的教程,包括了在PostgreSQL中实现递归查询的教程的使用技巧和注意事项,需要的朋友参考一下 介绍 在Nilenso,哥在搞一个 (开源的哦!)用来设计和发起调查的应用。 下面这个是一个调查的例子: 在内部,它是这样表示滴: 一个调查包括了许多问题(question)。一系列问题可以归到(可选)一个分类(category)中。我们实际的数
这个问题和这里问的一样。 给定一个硬币列表,它们的值(c1,c2,c3,... cj,...),以及总和i。找出硬币总数为i的最小数量(我们可以根据需要使用一种类型的硬币),或者报告不可能以总和为S的方式选择硬币。 我昨天刚刚被介绍到动态编程,我试图为它编写一个代码。 这里,C[i]是货币量“i”的最优解。可用的硬币有{c1,c2,…,cj,…}对于这个程序,我增加了递归限制,以避免最大递归深度超
本文向大家介绍C++ 中二分查找递归非递归实现并分析,包括了C++ 中二分查找递归非递归实现并分析的使用技巧和注意事项,需要的朋友参考一下 C++ 中二分查找递归非递归实现并分析 二分查找在有序数列的查找过程中算法复杂度低,并且效率很高。因此较为受我们追捧。其实二分查找算法,是一个很经典的算法。但是呢,又容易写错。因为总是考虑不全边界问题。 用非递归简单分析一下,在编写过程中,如果编写的是以下的代