Разобрать блок комментариев с ключевыми словами - PullRequest
1 голос
/ 30 сентября 2019

Попробуйте проанализировать блок комментария к документации процедуры с помощью pyparsing.

proc test {a b c} {
    # Proc description
    # :args: a - argument a, b - second argument
    #        c - third argument
    # :return: nothing

    puts $a
}

Созданы токены ниже:

EOL = Suppress(pp.LineEnd())
line = pp.SkipTo(EOL)
commentStart = pp.Suppress('#')
commentLine = tclCommentStart + restOfLine

startDocsReturn = commentStart + pp.Keyword(":return:").suppress()
docsReturnLine = startDocsReturn + line
startDocsArgs = commentStart + pp.Keyword(":args:").suppress()
docsArgsLine = startDocsArgs + line
docsDescription = pp.OneOrMore(commentLine, stopOn=startDocsArgs).setParseAction(join_lines)

Но он будет правильно проанализирован, если блок args состоит из одной строки. Если он многострочный, то добавление OneOrMore к токену строки в docsArgsLine не работает, поскольку строка начинается с острого символа.

Какое правильное выражение для разбора многострочного блока ключевого слова, которое начинается со специальных символов?

...