申し訳ありませんが、Leplはもう開発されていません。
LEPLもあります-http ://www.acooke.org/lepl
これが私が朝食中に書いた簡単な解決策です:
pl6 src:python3
Python 3.1(r31:73572、2009年10月24日、05:39:09)
[GCC 4.4.1[gcc-4_4-ブランチリビジョン150839]](linux2)
詳細については、「help」、「copyright」、「credits」、または「license」と入力してください。
>>>leplインポートから*
>>>
>>>クラスAlternatives(Node):
... パス
..。
>>>クラスQuery(Node):
... パス
..。
>>>クラスText(Node):
... パス
..。
>>> def compile():
...修飾子=Word()&Drop(':')>'修飾子'
... word =〜Lookahead('OR')&Word()
...フレーズ=String()
...テキスト=フレーズ| 語
... word_or_phrase =(Optional(qualifier)&text)>テキスト
...スペース=Drop(Space()[1:])
... query = word_or_phrase [1 :、スペース]>クエリ
...セパレータ=Drop(space&'OR'&space)
... Alternatives = query [:、separator]> Alternatives
... Alternatives.string_parser()を返します
..。
>>>パーサー=compile()
>>>
>>> Alternatives = parser('これらの単語すべて"このフレーズ付き"'
...'またはそれまたはこのサイト:within.site'
...'filetype:ps from:lastweek')[0]
>>>
>>> print(str(alternatives))
代替案
+-クエリ
| +-テキスト
| | `-'すべて'
| +-テキスト
| | `-'の'
| +-テキスト
| | `-'これら'
| +-テキスト
| | `-'言葉'
| `-テキスト
| `-'このフレーズで'
+-クエリ
| `-テキスト
| `-'それ'
`-クエリ
+-テキスト
| `-'これ'
+-テキスト
| +-修飾子'サイト'
| `-'within.site'
+-テキスト
| +-修飾子'filetype'
| `-'ps'
`-テキスト
+-修飾子'from'
`-'先週'
>>>
LEPLは「おもちゃ」ではないと主張します。再帰下降ですが、メモ化とトランポリンが含まれているため、このアプローチの制限の一部を回避できます。
ただし、これは純粋なPythonであるため、超高速ではなく、活発に開発されています(かなりの数の修正と改善が加えられた、新しいリリース4.0が比較的間もなく登場します)。