Deterministic Regular Expressions with Backreferences. Uses Memory Occurence Automata to match the input.
ANTLR is used for Pattern compilation.
A Paper explaining the theoretical background is currently being written.
The supported Pattern syntax can easily be seen in the ANTLR grammar:
MoaPattern pattern = MoaPattern.compile("^Deterministic|OrNot$");
MoaMatcher matcher = pattern.matcher("Deterministic");
if ( matcher.matches() ) {
System.out.println("yay");
}
Or this cool language:
MoaPattern pattern = MoaPattern.compile("((?<y>\\k<x>)(?<x>\\k<y>a))+");
MoaMatcher matcher = pattern.matcher("aaaa");
if( matcher.matches() ) {
System.out.println("yay again.");
}