public static <T> Var<T> parse(final String name) {
		final Matcher matcher = VAR_INDEX.matcher(name);

		return matcher.matches()
			? of(matcher.group(1), Integer.parseInt(matcher.group(2)))
			: of(name, 0);
	}
Parses the given variable string to its name and index. The expected
format is <em>var_name</em>[<em>index</em>].

<pre> {@code
x[0]
y[3]
my_var[4]
} </pre>

If no variable <em>index</em> is encoded in the name, a variable with
index 0 is created.

@see #of(String, int)

@param name the variable name + index
@param <T> the operation type
@return a new variable parsed from the input string
@throws IllegalArgumentException if the given variable couldn't be parsed
        and the given {@code name} is not a valid Java identifier
@throws NullPointerException if the given variable {@code name} is
        {@code null}
jenetics.prog/src/main/java/io/jenetics/prog/op/Var.java