この文法に基づいて:
from pyparsing import *
g = quotedString.setParseAction( removeQuotes )
eg = Suppress('-') + quotedString.setParseAction( removeQuotes )
choice = Or( [ g.setResultsName("out",listAllMatches=True),
eg.setResultsName("in",listAllMatches=True) ] )
grammar = ZeroOrMore( choice ) + Suppress(restOfLine)
a = world.parseString( ' "ali" -"baba" "holy cow" -"smoking beaute" ' )
print a.dump()
非終端を満たすトークンeg
は常に追加のリストでラップされていることがわかりました。との唯一の違いg
は、先頭に `Suppress('-')' があることです。
['ali', 'baba', 'holy cow', 'smoking beaute']
- in: [['baba'], ['smoking beaute']]
- out: ['ali', 'holy cow']
それらを同じように動作させるにはどうすればよいですか? 以下の結果を達成したい:
['ali', 'baba', 'holy cow', 'smoking beaute']
- in: ['baba', 'smoking beaute']
- out: ['ali', 'holy cow']