a2r provides a way to write regexes as ASTs. Currently, only experimental parser is implemented.
Here is the example of my regex ASTs (character classes is not supported yet):
"assertThat"
"("
`[a-zA-Z_]`*
","
`[a-zA-Z_]`*
")"
}
a
"a"
"a" "b"
["a" "b"]
"a" | "b"
("a" | "b")+ | c
#("a" | "b"+) | c