擅长:python、mysql、java
<p>你已经很接近你的代码了。这些mod中的任何一个都可以工作:</p>
<pre><code># '|' means MatchFirst, so you had a left-recursive expression
# reversing the order of the alternatives makes this work
multi_line_word << ((split_word + multi_line_word) | word)
# '^' means Or/MatchLongest, but beware using this inside a Forward
multi_line_word << (word ^ (split_word + multi_line_word))
# an unusual use of delimitedList, but it works
multi_line_word = delimitedList(word, continued_ending)
# in place of your parse action, you can wrap in a Combine
multi_line_word = Combine(delimitedList(word, continued_ending))
</code></pre>
<p>正如您在pyparsing google上发现的那样,BNF->;pyparsing翻译应该以一种特殊的方式来使用pyparsing特性来代替BNF,um,缺点。实际上,我正在撰写一个较长的答案,研究更多的BNF翻译问题,但是你已经找到了这个材料(我想是在wiki上)。在</p>