I need a regular expression for a Java syntax parser that matches my programming language syntax that look like this:
Variable1={1,2,3}
Variable2=Variable1+{4,5,6}+{}*{2}
Variable3=(Variable2+{1})*Variable1
?Variable3
?{1,2,3}
?Variable3+{1,2,3}
Expression assignments to variables contain "=" and evaluations start with a "?" sign. Inside parenthesis, you can define a new expression, but the new expression can contain parenthesis again, so it's like a recursive regular assignment, which is not possible in this way:
String IdPattern = "[a-zA-Z][a-zA-Z0-9]*";
String SePattern ="\\{"+"([0-9]*)(\\,[0-9]+)*"+"\\}";
// Problem at next line:
String CoPattern = "\\(" + ExPattern + "\\)";
// CoPattern depends on
// Expattern, which depends on TePattern,
// which depends on FaPattern, which depends on CoPattern again.
String FaPattern= "("+IdPattern+"|"+SePattern+"|"+CoPattern+")";
String TePattern = FaPattern + "("+ "\\*"+ FaPattern+ ")*" ;
String ExPattern= "" + TePattern + "(" + "\\+"+ TePattern+")*";
String AsPattern = "("+IdPattern+"="+ExPattern+")";
String PriPattern = "(\\?"+ExPattern +")";
String StaPattern = "("+AsPattern+"|"+PriPattern+")";
String Pro = StaPattern+"$";
System.out.println("Input=((({20}+{1,2,3})))".matches(Pro));
The problem here is that CoPattern, depends on ExPattern, which depends on FaPattern, which depends on CoPattern itself again. So how do I make this work?