Если решите написать свой DSL, то лучше не надо. Лучше присмотритесь к starlark или какому-нибудь шаблонизатору (Jinja2, Django Templates, etc.). Хотя если же просто хочется написать свой собственный язык просто потому что могу, то почему бы и нет? Так что давайте немного поговорим про парсеры для Python.

  • ply — классика от Дэвида Бизли, порт lex+yacc. Грамматика задаётся как Python модуль, который ply динамически парсит. В общем, сложно всё рассказать, всё работает на магии. Грамматика не очень мощная, библиотека больше напоминает фреймворк, т.к. диктует, как код парсера должен выглядеть.

  • rply — переписанный ply, но уже без магии, а с декораторами. Плюс с поддержкой RPython.

  • lark — кажется, лучший парсер. Мощная грамматика, записываемая в отдельном файле с собственным синтаксисом. Работает отлично, не диктует никакой структуры, поддерживает разные режимы парсинга. Даже есть плагины для VSCode и Sublime чтобы синтаксис грамматики подсвечивать. Красота. В общем, берите его.