擅长:python、mysql、java
<p>我不能提供任何你提到的解析器。你有没有考虑过<a href="http://pyparsing.wikispaces.com/" rel="nofollow noreferrer">pyparsing</a>?在</p>
<ul>
<li><code>id</code>被定义为一位数的数字标记。在</li>
<li><code>Forward</code>表示{<cd3>}将在稍后的代码中定义。(这类似于过程语言中“forward”的用法。)</li>
<li><code><<</code>运算符将<code>E</code>的定义插入自身。括号调用“match first”,这意味着如果可能,将应用“or”中的第一个表达式。在</li>
<li>解析器在两个<code>print</code>函数中执行。在</li>
</ul>
<p>这里有一个针对这种表达式的简单解析器。在</p>
<pre><code>from pyparsing import *
id = Word(nums, min=1, max=1)
E = Forward()
E << (id + '+' + E | id)
code = '2 + 2'
print (E.parseString(code))
print (E.parseString('3+4+5'))
</code></pre>
<p>这个代码产生这个结果。在</p>
^{pr2}$