pydsl already have a BNF-like grammar support. Standard BNF features are almost the same for all implementations

Symbol1 = Symbol2 | "terminalstr"
Symbol2 = "anotherterminalstr"

However the advanced features are more tricky and differs heavily between implementation. pydsl supports nested grammar with terminal rules. ANTLR grammars uses delegate grammars.

I think pydsl shouldn't reinvent the wheel, so it should implement an existing format such as ANTLR .g format. I guess that support for very simple expressions will arrive soon, but I have my doubts about full support.