Я думаю, что нет никакого способа создать синтаксический синтаксический анализатор, похожий на python, с использованием только lex / yacc, поскольку lex / yacc может работать только с контекстно-свободной грамматикой, но синтаксис, похожий на python, чувствителен к контексту.
Причина в том, что если вы хотите узнать, находится ли оператор и предыдущий в одном и том же блоке, вы должны дать этому оператору знать отступ предыдущего, это контекст.
Я предлагаю вам сделать несколькодополнительная логика помимо lex / yacc для достижения этой цели, и это будет не так сложно.Вы можете прочитать коды здесь в модулях "грамматики".
Ключ в том, чтобы часть lex / yacc могла анализировать отдельный оператор с уровнем отступа и записывать что-то, упаковывая операторы в блоки.