title: Simple recursive descent in PyParsing
body: <p>I've tried taking <a href="https://stackoverflow.com/questions/634432/need-help-on-making-the-recursive-parser-using-pyparsing/634725#634725">this code</a> and converting it to something for a project I'm working on for programming language processing, but I'm running into an issue with a simplified version:</p>
  
  <pre><code>op = oneOf( '+ - / *')
  lparen, rparen = Literal('('), Literal(')')
  
  expr = Forward()
  expr &lt;&lt; ( Word(nums) | ( expr + op + expr ) | ( lparen + expr + rparen) )
  </code></pre>
  
  <p>I've played around with a number of different modifications of this simple setup. Usually, trying something like:</p>
  
  <pre><code>print(expr.parseString('1+2'))
  </code></pre>
  
  <p>Will return <code>['1']</code>. While I get caught in deep recursion with something like:</p>
  
  <pre><code>print(expr.parseString('(1+2)'))
  </code></pre>
  
  <p>What am I missing with respect to simple recursion that I can't parse arbitrarily arithmetic expressions, such as <code>1+(2 * 3-(4*(5+6)-(7))...</code>?</p>