Repeat ws = new Repeat(3, "ws");
Optional s = new Optional(4, "s");
Str ff = new Str(5, "\"");
Repeat spaces = new Repeat(6, "spaces");
Range digit = new Range(7, "digit", "0", "9");
FollowedBy booleanData = new FollowedBy(8, "booleanData", booleanDataBooleanData);
Repeat unsignedInt = new Repeat(9, "unsignedInt");
ElementList integerData = new ElementList(10, "integerData", integerDataIntegerData);
ElementList floatData = new ElementList(11, "floatData", floatDataFloatData);
OrList letter = new OrList(12, "letter");
ElementList varname = new ElementList(13, "varname");
Optional skip = new Optional(14, "skip");
FollowedBy nullData = new FollowedBy(15, "nullData");
ElementList stringExp = new ElementList(16, "stringExp");
ElementList classOrPackageName = new ElementList(17, "classOrPackageName");
ElementList newStatement = new ElementList(18, "newStatement");
OrList data = new OrList(19, "data", dataData);
ElementList listData = new ElementList(20, "listData");
ElementList mapMember = new ElementList(21, "mapMember");
ElementList mapDataRef = new ElementList(22, "mapDataRef");
ElementList mapData = new ElementList(23, "mapData");
OrList indexItem = new OrList(24, "indexItem");
Repeat listIndex = new Repeat(25, "listIndex");
ElementList args = new ElementList(26, "args");
ElementList namespaceRef = new ElementList(27, "namespaceRef");
ElementList variableRef = new ElementList(28, "variableRef");
ElementList methodRef = new ElementList(29, "methodRef");
ElementList attributeRef = new ElementList(30, "attributeRef");
ElementList attributeVariableRef = new ElementList(31, "attributeVariableRef");
ElementList attributeMethodRef = new ElementList(32, "attributeMethodRef");
ElementList reference = new ElementList(33, "reference");
ElementList callReference = new ElementList(34, "callReference");
ElementList stringref = new ElementList(35, "stringref");
ElementList end = new ElementList(36, "end");
ElementList write = new ElementList(37, "write");
ElementList set = new ElementList(38, "set");
ElementList local = new ElementList(39, "local");
OrList operator = new OrList(40, "operator");
ElementList comparition = new ElementList(41, "comparition");
ElementList conditionElement = new ElementList(42, "conditionElement");
OrList conditionBase = new OrList(43, "conditionBase");
ElementList conditionAnd = new ElementList(44, "conditionAnd");
ElementList condition = new ElementList(45, "condition");
ElementList ifcmd = new ElementList(46, "ifcmd");
ElementList elseif = new ElementList(47, "elseif");
ElementList _else = new ElementList(48, "else");
ElementList whilecmd = new ElementList(49, "whilecmd");
ElementList call = new ElementList(50, "call");
ElementList foreach = new ElementList(51, "foreach");
ElementList importcmd = new ElementList(52, "importcmd");
ElementList macro = new ElementList(53, "macro");
ElementList returncmd = new ElementList(54, "returncmd");
ElementList function = new ElementList(55, "function");
ElementList namespace = new ElementList(56, "namespace");
ElementList error = new ElementList(57, "error");
ElementList command = new ElementList(58, "command");
ElementList astext = new ElementList(59, "astext");
Repeat text = new Repeat(60, "text", textText);
Optional block = new Optional(61, "block");
ElementList template = new ElementList(62, "template");
// *** Statements ***
// newline = "\r\n" | "\n"
newline.add(64, new Str(63, "\r\n"));
newline.add(66, new Str(65, "\n"));
// comment = [spaces] ("#*" [(comment | !"*#")+] "*#") | ("##" [!newline+] newline|END) skip
Optional comment_1 = new Optional(67, "comment_1");
comment_1.add(68, spaces);
comment.add(69, comment_1);
OrList comment_2 = new OrList(70, "comment_2");
ElementList comment_2_1 = new ElementList(71, "comment_2_1");
comment_2_1.add(73, new Str(72, "#*"));
Optional comment_2_1_1 = new Optional(74, "comment_2_1_1");
Repeat comment_2_1_1_1 = new Repeat(75, "comment_2_1_1_1");
OrList comment_2_1_1_1_1 = new OrList(76, "comment_2_1_1_1_1");
comment_2_1_1_1_1.add(77, comment);
comment_2_1_1_1_1.add(79, new Str(78, "*#", NOT));
comment_2_1_1_1.add(80, comment_2_1_1_1_1);
comment_2_1_1.add(81, comment_2_1_1_1);
comment_2_1.add(82, comment_2_1_1);
comment_2_1.add(84, new Str(83, "*#"));
comment_2.add(85, comment_2_1);
ElementList comment_2_2 = new ElementList(86, "comment_2_2");
comment_2_2.add(88, new Str(87, "##"));
Optional comment_2_2_1 = new Optional(89, "comment_2_2_1");
Repeat comment_2_2_1_1 = new Repeat(90, "comment_2_2_1_1");
comment_2_2_1_1.add(91, newline, NOT);
comment_2_2_1.add(92, comment_2_2_1_1);
comment_2_2.add(93, comment_2_2_1);
OrList comment_2_2_2 = new OrList(94, "comment_2_2_2");
comment_2_2_2.add(95, newline);
comment_2_2_2.add(97, new End(96, "comment_2_2_2"));
comment_2_2.add(98, comment_2_2_2);
comment_2.add(99, comment_2_2);
comment.add(100, comment_2);
comment.add(101, skip);
// ws = (newline | " " | "\t" | comment)+
OrList ws_1 = new OrList(102, "ws_1");
ws_1.add(103, newline);
ws_1.add(105, new Str(104, " "));
ws_1.add(107, new Str(106, "\t"));
ws_1.add(108, comment);
ws.add(109, ws_1);
// s = [ws]
s.add(110, ws);
// ff = "\""
// spaces = (" " | "\t")+
OrList spaces_1 = new OrList(111, "spaces_1");
spaces_1.add(113, new Str(112, " "));
spaces_1.add(115, new Str(114, "\t"));
spaces.add(116, spaces_1);
// digit = "0".."9"
// booleanData = "true":true | "false":false \ !(letter|digit)
OrList booleanData_1 = new OrList(117, "booleanData_1");
booleanData_1.add(119, new Str(118, "true"));
booleanData_1.add(121, new Str(120, "false"));
booleanData.setElement(122, booleanData_1);
OrList booleanData_2 = new OrList(123, "booleanData_2", NOT);
booleanData_2.add(124, letter);
booleanData_2.add(125, digit);
booleanData.followedby(126, booleanData_2);
// unsignedInt = digit+
unsignedInt.add(127, digit);
// integerData = ["-"] unsignedInt
Optional integerData_1 = new Optional(128, "integerData_1");
integerData_1.add(130, new Str(129, "-"));
integerData.add(131, integerData_1);
integerData.add(132, unsignedInt);
// floatData = ["-"] unsignedInt "." unsignedInt
Optional floatData_1 = new Optional(133, "floatData_1");
floatData_1.add(135, new Str(134, "-"));
floatData.add(136, floatData_1);
floatData.add(137, unsignedInt);
floatData.add(139, new Str(138, "."));
floatData.add(140, unsignedInt);
// letter = "a".."z" | "A".."Z" | "_"
letter.add(142, new Range(141, "letter", "a", "z"));
letter.add(144, new Range(143, "letter", "A", "Z"));
letter.add(146, new Str(145, "_"));
// varname = letter [letter|digit]+
varname.add(147, letter);
Optional varname_1 = new Optional(148, "varname_1");
Repeat varname_1_1 = new Repeat(149, "varname_1_1");
OrList varname_1_1_1 = new OrList(150, "varname_1_1_1");
varname_1_1_1.add(151, letter);
varname_1_1_1.add(152, digit);
varname_1_1.add(153, varname_1_1_1);
varname_1.add(154, varname_1_1);
varname.add(155, varname_1);
// skip = [[spaces] newline]
Optional skip_1 = new Optional(156, "skip_1");
skip_1.add(157, spaces);
skip.add(158, skip_1);
skip.add(159, newline);
// nullData = "null" \ !(letter|digit)
nullData.setElement(161, new Str(160, "null"));
OrList nullData_1 = new OrList(162, "nullData_1", NOT);
nullData_1.add(163, letter);
nullData_1.add(164, digit);
nullData.followedby(165, nullData_1);
// stringExp = ff [stringref | (("\\\"" | !(ff|stringref))+):text]+ ff
stringExp.add(166, ff);
Optional stringExp_1 = new Optional(167, "stringExp_1");
Repeat stringExp_1_1 = new Repeat(168, "stringExp_1_1");