Python регулярное выражение - проверка строки на наличие вложенных циклов - PullRequest
0 голосов
/ 12 февраля 2020

Ввод: строка, содержащая фрагмент кода.

Цель: найти, содержит ли входная строка: -

  • вложенного l oop

например

fruits = ["apple", "banana", "cherry"]
for x in fruits:
  print(x)
  for y in x:
     print(y)

в то время как ... для

Я не могу получить регулярное выражение для вложенных циклов.

Любая помощь / предложения будут оценены!

1 Ответ

0 голосов
/ 13 февраля 2020

На основании предложения @Kevin с " ast.parse "

я мог бы использовать

def hasRecursion(tree):
    for node in [n for n in ast.walk(tree)]:
            nodecls = node.__class__
            nodename = nodecls.__name__
            if isinstance(node, (ast.For, ast.While)):
                for nodeChild in node.body:     
                    #node.body Or ast.iter_child_nodes(node)
                    if isinstance(nodeChild, (ast.For, ast.While)):
                        return True
return False




expr="""
for i in 3:
   print("first loop")
   for j in i:
        print("nested loop")

print('normal')
"""

tree = ast.parse(expr, mode="exec")

print(hasRecursion(tree))

ast.parse примеры кода

Спасибо @ Кевин

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...