def add_quotes_to_shell(spdk_shell): command = shell.locatedExpr(Word(alphanums + '_'))('command') value = dblQuotedString.addParseAction(removeQuotes) value_word = Word(alphanums + r';,=_\+/.<>()~@:-%[]') keyword = Word(alphanums + r'_\-') kparam = shell.locatedExpr(keyword + Suppress('=') + Optional(value | value_word, default=''))('kparams*') pparam = shell.locatedExpr(value | value_word)('pparams*') parameters = OneOrMore(kparam | pparam) bookmark = Regex(r'@([A-Za-z0-9:_.]|-)+') pathstd = Regex(r'([A-Za-z0-9:_.\[\]]|-)*' + '/' + r'([A-Za-z0-9:_.\[\]/]|-)*') \ | '..' | '.' path = shell.locatedExpr(bookmark | pathstd | '*')('path') spdk_shell._parser = Optional(path) + Optional(command) + Optional(parameters)
def __init__(self): super(CephBootstrapConfigShell, self).__init__( '~/.ceph_bootstrap_config_shell') # Grammar of the command line command = locatedExpr(Word(alphanums + '_'))('command') var = Word(alphanums + ';,=_\+/.<>()~@:-%[]*{}" ') # adding '*' value = var keyword = Word(alphanums + '_\-') kparam = locatedExpr(keyword + Suppress('=') + Optional(value, default=''))('kparams*') pparam = locatedExpr(var)('pparams*') parameter = kparam | pparam parameters = OneOrMore(parameter) bookmark = Regex('@([A-Za-z0-9:_.]|-)+') pathstd = Regex('([A-Za-z0-9:_.\[\]]|-)*' + '/' + '([A-Za-z0-9:_.\[\]/]|-)*') | '..' | '.' path = locatedExpr(bookmark | pathstd | '*')('path') parser = Optional(path) + Optional(command) + Optional(parameters) self._parser = parser