python - How to generate all possible expressions satisfying a grammar -
i have grammar application following expressions:
(find, search, lookup) [a, the, an, for] item [in, at] (nest, shelf, desk)
items in round brackets "()" - required, items in square brackets optional, words without brackets required.
simple expressions me be:
- find item @ desk
- find item in desk
- lookup item in nest
- search item @ shelf
is there parsing methods or libraries can use generate possible combinations?
sjoerd's answer points exrex. since expression can written regex library it.
>>> import exrex >>> list(exrex.generate(r'(find|search|lookup)( a| the| an| for)? item ( in| at)?( nest| shelf| desk)')) ['find item nest', 'find item shelf', 'find item desk', 'find item in nest', 'find item in shelf', 'find item in desk', 'find item @ nest', 'find item @ shelf', 'find item @ desk', 'find item nest', 'find item shelf', 'find item desk', 'find item in nest', 'find item in shelf', 'find item in desk', 'find item @ nest', 'find item @ shelf', 'find item @ desk', 'find item nest', 'find item shelf', 'find item desk', 'find item in nest', 'find item in shelf', 'find item in desk', 'find item @ nest', 'find item @ shelf', 'find item @ desk', 'find item nest', 'find item shelf', 'find item desk', 'find item in nest', 'find item in shelf', 'find item in desk', 'find item @ nest', 'find item @ shelf', 'find item @ desk', 'find item nest', 'find item shelf', 'find item desk', 'find item in nest', 'find item in shelf', 'find item in desk', 'find item @ nest', 'find item @ shelf', 'find item @ desk', 'search item nest', 'search item shelf', 'search item desk', 'search item in nest', 'search item in shelf', 'search item in desk', 'search item @ nest', 'search item @ shelf', 'search item @ desk', 'search item nest', 'search item shelf', 'search item desk', 'search item in nest', 'search item in shelf', 'search item in desk', 'search item @ nest', 'search item @ shelf', 'search item @ desk', 'search item nest', 'search item shelf', 'search item desk', 'search item in nest', 'search item in shelf', 'search item in desk', 'search item @ nest', 'search item @ shelf', 'search item @ desk', 'search item nest', 'search item shelf', 'search item desk', 'search item in nest', 'search item in shelf', 'search item in desk', 'search item @ nest', 'search item @ shelf', 'search item @ desk', 'search item nest', 'search item shelf', 'search item desk', 'search item in nest', 'search item in shelf', 'search item in desk', 'search item @ nest', 'search item @ shelf', 'search item @ desk', 'lookup item nest', 'lookup item shelf', 'lookup item desk', 'lookup item in nest', 'lookup item in shelf', 'lookup item in desk', 'lookup item @ nest', 'lookup item @ shelf', 'lookup item @ desk', 'lookup item nest', 'lookup item shelf', 'lookup item desk', 'lookup item in nest', 'lookup item in shelf', 'lookup item in desk', 'lookup item @ nest', 'lookup item @ shelf', 'lookup item @ desk', 'lookup item nest', 'lookup item shelf', 'lookup item desk', 'lookup item in nest', 'lookup item in shelf', 'lookup item in desk', 'lookup item @ nest', 'lookup item @ shelf', 'lookup item @ desk', 'lookup item nest', 'lookup item shelf', 'lookup item desk', 'lookup item in nest', 'lookup item in shelf', 'lookup item in desk', 'lookup item @ nest', 'lookup item @ shelf', 'lookup item @ desk', 'lookup item nest', 'lookup item shelf', 'lookup item desk', 'lookup item in nest', 'lookup item in shelf', 'lookup item in desk', 'lookup item @ nest', 'lookup item @ shelf', 'lookup item @ desk']
Comments
Post a Comment