Попробуйте прикрепить это действие синтаксического анализа к line
:
def return_containing_line(s, l, t):
# use pyparsing line builtin to extract the current line text
# at location 'l' in input string 's'
return pp.line(l, s)
line.addParseAction(return_containing_line)
Этот синтаксический анализатор действительно работает? Я бы подумал, что ведущий Regex будет занимать всю строку, так как он не обращает внимания на следующие буквенные выражения. Почему бы не отбросить условия Regex
и просто использовать searchString
? Или, если вы используете scanString
, вы получите кортеж (tokens, startloc, endloc)
для каждого совпадения, и вы можете просто вызвать pp.line
, используя startloc
и входную строку, и вам даже не понадобится действие parse.