<p>我正在用python编写一个自定义的掷骰子解析器(如果必须的话,可以使用snicker)。基本上,我想使用标准的数学计算,但添加了“d”运算符:</p>
<pre><code>#xdy
sum = 0
for each in range(x):
sum += randInt(1, y)
return sum
</code></pre>
<p>例如,1d6+2d6+2d6-72+4d100=(5)+(1+1)+(6+2)-72+(5+39+38+59)=84</p>
<p>我使用正则表达式将所有的d替换为sum,然后使用eval,但是当处理两边的括号时,我的正则表达式崩溃了。有没有比实现自己的递归解析更快的方法呢?也许在eval中添加一个运算符?在</p>
<p>编辑:我似乎给出了一个不好的例子,因为上面的例子适用于我当前的版本。我要找的是一些评估方法,比如,(5+(6d6))d(7-2*(1d4))。<br/>
我所说的“崩溃”只是指我当前的正则表达式失败了。
我对我的失败太含糊其辞了,很抱歉给你带来了混乱。以下是我当前的代码:</p>
^{pr2}$
<p>为此,“1d6+4d100”工作正常,但“(1d6+4)d100”甚至“1d6+4d(100)”失败了。在</p>