尝试将定位器添加到命令和路径表达式中:
locator = Empty().setParseAction(lambda s,l,t: l)def locatedExpr(expr): return Group(locator("location") + expr("value"))class Shell(object): def __init__(self): # Simplified grammar of the command line # path command parameters #command = Word(alphanums + '_').setResultsName('command') command = locatedExpr(Word(alphanums + '_'))('command') bookmark = Regex('@([A-Za-z0-9:_.]|-)+') pathstd = Regex('([A-Za-z0-9:_.]|-)*' + '/' + '([A-Za-z0-9:_./]|-)*') | '..' | '.' #path = (bookmark | pathstd | '*')('path') path = locatedExpr(bookmark | pathstd | '*')('path') parser = Optional(path) + Optional(command) # + Optional(parameters) self.parser = parser现在,您应该可以访问
path.location并
path.value获取路径的位置和匹配的文本,以及命令的路径。



