Python has pyparsing: https://pypi.org/project/pyparsing/
Maybe it's because non-FP languages typically don't support operator overloading, so you'd end up with verbose grammars like:
new Literal("true").or(new Literal("false"))
and then you'll probably use a parser generator like ANTLR.