Examples of Optional

A common alternative to using this class is to find or create a suitable null object for the type in question.

This class is not intended as a direct analogue of any existing "option" or "maybe" construct from other programming environments, though it may bear some similarities. @param < T> the type of instance that can be contained. {@code Optional} is naturallycovariant on this type, so it is safe to cast an {@code Optional} to {@code Optional} for any supertype {@code S} of {@code T}. @author Kurt Alfred Kluever @author Kevin Bourrillion @since Guava release 10

  • com.google.gwt.i18n.client.Messages.Optional
  • com.linkedin.restli.server.annotations.Optional
  • com.sun.star.beans.Optional
  • lupos.engine.operators.multiinput.optional.Optional
  • lupos.gui.operatorgraph.visualeditor.queryeditor.operators.Optional
  • net.sf.laja.parser.engine2.element.Optional
  • org.apache.isis.applib.annotation.Optional
  • org.eclipse.papyrus.sysml.activities.Optional
    A representation of the model object ' Optional'.

    The following features are supported:

    • {@link org.eclipse.papyrus.sysml.activities.Optional#getBase_Parameter Base Parameter}

    @see org.eclipse.papyrus.sysml.activities.ActivitiesPackage#getOptional() @model @generated
  • org.hamcrest.text.pattern.internal.ast.Optional
  • org.jrdf.query.expression.Optional
  • org.supercsv.cellprocessor.Optional
    This processor returns null if it meets the empty String in a column and does not call subsequent processors in its chain. It is a simple customization of the MagicToken. If you need to return different values than null, use that class instead. @author Kasper B. Graversen

  • Examples of net.sf.laja.parser.engine2.element.Optional

            // *** Declarations ***
            OrList newline = new OrList(1, "newline");
            OrList comment = new OrList(2, "comment");
            Repeat ws = new Repeat(3, "ws");
            Optional s = new Optional(4, "s");
            Str ff = new Str(5, "\"");
            ElementList str = new ElementList(6, "str");
            OrList letter = new OrList(7, "letter");
            Range digit = new Range(8, "digit", "0", "9");
            ElementList name = new ElementList(9, "name");
            ElementList uname = new ElementList(10, "uname");
            Optional _public = new Optional(11, "public");
            ElementList packagestatement = new ElementList(12, "packagestatement");
            ElementList packagename = new ElementList(13, "packagename");
            ElementList fullclassname = new ElementList(14, "fullclassname");
            ElementList importstatement = new ElementList(15, "importstatement", importstatementImportstatement);
            Optional imports = new Optional(16, "imports");
            ElementList parameter = new ElementList(17, "parameter");
            ElementList parameters = new ElementList(18, "parameters");
            ElementList statement = new ElementList(19, "statement");
            Optional skipCurlyBrace = new Optional(20, "skipCurlyBrace");
            ElementList stateStatement = new ElementList(21, "stateStatement");
            ElementList stateConstructor = new ElementList(22, "stateConstructor");
            ElementList asMethod = new ElementList(23, "asMethod");
            ElementList behaviourMethod = new ElementList(24, "behaviourMethod");
            ElementList behaviour = new ElementList(25, "behaviour");

            // *** Statements ***

            // newline = "\r\n" | "\n"
            newline.add(27, new Str(26, "\r\n"));
            newline.add(29, new Str(28, "\n"));

            // comment = ("/*" [(comment | !"*/")+] "*/") | ("//" [!newline+] newline|END)
            ElementList comment_1 = new ElementList(30, "comment_1");
            comment_1.add(32, new Str(31, "/*"));
            Optional comment_1_1 = new Optional(33, "comment_1_1");
            Repeat comment_1_1_1 = new Repeat(34, "comment_1_1_1");
            OrList comment_1_1_1_1 = new OrList(35, "comment_1_1_1_1");
            comment_1_1_1_1.add(36, comment);
            comment_1_1_1_1.add(38, new Str(37, "*/", NOT));
            comment_1_1_1.add(39, comment_1_1_1_1);
            comment_1_1.add(40, comment_1_1_1);
            comment_1.add(41, comment_1_1);
            comment_1.add(43, new Str(42, "*/"));
            comment.add(44, comment_1);
            ElementList comment_2 = new ElementList(45, "comment_2");
            comment_2.add(47, new Str(46, "//"));
            Optional comment_2_1 = new Optional(48, "comment_2_1");
            Repeat comment_2_1_1 = new Repeat(49, "comment_2_1_1");
            comment_2_1_1.add(50, newline, NOT);
            comment_2_1.add(51, comment_2_1_1);
            comment_2.add(52, comment_2_1);
            OrList comment_2_2 = new OrList(53, "comment_2_2");
            comment_2_2.add(54, newline);
            comment_2_2.add(56, new End(55, "comment_2_2"));
            comment_2.add(57, comment_2_2);
            comment.add(58, comment_2);

            // ws = (newline | " " | "\t" | comment)+
            OrList ws_1 = new OrList(59, "ws_1");
            ws_1.add(60, newline);
            ws_1.add(62, new Str(61, " "));
            ws_1.add(64, new Str(63, "\t"));
            ws_1.add(65, comment);
            ws.add(66, ws_1);

            // s = [ws]
            s.add(67, ws);

            // ff = "\""

            // str = ff (("\\\"" | !(ff|newline))+):strval ff
            str.add(68, ff);
            Repeat str_1 = new Repeat(69, "str_1");
            OrList str_1_1 = new OrList(70, "str_1_1");
            str_1_1.add(72, new Str(71, "\\\""));
            OrList str_1_1_1 = new OrList(73, "str_1_1_1", NOT);
            str_1_1_1.add(74, ff);
            str_1_1_1.add(75, newline);
            str_1_1.add(76, str_1_1_1);
            str_1.add(77, str_1_1);
            str.add(78, str_1);
            str.add(79, ff);

            // letter = "a".."z" | "A".."Z" | "_" | "$"
            letter.add(81, new Range(80, "letter", "a", "z"));
            letter.add(83, new Range(82, "letter", "A", "Z"));
            letter.add(85, new Str(84, "_"));
            letter.add(87, new Str(86, "$"));

            // digit = "0".."9"

            // name = letter [letter | digit]+
            name.add(88, letter);
            Optional name_1 = new Optional(89, "name_1");
            Repeat name_1_1 = new Repeat(90, "name_1_1");
            OrList name_1_1_1 = new OrList(91, "name_1_1_1");
            name_1_1_1.add(92, letter);
            name_1_1_1.add(93, digit);
            name_1_1.add(94, name_1_1_1);
            name_1.add(95, name_1_1);
            name.add(96, name_1);

            // uname = "A".."Z" [letter | digit]+
            uname.add(98, new Range(97, "uname", "A", "Z"));
            Optional uname_1 = new Optional(99, "uname_1");
            Repeat uname_1_1 = new Repeat(100, "uname_1_1");
            OrList uname_1_1_1 = new OrList(101, "uname_1_1_1");
            uname_1_1_1.add(102, letter);
            uname_1_1_1.add(103, digit);
            uname_1_1.add(104, uname_1_1_1);
            uname_1.add(105, uname_1_1);
            uname.add(106, uname_1);

            // public = ["public" ws]
            _public.add(108, new Str(107, "public"));
            _public.add(109, ws);

            // packagestatement = "package" ws packagename:statement s ";"
            packagestatement.add(111, new Str(110, "package"));
            packagestatement.add(112, ws);
            packagestatement.add(113, packagename, behaviourPackagestatementStatement);
            packagestatement.add(114, s);
            packagestatement.add(116, new Str(115, ";"));

            // packagename = name ["." name|"*"]+
            packagename.add(117, name);
            Optional packagename_1 = new Optional(118, "packagename_1");
            Repeat packagename_1_1 = new Repeat(119, "packagename_1_1");
            packagename_1_1.add(121, new Str(120, "."));
            OrList packagename_1_1_1 = new OrList(122, "packagename_1_1_1");
            packagename_1_1_1.add(123, name);
            packagename_1_1_1.add(125, new Str(124, "*"));
            packagename_1_1.add(126, packagename_1_1_1);
            packagename_1.add(127, packagename_1_1);
            packagename.add(128, packagename_1);

            // fullclassname = packagename
            fullclassname.add(129, packagename);

            // importstatement = "import" ws ["static":static ws] fullclassname s ";"
            importstatement.add(131, new Str(130, "import"));
            importstatement.add(132, ws);
            Optional importstatement_1 = new Optional(133, "importstatement_1");
            importstatement_1.add(135, new Str(134, "static", importstatementImportstatementStatic));
            importstatement_1.add(136, ws);
            importstatement.add(137, importstatement_1);
            importstatement.add(138, fullclassname, importstatementImportstatementFullclassname);
            importstatement.add(139, s);
            importstatement.add(141, new Str(140, ";"));

            // imports = [s importstatement]+
            Repeat imports_1 = new Repeat(142, "imports_1");
            imports_1.add(143, s);
            imports_1.add(144, importstatement, importsImportsImportstatement);
            imports.add(145, imports_1);

            // parameter = s name:type ws name:variable s
            parameter.add(146, s);
            parameter.add(147, name, parameterParameterType);
            parameter.add(148, ws);
            parameter.add(149, name, parameterParameterVariable);
            parameter.add(150, s);

            // parameters = [parameter] ["," s parameter]+
            Optional parameters_1 = new Optional(151, "parameters_1");
            parameters_1.add(152, parameter, parametersParametersParameter);
            parameters.add(153, parameters_1);
            Optional parameters_2 = new Optional(154, "parameters_2");
            Repeat parameters_2_1 = new Repeat(155, "parameters_2_1");
            parameters_2_1.add(157, new Str(156, ","));
            parameters_2_1.add(158, s);
            parameters_2_1.add(159, parameter, parametersParametersParameter);
            parameters_2.add(160, parameters_2_1);
            parameters.add(161, parameters_2);

            // statement = "{" s [(statement | str | !"}")+]:innerStatement "}"
            statement.add(163, new Str(162, "{"));
            statement.add(164, s);
            Optional statement_1 = new Optional(165, "statement_1", statementStatementInnerStatement);
            Repeat statement_1_1 = new Repeat(166, "statement_1_1");
            OrList statement_1_1_1 = new OrList(167, "statement_1_1_1");
            statement_1_1_1.add(168, statement, statementStatementStatement);
            statement_1_1_1.add(169, str);
            statement_1_1_1.add(171, new Str(170, "}", NOT));
            statement_1_1.add(172, statement_1_1_1);
            statement_1.add(173, statement_1_1);
            statement.add(174, statement_1);
            statement.add(176, new Str(175, "}"));

            // skipCurlyBrace = [!"{"+]
            Repeat skipCurlyBrace_1 = new Repeat(177, "skipCurlyBrace_1");
            skipCurlyBrace_1.add(179, new Str(178, "{", NOT));
            skipCurlyBrace.add(180, skipCurlyBrace_1);

            // stateStatement = public "class" ws name [ws "extends" ws uname:extendsClass] skipCurlyBrace "{" [!stateConstructor:x+] stateConstructor
            stateStatement.add(181, _public);
            stateStatement.add(183, new Str(182, "class"));
            stateStatement.add(184, ws);
            stateStatement.add(185, name);
            Optional stateStatement_1 = new Optional(186, "stateStatement_1");
            stateStatement_1.add(187, ws);
            stateStatement_1.add(189, new Str(188, "extends"));
            stateStatement_1.add(190, ws);
            stateStatement_1.add(191, uname, behaviourStateStatementExtendsClass);
            stateStatement.add(192, stateStatement_1);
            stateStatement.add(193, skipCurlyBrace);
            stateStatement.add(195, new Str(194, "{"));
            Optional stateStatement_2 = new Optional(196, "stateStatement_2");
            Repeat stateStatement_2_1 = new Repeat(197, "stateStatement_2_1");
            stateStatement_2_1.add(198, stateConstructor, NOT);
            stateStatement_2.add(199, stateStatement_2_1);
            stateStatement.add(200, stateStatement_2);
            stateStatement.add(201, stateConstructor);

            // stateConstructor = s public name s "(" s ["final" s] name:stateClass ws name parameters skipCurlyBrace statement
            stateConstructor.add(202, s);
            stateConstructor.add(203, _public);
            stateConstructor.add(204, name);
            stateConstructor.add(205, s);
            stateConstructor.add(207, new Str(206, "("));
            stateConstructor.add(208, s);
            Optional stateConstructor_1 = new Optional(209, "stateConstructor_1");
            stateConstructor_1.add(211, new Str(210, "final"));
            stateConstructor_1.add(212, s);
            stateConstructor.add(213, stateConstructor_1);
            stateConstructor.add(214, name, behaviourStateConstructorStateClass);
            stateConstructor.add(215, ws);
            stateConstructor.add(216, name);
            stateConstructor.add(217, parameters, behaviourStateConstructorParameters);
            stateConstructor.add(218, skipCurlyBrace);
            stateConstructor.add(219, statement, stateConstructorStateConstructorStatement);

            // asMethod =
            //   [!newline+ newline]:comment s
            //   ["public"|"private" ws] uname:returnclass ws ("as" uname):methodName s "(" s parameters s ")" s statement
            Optional asMethod_1 = new Optional(220, "asMethod_1", asMethodAsMethodComment);
            Repeat asMethod_1_1 = new Repeat(221, "asMethod_1_1");
            asMethod_1_1.add(222, newline, NOT);
            asMethod_1.add(223, asMethod_1_1);
            asMethod_1.add(224, newline);
            asMethod.add(225, asMethod_1);
            asMethod.add(226, s);
            Optional asMethod_2 = new Optional(227, "asMethod_2");
            OrList asMethod_2_1 = new OrList(228, "asMethod_2_1");
            asMethod_2_1.add(230, new Str(229, "public"));
            asMethod_2_1.add(232, new Str(231, "private"));
            asMethod_2.add(233, asMethod_2_1);
            asMethod_2.add(234, ws);
            asMethod.add(235, asMethod_2);
            asMethod.add(236, uname, asMethodAsMethodReturnclass);
            asMethod.add(237, ws);
            ElementList asMethod_3 = new ElementList(238, "asMethod_3", asMethodAsMethodMethodName);
            asMethod_3.add(240, new Str(239, "as"));
            asMethod_3.add(241, uname);
            asMethod.add(242, asMethod_3);
            asMethod.add(243, s);
            asMethod.add(245, new Str(244, "("));
            asMethod.add(246, s);
            asMethod.add(247, parameters, asMethodAsMethodParameters);
            asMethod.add(248, s);
            asMethod.add(250, new Str(249, ")"));
            asMethod.add(251, s);
            asMethod.add(252, statement, asMethodAsMethodStatement);

            // behaviourMethod = "//" s asMethod
            behaviourMethod.add(254, new Str(253, "//"));
            behaviourMethod.add(255, s);
            behaviourMethod.add(256, asMethod, behaviourBehaviourMethodAsMethod);

            // behaviour = [packagestatement] s [imports] s [stateStatement] [!behaviourMethod:x+|END [behaviourMethod]]+ *
            Optional behaviour_1 = new Optional(257, "behaviour_1");
            behaviour_1.add(258, packagestatement);
            behaviour.add(259, behaviour_1);
            behaviour.add(260, s);
            Optional behaviour_2 = new Optional(261, "behaviour_2");
            behaviour_2.add(262, imports, behaviourBehaviourImports);
            behaviour.add(263, behaviour_2);
            behaviour.add(264, s);
            Optional behaviour_3 = new Optional(265, "behaviour_3");
            behaviour_3.add(266, stateStatement);
            behaviour.add(267, behaviour_3);
            Optional behaviour_4 = new Optional(268, "behaviour_4");
            Repeat behaviour_4_1 = new Repeat(269, "behaviour_4_1");
            OrList behaviour_4_1_1 = new OrList(270, "behaviour_4_1_1");
            Repeat behaviour_4_1_1_1 = new Repeat(271, "behaviour_4_1_1_1");
            behaviour_4_1_1_1.add(272, behaviourMethod, NOT);
            behaviour_4_1_1.add(273, behaviour_4_1_1_1);
            behaviour_4_1_1.add(275, new End(274, "behaviour_4_1_1"));
            behaviour_4_1.add(276, behaviour_4_1_1);
            Optional behaviour_4_1_2 = new Optional(277, "behaviour_4_1_2");
            behaviour_4_1_2.add(278, behaviourMethod);
            behaviour_4_1.add(279, behaviour_4_1_2);
            behaviour_4.add(280, behaviour_4_1);
            behaviour.add(281, behaviour_4);
            behaviour.add(283, new Complete(282, "behaviour"));

    View Full Code Here

    Examples of net.sf.laja.parser.engine2.element.Optional

            // *** Declarations ***
            OrList newline = new OrList(1, "newline");
            OrList comment = new OrList(2, "comment");
            Repeat ws = new Repeat(3, "ws");
            Optional s = new Optional(4, "s");
            Str ff = new Str(5, "\"");
            ElementList str = new ElementList(6, "str");
            OrList letter = new OrList(7, "letter");
            Range digit = new Range(8, "digit", "0", "9");
            ElementList name = new ElementList(9, "name");
            ElementList uname = new ElementList(10, "uname");
            Optional _public = new Optional(11, "public");
            ElementList packagestatement = new ElementList(12, "packagestatement");
            ElementList packagename = new ElementList(13, "packagename");
            ElementList fullclassname = new ElementList(14, "fullclassname");
            ElementList importstatement = new ElementList(15, "importstatement");
            Optional imports = new Optional(16, "imports");
            ElementList parameter = new ElementList(17, "parameter");
            ElementList parameters = new ElementList(18, "parameters");
            ElementList statement = new ElementList(19, "statement");
            Optional skipCurlyBrace = new Optional(20, "skipCurlyBrace");
            ElementList stateStatement = new ElementList(21, "stateStatement");
            ElementList stateConstructor = new ElementList(22, "stateConstructor");
            ElementList asMethod = new ElementList(23, "asMethod");
            ElementList behaviourMethod = new ElementList(24, "behaviourMethod");
            ElementList behaviour = new ElementList(25, "behaviour");

            // *** Statements ***

            // newline = "\r\n" | "\n"
            newline.add(27, new Str(26, "\r\n"));
            newline.add(29, new Str(28, "\n"));

            // comment = ("/*" [(comment | !"*/")+] "*/") | ("//" [!newline+] newline|END)
            ElementList comment_1 = new ElementList(30, "comment_1");
            comment_1.add(32, new Str(31, "/*"));
            Optional comment_1_1 = new Optional(33, "comment_1_1");
            Repeat comment_1_1_1 = new Repeat(34, "comment_1_1_1");
            OrList comment_1_1_1_1 = new OrList(35, "comment_1_1_1_1");
            comment_1_1_1_1.add(36, comment);
            comment_1_1_1_1.add(38, new Str(37, "*/", NOT));
            comment_1_1_1.add(39, comment_1_1_1_1);
            comment_1_1.add(40, comment_1_1_1);
            comment_1.add(41, comment_1_1);
            comment_1.add(43, new Str(42, "*/"));
            comment.add(44, comment_1);
            ElementList comment_2 = new ElementList(45, "comment_2");
            comment_2.add(47, new Str(46, "//"));
            Optional comment_2_1 = new Optional(48, "comment_2_1");
            Repeat comment_2_1_1 = new Repeat(49, "comment_2_1_1");
            comment_2_1_1.add(50, newline, NOT);
            comment_2_1.add(51, comment_2_1_1);
            comment_2.add(52, comment_2_1);
            OrList comment_2_2 = new OrList(53, "comment_2_2");
            comment_2_2.add(54, newline);
            comment_2_2.add(56, new End(55, "comment_2_2"));
            comment_2.add(57, comment_2_2);
            comment.add(58, comment_2);

            // ws = (newline | " " | "\t" | comment)+
            OrList ws_1 = new OrList(59, "ws_1");
            ws_1.add(60, newline);
            ws_1.add(62, new Str(61, " "));
            ws_1.add(64, new Str(63, "\t"));
            ws_1.add(65, comment);
            ws.add(66, ws_1);

            // s = [ws]
            s.add(67, ws);

            // ff = "\""

            // str = ff (("\\\"" | !(ff|newline))+):strval ff
            str.add(68, ff);
            Repeat str_1 = new Repeat(69, "str_1");
            OrList str_1_1 = new OrList(70, "str_1_1");
            str_1_1.add(72, new Str(71, "\\\""));
            OrList str_1_1_1 = new OrList(73, "str_1_1_1", NOT);
            str_1_1_1.add(74, ff);
            str_1_1_1.add(75, newline);
            str_1_1.add(76, str_1_1_1);
            str_1.add(77, str_1_1);
            str.add(78, str_1);
            str.add(79, ff);

            // letter = "a".."z" | "A".."Z" | "_" | "$"
            letter.add(81, new Range(80, "letter", "a", "z"));
            letter.add(83, new Range(82, "letter", "A", "Z"));
            letter.add(85, new Str(84, "_"));
            letter.add(87, new Str(86, "$"));

            // digit = "0".."9"

            // name = letter [letter | digit]+
            name.add(88, letter);
            Optional name_1 = new Optional(89, "name_1");
            Repeat name_1_1 = new Repeat(90, "name_1_1");
            OrList name_1_1_1 = new OrList(91, "name_1_1_1");
            name_1_1_1.add(92, letter);
            name_1_1_1.add(93, digit);
            name_1_1.add(94, name_1_1_1);
            name_1.add(95, name_1_1);
            name.add(96, name_1);

            // uname = "A".."Z" [letter | digit]+
            uname.add(98, new Range(97, "uname", "A", "Z"));
            Optional uname_1 = new Optional(99, "uname_1");
            Repeat uname_1_1 = new Repeat(100, "uname_1_1");
            OrList uname_1_1_1 = new OrList(101, "uname_1_1_1");
            uname_1_1_1.add(102, letter);
            uname_1_1_1.add(103, digit);
            uname_1_1.add(104, uname_1_1_1);
            uname_1.add(105, uname_1_1);
            uname.add(106, uname_1);

            // public = ["public" ws]
            _public.add(108, new Str(107, "public"));
            _public.add(109, ws);

            // packagestatement = "package" ws packagename:statement s ";"
            packagestatement.add(111, new Str(110, "package"));
            packagestatement.add(112, ws);
            packagestatement.add(113, packagename);
            packagestatement.add(114, s);
            packagestatement.add(116, new Str(115, ";"));

            // packagename = name ["." name|"*"]+
            packagename.add(117, name);
            Optional packagename_1 = new Optional(118, "packagename_1");
            Repeat packagename_1_1 = new Repeat(119, "packagename_1_1");
            packagename_1_1.add(121, new Str(120, "."));
            OrList packagename_1_1_1 = new OrList(122, "packagename_1_1_1");
            packagename_1_1_1.add(123, name);
            packagename_1_1_1.add(125, new Str(124, "*"));
            packagename_1_1.add(126, packagename_1_1_1);
            packagename_1.add(127, packagename_1_1);
            packagename.add(128, packagename_1);

            // fullclassname = packagename
            fullclassname.add(129, packagename);

            // importstatement = "import" ws ["static":static ws] fullclassname s ";"
            importstatement.add(131, new Str(130, "import"));
            importstatement.add(132, ws);
            Optional importstatement_1 = new Optional(133, "importstatement_1");
            importstatement_1.add(135, new Str(134, "static"));
            importstatement_1.add(136, ws);
            importstatement.add(137, importstatement_1);
            importstatement.add(138, fullclassname);
            importstatement.add(139, s);
            importstatement.add(141, new Str(140, ";"));

            // imports = [s importstatement]+
            Repeat imports_1 = new Repeat(142, "imports_1");
            imports_1.add(143, s);
            imports_1.add(144, importstatement);
            imports.add(145, imports_1);

            // parameter = s name:type ws name:variable s
            parameter.add(146, s);
            parameter.add(147, name);
            parameter.add(148, ws);
            parameter.add(149, name);
            parameter.add(150, s);

            // parameters = [parameter] ["," s parameter]+
            Optional parameters_1 = new Optional(151, "parameters_1");
            parameters_1.add(152, parameter);
            parameters.add(153, parameters_1);
            Optional parameters_2 = new Optional(154, "parameters_2");
            Repeat parameters_2_1 = new Repeat(155, "parameters_2_1");
            parameters_2_1.add(157, new Str(156, ","));
            parameters_2_1.add(158, s);
            parameters_2_1.add(159, parameter);
            parameters_2.add(160, parameters_2_1);
            parameters.add(161, parameters_2);

            // statement = "{" s [(statement | str | !"}")+]:innerStatement "}"
            statement.add(163, new Str(162, "{"));
            statement.add(164, s);
            Optional statement_1 = new Optional(165, "statement_1");
            Repeat statement_1_1 = new Repeat(166, "statement_1_1");
            OrList statement_1_1_1 = new OrList(167, "statement_1_1_1");
            statement_1_1_1.add(168, statement);
            statement_1_1_1.add(169, str);
            statement_1_1_1.add(171, new Str(170, "}", NOT));
            statement_1_1.add(172, statement_1_1_1);
            statement_1.add(173, statement_1_1);
            statement.add(174, statement_1);
            statement.add(176, new Str(175, "}"));

            // skipCurlyBrace = [!"{"+]
            Repeat skipCurlyBrace_1 = new Repeat(177, "skipCurlyBrace_1");
            skipCurlyBrace_1.add(179, new Str(178, "{", NOT));
            skipCurlyBrace.add(180, skipCurlyBrace_1);

            // stateStatement = public "class" ws name [ws "extends" ws uname:extendsClass] skipCurlyBrace "{" [!stateConstructor:x+] stateConstructor
            stateStatement.add(181, _public);
            stateStatement.add(183, new Str(182, "class"));
            stateStatement.add(184, ws);
            stateStatement.add(185, name);
            Optional stateStatement_1 = new Optional(186, "stateStatement_1");
            stateStatement_1.add(187, ws);
            stateStatement_1.add(189, new Str(188, "extends"));
            stateStatement_1.add(190, ws);
            stateStatement_1.add(191, uname);
            stateStatement.add(192, stateStatement_1);
            stateStatement.add(193, skipCurlyBrace);
            stateStatement.add(195, new Str(194, "{"));
            Optional stateStatement_2 = new Optional(196, "stateStatement_2");
            Repeat stateStatement_2_1 = new Repeat(197, "stateStatement_2_1");
            stateStatement_2_1.add(198, stateConstructor, NOT);
            stateStatement_2.add(199, stateStatement_2_1);
            stateStatement.add(200, stateStatement_2);
            stateStatement.add(201, stateConstructor);

            // stateConstructor = s public name s "(" s ["final" s] name:stateClass ws name parameters skipCurlyBrace statement
            stateConstructor.add(202, s);
            stateConstructor.add(203, _public);
            stateConstructor.add(204, name);
            stateConstructor.add(205, s);
            stateConstructor.add(207, new Str(206, "("));
            stateConstructor.add(208, s);
            Optional stateConstructor_1 = new Optional(209, "stateConstructor_1");
            stateConstructor_1.add(211, new Str(210, "final"));
            stateConstructor_1.add(212, s);
            stateConstructor.add(213, stateConstructor_1);
            stateConstructor.add(214, name);
            stateConstructor.add(215, ws);
            stateConstructor.add(216, name);
            stateConstructor.add(217, parameters);
            stateConstructor.add(218, skipCurlyBrace);
            stateConstructor.add(219, statement);

            // asMethod =
            //   [!newline+ newline]:comment s
            //   ["public"|"private" ws] uname:returnclass ws ("as" uname):methodName s "(" s parameters s ")" s statement
            Optional asMethod_1 = new Optional(220, "asMethod_1");
            Repeat asMethod_1_1 = new Repeat(221, "asMethod_1_1");
            asMethod_1_1.add(222, newline, NOT);
            asMethod_1.add(223, asMethod_1_1);
            asMethod_1.add(224, newline);
            asMethod.add(225, asMethod_1);
            asMethod.add(226, s);
            Optional asMethod_2 = new Optional(227, "asMethod_2");
            OrList asMethod_2_1 = new OrList(228, "asMethod_2_1");
            asMethod_2_1.add(230, new Str(229, "public"));
            asMethod_2_1.add(232, new Str(231, "private"));
            asMethod_2.add(233, asMethod_2_1);
            asMethod_2.add(234, ws);
            asMethod.add(235, asMethod_2);
            asMethod.add(236, uname);
            asMethod.add(237, ws);
            ElementList asMethod_3 = new ElementList(238, "asMethod_3");
            asMethod_3.add(240, new Str(239, "as"));
            asMethod_3.add(241, uname);
            asMethod.add(242, asMethod_3);
            asMethod.add(243, s);
            asMethod.add(245, new Str(244, "("));
            asMethod.add(246, s);
            asMethod.add(247, parameters);
            asMethod.add(248, s);
            asMethod.add(250, new Str(249, ")"));
            asMethod.add(251, s);
            asMethod.add(252, statement);

            // behaviourMethod = "//" s asMethod
            behaviourMethod.add(254, new Str(253, "//"));
            behaviourMethod.add(255, s);
            behaviourMethod.add(256, asMethod);

            // behaviour = [packagestatement] s [imports] s [stateStatement] [!behaviourMethod:x+|END [behaviourMethod]]+ *
            Optional behaviour_1 = new Optional(257, "behaviour_1");
            behaviour_1.add(258, packagestatement);
            behaviour.add(259, behaviour_1);
            behaviour.add(260, s);
            Optional behaviour_2 = new Optional(261, "behaviour_2");
            behaviour_2.add(262, imports);
            behaviour.add(263, behaviour_2);
            behaviour.add(264, s);
            Optional behaviour_3 = new Optional(265, "behaviour_3");
            behaviour_3.add(266, stateStatement);
            behaviour.add(267, behaviour_3);
            Optional behaviour_4 = new Optional(268, "behaviour_4");
            Repeat behaviour_4_1 = new Repeat(269, "behaviour_4_1");
            OrList behaviour_4_1_1 = new OrList(270, "behaviour_4_1_1");
            Repeat behaviour_4_1_1_1 = new Repeat(271, "behaviour_4_1_1_1");
            behaviour_4_1_1_1.add(272, behaviourMethod, NOT);
            behaviour_4_1_1.add(273, behaviour_4_1_1_1);
            behaviour_4_1_1.add(275, new End(274, "behaviour_4_1_1"));
            behaviour_4_1.add(276, behaviour_4_1_1);
            Optional behaviour_4_1_2 = new Optional(277, "behaviour_4_1_2");
            behaviour_4_1_2.add(278, behaviourMethod);
            behaviour_4_1.add(279, behaviour_4_1_2);
            behaviour_4.add(280, behaviour_4_1);
            behaviour.add(281, behaviour_4);
            behaviour.add(283, new Complete(282, "behaviour"));

    View Full Code Here

    Examples of net.sf.laja.parser.engine2.element.Optional

            // *** Declarations ***
            OrList newline = new OrList(1, "newline", grammarNewline);
            OrList comment = new OrList(2, "comment");
            Repeat ws = new Repeat(3, "ws");
            Optional s = new Optional(4, "s");
            Range digit = new Range(5, "digit", "0", "9");
            Repeat integer = new Repeat(6, "integer", integerInteger);
            Range lower = new Range(7, "lower", "a", "z");
            Range upper = new Range(8, "upper", "A", "Z");
            Optional xname = new Optional(9, "xname");
            ElementList lname = new ElementList(10, "lname");
            ElementList uname = new ElementList(11, "uname");
            Str ff = new Str(12, "\"");
            ElementList str = new ElementList(13, "str");
            ElementList reference = new ElementList(14, "reference");
            ElementList variable = new ElementList(15, "variable");
            OrList range1 = new OrList(16, "range1");
            ElementList range = new ElementList(17, "range");
            Str end = new Str(18, "END");
            Str complete = new Str(19, "*");
            ElementList repeats = new ElementList(20, "repeats");
            ElementList valx = new ElementList(21, "valx");
            ElementList marker = new ElementList(22, "marker");
            ElementList valprim = new ElementList(23, "valprim");
            ElementList valpar = new ElementList(24, "valpar");
            ElementList valor = new ElementList(25, "valor");
            ElementList valopt = new ElementList(26, "valopt");
            ElementList valand = new ElementList(27, "valand");
            Repeat valstmt = new Repeat(28, "valstmt");
            ElementList val = new ElementList(29, "val");
            ElementList def = new ElementList(30, "def");
            ElementList classvar = new ElementList(31, "classvar");
            ElementList constructor = new ElementList(32, "constructor");
            ElementList outputclass = new ElementList(33, "outputclass");
            ElementList omarg = new ElementList(34, "omarg");
            ElementList outputmethod = new ElementList(35, "outputmethod");
            ElementList outputvar = new ElementList(36, "outputvar");
            ElementList grammar = new ElementList(37, "grammar");

            // *** Statements ***

            // newline = "\r\n" | "\n"
            newline.add(39, new Str(38, "\r\n"));
            newline.add(41, new Str(40, "\n"));

            // comment = ("/*" [(comment | !"*/")+] "*/") | ("//" [!newline+] newline|END)
            ElementList comment_1 = new ElementList(42, "comment_1");
            comment_1.add(44, new Str(43, "/*"));
            Optional comment_1_1 = new Optional(45, "comment_1_1");
            Repeat comment_1_1_1 = new Repeat(46, "comment_1_1_1");
            OrList comment_1_1_1_1 = new OrList(47, "comment_1_1_1_1");
            comment_1_1_1_1.add(48, comment);
            comment_1_1_1_1.add(50, new Str(49, "*/", NOT));
            comment_1_1_1.add(51, comment_1_1_1_1);
            comment_1_1.add(52, comment_1_1_1);
            comment_1.add(53, comment_1_1);
            comment_1.add(55, new Str(54, "*/"));
            comment.add(56, comment_1);
            ElementList comment_2 = new ElementList(57, "comment_2");
            comment_2.add(59, new Str(58, "//"));
            Optional comment_2_1 = new Optional(60, "comment_2_1");
            Repeat comment_2_1_1 = new Repeat(61, "comment_2_1_1");
            comment_2_1_1.add(62, newline, NOT);
            comment_2_1.add(63, comment_2_1_1);
            comment_2.add(64, comment_2_1);
            OrList comment_2_2 = new OrList(65, "comment_2_2");
            comment_2_2.add(66, newline);
            comment_2_2.add(68, new End(67, "comment_2_2"));
            comment_2.add(69, comment_2_2);
            comment.add(70, comment_2);

            // ws = (newline | " " | "\t" | comment)+
            OrList ws_1 = new OrList(71, "ws_1");
            ws_1.add(72, newline);
            ws_1.add(74, new Str(73, " "));
            ws_1.add(76, new Str(75, "\t"));
            ws_1.add(77, comment);
            ws.add(78, ws_1);

            // s = [ws]
            s.add(79, ws);

            // digit = "0".."9"

            // integer = digit+
            integer.add(80, digit);

            // lower = "a".."z"

            // upper = "A".."Z"

            // xname = [lower|upper|digit]+
            Repeat xname_1 = new Repeat(81, "xname_1");
            OrList xname_1_1 = new OrList(82, "xname_1_1");
            xname_1_1.add(83, lower);
            xname_1_1.add(84, upper);
            xname_1_1.add(85, digit);
            xname_1.add(86, xname_1_1);
            xname.add(87, xname_1);

            // lname = lower xname
            lname.add(88, lower);
            lname.add(89, xname);

            // uname = upper xname
            uname.add(90, upper);
            uname.add(91, xname);

            // ff = "\""

            // str = ff (("\\\"" | !(ff|newline))+):strval ff
            str.add(92, ff);
            Repeat str_1 = new Repeat(93, "str_1", strStrStrval);
            OrList str_1_1 = new OrList(94, "str_1_1");
            str_1_1.add(96, new Str(95, "\\\""));
            OrList str_1_1_1 = new OrList(97, "str_1_1_1", NOT);
            str_1_1_1.add(98, ff);
            str_1_1_1.add(99, newline);
            str_1_1.add(100, str_1_1_1);
            str_1.add(101, str_1_1);
            str.add(102, str_1);
            str.add(103, ff);

            // reference = lname
            reference.add(104, lname, referenceReference);

            // variable = "$" lname:name
            variable.add(106, new Str(105, "$"));
            variable.add(107, lname, variableVariableName);

            // range1 = integer|str
            range1.add(108, integer, range1Range1Integer);
            range1.add(109, str, range1Range1Str);

            // range = range1 ".." range1
            range.add(110, range1, rangeRangeRange1);
            range.add(112, new Str(111, ".."));
            range.add(113, range1, rangeRangeRange1);

            // end = "END"

            // complete = "*"

            // repeats = "#" integer:min [".." (integer|"*"):max]
            repeats.add(115, new Str(114, "#"));
            repeats.add(116, integer, repeatsRepeatsMin);
            Optional repeats_1 = new Optional(117, "repeats_1");
            repeats_1.add(119, new Str(118, ".."));
            OrList repeats_1_1 = new OrList(120, "repeats_1_1", repeatsRepeatsMax);
            repeats_1_1.add(121, integer, repeatsRepeatsInteger);
            repeats_1_1.add(123, new Str(122, "*"));
            repeats_1.add(124, repeats_1_1);
            repeats.add(125, repeats_1);

            // valx = [":" lname:varname] ["+":repeat|repeats [":" lname:repeatName]]
            Optional valx_1 = new Optional(126, "valx_1");
            valx_1.add(128, new Str(127, ":"));
            valx_1.add(129, lname, valxValxVarname);
            valx.add(130, valx_1);
            Optional valx_2 = new Optional(131, "valx_2");
            OrList valx_2_1 = new OrList(132, "valx_2_1");
            valx_2_1.add(134, new Str(133, "+", valxValxRepeat));
            valx_2_1.add(135, repeats, valxValxRepeats);
            valx_2.add(136, valx_2_1);
            Optional valx_2_2 = new Optional(137, "valx_2_2");
            valx_2_2.add(139, new Str(138, ":"));
            valx_2_2.add(140, lname, valxValxRepeatName);
            valx_2.add(141, valx_2_2);
            valx.add(142, valx_2);

            // marker = ":" lname:name
            marker.add(144, new Str(143, ":"));
            marker.add(145, lname, markerMarkerName);

            // valprim = s ["!":not s] range|integer|str|reference|variable|complete|end valx
            valprim.add(146, s);
            Optional valprim_1 = new Optional(147, "valprim_1");
            valprim_1.add(149, new Str(148, "!", valprimValprimNot));
            valprim_1.add(150, s);
            valprim.add(151, valprim_1);
            OrList valprim_2 = new OrList(152, "valprim_2");
            valprim_2.add(153, range, valprimValprimRange);
            valprim_2.add(154, integer, valprimValprimInteger);
            valprim_2.add(155, str, valprimValprimStr);
            valprim_2.add(156, reference, valprimValprimReference);
            valprim_2.add(157, variable, valprimValprimVariable);
            valprim_2.add(158, complete, valprimValprimComplete);
            valprim_2.add(159, end, valprimValprimEnd);
            valprim.add(160, valprim_2);
            valprim.add(161, valx, valprimValprimValx);

            // valpar = s ["!":not s] ["CS":cs|"CI":ci s] "(" s val s ")" valx
            valpar.add(162, s);
            Optional valpar_1 = new Optional(163, "valpar_1");
            valpar_1.add(165, new Str(164, "!", valparValparNot));
            valpar_1.add(166, s);
            valpar.add(167, valpar_1);
            Optional valpar_2 = new Optional(168, "valpar_2");
            OrList valpar_2_1 = new OrList(169, "valpar_2_1");
            valpar_2_1.add(171, new Str(170, "CS", valparValparCs));
            valpar_2_1.add(173, new Str(172, "CI", valparValparCi));
            valpar_2.add(174, valpar_2_1);
            valpar_2.add(175, s);
            valpar.add(176, valpar_2);
            valpar.add(178, new Str(177, "("));
            valpar.add(179, s);
            valpar.add(180, val, valparValparVal);
            valpar.add(181, s);
            valpar.add(183, new Str(182, ")"));
            valpar.add(184, valx, valparValparValx);

            // valor = s valprim|valpar [s "|" s valprim|valpar]+
            valor.add(185, s);
            OrList valor_1 = new OrList(186, "valor_1");
            valor_1.add(187, valprim, valorValorValprim);
            valor_1.add(188, valpar, valorValorValpar);
            valor.add(189, valor_1);
            Optional valor_2 = new Optional(190, "valor_2");
            Repeat valor_2_1 = new Repeat(191, "valor_2_1");
            valor_2_1.add(192, s);
            valor_2_1.add(194, new Str(193, "|"));
            valor_2_1.add(195, s);
            OrList valor_2_1_1 = new OrList(196, "valor_2_1_1");
            valor_2_1_1.add(197, valprim, valorValorValprim);
            valor_2_1_1.add(198, valpar, valorValorValpar);
            valor_2_1.add(199, valor_2_1_1);
            valor_2.add(200, valor_2_1);
            valor.add(201, valor_2);

            // valopt = s "[" s val s "]" valx
            valopt.add(202, s);
            valopt.add(204, new Str(203, "["));
            valopt.add(205, s);
            valopt.add(206, val, valoptValoptVal);
            valopt.add(207, s);
            valopt.add(209, new Str(208, "]"));
            valopt.add(210, valx, valoptValoptValx);

            // valand = valor:mainAnd s "&" s valor|valopt [s "&" s valor|valopt]+
            valand.add(211, valor, valandValandMainAnd);
            valand.add(212, s);
            valand.add(214, new Str(213, "&"));
            valand.add(215, s);
            OrList valand_1 = new OrList(216, "valand_1");
            valand_1.add(217, valor, valandValandValor);
            valand_1.add(218, valopt, valandValandValopt);
            valand.add(219, valand_1);
            Optional valand_2 = new Optional(220, "valand_2");
            Repeat valand_2_1 = new Repeat(221, "valand_2_1");
            valand_2_1.add(222, s);
            valand_2_1.add(224, new Str(223, "&"));
            valand_2_1.add(225, s);
            OrList valand_2_1_1 = new OrList(226, "valand_2_1_1");
            valand_2_1_1.add(227, valor, valandValandValor);
            valand_2_1_1.add(228, valopt, valandValandValopt);
            valand_2_1.add(229, valand_2_1_1);
            valand_2.add(230, valand_2_1);
            valand.add(231, valand_2);

            // valstmt = (s valand|valor|valopt|marker)+
            valstmt.add(232, s);
            OrList valstmt_1 = new OrList(233, "valstmt_1");
            valstmt_1.add(234, valand, valstmtValstmtValand);
            valstmt_1.add(235, valor, valstmtValstmtValor);
            valstmt_1.add(236, valopt, valstmtValstmtValopt);
            valstmt_1.add(237, marker, valstmtValstmtMarker);
            valstmt.add(238, valstmt_1);

            // val = valstmt [s 92 s valstmt:followedby]
            val.add(239, valstmt, valValValstmt);
            Optional val_1 = new Optional(240, "val_1");
            val_1.add(241, s);
            val_1.add(243, new Chr(242, (char)92));
            val_1.add(244, s);
            val_1.add(245, valstmt, valValFollowedby);
            val.add(246, val_1);

            // def = lname:var s "=" s val s ";"
            def.add(247, lname, defDefVar);
            def.add(248, s);
            def.add(250, new Str(249, "="));
            def.add(251, s);
            def.add(252, val, defDefVal);
            def.add(253, s);
            def.add(255, new Str(254, ";"));

            // classvar = uname:class ws lname:var
            classvar.add(256, uname, classvarClassvarClass);
            classvar.add(257, ws);
            classvar.add(258, lname, classvarClassvarVar);

            // constructor = "(" s classvar s ["," s classvar s]+ ")"
            constructor.add(260, new Str(259, "("));
            constructor.add(261, s);
            constructor.add(262, classvar, constructorConstructorClassvar);
            constructor.add(263, s);
            Optional constructor_1 = new Optional(264, "constructor_1");
            Repeat constructor_1_1 = new Repeat(265, "constructor_1_1");
            constructor_1_1.add(267, new Str(266, ","));
            constructor_1_1.add(268, s);
            constructor_1_1.add(269, classvar, constructorConstructorClassvar);
            constructor_1_1.add(270, s);
            constructor_1.add(271, constructor_1_1);
            constructor.add(272, constructor_1);
            constructor.add(274, new Str(273, ")"));

            // outputclass = uname:class [constructor] ws lname:var s ";"
            outputclass.add(275, uname, outputclassOutputclassClass);
            Optional outputclass_1 = new Optional(276, "outputclass_1");
            outputclass_1.add(277, constructor, outputclassOutputclassConstructor);
            outputclass.add(278, outputclass_1);
            outputclass.add(279, ws);
            outputclass.add(280, lname, outputclassOutputclassVar);
            outputclass.add(281, s);
            outputclass.add(283, new Str(282, ";"));

            // omarg = s "," s "String":str | "Index":index ws lname:arg
            omarg.add(284, s);
            omarg.add(286, new Str(285, ","));
            omarg.add(287, s);
            OrList omarg_1 = new OrList(288, "omarg_1");
            omarg_1.add(290, new Str(289, "String", omargOmargStr));
            omarg_1.add(292, new Str(291, "Index", omargOmargIndex));
            omarg.add(293, omarg_1);
            omarg.add(294, ws);
            omarg.add(295, lname, omargOmargArg);

            // outputmethod =
            //   [uname:class [constructor] ws] ["$":setter ws] lname:ref "." lname:method s "(" s
            //   (("void":void ws) | ("String":str ws) | ("Index":index ws) | (uname:argclass ws)
            //   [lname:carg "."] (lname|"*"):arg)
            //   [omarg+] s ")" s ";"
            Optional outputmethod_1 = new Optional(296, "outputmethod_1");
            outputmethod_1.add(297, uname, outputmethodOutputmethodClass);
            Optional outputmethod_1_1 = new Optional(298, "outputmethod_1_1");
            outputmethod_1_1.add(299, constructor, outputmethodOutputmethodConstructor);
            outputmethod_1.add(300, outputmethod_1_1);
            outputmethod_1.add(301, ws);
            outputmethod.add(302, outputmethod_1);
            Optional outputmethod_2 = new Optional(303, "outputmethod_2");
            outputmethod_2.add(305, new Str(304, "$", outputmethodOutputmethodSetter));
            outputmethod_2.add(306, ws);
            outputmethod.add(307, outputmethod_2);
            outputmethod.add(308, lname, outputmethodOutputmethodRef);
            outputmethod.add(310, new Str(309, "."));
            outputmethod.add(311, lname, outputmethodOutputmethodMethod);
            outputmethod.add(312, s);
            outputmethod.add(314, new Str(313, "("));
            outputmethod.add(315, s);
            ElementList outputmethod_3 = new ElementList(316, "outputmethod_3");
            OrList outputmethod_3_1 = new OrList(317, "outputmethod_3_1");
            ElementList outputmethod_3_1_1 = new ElementList(318, "outputmethod_3_1_1");
            outputmethod_3_1_1.add(320, new Str(319, "void", outputmethodOutputmethodVoid));
            outputmethod_3_1_1.add(321, ws);
            outputmethod_3_1.add(322, outputmethod_3_1_1);
            ElementList outputmethod_3_1_2 = new ElementList(323, "outputmethod_3_1_2");
            outputmethod_3_1_2.add(325, new Str(324, "String", outputmethodOutputmethodStr));
            outputmethod_3_1_2.add(326, ws);
            outputmethod_3_1.add(327, outputmethod_3_1_2);
            ElementList outputmethod_3_1_3 = new ElementList(328, "outputmethod_3_1_3");
            outputmethod_3_1_3.add(330, new Str(329, "Index", outputmethodOutputmethodIndex));
            outputmethod_3_1_3.add(331, ws);
            outputmethod_3_1.add(332, outputmethod_3_1_3);
            ElementList outputmethod_3_1_4 = new ElementList(333, "outputmethod_3_1_4");
            outputmethod_3_1_4.add(334, uname, outputmethodOutputmethodArgclass);
            outputmethod_3_1_4.add(335, ws);
            outputmethod_3_1.add(336, outputmethod_3_1_4);
            outputmethod_3.add(337, outputmethod_3_1);
            Optional outputmethod_3_2 = new Optional(338, "outputmethod_3_2");
            outputmethod_3_2.add(339, lname, outputmethodOutputmethodCarg);
            outputmethod_3_2.add(341, new Str(340, "."));
            outputmethod_3.add(342, outputmethod_3_2);
            OrList outputmethod_3_3 = new OrList(343, "outputmethod_3_3", outputmethodOutputmethodArg);
            outputmethod_3_3.add(344, lname);
            outputmethod_3_3.add(346, new Str(345, "*"));
            outputmethod_3.add(347, outputmethod_3_3);
            outputmethod.add(348, outputmethod_3);
            Optional outputmethod_4 = new Optional(349, "outputmethod_4");
            Repeat outputmethod_4_1 = new Repeat(350, "outputmethod_4_1");
            outputmethod_4_1.add(351, omarg, outputmethodOutputmethodOmarg);
            outputmethod_4.add(352, outputmethod_4_1);
            outputmethod.add(353, outputmethod_4);
            outputmethod.add(354, s);
            outputmethod.add(356, new Str(355, ")"));
            outputmethod.add(357, s);
            outputmethod.add(359, new Str(358, ";"));
    View Full Code Here

    Examples of net.sf.laja.parser.engine2.element.Optional

        // integer = "0".."9"+
        integer.add(10, new Range(9, "integer", "0", "9"));

        // number = integer ["." integer]
        number.add(11, integer);
        Optional number_1 = new Optional(12, "number_1");
        number_1.add(14, new Str(13, "."));
        number_1.add(15, integer);
        number.add(16, number_1);

        // oneArgumentFunction =
        //   ("abs":abs | "acos":acos | "asin":asin | "atan":atan |
        //   "ceil":ceil | "cos":cos | "exp":exp | "floor":floor | "log":log |
        //   "rint":rint | "round":round | "sin":sin | "sqrt":sqrt |
        //   "tan":tan | "toDegrees":toDegrees | "toRadians":toRadians) "(" expression:argument ")"
        OrList oneArgumentFunction_1 = new OrList(17, "oneArgumentFunction_1");
        oneArgumentFunction_1.add(19, new Str(18, "abs", oneArgumentFunctionOneArgumentFunctionAbs));
        oneArgumentFunction_1.add(21, new Str(20, "acos", oneArgumentFunctionOneArgumentFunctionAcos));
        oneArgumentFunction_1.add(23, new Str(22, "asin", oneArgumentFunctionOneArgumentFunctionAsin));
        oneArgumentFunction_1.add(25, new Str(24, "atan", oneArgumentFunctionOneArgumentFunctionAtan));
        oneArgumentFunction_1.add(27, new Str(26, "ceil", oneArgumentFunctionOneArgumentFunctionCeil));
        oneArgumentFunction_1.add(29, new Str(28, "cos", oneArgumentFunctionOneArgumentFunctionCos));
        oneArgumentFunction_1.add(31, new Str(30, "exp", oneArgumentFunctionOneArgumentFunctionExp));
        oneArgumentFunction_1.add(33, new Str(32, "floor", oneArgumentFunctionOneArgumentFunctionFloor));
        oneArgumentFunction_1.add(35, new Str(34, "log", oneArgumentFunctionOneArgumentFunctionLog));
        oneArgumentFunction_1.add(37, new Str(36, "rint", oneArgumentFunctionOneArgumentFunctionRint));
        oneArgumentFunction_1.add(39, new Str(38, "round", oneArgumentFunctionOneArgumentFunctionRound));
        oneArgumentFunction_1.add(41, new Str(40, "sin", oneArgumentFunctionOneArgumentFunctionSin));
        oneArgumentFunction_1.add(43, new Str(42, "sqrt", oneArgumentFunctionOneArgumentFunctionSqrt));
        oneArgumentFunction_1.add(45, new Str(44, "tan", oneArgumentFunctionOneArgumentFunctionTan));
        oneArgumentFunction_1.add(47, new Str(46, "toDegrees", oneArgumentFunctionOneArgumentFunctionToDegrees));
        oneArgumentFunction_1.add(49, new Str(48, "toRadians", oneArgumentFunctionOneArgumentFunctionToRadians));
        oneArgumentFunction.add(50, oneArgumentFunction_1);
        oneArgumentFunction.add(52, new Str(51, "("));
        oneArgumentFunction.add(53, expression, oneArgumentFunctionOneArgumentFunctionArgument);
        oneArgumentFunction.add(55, new Str(54, ")"));

        // twoArgumentsFunction =
        //   ("atan2":atan2 | "IEEEremainder":ieeeRemainder | "max":max | "min":min |
        //   "pow":pow) "(" expression:arg1 "," expression:arg2 ")"
        OrList twoArgumentsFunction_1 = new OrList(56, "twoArgumentsFunction_1");
        twoArgumentsFunction_1.add(58, new Str(57, "atan2", twoArgumentsFunctionTwoArgumentsFunctionAtan2));
        twoArgumentsFunction_1.add(60, new Str(59, "IEEEremainder"));
        twoArgumentsFunction_1.add(62, new Str(61, "max", twoArgumentsFunctionTwoArgumentsFunctionMax));
        twoArgumentsFunction_1.add(64, new Str(63, "min", twoArgumentsFunctionTwoArgumentsFunctionMin));
        twoArgumentsFunction_1.add(66, new Str(65, "pow", twoArgumentsFunctionTwoArgumentsFunctionPow));
        twoArgumentsFunction.add(67, twoArgumentsFunction_1);
        twoArgumentsFunction.add(69, new Str(68, "("));
        twoArgumentsFunction.add(70, expression, twoArgumentsFunctionTwoArgumentsFunctionArg1);
        twoArgumentsFunction.add(72, new Str(71, ","));
        twoArgumentsFunction.add(73, expression, twoArgumentsFunctionTwoArgumentsFunctionArg2);
        twoArgumentsFunction.add(75, new Str(74, ")"));

        // expression1 = "random()":random | oneArgumentFunction | twoArgumentsFunction | number | ("(" expression ")")
        expression1.add(77, new Str(76, "random()", expression1Expression1Random));
        expression1.add(78, oneArgumentFunction, expression1Expression1OneArgumentFunction);
        expression1.add(79, twoArgumentsFunction, expression1Expression1TwoArgumentsFunction);
        expression1.add(80, number, expression1Expression1Number);
        ElementList expression1_1 = new ElementList(81, "expression1_1");
        expression1_1.add(83, new Str(82, "("));
        expression1_1.add(84, expression, expression1Expression1Expression);
        expression1_1.add(86, new Str(85, ")"));
        expression1.add(87, expression1_1);

        // expression2 = expression1 ["^":expo expression1]+
        expression2.add(88, expression1, expression2Expression2Expression1);
        Optional expression2_1 = new Optional(89, "expression2_1");
        Repeat expression2_1_1 = new Repeat(90, "expression2_1_1");
        expression2_1_1.add(92, new Str(91, "^", expression2Expression2Expo));
        expression2_1_1.add(93, expression1, expression2Expression2Expression1);
        expression2_1.add(94, expression2_1_1);
        expression2.add(95, expression2_1);

        // expression3 = :plus expression2 ["*":mul | "/":div | "%":mod expression2]+
        expression3.add(97, new Marker(96, "plus", expression3Expression3Plus));
        expression3.add(98, expression2, expression3Expression3Expression2);
        Optional expression3_1 = new Optional(99, "expression3_1");
        Repeat expression3_1_1 = new Repeat(100, "expression3_1_1");
        OrList expression3_1_1_1 = new OrList(101, "expression3_1_1_1");
        expression3_1_1_1.add(103, new Str(102, "*", expression3Expression3Mul));
        expression3_1_1_1.add(105, new Str(104, "/", expression3Expression3Div));
        expression3_1_1_1.add(107, new Str(106, "%", expression3Expression3Mod));
        expression3_1_1.add(108, expression3_1_1_1);
        expression3_1_1.add(109, expression2, expression3Expression3Expression2);
        expression3_1.add(110, expression3_1_1);
        expression3.add(111, expression3_1);

        // expression = expression3 ["+":plus | "-":minus expression3]+
        expression.add(112, expression3, expressionExpressionExpression3);
        Optional expression_1 = new Optional(113, "expression_1");
        Repeat expression_1_1 = new Repeat(114, "expression_1_1");
        OrList expression_1_1_1 = new OrList(115, "expression_1_1_1");
        expression_1_1_1.add(117, new Str(116, "+", expressionExpressionPlus));
        expression_1_1_1.add(119, new Str(118, "-", expressionExpressionMinus));
        expression_1_1.add(120, expression_1_1_1);
        expression_1_1.add(121, expression3, expressionExpressionExpression3);
        expression_1.add(122, expression_1_1);
        expression.add(123, expression_1);


        return new TopElement(data2, expression);
      }
    View Full Code Here

    Examples of net.sf.laja.parser.engine2.element.Optional

        // integer = "0".."9"+
        integer.add(10, new Range(9, "integer", "0", "9"));

        // number = integer ["." integer]
        number.add(11, integer);
        Optional number_1 = new Optional(12, "number_1");
        number_1.add(14, new Str(13, "."));
        number_1.add(15, integer);
        number.add(16, number_1);

        // oneArgumentFunction =
        //   ("abs":abs | "acos":acos | "asin":asin | "atan":atan |
        //   "ceil":ceil | "cos":cos | "exp":exp | "floor":floor | "log":log |
        //   "rint":rint | "round":round | "sin":sin | "sqrt":sqrt |
        //   "tan":tan | "toDegrees":toDegrees | "toRadians":toRadians) "(" expression:argument ")"
        OrList oneArgumentFunction_1 = new OrList(17, "oneArgumentFunction_1");
        oneArgumentFunction_1.add(19, new Str(18, "abs"));
        oneArgumentFunction_1.add(21, new Str(20, "acos"));
        oneArgumentFunction_1.add(23, new Str(22, "asin"));
        oneArgumentFunction_1.add(25, new Str(24, "atan"));
        oneArgumentFunction_1.add(27, new Str(26, "ceil"));
        oneArgumentFunction_1.add(29, new Str(28, "cos"));
        oneArgumentFunction_1.add(31, new Str(30, "exp"));
        oneArgumentFunction_1.add(33, new Str(32, "floor"));
        oneArgumentFunction_1.add(35, new Str(34, "log"));
        oneArgumentFunction_1.add(37, new Str(36, "rint"));
        oneArgumentFunction_1.add(39, new Str(38, "round"));
        oneArgumentFunction_1.add(41, new Str(40, "sin"));
        oneArgumentFunction_1.add(43, new Str(42, "sqrt"));
        oneArgumentFunction_1.add(45, new Str(44, "tan"));
        oneArgumentFunction_1.add(47, new Str(46, "toDegrees"));
        oneArgumentFunction_1.add(49, new Str(48, "toRadians"));
        oneArgumentFunction.add(50, oneArgumentFunction_1);
        oneArgumentFunction.add(52, new Str(51, "("));
        oneArgumentFunction.add(53, expression);
        oneArgumentFunction.add(55, new Str(54, ")"));

        // twoArgumentsFunction =
        //   ("atan2":atan2 | "IEEEremainder":ieeeRemainder | "max":max | "min":min |
        //   "pow":pow) "(" expression:arg1 "," expression:arg2 ")"
        OrList twoArgumentsFunction_1 = new OrList(56, "twoArgumentsFunction_1");
        twoArgumentsFunction_1.add(58, new Str(57, "atan2"));
        twoArgumentsFunction_1.add(60, new Str(59, "IEEEremainder"));
        twoArgumentsFunction_1.add(62, new Str(61, "max"));
        twoArgumentsFunction_1.add(64, new Str(63, "min"));
        twoArgumentsFunction_1.add(66, new Str(65, "pow"));
        twoArgumentsFunction.add(67, twoArgumentsFunction_1);
        twoArgumentsFunction.add(69, new Str(68, "("));
        twoArgumentsFunction.add(70, expression);
        twoArgumentsFunction.add(72, new Str(71, ","));
        twoArgumentsFunction.add(73, expression);
        twoArgumentsFunction.add(75, new Str(74, ")"));

        // expression1 = "random()":random | oneArgumentFunction | twoArgumentsFunction | number | ("(" expression ")")
        expression1.add(77, new Str(76, "random()"));
        expression1.add(78, oneArgumentFunction);
        expression1.add(79, twoArgumentsFunction);
        expression1.add(80, number);
        ElementList expression1_1 = new ElementList(81, "expression1_1");
        expression1_1.add(83, new Str(82, "("));
        expression1_1.add(84, expression);
        expression1_1.add(86, new Str(85, ")"));
        expression1.add(87, expression1_1);

        // expression2 = expression1 ["^":expo expression1]+
        expression2.add(88, expression1);
        Optional expression2_1 = new Optional(89, "expression2_1");
        Repeat expression2_1_1 = new Repeat(90, "expression2_1_1");
        expression2_1_1.add(92, new Str(91, "^"));
        expression2_1_1.add(93, expression1);
        expression2_1.add(94, expression2_1_1);
        expression2.add(95, expression2_1);

        // expression3 = :plus expression2 ["*":mul | "/":div | "%":mod expression2]+
        expression3.add(97, new Marker(96, "plus"));
        expression3.add(98, expression2);
        Optional expression3_1 = new Optional(99, "expression3_1");
        Repeat expression3_1_1 = new Repeat(100, "expression3_1_1");
        OrList expression3_1_1_1 = new OrList(101, "expression3_1_1_1");
        expression3_1_1_1.add(103, new Str(102, "*"));
        expression3_1_1_1.add(105, new Str(104, "/"));
        expression3_1_1_1.add(107, new Str(106, "%"));
        expression3_1_1.add(108, expression3_1_1_1);
        expression3_1_1.add(109, expression2);
        expression3_1.add(110, expression3_1_1);
        expression3.add(111, expression3_1);

        // expression = expression3 ["+":plus | "-":minus expression3]+
        expression.add(112, expression3);
        Optional expression_1 = new Optional(113, "expression_1");
        Repeat expression_1_1 = new Repeat(114, "expression_1_1");
        OrList expression_1_1_1 = new OrList(115, "expression_1_1_1");
        expression_1_1_1.add(117, new Str(116, "+"));
        expression_1_1_1.add(119, new Str(118, "-"));
        expression_1_1.add(120, expression_1_1_1);
        expression_1_1.add(121, expression3);
        expression_1.add(122, expression_1_1);
        expression.add(123, expression_1);


        return new TopElement(data1, expression);
      }
    View Full Code Here

    Examples of net.sf.laja.parser.engine2.element.Optional

            // *** Declarations ***
            OrList newline = new OrList(1, "newline");
            ElementList comment = new ElementList(2, "comment");
            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");
            OrList stringExp_1_1_1 = new OrList(169, "stringExp_1_1_1");
            stringExp_1_1_1.add(170, stringref, stringExpStringExpStringref);
            Repeat stringExp_1_1_1_1 = new Repeat(171, "stringExp_1_1_1_1", stringExpStringExpText);
            OrList stringExp_1_1_1_1_1 = new OrList(172, "stringExp_1_1_1_1_1");
            stringExp_1_1_1_1_1.add(174, new Str(173, "\\\""));
            OrList stringExp_1_1_1_1_1_1 = new OrList(175, "stringExp_1_1_1_1_1_1", NOT);
            stringExp_1_1_1_1_1_1.add(176, ff);
            stringExp_1_1_1_1_1_1.add(177, stringref, stringExpStringExpStringref);
            stringExp_1_1_1_1_1.add(178, stringExp_1_1_1_1_1_1);
            stringExp_1_1_1_1.add(179, stringExp_1_1_1_1_1);
            stringExp_1_1_1.add(180, stringExp_1_1_1_1);
            stringExp_1_1.add(181, stringExp_1_1_1);
            stringExp_1.add(182, stringExp_1_1);
            stringExp.add(183, stringExp_1);
            stringExp.add(184, ff);

            // classOrPackageName = letter|"$" [letter|digit|"$"]+
            OrList classOrPackageName_1 = new OrList(185, "classOrPackageName_1");
            classOrPackageName_1.add(186, letter);
            classOrPackageName_1.add(188, new Str(187, "$"));
            classOrPackageName.add(189, classOrPackageName_1);
            Optional classOrPackageName_2 = new Optional(190, "classOrPackageName_2");
            Repeat classOrPackageName_2_1 = new Repeat(191, "classOrPackageName_2_1");
            OrList classOrPackageName_2_1_1 = new OrList(192, "classOrPackageName_2_1_1");
            classOrPackageName_2_1_1.add(193, letter);
            classOrPackageName_2_1_1.add(194, digit);
            classOrPackageName_2_1_1.add(196, new Str(195, "$"));
            classOrPackageName_2_1.add(197, classOrPackageName_2_1_1);
            classOrPackageName_2.add(198, classOrPackageName_2_1);
            classOrPackageName.add(199, classOrPackageName_2);

            // newStatement = "new" ws classOrPackageName ["." classOrPackageName]+ s args
            newStatement.add(201, new Str(200, "new"));
            newStatement.add(202, ws);
            newStatement.add(203, classOrPackageName, newStatementNewStatementClassOrPackageName);
            Optional newStatement_1 = new Optional(204, "newStatement_1");
            Repeat newStatement_1_1 = new Repeat(205, "newStatement_1_1");
            newStatement_1_1.add(207, new Str(206, "."));
            newStatement_1_1.add(208, classOrPackageName, newStatementNewStatementClassOrPackageName);
            newStatement_1.add(209, newStatement_1_1);
            newStatement.add(210, newStatement_1);
            newStatement.add(211, s);
            newStatement.add(212, args, newStatementNewStatementArgs);

            // data = newStatement | stringExp | listData | mapDataRef | nullData | booleanData | reference | floatData | integerData
            data.add(213, newStatement, dataDataNewStatement);
            data.add(214, stringExp, dataDataStringExp);
            data.add(215, listData, dataDataListData);
            data.add(216, mapDataRef, dataDataMapDataRef);
            data.add(217, nullData, dataDataNullData);
            data.add(218, booleanData, dataDataBooleanData);
            data.add(219, reference, dataDataReference);
            data.add(220, floatData, dataDataFloatData);
            data.add(221, integerData, dataDataIntegerData);

            // listData = "[" s [data [s "," s data]+ s] "]" [s "as array":array]
            listData.add(223, new Str(222, "["));
            listData.add(224, s);
            Optional listData_1 = new Optional(225, "listData_1");
            listData_1.add(226, data, listDataListDataData);
            Optional listData_1_1 = new Optional(227, "listData_1_1");
            Repeat listData_1_1_1 = new Repeat(228, "listData_1_1_1");
            listData_1_1_1.add(229, s);
            listData_1_1_1.add(231, new Str(230, ","));
            listData_1_1_1.add(232, s);
            listData_1_1_1.add(233, data, listDataListDataData);
            listData_1_1.add(234, listData_1_1_1);
            listData_1.add(235, listData_1_1);
            listData_1.add(236, s);
            listData.add(237, listData_1);
            listData.add(239, new Str(238, "]"));
            Optional listData_2 = new Optional(240, "listData_2");
            listData_2.add(241, s);
            listData_2.add(243, new Str(242, "as array", listDataListDataArray));
            listData.add(244, listData_2);

            // mapMember = varname:name s ":" s data
            mapMember.add(245, varname, mapMemberMapMemberName);
            mapMember.add(246, s);
            mapMember.add(248, new Str(247, ":"));
            mapMember.add(249, s);
            mapMember.add(250, data, mapMemberMapMemberData);

            // mapDataRef = "{" [mapData] "}"
            mapDataRef.add(252, new Str(251, "{"));
            Optional mapDataRef_1 = new Optional(253, "mapDataRef_1");
            mapDataRef_1.add(254, mapData, mapDataRefMapDataRefMapData);
            mapDataRef.add(255, mapDataRef_1);
            mapDataRef.add(257, new Str(256, "}"));

            // mapData = (s mapMember)+ s
            Repeat mapData_1 = new Repeat(258, "mapData_1");
            mapData_1.add(259, s);
            mapData_1.add(260, mapMember, mapDataMapDataMapMember);
            mapData.add(261, mapData_1);
            mapData.add(262, s);

            // indexItem = unsignedInt | reference
            indexItem.add(263, unsignedInt, indexItemIndexItemUnsignedInt);
            indexItem.add(264, reference, indexItemIndexItemReference);

            // listIndex = ("[" indexItem "]")+
            listIndex.add(266, new Str(265, "["));
            listIndex.add(267, indexItem, listIndexListIndexIndexItem);
            listIndex.add(269, new Str(268, "]"));

            // args = "(" s mapData|([data [s "," s data]+]) s ")"
            args.add(271, new Str(270, "("));
            args.add(272, s);
            OrList args_1 = new OrList(273, "args_1");
            args_1.add(274, mapData, argsArgsMapData);
            Optional args_1_1 = new Optional(275, "args_1_1");
            args_1_1.add(276, data, argsArgsData);
            Optional args_1_1_1 = new Optional(277, "args_1_1_1");
            Repeat args_1_1_1_1 = new Repeat(278, "args_1_1_1_1");
            args_1_1_1_1.add(279, s);
            args_1_1_1_1.add(281, new Str(280, ","));
            args_1_1_1_1.add(282, s);
            args_1_1_1_1.add(283, data, argsArgsData);
            args_1_1_1.add(284, args_1_1_1_1);
            args_1_1.add(285, args_1_1_1);
            args_1.add(286, args_1_1);
            args.add(287, args_1);
            args.add(288, s);
            args.add(290, new Str(289, ")"));

            // namespaceRef = "$" [varname]:namespace
            namespaceRef.add(292, new Str(291, "$"));
            Optional namespaceRef_1 = new Optional(293, "namespaceRef_1", namespaceRefNamespaceRefNamespace);
            namespaceRef_1.add(294, varname);
            namespaceRef.add(295, namespaceRef_1);

            // variableRef = varname:variableName
            variableRef.add(296, varname, variableRefVariableRefVariableName);

            // methodRef = varname:methodName s args
            methodRef.add(297, varname, methodRefMethodRefMethodName);
            methodRef.add(298, s);
            methodRef.add(299, args, methodRefMethodRefArgs);

            // attributeRef = methodRef|variableRef [listIndex]
            OrList attributeRef_1 = new OrList(300, "attributeRef_1");
            attributeRef_1.add(301, methodRef, attributeRefAttributeRefMethodRef);
            attributeRef_1.add(302, variableRef, attributeRefAttributeRefVariableRef);
            attributeRef.add(303, attributeRef_1);
            Optional attributeRef_2 = new Optional(304, "attributeRef_2");
            attributeRef_2.add(305, listIndex, attributeRefAttributeRefListIndex);
            attributeRef.add(306, attributeRef_2);

            // attributeVariableRef = variableRef [listIndex]
            attributeVariableRef.add(307, variableRef, attributeVariableRefAttributeVariableRefVariableRef);
            Optional attributeVariableRef_1 = new Optional(308, "attributeVariableRef_1");
            attributeVariableRef_1.add(309, listIndex, attributeVariableRefAttributeVariableRefListIndex);
            attributeVariableRef.add(310, attributeVariableRef_1);

            // attributeMethodRef = methodRef [listIndex]
            attributeMethodRef.add(311, methodRef, attributeMethodRefAttributeMethodRefMethodRef);
            Optional attributeMethodRef_1 = new Optional(312, "attributeMethodRef_1");
            attributeMethodRef_1.add(313, listIndex, attributeMethodRefAttributeMethodRefListIndex);
            attributeMethodRef.add(314, attributeMethodRef_1);

            // reference =
            //   :begin (([namespaceRef "."] attributeRef)|namespaceRef ["." attributeRef:nextAttributeRef]+) |
            //   (floatData|integerData|stringExp ("." attributeRef:nextAttributeRef)+)
            reference.add(316, new Marker(315, "begin", referenceReferenceBegin));
            OrList reference_1 = new OrList(317, "reference_1");
            ElementList reference_1_1 = new ElementList(318, "reference_1_1");
            OrList reference_1_1_1 = new OrList(319, "reference_1_1_1");
            ElementList reference_1_1_1_1 = new ElementList(320, "reference_1_1_1_1");
            Optional reference_1_1_1_1_1 = new Optional(321, "reference_1_1_1_1_1");
            reference_1_1_1_1_1.add(322, namespaceRef, referenceReferenceNamespaceRef);
            reference_1_1_1_1_1.add(324, new Str(323, "."));
            reference_1_1_1_1.add(325, reference_1_1_1_1_1);
            reference_1_1_1_1.add(326, attributeRef, referenceReferenceAttributeRef);
            reference_1_1_1.add(327, reference_1_1_1_1);
            reference_1_1_1.add(328, namespaceRef, referenceReferenceNamespaceRef);
            reference_1_1.add(329, reference_1_1_1);
            Optional reference_1_1_2 = new Optional(330, "reference_1_1_2");
            Repeat reference_1_1_2_1 = new Repeat(331, "reference_1_1_2_1");
            reference_1_1_2_1.add(333, new Str(332, "."));
            reference_1_1_2_1.add(334, attributeRef, referenceReferenceNextAttributeRef);
            reference_1_1_2.add(335, reference_1_1_2_1);
            reference_1_1.add(336, reference_1_1_2);
            reference_1.add(337, reference_1_1);
            ElementList reference_1_2 = new ElementList(338, "reference_1_2");
            OrList reference_1_2_1 = new OrList(339, "reference_1_2_1");
            reference_1_2_1.add(340, floatData, referenceReferenceFloatData);
            reference_1_2_1.add(341, integerData, referenceReferenceIntegerData);
            reference_1_2_1.add(342, stringExp, referenceReferenceStringExp);
            reference_1_2.add(343, reference_1_2_1);
            Repeat reference_1_2_2 = new Repeat(344, "reference_1_2_2");
            reference_1_2_2.add(346, new Str(345, "."));
            reference_1_2_2.add(347, attributeRef, referenceReferenceNextAttributeRef);
            reference_1_2.add(348, reference_1_2_2);
            reference_1.add(349, reference_1_2);
            reference.add(350, reference_1);

            // callReference =
            //   :begin (([namespaceRef "."](attributeMethodRef)|(attributeVariableRef ("." attributeRef:nextAttributeRef)+))
            //   ["." attributeRef:nextAttributeRef]+)
            callReference.add(352, new Marker(351, "begin", callReferenceCallReferenceBegin));
            ElementList callReference_1 = new ElementList(353, "callReference_1");
            ElementList callReference_1_1 = new ElementList(354, "callReference_1_1");
            Optional callReference_1_1_1 = new Optional(355, "callReference_1_1_1");
            callReference_1_1_1.add(356, namespaceRef, callReferenceCallReferenceNamespaceRef);
            callReference_1_1_1.add(358, new Str(357, "."));
            callReference_1_1.add(359, callReference_1_1_1);
            OrList callReference_1_1_2 = new OrList(360, "callReference_1_1_2");
            callReference_1_1_2.add(361, attributeMethodRef, callReferenceCallReferenceAttributeMethodRef);
            ElementList callReference_1_1_2_1 = new ElementList(362, "callReference_1_1_2_1");
            callReference_1_1_2_1.add(363, attributeVariableRef, callReferenceCallReferenceAttributeVariableRef);
            Repeat callReference_1_1_2_1_1 = new Repeat(364, "callReference_1_1_2_1_1");
            callReference_1_1_2_1_1.add(366, new Str(365, "."));
            callReference_1_1_2_1_1.add(367, attributeRef, callReferenceCallReferenceNextAttributeRef);
            callReference_1_1_2_1.add(368, callReference_1_1_2_1_1);
            callReference_1_1_2.add(369, callReference_1_1_2_1);
            callReference_1_1.add(370, callReference_1_1_2);
            callReference_1.add(371, callReference_1_1);
            Optional callReference_1_2 = new Optional(372, "callReference_1_2");
            Repeat callReference_1_2_1 = new Repeat(373, "callReference_1_2_1");
            callReference_1_2_1.add(375, new Str(374, "."));
            callReference_1_2_1.add(376, attributeRef, callReferenceCallReferenceNextAttributeRef);
            callReference_1_2.add(377, callReference_1_2_1);
            callReference_1.add(378, callReference_1_2);
            callReference.add(379, callReference_1);

            // stringref = :begin "{" "..":parentDir | ".":currentDir | reference "}"
            stringref.add(381, new Marker(380, "begin", stringrefStringrefBegin));
            stringref.add(383, new Str(382, "{"));
            OrList stringref_1 = new OrList(384, "stringref_1");
            stringref_1.add(386, new Str(385, "..", stringrefStringrefParentDir));
            stringref_1.add(388, new Str(387, ".", stringrefStringrefCurrentDir));
            stringref_1.add(389, reference, stringrefStringrefReference);
            stringref.add(390, stringref_1);
            stringref.add(392, new Str(391, "}"));

            // end = [spaces] "#end" skip
            Optional end_1 = new Optional(393, "end_1");
            end_1.add(394, spaces);
            end.add(395, end_1);
            end.add(397, new Str(396, "#end"));
            end.add(398, skip);

            // write = :begin "#write" ws stringExp:filename skip block end
            write.add(400, new Marker(399, "begin", writeWriteBegin));
            write.add(402, new Str(401, "#write"));
            write.add(403, ws);
            write.add(404, stringExp, writeWriteFilename);
            write.add(405, skip);
            write.add(406, block, writeWriteBlock);
            write.add(407, end);

            // set = :begin "#set" s "(" s reference:target s "=" s comparition|data s ")" skip
            set.add(409, new Marker(408, "begin", setSetBegin));
            set.add(411, new Str(410, "#set"));
            set.add(412, s);
            set.add(414, new Str(413, "("));
            set.add(415, s);
            set.add(416, reference, setSetTarget);
            set.add(417, s);
            set.add(419, new Str(418, "="));
            set.add(420, s);
            OrList set_1 = new OrList(421, "set_1");
            set_1.add(422, comparition, setSetComparition);
            set_1.add(423, data, setSetData);
            set.add(424, set_1);
            set.add(425, s);
            set.add(427, new Str(426, ")"));
            set.add(428, skip);

            // local = "#local" s "(" s reference:target s "=" s comparition|data s ")" skip
            local.add(430, new Str(429, "#local"));
            local.add(431, s);
            local.add(433, new Str(432, "("));
            local.add(434, s);
            local.add(435, reference, localLocalTarget);
            local.add(436, s);
            local.add(438, new Str(437, "="));
            local.add(439, s);
            OrList local_1 = new OrList(440, "local_1");
            local_1.add(441, comparition, localLocalComparition);
            local_1.add(442, data, localLocalData);
            local.add(443, local_1);
            local.add(444, s);
            local.add(446, new Str(445, ")"));
            local.add(447, skip);

            // operator = "==":equals | "!=":notEquals | "<=":lessOrEqual | "<":lessThan | ">=":greaterOrEqual | ">":greaterThan
            operator.add(449, new Str(448, "==", operatorOperatorEquals));
            operator.add(451, new Str(450, "!=", operatorOperatorNotEquals));
            operator.add(453, new Str(452, "<=", operatorOperatorLessOrEqual));
            operator.add(455, new Str(454, "<", operatorOperatorLessThan));
            operator.add(457, new Str(456, ">=", operatorOperatorGreaterOrEqual));
            operator.add(459, new Str(458, ">", operatorOperatorGreaterThan));

            // comparition = data:leftOperand s operator s data:rightOperand
            comparition.add(460, data, comparitionComparitionLeftOperand);
            comparition.add(461, s);
            comparition.add(462, operator, comparitionComparitionOperator);
            comparition.add(463, s);
            comparition.add(464, data, comparitionComparitionRightOperand);

            // conditionElement = ["!":not] s (comparition | (reference & (!booleanData *)) | booleanData:booleanCondition)
            Optional conditionElement_1 = new Optional(465, "conditionElement_1");
            conditionElement_1.add(467, new Str(466, "!", conditionElementConditionElementNot));
            conditionElement.add(468, conditionElement_1);
            conditionElement.add(469, s);
            OrList conditionElement_2 = new OrList(470, "conditionElement_2");
            conditionElement_2.add(471, comparition, conditionElementConditionElementComparition);
            ElementList conditionElement_2_1 = new ElementList(472, "conditionElement_2_1");
            AndList conditionElement_2_1_1 = new AndList(473, "conditionElement_2_1_1");
            conditionElement_2_1_1.mainAnd(474, reference, conditionElementConditionElementReference);
            ElementList conditionElement_2_1_1_1 = new ElementList(475, "conditionElement_2_1_1_1");
            conditionElement_2_1_1_1.add(476, booleanData, NOT, conditionElementConditionElementBooleanData);
            conditionElement_2_1_1_1.add(478, new Complete(477, "conditionElement_2_1_1_1"));
            conditionElement_2_1_1.and(479, conditionElement_2_1_1_1);
            conditionElement_2_1.add(480, conditionElement_2_1_1);
            conditionElement_2.add(481, conditionElement_2_1);
            conditionElement_2.add(482, booleanData, conditionElementConditionElementBooleanCondition);
            conditionElement.add(483, conditionElement_2);

            // conditionBase = conditionElement | (s "(" s condition s ")")
            conditionBase.add(484, conditionElement, conditionBaseConditionBaseConditionElement);
            ElementList conditionBase_1 = new ElementList(485, "conditionBase_1");
            conditionBase_1.add(486, s);
            conditionBase_1.add(488, new Str(487, "("));
            conditionBase_1.add(489, s);
            conditionBase_1.add(490, condition, conditionBaseConditionBaseCondition);
            conditionBase_1.add(491, s);
            conditionBase_1.add(493, new Str(492, ")"));
            conditionBase.add(494, conditionBase_1);

            // conditionAnd = conditionBase [s "&&" s conditionBase]+
            conditionAnd.add(495, conditionBase, conditionAndConditionAndConditionBase);
            Optional conditionAnd_1 = new Optional(496, "conditionAnd_1");
            Repeat conditionAnd_1_1 = new Repeat(497, "conditionAnd_1_1");
            conditionAnd_1_1.add(498, s);
            conditionAnd_1_1.add(500, new Str(499, "&&"));
            conditionAnd_1_1.add(501, s);
            conditionAnd_1_1.add(502, conditionBase, conditionAndConditionAndConditionBase);
            conditionAnd_1.add(503, conditionAnd_1_1);
            conditionAnd.add(504, conditionAnd_1);

            // condition = conditionAnd [s "||" s conditionAnd]+
            condition.add(505, conditionAnd, conditionConditionConditionAnd);
            Optional condition_1 = new Optional(506, "condition_1");
            Repeat condition_1_1 = new Repeat(507, "condition_1_1");
            condition_1_1.add(508, s);
            condition_1_1.add(510, new Str(509, "||"));
            condition_1_1.add(511, s);
            condition_1_1.add(512, conditionAnd, conditionConditionConditionAnd);
            condition_1.add(513, condition_1_1);
            condition.add(514, condition_1);

            // ifcmd = "#if" s "(" s condition s ")" skip [block] [elseif]+ [else] end
            ifcmd.add(516, new Str(515, "#if"));
            ifcmd.add(517, s);
            ifcmd.add(519, new Str(518, "("));
            ifcmd.add(520, s);
            ifcmd.add(521, condition, ifcmdIfcmdCondition);
            ifcmd.add(522, s);
            ifcmd.add(524, new Str(523, ")"));
            ifcmd.add(525, skip);
            Optional ifcmd_1 = new Optional(526, "ifcmd_1");
            ifcmd_1.add(527, block, ifcmdIfcmdBlock);
            ifcmd.add(528, ifcmd_1);
            Optional ifcmd_2 = new Optional(529, "ifcmd_2");
            Repeat ifcmd_2_1 = new Repeat(530, "ifcmd_2_1");
            ifcmd_2_1.add(531, elseif, ifcmdIfcmdElseif);
            ifcmd_2.add(532, ifcmd_2_1);
            ifcmd.add(533, ifcmd_2);
            Optional ifcmd_3 = new Optional(534, "ifcmd_3");
            ifcmd_3.add(535, _else, ifcmdIfcmdElse);
            ifcmd.add(536, ifcmd_3);
            ifcmd.add(537, end);

            // elseif = [spaces] "#else if" s "(" s condition s ")" skip [block]
            Optional elseif_1 = new Optional(538, "elseif_1");
            elseif_1.add(539, spaces);
            elseif.add(540, elseif_1);
            elseif.add(542, new Str(541, "#else if"));
            elseif.add(543, s);
            elseif.add(545, new Str(544, "("));
            elseif.add(546, s);
            elseif.add(547, condition, elseifElseifCondition);
            elseif.add(548, s);
            elseif.add(550, new Str(549, ")"));
            elseif.add(551, skip);
            Optional elseif_2 = new Optional(552, "elseif_2");
            elseif_2.add(553, block, elseifElseifBlock);
            elseif.add(554, elseif_2);

            // else = [spaces] "#else" skip [block]
            Optional else_1 = new Optional(555, "else_1");
            else_1.add(556, spaces);
            _else.add(557, else_1);
            _else.add(559, new Str(558, "#else"));
            _else.add(560, skip);
            Optional else_2 = new Optional(561, "else_2");
            else_2.add(562, block, elseElseBlock);
            _else.add(563, else_2);

            // whilecmd = "#while" s "(" s condition s ")" skip [block] end
            whilecmd.add(565, new Str(564, "#while"));
            whilecmd.add(566, s);
            whilecmd.add(568, new Str(567, "("));
            whilecmd.add(569, s);
            whilecmd.add(570, condition, whilecmdWhilecmdCondition);
            whilecmd.add(571, s);
            whilecmd.add(573, new Str(572, ")"));
            whilecmd.add(574, skip);
            Optional whilecmd_1 = new Optional(575, "whilecmd_1");
            whilecmd_1.add(576, block, whilecmdWhilecmdBlock);
            whilecmd.add(577, whilecmd_1);
            whilecmd.add(578, end);

            // call = :begin "#" callReference [ws "into" ws ("$" [varname]:targetNamespace)|varname:targetVariable] skip
            call.add(580, new Marker(579, "begin", callCallBegin));
            call.add(582, new Str(581, "#"));
            call.add(583, callReference, callCallCallReference);
            Optional call_1 = new Optional(584, "call_1");
            call_1.add(585, ws);
            call_1.add(587, new Str(586, "into"));
            call_1.add(588, ws);
            OrList call_1_1 = new OrList(589, "call_1_1");
            ElementList call_1_1_1 = new ElementList(590, "call_1_1_1");
            call_1_1_1.add(592, new Str(591, "$"));
            Optional call_1_1_1_1 = new Optional(593, "call_1_1_1_1", callCallTargetNamespace);
            call_1_1_1_1.add(594, varname);
            call_1_1_1.add(595, call_1_1_1_1);
            call_1_1.add(596, call_1_1_1);
            call_1_1.add(597, varname, callCallTargetVariable);
            call_1.add(598, call_1_1);
            call.add(599, call_1);
            call.add(600, skip);

            // foreach =
            //   :begin "#foreach" s "(" varname:variable ws "in" ws listData|mapDataRef|reference s
            //   ["where" s condition s] ")" skip block end
            foreach.add(602, new Marker(601, "begin", foreachForeachBegin));
            foreach.add(604, new Str(603, "#foreach"));
            foreach.add(605, s);
            foreach.add(607, new Str(606, "("));
            foreach.add(608, varname, foreachForeachVariable);
            foreach.add(609, ws);
            foreach.add(611, new Str(610, "in"));
            foreach.add(612, ws);
            OrList foreach_1 = new OrList(613, "foreach_1");
            foreach_1.add(614, listData, foreachForeachListData);
            foreach_1.add(615, mapDataRef, foreachForeachMapDataRef);
            foreach_1.add(616, reference, foreachForeachReference);
            foreach.add(617, foreach_1);
            foreach.add(618, s);
            Optional foreach_2 = new Optional(619, "foreach_2");
            foreach_2.add(621, new Str(620, "where"));
            foreach_2.add(622, s);
            foreach_2.add(623, condition, foreachForeachCondition);
            foreach_2.add(624, s);
            foreach.add(625, foreach_2);
            foreach.add(627, new Str(626, ")"));
            foreach.add(628, skip);
            foreach.add(629, block, foreachForeachBlock);
            foreach.add(630, end);

            // importcmd = :begin "#import" ws stringExp:filename [ws "as text":asText] skip
            importcmd.add(632, new Marker(631, "begin", importcmdImportcmdBegin));
            importcmd.add(634, new Str(633, "#import"));
            importcmd.add(635, ws);
            importcmd.add(636, stringExp, importcmdImportcmdFilename);
            Optional importcmd_1 = new Optional(637, "importcmd_1");
            importcmd_1.add(638, ws);
            importcmd_1.add(640, new Str(639, "as text", importcmdImportcmdAsText));
            importcmd.add(641, importcmd_1);
            importcmd.add(642, skip);

            // macro = :begin "#macro" ws varname:name s "(" s [varname:parameter [s "," s varname:parameter]+] s ")" skip [block] end
            macro.add(644, new Marker(643, "begin", macroMacroBegin));
            macro.add(646, new Str(645, "#macro"));
            macro.add(647, ws);
            macro.add(648, varname, macroMacroName);
            macro.add(649, s);
            macro.add(651, new Str(650, "("));
            macro.add(652, s);
            Optional macro_1 = new Optional(653, "macro_1");
            macro_1.add(654, varname, macroMacroParameter);
            Optional macro_1_1 = new Optional(655, "macro_1_1");
            Repeat macro_1_1_1 = new Repeat(656, "macro_1_1_1");
            macro_1_1_1.add(657, s);
            macro_1_1_1.add(659, new Str(658, ","));
            macro_1_1_1.add(660, s);
            macro_1_1_1.add(661, varname, macroMacroParameter);
            macro_1_1.add(662, macro_1_1_1);
            macro_1.add(663, macro_1_1);
            macro.add(664, macro_1);
            macro.add(665, s);
            macro.add(667, new Str(666, ")"));
            macro.add(668, skip);
            Optional macro_2 = new Optional(669, "macro_2");
            macro_2.add(670, block, macroMacroBlock);
            macro.add(671, macro_2);
            macro.add(672, end);

            // returncmd = [spaces] "#return" s ("(" s data s ")") | comparition|data skip
            Optional returncmd_1 = new Optional(673, "returncmd_1");
            returncmd_1.add(674, spaces);
            returncmd.add(675, returncmd_1);
            returncmd.add(677, new Str(676, "#return"));
            returncmd.add(678, s);
            OrList returncmd_2 = new OrList(679, "returncmd_2");
            ElementList returncmd_2_1 = new ElementList(680, "returncmd_2_1");
            returncmd_2_1.add(682, new Str(681, "("));
            returncmd_2_1.add(683, s);
            returncmd_2_1.add(684, data, returncmdReturncmdData);
            returncmd_2_1.add(685, s);
            returncmd_2_1.add(687, new Str(686, ")"));
            returncmd_2.add(688, returncmd_2_1);
            returncmd_2.add(689, comparition, returncmdReturncmdComparition);
            returncmd_2.add(690, data, returncmdReturncmdData);
            returncmd.add(691, returncmd_2);
            returncmd.add(692, skip);

            // function = :begin "#function" ws varname:name s "(" s [varname:parameter [s "," s varname:parameter]+] s ")" skip [block] end
            function.add(694, new Marker(693, "begin"));
            function.add(696, new Str(695, "#function"));
            function.add(697, ws);
            function.add(698, varname, functionFunctionName);
            function.add(699, s);
            function.add(701, new Str(700, "("));
            function.add(702, s);
            Optional function_1 = new Optional(703, "function_1");
            function_1.add(704, varname, functionFunctionParameter);
            Optional function_1_1 = new Optional(705, "function_1_1");
            Repeat function_1_1_1 = new Repeat(706, "function_1_1_1");
            function_1_1_1.add(707, s);
            function_1_1_1.add(709, new Str(708, ","));
            function_1_1_1.add(710, s);
            function_1_1_1.add(711, varname, functionFunctionParameter);
            function_1_1.add(712, function_1_1_1);
            function_1.add(713, function_1_1);
            function.add(714, function_1);
            function.add(715, s);
            function.add(717, new Str(716, ")"));
            function.add(718, skip);
            Optional function_2 = new Optional(719, "function_2");
            function_2.add(720, block, functionFunctionBlock);
            function.add(721, function_2);
            function.add(722, end);

            // namespace = "#namespace" ws varname:name skip
            namespace.add(724, new Str(723, "#namespace"));
            namespace.add(725, ws);
            namespace.add(726, varname, namespaceNamespaceName);
            namespace.add(727, skip);

            // error = :begin "#error" s "(" s stringExp:message s ")" skip
            error.add(729, new Marker(728, "begin", errorErrorBegin));
            error.add(731, new Str(730, "#error"));
            error.add(732, s);
            error.add(734, new Str(733, "("));
            error.add(735, s);
            error.add(736, stringExp, errorErrorMessage);
            error.add(737, s);
            error.add(739, new Str(738, ")"));
            error.add(740, skip);

            // command = [spaces] local|set|write|ifcmd|whilecmd|foreach|importcmd|error|macro|function|call
            Optional command_1 = new Optional(741, "command_1");
            command_1.add(742, spaces);
            command.add(743, command_1);
            OrList command_2 = new OrList(744, "command_2");
            command_2.add(745, local, commandCommandLocal);
            command_2.add(746, set, commandCommandSet);
            command_2.add(747, write, commandCommandWrite);
            command_2.add(748, ifcmd, commandCommandIfcmd);
            command_2.add(749, whilecmd, commandCommandWhilecmd);
            command_2.add(750, foreach, commandCommandForeach);
            command_2.add(751, importcmd, commandCommandImportcmd);
            command_2.add(752, error, commandCommandError);
            command_2.add(753, macro, commandCommandMacro);
            command_2.add(754, function, commandCommandFunction);
            command_2.add(755, call, commandCommandCall);
            command.add(756, command_2);

            // astext = "#>" [!"<#"+]:text "<#"
            astext.add(758, new Str(757, "#>"));
            Optional astext_1 = new Optional(759, "astext_1", blockAstextText);
            Repeat astext_1_1 = new Repeat(760, "astext_1_1");
            astext_1_1.add(762, new Str(761, "<#", NOT));
            astext_1.add(763, astext_1_1);
            astext.add(764, astext_1);
            astext.add(766, new Str(765, "<#"));

            // text = !(([spaces] "##"|"#*"|"#>"|("#" (letter | "$"))) | stringref)+
            OrList text_1 = new OrList(767, "text_1");
            ElementList text_1_1 = new ElementList(768, "text_1_1");
            Optional text_1_1_1 = new Optional(769, "text_1_1_1");
            text_1_1_1.add(770, spaces);
            text_1_1.add(771, text_1_1_1);
            OrList text_1_1_2 = new OrList(772, "text_1_1_2");
            text_1_1_2.add(774, new Str(773, "##"));
            text_1_1_2.add(776, new Str(775, "#*"));
            text_1_1_2.add(778, new Str(777, "#>"));
            ElementList text_1_1_2_1 = new ElementList(779, "text_1_1_2_1");
            text_1_1_2_1.add(781, new Str(780, "#"));
            OrList text_1_1_2_1_1 = new OrList(782, "text_1_1_2_1_1");
            text_1_1_2_1_1.add(783, letter);
            text_1_1_2_1_1.add(785, new Str(784, "$"));
            text_1_1_2_1.add(786, text_1_1_2_1_1);
            text_1_1_2.add(787, text_1_1_2_1);
            text_1_1.add(788, text_1_1_2);
            text_1.add(789, text_1_1);
            text_1.add(790, stringref, textTextStringref);
            text.add(791, text_1, NOT);

            // block = [astext|returncmd|command|stringref|comment|text]+
            Repeat block_1 = new Repeat(792, "block_1");
            OrList block_1_1 = new OrList(793, "block_1_1");
            block_1_1.add(794, astext);
            block_1_1.add(795, returncmd, blockBlockReturncmd);
            block_1_1.add(796, command, blockBlockCommand);
            block_1_1.add(797, stringref, blockBlockStringref);
            block_1_1.add(798, comment);
            block_1_1.add(799, text, blockBlockText);
            block_1.add(800, block_1_1);
            block.add(801, block_1);

            // template = [namespace|(:defaultNamespace)] block|END
            Optional template_1 = new Optional(802, "template_1");
            OrList template_1_1 = new OrList(803, "template_1_1");
            template_1_1.add(804, namespace, templateTemplateNamespace);
            template_1_1.add(806, new Marker(805, "defaultNamespace", templateTemplateDefaultNamespace));
            template_1.add(807, template_1_1);
            template.add(808, template_1);
            OrList template_2 = new OrList(809, "template_2");
            template_2.add(810, block, templateTemplateBlock);
            template_2.add(812, new End(811, "template_2"));
            template.add(813, template_2);
    View Full Code Here

    Examples of net.sf.laja.parser.engine2.element.Optional

            // *** Declarations ***
            OrList newline = new OrList(1, "newline");
            OrList comment = new OrList(2, "comment");
            Repeat ws = new Repeat(3, "ws");
            Optional s = new Optional(4, "s");
            Range digit = new Range(5, "digit", "0", "9");
            Repeat integer = new Repeat(6, "integer");
            Range lower = new Range(7, "lower", "a", "z");
            Range upper = new Range(8, "upper", "A", "Z");
            Optional xname = new Optional(9, "xname");
            ElementList lname = new ElementList(10, "lname");
            ElementList uname = new ElementList(11, "uname");
            Str ff = new Str(12, "\"");
            ElementList str = new ElementList(13, "str");
            ElementList reference = new ElementList(14, "reference");
            ElementList variable = new ElementList(15, "variable");
            OrList range1 = new OrList(16, "range1");
            ElementList range = new ElementList(17, "range");
            Str end = new Str(18, "END");
            Str complete = new Str(19, "*");
            ElementList repeats = new ElementList(20, "repeats");
            ElementList valx = new ElementList(21, "valx");
            ElementList marker = new ElementList(22, "marker");
            ElementList valprim = new ElementList(23, "valprim");
            ElementList valpar = new ElementList(24, "valpar");
            ElementList valor = new ElementList(25, "valor");
            ElementList valopt = new ElementList(26, "valopt");
            ElementList valand = new ElementList(27, "valand");
            Repeat valstmt = new Repeat(28, "valstmt");
            ElementList val = new ElementList(29, "val");
            ElementList def = new ElementList(30, "def");
            ElementList classvar = new ElementList(31, "classvar");
            ElementList constructor = new ElementList(32, "constructor");
            ElementList outputclass = new ElementList(33, "outputclass");
            ElementList omarg = new ElementList(34, "omarg");
            ElementList outputmethod = new ElementList(35, "outputmethod");
            ElementList outputvar = new ElementList(36, "outputvar");
            ElementList grammar = new ElementList(37, "grammar");

            // *** Statements ***

            // newline = "\r\n" | "\n"
            newline.add(39, new Str(38, "\r\n"));
            newline.add(41, new Str(40, "\n"));

            // comment = ("/*" [(comment | !"*/")+] "*/") | ("//" [!newline+] newline|END)
            ElementList comment_1 = new ElementList(42, "comment_1");
            comment_1.add(44, new Str(43, "/*"));
            Optional comment_1_1 = new Optional(45, "comment_1_1");
            Repeat comment_1_1_1 = new Repeat(46, "comment_1_1_1");
            OrList comment_1_1_1_1 = new OrList(47, "comment_1_1_1_1");
            comment_1_1_1_1.add(48, comment);
            comment_1_1_1_1.add(50, new Str(49, "*/", NOT));
            comment_1_1_1.add(51, comment_1_1_1_1);
            comment_1_1.add(52, comment_1_1_1);
            comment_1.add(53, comment_1_1);
            comment_1.add(55, new Str(54, "*/"));
            comment.add(56, comment_1);
            ElementList comment_2 = new ElementList(57, "comment_2");
            comment_2.add(59, new Str(58, "//"));
            Optional comment_2_1 = new Optional(60, "comment_2_1");
            Repeat comment_2_1_1 = new Repeat(61, "comment_2_1_1");
            comment_2_1_1.add(62, newline, NOT);
            comment_2_1.add(63, comment_2_1_1);
            comment_2.add(64, comment_2_1);
            OrList comment_2_2 = new OrList(65, "comment_2_2");
            comment_2_2.add(66, newline);
            comment_2_2.add(68, new End(67, "comment_2_2"));
            comment_2.add(69, comment_2_2);
            comment.add(70, comment_2);

            // ws = (newline | " " | "\t" | comment)+
            OrList ws_1 = new OrList(71, "ws_1");
            ws_1.add(72, newline);
            ws_1.add(74, new Str(73, " "));
            ws_1.add(76, new Str(75, "\t"));
            ws_1.add(77, comment);
            ws.add(78, ws_1);

            // s = [ws]
            s.add(79, ws);

            // digit = "0".."9"

            // integer = digit+
            integer.add(80, digit);

            // lower = "a".."z"

            // upper = "A".."Z"

            // xname = [lower|upper|digit]+
            Repeat xname_1 = new Repeat(81, "xname_1");
            OrList xname_1_1 = new OrList(82, "xname_1_1");
            xname_1_1.add(83, lower);
            xname_1_1.add(84, upper);
            xname_1_1.add(85, digit);
            xname_1.add(86, xname_1_1);
            xname.add(87, xname_1);

            // lname = lower xname
            lname.add(88, lower);
            lname.add(89, xname);

            // uname = upper xname
            uname.add(90, upper);
            uname.add(91, xname);

            // ff = "\""

            // str = ff (("\\\"" | !(ff|newline))+):strval ff
            str.add(92, ff);
            Repeat str_1 = new Repeat(93, "str_1");
            OrList str_1_1 = new OrList(94, "str_1_1");
            str_1_1.add(96, new Str(95, "\\\""));
            OrList str_1_1_1 = new OrList(97, "str_1_1_1", NOT);
            str_1_1_1.add(98, ff);
            str_1_1_1.add(99, newline);
            str_1_1.add(100, str_1_1_1);
            str_1.add(101, str_1_1);
            str.add(102, str_1);
            str.add(103, ff);

            // reference = lname
            reference.add(104, lname);

            // variable = "$" lname:name
            variable.add(106, new Str(105, "$"));
            variable.add(107, lname);

            // range1 = integer|str
            range1.add(108, integer);
            range1.add(109, str);

            // range = range1 ".." range1
            range.add(110, range1);
            range.add(112, new Str(111, ".."));
            range.add(113, range1);

            // end = "END"

            // complete = "*"

            // repeats = "#" integer:min [".." (integer|"*"):max]
            repeats.add(115, new Str(114, "#"));
            repeats.add(116, integer);
            Optional repeats_1 = new Optional(117, "repeats_1");
            repeats_1.add(119, new Str(118, ".."));
            OrList repeats_1_1 = new OrList(120, "repeats_1_1");
            repeats_1_1.add(121, integer);
            repeats_1_1.add(123, new Str(122, "*"));
            repeats_1.add(124, repeats_1_1);
            repeats.add(125, repeats_1);

            // valx = [":" lname:varname] ["+":repeat|repeats [":" lname:repeatName]]
            Optional valx_1 = new Optional(126, "valx_1");
            valx_1.add(128, new Str(127, ":"));
            valx_1.add(129, lname);
            valx.add(130, valx_1);
            Optional valx_2 = new Optional(131, "valx_2");
            OrList valx_2_1 = new OrList(132, "valx_2_1");
            valx_2_1.add(134, new Str(133, "+"));
            valx_2_1.add(135, repeats);
            valx_2.add(136, valx_2_1);
            Optional valx_2_2 = new Optional(137, "valx_2_2");
            valx_2_2.add(139, new Str(138, ":"));
            valx_2_2.add(140, lname);
            valx_2.add(141, valx_2_2);
            valx.add(142, valx_2);

            // marker = ":" lname:name
            marker.add(144, new Str(143, ":"));
            marker.add(145, lname);

            // valprim = s ["!":not s] range|integer|str|reference|variable|complete|end valx
            valprim.add(146, s);
            Optional valprim_1 = new Optional(147, "valprim_1");
            valprim_1.add(149, new Str(148, "!"));
            valprim_1.add(150, s);
            valprim.add(151, valprim_1);
            OrList valprim_2 = new OrList(152, "valprim_2");
            valprim_2.add(153, range);
            valprim_2.add(154, integer);
            valprim_2.add(155, str);
            valprim_2.add(156, reference);
            valprim_2.add(157, variable);
            valprim_2.add(158, complete);
            valprim_2.add(159, end);
            valprim.add(160, valprim_2);
            valprim.add(161, valx);

            // valpar = s ["!":not s] ["CS":cs|"CI":ci s] "(" s val s ")" valx
            valpar.add(162, s);
            Optional valpar_1 = new Optional(163, "valpar_1");
            valpar_1.add(165, new Str(164, "!"));
            valpar_1.add(166, s);
            valpar.add(167, valpar_1);
            Optional valpar_2 = new Optional(168, "valpar_2");
            OrList valpar_2_1 = new OrList(169, "valpar_2_1");
            valpar_2_1.add(171, new Str(170, "CS"));
            valpar_2_1.add(173, new Str(172, "CI"));
            valpar_2.add(174, valpar_2_1);
            valpar_2.add(175, s);
            valpar.add(176, valpar_2);
            valpar.add(178, new Str(177, "("));
            valpar.add(179, s);
            valpar.add(180, val);
            valpar.add(181, s);
            valpar.add(183, new Str(182, ")"));
            valpar.add(184, valx);

            // valor = s valprim|valpar [s "|" s valprim|valpar]+
            valor.add(185, s);
            OrList valor_1 = new OrList(186, "valor_1");
            valor_1.add(187, valprim);
            valor_1.add(188, valpar);
            valor.add(189, valor_1);
            Optional valor_2 = new Optional(190, "valor_2");
            Repeat valor_2_1 = new Repeat(191, "valor_2_1");
            valor_2_1.add(192, s);
            valor_2_1.add(194, new Str(193, "|"));
            valor_2_1.add(195, s);
            OrList valor_2_1_1 = new OrList(196, "valor_2_1_1");
            valor_2_1_1.add(197, valprim);
            valor_2_1_1.add(198, valpar);
            valor_2_1.add(199, valor_2_1_1);
            valor_2.add(200, valor_2_1);
            valor.add(201, valor_2);

            // valopt = s "[" s val s "]" valx
            valopt.add(202, s);
            valopt.add(204, new Str(203, "["));
            valopt.add(205, s);
            valopt.add(206, val);
            valopt.add(207, s);
            valopt.add(209, new Str(208, "]"));
            valopt.add(210, valx);

            // valand = valor:mainAnd s "&" s valor|valopt [s "&" s valor|valopt]+
            valand.add(211, valor);
            valand.add(212, s);
            valand.add(214, new Str(213, "&"));
            valand.add(215, s);
            OrList valand_1 = new OrList(216, "valand_1");
            valand_1.add(217, valor);
            valand_1.add(218, valopt);
            valand.add(219, valand_1);
            Optional valand_2 = new Optional(220, "valand_2");
            Repeat valand_2_1 = new Repeat(221, "valand_2_1");
            valand_2_1.add(222, s);
            valand_2_1.add(224, new Str(223, "&"));
            valand_2_1.add(225, s);
            OrList valand_2_1_1 = new OrList(226, "valand_2_1_1");
            valand_2_1_1.add(227, valor);
            valand_2_1_1.add(228, valopt);
            valand_2_1.add(229, valand_2_1_1);
            valand_2.add(230, valand_2_1);
            valand.add(231, valand_2);

            // valstmt = (s valand|valor|valopt|marker)+
            valstmt.add(232, s);
            OrList valstmt_1 = new OrList(233, "valstmt_1");
            valstmt_1.add(234, valand);
            valstmt_1.add(235, valor);
            valstmt_1.add(236, valopt);
            valstmt_1.add(237, marker);
            valstmt.add(238, valstmt_1);

            // val = valstmt [s 92 s valstmt:followedby]
            val.add(239, valstmt);
            Optional val_1 = new Optional(240, "val_1");
            val_1.add(241, s);
            val_1.add(243, new Chr(242, (char)92));
            val_1.add(244, s);
            val_1.add(245, valstmt);
            val.add(246, val_1);

            // def = lname:var s "=" s val s ";"
            def.add(247, lname);
            def.add(248, s);
            def.add(250, new Str(249, "="));
            def.add(251, s);
            def.add(252, val);
            def.add(253, s);
            def.add(255, new Str(254, ";"));

            // classvar = uname:class ws lname:var
            classvar.add(256, uname);
            classvar.add(257, ws);
            classvar.add(258, lname);

            // constructor = "(" s classvar s ["," s classvar s]+ ")"
            constructor.add(260, new Str(259, "("));
            constructor.add(261, s);
            constructor.add(262, classvar);
            constructor.add(263, s);
            Optional constructor_1 = new Optional(264, "constructor_1");
            Repeat constructor_1_1 = new Repeat(265, "constructor_1_1");
            constructor_1_1.add(267, new Str(266, ","));
            constructor_1_1.add(268, s);
            constructor_1_1.add(269, classvar);
            constructor_1_1.add(270, s);
            constructor_1.add(271, constructor_1_1);
            constructor.add(272, constructor_1);
            constructor.add(274, new Str(273, ")"));

            // outputclass = uname:class [constructor] ws lname:var s ";"
            outputclass.add(275, uname);
            Optional outputclass_1 = new Optional(276, "outputclass_1");
            outputclass_1.add(277, constructor);
            outputclass.add(278, outputclass_1);
            outputclass.add(279, ws);
            outputclass.add(280, lname);
            outputclass.add(281, s);
            outputclass.add(283, new Str(282, ";"));

            // omarg = s "," s "String":str | "Index":index ws lname:arg
            omarg.add(284, s);
            omarg.add(286, new Str(285, ","));
            omarg.add(287, s);
            OrList omarg_1 = new OrList(288, "omarg_1");
            omarg_1.add(290, new Str(289, "String"));
            omarg_1.add(292, new Str(291, "Index"));
            omarg.add(293, omarg_1);
            omarg.add(294, ws);
            omarg.add(295, lname);

            // outputmethod =
            //   [uname:class [constructor] ws] ["$":setter ws] lname:ref "." lname:method s "(" s
            //   (("void":void ws) | ("String":str ws) | ("Index":index ws) | (uname:argclass ws)
            //   [lname:carg "."] (lname|"*"):arg)
            //   [omarg+] s ")" s ";"
            Optional outputmethod_1 = new Optional(296, "outputmethod_1");
            outputmethod_1.add(297, uname);
            Optional outputmethod_1_1 = new Optional(298, "outputmethod_1_1");
            outputmethod_1_1.add(299, constructor);
            outputmethod_1.add(300, outputmethod_1_1);
            outputmethod_1.add(301, ws);
            outputmethod.add(302, outputmethod_1);
            Optional outputmethod_2 = new Optional(303, "outputmethod_2");
            outputmethod_2.add(305, new Str(304, "$"));
            outputmethod_2.add(306, ws);
            outputmethod.add(307, outputmethod_2);
            outputmethod.add(308, lname);
            outputmethod.add(310, new Str(309, "."));
            outputmethod.add(311, lname);
            outputmethod.add(312, s);
            outputmethod.add(314, new Str(313, "("));
            outputmethod.add(315, s);
            ElementList outputmethod_3 = new ElementList(316, "outputmethod_3");
            OrList outputmethod_3_1 = new OrList(317, "outputmethod_3_1");
            ElementList outputmethod_3_1_1 = new ElementList(318, "outputmethod_3_1_1");
            outputmethod_3_1_1.add(320, new Str(319, "void"));
            outputmethod_3_1_1.add(321, ws);
            outputmethod_3_1.add(322, outputmethod_3_1_1);
            ElementList outputmethod_3_1_2 = new ElementList(323, "outputmethod_3_1_2");
            outputmethod_3_1_2.add(325, new Str(324, "String"));
            outputmethod_3_1_2.add(326, ws);
            outputmethod_3_1.add(327, outputmethod_3_1_2);
            ElementList outputmethod_3_1_3 = new ElementList(328, "outputmethod_3_1_3");
            outputmethod_3_1_3.add(330, new Str(329, "Index"));
            outputmethod_3_1_3.add(331, ws);
            outputmethod_3_1.add(332, outputmethod_3_1_3);
            ElementList outputmethod_3_1_4 = new ElementList(333, "outputmethod_3_1_4");
            outputmethod_3_1_4.add(334, uname);
            outputmethod_3_1_4.add(335, ws);
            outputmethod_3_1.add(336, outputmethod_3_1_4);
            outputmethod_3.add(337, outputmethod_3_1);
            Optional outputmethod_3_2 = new Optional(338, "outputmethod_3_2");
            outputmethod_3_2.add(339, lname);
            outputmethod_3_2.add(341, new Str(340, "."));
            outputmethod_3.add(342, outputmethod_3_2);
            OrList outputmethod_3_3 = new OrList(343, "outputmethod_3_3");
            outputmethod_3_3.add(344, lname);
            outputmethod_3_3.add(346, new Str(345, "*"));
            outputmethod_3.add(347, outputmethod_3_3);
            outputmethod.add(348, outputmethod_3);
            Optional outputmethod_4 = new Optional(349, "outputmethod_4");
            Repeat outputmethod_4_1 = new Repeat(350, "outputmethod_4_1");
            outputmethod_4_1.add(351, omarg);
            outputmethod_4.add(352, outputmethod_4_1);
            outputmethod.add(353, outputmethod_4);
            outputmethod.add(354, s);
            outputmethod.add(356, new Str(355, ")"));
            outputmethod.add(357, s);
            outputmethod.add(359, new Str(358, ";"));
    View Full Code Here

    Examples of net.sf.laja.parser.engine2.element.Optional

            // *** Declarations ***
            OrList newline = new OrList(1, "newline");
            ElementList comment = new ElementList(2, "comment");
            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");
            Repeat unsignedInt = new Repeat(9, "unsignedInt");
            ElementList integerData = new ElementList(10, "integerData");
            ElementList floatData = new ElementList(11, "floatData");
            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");
            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");
            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");
            OrList stringExp_1_1_1 = new OrList(169, "stringExp_1_1_1");
            stringExp_1_1_1.add(170, stringref);
            Repeat stringExp_1_1_1_1 = new Repeat(171, "stringExp_1_1_1_1");
            OrList stringExp_1_1_1_1_1 = new OrList(172, "stringExp_1_1_1_1_1");
            stringExp_1_1_1_1_1.add(174, new Str(173, "\\\""));
            OrList stringExp_1_1_1_1_1_1 = new OrList(175, "stringExp_1_1_1_1_1_1", NOT);
            stringExp_1_1_1_1_1_1.add(176, ff);
            stringExp_1_1_1_1_1_1.add(177, stringref);
            stringExp_1_1_1_1_1.add(178, stringExp_1_1_1_1_1_1);
            stringExp_1_1_1_1.add(179, stringExp_1_1_1_1_1);
            stringExp_1_1_1.add(180, stringExp_1_1_1_1);
            stringExp_1_1.add(181, stringExp_1_1_1);
            stringExp_1.add(182, stringExp_1_1);
            stringExp.add(183, stringExp_1);
            stringExp.add(184, ff);

            // classOrPackageName = letter|"$" [letter|digit|"$"]+
            OrList classOrPackageName_1 = new OrList(185, "classOrPackageName_1");
            classOrPackageName_1.add(186, letter);
            classOrPackageName_1.add(188, new Str(187, "$"));
            classOrPackageName.add(189, classOrPackageName_1);
            Optional classOrPackageName_2 = new Optional(190, "classOrPackageName_2");
            Repeat classOrPackageName_2_1 = new Repeat(191, "classOrPackageName_2_1");
            OrList classOrPackageName_2_1_1 = new OrList(192, "classOrPackageName_2_1_1");
            classOrPackageName_2_1_1.add(193, letter);
            classOrPackageName_2_1_1.add(194, digit);
            classOrPackageName_2_1_1.add(196, new Str(195, "$"));
            classOrPackageName_2_1.add(197, classOrPackageName_2_1_1);
            classOrPackageName_2.add(198, classOrPackageName_2_1);
            classOrPackageName.add(199, classOrPackageName_2);

            // newStatement = "new" ws classOrPackageName ["." classOrPackageName]+ s args
            newStatement.add(201, new Str(200, "new"));
            newStatement.add(202, ws);
            newStatement.add(203, classOrPackageName);
            Optional newStatement_1 = new Optional(204, "newStatement_1");
            Repeat newStatement_1_1 = new Repeat(205, "newStatement_1_1");
            newStatement_1_1.add(207, new Str(206, "."));
            newStatement_1_1.add(208, classOrPackageName);
            newStatement_1.add(209, newStatement_1_1);
            newStatement.add(210, newStatement_1);
            newStatement.add(211, s);
            newStatement.add(212, args);

            // data = newStatement | stringExp | listData | mapDataRef | nullData | booleanData | reference | floatData | integerData
            data.add(213, newStatement);
            data.add(214, stringExp);
            data.add(215, listData);
            data.add(216, mapDataRef);
            data.add(217, nullData);
            data.add(218, booleanData);
            data.add(219, reference);
            data.add(220, floatData);
            data.add(221, integerData);

            // listData = "[" s [data [s "," s data]+ s] "]" [s "as array":array]
            listData.add(223, new Str(222, "["));
            listData.add(224, s);
            Optional listData_1 = new Optional(225, "listData_1");
            listData_1.add(226, data);
            Optional listData_1_1 = new Optional(227, "listData_1_1");
            Repeat listData_1_1_1 = new Repeat(228, "listData_1_1_1");
            listData_1_1_1.add(229, s);
            listData_1_1_1.add(231, new Str(230, ","));
            listData_1_1_1.add(232, s);
            listData_1_1_1.add(233, data);
            listData_1_1.add(234, listData_1_1_1);
            listData_1.add(235, listData_1_1);
            listData_1.add(236, s);
            listData.add(237, listData_1);
            listData.add(239, new Str(238, "]"));
            Optional listData_2 = new Optional(240, "listData_2");
            listData_2.add(241, s);
            listData_2.add(243, new Str(242, "as array"));
            listData.add(244, listData_2);

            // mapMember = varname:name s ":" s data
            mapMember.add(245, varname);
            mapMember.add(246, s);
            mapMember.add(248, new Str(247, ":"));
            mapMember.add(249, s);
            mapMember.add(250, data);

            // mapDataRef = "{" [mapData] "}"
            mapDataRef.add(252, new Str(251, "{"));
            Optional mapDataRef_1 = new Optional(253, "mapDataRef_1");
            mapDataRef_1.add(254, mapData);
            mapDataRef.add(255, mapDataRef_1);
            mapDataRef.add(257, new Str(256, "}"));

            // mapData = (s mapMember)+ s
            Repeat mapData_1 = new Repeat(258, "mapData_1");
            mapData_1.add(259, s);
            mapData_1.add(260, mapMember);
            mapData.add(261, mapData_1);
            mapData.add(262, s);

            // indexItem = unsignedInt | reference
            indexItem.add(263, unsignedInt);
            indexItem.add(264, reference);

            // listIndex = ("[" indexItem "]")+
            listIndex.add(266, new Str(265, "["));
            listIndex.add(267, indexItem);
            listIndex.add(269, new Str(268, "]"));

            // args = "(" s mapData|([data [s "," s data]+]) s ")"
            args.add(271, new Str(270, "("));
            args.add(272, s);
            OrList args_1 = new OrList(273, "args_1");
            args_1.add(274, mapData);
            Optional args_1_1 = new Optional(275, "args_1_1");
            args_1_1.add(276, data);
            Optional args_1_1_1 = new Optional(277, "args_1_1_1");
            Repeat args_1_1_1_1 = new Repeat(278, "args_1_1_1_1");
            args_1_1_1_1.add(279, s);
            args_1_1_1_1.add(281, new Str(280, ","));
            args_1_1_1_1.add(282, s);
            args_1_1_1_1.add(283, data);
            args_1_1_1.add(284, args_1_1_1_1);
            args_1_1.add(285, args_1_1_1);
            args_1.add(286, args_1_1);
            args.add(287, args_1);
            args.add(288, s);
            args.add(290, new Str(289, ")"));

            // namespaceRef = "$" [varname]:namespace
            namespaceRef.add(292, new Str(291, "$"));
            Optional namespaceRef_1 = new Optional(293, "namespaceRef_1");
            namespaceRef_1.add(294, varname);
            namespaceRef.add(295, namespaceRef_1);

            // variableRef = varname:variableName
            variableRef.add(296, varname);

            // methodRef = varname:methodName s args
            methodRef.add(297, varname);
            methodRef.add(298, s);
            methodRef.add(299, args);

            // attributeRef = methodRef|variableRef [listIndex]
            OrList attributeRef_1 = new OrList(300, "attributeRef_1");
            attributeRef_1.add(301, methodRef);
            attributeRef_1.add(302, variableRef);
            attributeRef.add(303, attributeRef_1);
            Optional attributeRef_2 = new Optional(304, "attributeRef_2");
            attributeRef_2.add(305, listIndex);
            attributeRef.add(306, attributeRef_2);

            // attributeVariableRef = variableRef [listIndex]
            attributeVariableRef.add(307, variableRef);
            Optional attributeVariableRef_1 = new Optional(308, "attributeVariableRef_1");
            attributeVariableRef_1.add(309, listIndex);
            attributeVariableRef.add(310, attributeVariableRef_1);

            // attributeMethodRef = methodRef [listIndex]
            attributeMethodRef.add(311, methodRef);
            Optional attributeMethodRef_1 = new Optional(312, "attributeMethodRef_1");
            attributeMethodRef_1.add(313, listIndex);
            attributeMethodRef.add(314, attributeMethodRef_1);

            // reference =
            //   :begin (([namespaceRef "."] attributeRef)|namespaceRef ["." attributeRef:nextAttributeRef]+) |
            //   (floatData|integerData|stringExp ("." attributeRef:nextAttributeRef)+)
            reference.add(316, new Marker(315, "begin"));
            OrList reference_1 = new OrList(317, "reference_1");
            ElementList reference_1_1 = new ElementList(318, "reference_1_1");
            OrList reference_1_1_1 = new OrList(319, "reference_1_1_1");
            ElementList reference_1_1_1_1 = new ElementList(320, "reference_1_1_1_1");
            Optional reference_1_1_1_1_1 = new Optional(321, "reference_1_1_1_1_1");
            reference_1_1_1_1_1.add(322, namespaceRef);
            reference_1_1_1_1_1.add(324, new Str(323, "."));
            reference_1_1_1_1.add(325, reference_1_1_1_1_1);
            reference_1_1_1_1.add(326, attributeRef);
            reference_1_1_1.add(327, reference_1_1_1_1);
            reference_1_1_1.add(328, namespaceRef);
            reference_1_1.add(329, reference_1_1_1);
            Optional reference_1_1_2 = new Optional(330, "reference_1_1_2");
            Repeat reference_1_1_2_1 = new Repeat(331, "reference_1_1_2_1");
            reference_1_1_2_1.add(333, new Str(332, "."));
            reference_1_1_2_1.add(334, attributeRef);
            reference_1_1_2.add(335, reference_1_1_2_1);
            reference_1_1.add(336, reference_1_1_2);
            reference_1.add(337, reference_1_1);
            ElementList reference_1_2 = new ElementList(338, "reference_1_2");
            OrList reference_1_2_1 = new OrList(339, "reference_1_2_1");
            reference_1_2_1.add(340, floatData);
            reference_1_2_1.add(341, integerData);
            reference_1_2_1.add(342, stringExp);
            reference_1_2.add(343, reference_1_2_1);
            Repeat reference_1_2_2 = new Repeat(344, "reference_1_2_2");
            reference_1_2_2.add(346, new Str(345, "."));
            reference_1_2_2.add(347, attributeRef);
            reference_1_2.add(348, reference_1_2_2);
            reference_1.add(349, reference_1_2);
            reference.add(350, reference_1);

            // callReference =
            //   :begin (([namespaceRef "."](attributeMethodRef)|(attributeVariableRef ("." attributeRef:nextAttributeRef)+))
            //   ["." attributeRef:nextAttributeRef]+)
            callReference.add(352, new Marker(351, "begin"));
            ElementList callReference_1 = new ElementList(353, "callReference_1");
            ElementList callReference_1_1 = new ElementList(354, "callReference_1_1");
            Optional callReference_1_1_1 = new Optional(355, "callReference_1_1_1");
            callReference_1_1_1.add(356, namespaceRef);
            callReference_1_1_1.add(358, new Str(357, "."));
            callReference_1_1.add(359, callReference_1_1_1);
            OrList callReference_1_1_2 = new OrList(360, "callReference_1_1_2");
            callReference_1_1_2.add(361, attributeMethodRef);
            ElementList callReference_1_1_2_1 = new ElementList(362, "callReference_1_1_2_1");
            callReference_1_1_2_1.add(363, attributeVariableRef);
            Repeat callReference_1_1_2_1_1 = new Repeat(364, "callReference_1_1_2_1_1");
            callReference_1_1_2_1_1.add(366, new Str(365, "."));
            callReference_1_1_2_1_1.add(367, attributeRef);
            callReference_1_1_2_1.add(368, callReference_1_1_2_1_1);
            callReference_1_1_2.add(369, callReference_1_1_2_1);
            callReference_1_1.add(370, callReference_1_1_2);
            callReference_1.add(371, callReference_1_1);
            Optional callReference_1_2 = new Optional(372, "callReference_1_2");
            Repeat callReference_1_2_1 = new Repeat(373, "callReference_1_2_1");
            callReference_1_2_1.add(375, new Str(374, "."));
            callReference_1_2_1.add(376, attributeRef);
            callReference_1_2.add(377, callReference_1_2_1);
            callReference_1.add(378, callReference_1_2);
            callReference.add(379, callReference_1);

            // stringref = :begin "{" "..":parentDir | ".":currentDir | reference "}"
            stringref.add(381, new Marker(380, "begin"));
            stringref.add(383, new Str(382, "{"));
            OrList stringref_1 = new OrList(384, "stringref_1");
            stringref_1.add(386, new Str(385, ".."));
            stringref_1.add(388, new Str(387, "."));
            stringref_1.add(389, reference);
            stringref.add(390, stringref_1);
            stringref.add(392, new Str(391, "}"));

            // end = [spaces] "#end" skip
            Optional end_1 = new Optional(393, "end_1");
            end_1.add(394, spaces);
            end.add(395, end_1);
            end.add(397, new Str(396, "#end"));
            end.add(398, skip);

            // write = :begin "#write" ws stringExp:filename skip block end
            write.add(400, new Marker(399, "begin"));
            write.add(402, new Str(401, "#write"));
            write.add(403, ws);
            write.add(404, stringExp);
            write.add(405, skip);
            write.add(406, block);
            write.add(407, end);

            // set = :begin "#set" s "(" s reference:target s "=" s comparition|data s ")" skip
            set.add(409, new Marker(408, "begin"));
            set.add(411, new Str(410, "#set"));
            set.add(412, s);
            set.add(414, new Str(413, "("));
            set.add(415, s);
            set.add(416, reference);
            set.add(417, s);
            set.add(419, new Str(418, "="));
            set.add(420, s);
            OrList set_1 = new OrList(421, "set_1");
            set_1.add(422, comparition);
            set_1.add(423, data);
            set.add(424, set_1);
            set.add(425, s);
            set.add(427, new Str(426, ")"));
            set.add(428, skip);

            // local = "#local" s "(" s reference:target s "=" s comparition|data s ")" skip
            local.add(430, new Str(429, "#local"));
            local.add(431, s);
            local.add(433, new Str(432, "("));
            local.add(434, s);
            local.add(435, reference);
            local.add(436, s);
            local.add(438, new Str(437, "="));
            local.add(439, s);
            OrList local_1 = new OrList(440, "local_1");
            local_1.add(441, comparition);
            local_1.add(442, data);
            local.add(443, local_1);
            local.add(444, s);
            local.add(446, new Str(445, ")"));
            local.add(447, skip);

            // operator = "==":equals | "!=":notEquals | "<=":lessOrEqual | "<":lessThan | ">=":greaterOrEqual | ">":greaterThan
            operator.add(449, new Str(448, "=="));
            operator.add(451, new Str(450, "!="));
            operator.add(453, new Str(452, "<="));
            operator.add(455, new Str(454, "<"));
            operator.add(457, new Str(456, ">="));
            operator.add(459, new Str(458, ">"));

            // comparition = data:leftOperand s operator s data:rightOperand
            comparition.add(460, data);
            comparition.add(461, s);
            comparition.add(462, operator);
            comparition.add(463, s);
            comparition.add(464, data);

            // conditionElement = ["!":not] s (comparition | (reference & (!booleanData *)) | booleanData:booleanCondition)
            Optional conditionElement_1 = new Optional(465, "conditionElement_1");
            conditionElement_1.add(467, new Str(466, "!"));
            conditionElement.add(468, conditionElement_1);
            conditionElement.add(469, s);
            OrList conditionElement_2 = new OrList(470, "conditionElement_2");
            conditionElement_2.add(471, comparition);
            ElementList conditionElement_2_1 = new ElementList(472, "conditionElement_2_1");
            AndList conditionElement_2_1_1 = new AndList(473, "conditionElement_2_1_1");
            conditionElement_2_1_1.mainAnd(474, reference);
            ElementList conditionElement_2_1_1_1 = new ElementList(475, "conditionElement_2_1_1_1");
            conditionElement_2_1_1_1.add(476, booleanData, NOT);
            conditionElement_2_1_1_1.add(478, new Complete(477, "conditionElement_2_1_1_1"));
            conditionElement_2_1_1.and(479, conditionElement_2_1_1_1);
            conditionElement_2_1.add(480, conditionElement_2_1_1);
            conditionElement_2.add(481, conditionElement_2_1);
            conditionElement_2.add(482, booleanData);
            conditionElement.add(483, conditionElement_2);

            // conditionBase = conditionElement | (s "(" s condition s ")")
            conditionBase.add(484, conditionElement);
            ElementList conditionBase_1 = new ElementList(485, "conditionBase_1");
            conditionBase_1.add(486, s);
            conditionBase_1.add(488, new Str(487, "("));
            conditionBase_1.add(489, s);
            conditionBase_1.add(490, condition);
            conditionBase_1.add(491, s);
            conditionBase_1.add(493, new Str(492, ")"));
            conditionBase.add(494, conditionBase_1);

            // conditionAnd = conditionBase [s "&&" s conditionBase]+
            conditionAnd.add(495, conditionBase);
            Optional conditionAnd_1 = new Optional(496, "conditionAnd_1");
            Repeat conditionAnd_1_1 = new Repeat(497, "conditionAnd_1_1");
            conditionAnd_1_1.add(498, s);
            conditionAnd_1_1.add(500, new Str(499, "&&"));
            conditionAnd_1_1.add(501, s);
            conditionAnd_1_1.add(502, conditionBase);
            conditionAnd_1.add(503, conditionAnd_1_1);
            conditionAnd.add(504, conditionAnd_1);

            // condition = conditionAnd [s "||" s conditionAnd]+
            condition.add(505, conditionAnd);
            Optional condition_1 = new Optional(506, "condition_1");
            Repeat condition_1_1 = new Repeat(507, "condition_1_1");
            condition_1_1.add(508, s);
            condition_1_1.add(510, new Str(509, "||"));
            condition_1_1.add(511, s);
            condition_1_1.add(512, conditionAnd);
            condition_1.add(513, condition_1_1);
            condition.add(514, condition_1);

            // ifcmd = "#if" s "(" s condition s ")" skip [block] [elseif]+ [else] end
            ifcmd.add(516, new Str(515, "#if"));
            ifcmd.add(517, s);
            ifcmd.add(519, new Str(518, "("));
            ifcmd.add(520, s);
            ifcmd.add(521, condition);
            ifcmd.add(522, s);
            ifcmd.add(524, new Str(523, ")"));
            ifcmd.add(525, skip);
            Optional ifcmd_1 = new Optional(526, "ifcmd_1");
            ifcmd_1.add(527, block);
            ifcmd.add(528, ifcmd_1);
            Optional ifcmd_2 = new Optional(529, "ifcmd_2");
            Repeat ifcmd_2_1 = new Repeat(530, "ifcmd_2_1");
            ifcmd_2_1.add(531, elseif);
            ifcmd_2.add(532, ifcmd_2_1);
            ifcmd.add(533, ifcmd_2);
            Optional ifcmd_3 = new Optional(534, "ifcmd_3");
            ifcmd_3.add(535, _else);
            ifcmd.add(536, ifcmd_3);
            ifcmd.add(537, end);

            // elseif = [spaces] "#else if" s "(" s condition s ")" skip [block]
            Optional elseif_1 = new Optional(538, "elseif_1");
            elseif_1.add(539, spaces);
            elseif.add(540, elseif_1);
            elseif.add(542, new Str(541, "#else if"));
            elseif.add(543, s);
            elseif.add(545, new Str(544, "("));
            elseif.add(546, s);
            elseif.add(547, condition);
            elseif.add(548, s);
            elseif.add(550, new Str(549, ")"));
            elseif.add(551, skip);
            Optional elseif_2 = new Optional(552, "elseif_2");
            elseif_2.add(553, block);
            elseif.add(554, elseif_2);

            // else = [spaces] "#else" skip [block]
            Optional else_1 = new Optional(555, "else_1");
            else_1.add(556, spaces);
            _else.add(557, else_1);
            _else.add(559, new Str(558, "#else"));
            _else.add(560, skip);
            Optional else_2 = new Optional(561, "else_2");
            else_2.add(562, block);
            _else.add(563, else_2);

            // whilecmd = "#while" s "(" s condition s ")" skip [block] end
            whilecmd.add(565, new Str(564, "#while"));
            whilecmd.add(566, s);
            whilecmd.add(568, new Str(567, "("));
            whilecmd.add(569, s);
            whilecmd.add(570, condition);
            whilecmd.add(571, s);
            whilecmd.add(573, new Str(572, ")"));
            whilecmd.add(574, skip);
            Optional whilecmd_1 = new Optional(575, "whilecmd_1");
            whilecmd_1.add(576, block);
            whilecmd.add(577, whilecmd_1);
            whilecmd.add(578, end);

            // call = :begin "#" callReference [ws "into" ws ("$" [varname]:targetNamespace)|varname:targetVariable] skip
            call.add(580, new Marker(579, "begin"));
            call.add(582, new Str(581, "#"));
            call.add(583, callReference);
            Optional call_1 = new Optional(584, "call_1");
            call_1.add(585, ws);
            call_1.add(587, new Str(586, "into"));
            call_1.add(588, ws);
            OrList call_1_1 = new OrList(589, "call_1_1");
            ElementList call_1_1_1 = new ElementList(590, "call_1_1_1");
            call_1_1_1.add(592, new Str(591, "$"));
            Optional call_1_1_1_1 = new Optional(593, "call_1_1_1_1");
            call_1_1_1_1.add(594, varname);
            call_1_1_1.add(595, call_1_1_1_1);
            call_1_1.add(596, call_1_1_1);
            call_1_1.add(597, varname);
            call_1.add(598, call_1_1);
            call.add(599, call_1);
            call.add(600, skip);

            // foreach =
            //   :begin "#foreach" s "(" varname:variable ws "in" ws listData|mapDataRef|reference s
            //   ["where" s condition s] ")" skip block end
            foreach.add(602, new Marker(601, "begin"));
            foreach.add(604, new Str(603, "#foreach"));
            foreach.add(605, s);
            foreach.add(607, new Str(606, "("));
            foreach.add(608, varname);
            foreach.add(609, ws);
            foreach.add(611, new Str(610, "in"));
            foreach.add(612, ws);
            OrList foreach_1 = new OrList(613, "foreach_1");
            foreach_1.add(614, listData);
            foreach_1.add(615, mapDataRef);
            foreach_1.add(616, reference);
            foreach.add(617, foreach_1);
            foreach.add(618, s);
            Optional foreach_2 = new Optional(619, "foreach_2");
            foreach_2.add(621, new Str(620, "where"));
            foreach_2.add(622, s);
            foreach_2.add(623, condition);
            foreach_2.add(624, s);
            foreach.add(625, foreach_2);
            foreach.add(627, new Str(626, ")"));
            foreach.add(628, skip);
            foreach.add(629, block);
            foreach.add(630, end);

            // importcmd = :begin "#import" ws stringExp:filename [ws "as text":asText] skip
            importcmd.add(632, new Marker(631, "begin"));
            importcmd.add(634, new Str(633, "#import"));
            importcmd.add(635, ws);
            importcmd.add(636, stringExp);
            Optional importcmd_1 = new Optional(637, "importcmd_1");
            importcmd_1.add(638, ws);
            importcmd_1.add(640, new Str(639, "as text"));
            importcmd.add(641, importcmd_1);
            importcmd.add(642, skip);

            // macro = :begin "#macro" ws varname:name s "(" s [varname:parameter [s "," s varname:parameter]+] s ")" skip [block] end
            macro.add(644, new Marker(643, "begin"));
            macro.add(646, new Str(645, "#macro"));
            macro.add(647, ws);
            macro.add(648, varname);
            macro.add(649, s);
            macro.add(651, new Str(650, "("));
            macro.add(652, s);
            Optional macro_1 = new Optional(653, "macro_1");
            macro_1.add(654, varname);
            Optional macro_1_1 = new Optional(655, "macro_1_1");
            Repeat macro_1_1_1 = new Repeat(656, "macro_1_1_1");
            macro_1_1_1.add(657, s);
            macro_1_1_1.add(659, new Str(658, ","));
            macro_1_1_1.add(660, s);
            macro_1_1_1.add(661, varname);
            macro_1_1.add(662, macro_1_1_1);
            macro_1.add(663, macro_1_1);
            macro.add(664, macro_1);
            macro.add(665, s);
            macro.add(667, new Str(666, ")"));
            macro.add(668, skip);
            Optional macro_2 = new Optional(669, "macro_2");
            macro_2.add(670, block);
            macro.add(671, macro_2);
            macro.add(672, end);

            // returncmd = [spaces] "#return" s ("(" s data s ")") | comparition|data skip
            Optional returncmd_1 = new Optional(673, "returncmd_1");
            returncmd_1.add(674, spaces);
            returncmd.add(675, returncmd_1);
            returncmd.add(677, new Str(676, "#return"));
            returncmd.add(678, s);
            OrList returncmd_2 = new OrList(679, "returncmd_2");
            ElementList returncmd_2_1 = new ElementList(680, "returncmd_2_1");
            returncmd_2_1.add(682, new Str(681, "("));
            returncmd_2_1.add(683, s);
            returncmd_2_1.add(684, data);
            returncmd_2_1.add(685, s);
            returncmd_2_1.add(687, new Str(686, ")"));
            returncmd_2.add(688, returncmd_2_1);
            returncmd_2.add(689, comparition);
            returncmd_2.add(690, data);
            returncmd.add(691, returncmd_2);
            returncmd.add(692, skip);

            // function = :begin "#function" ws varname:name s "(" s [varname:parameter [s "," s varname:parameter]+] s ")" skip [block] end
            function.add(694, new Marker(693, "begin"));
            function.add(696, new Str(695, "#function"));
            function.add(697, ws);
            function.add(698, varname);
            function.add(699, s);
            function.add(701, new Str(700, "("));
            function.add(702, s);
            Optional function_1 = new Optional(703, "function_1");
            function_1.add(704, varname);
            Optional function_1_1 = new Optional(705, "function_1_1");
            Repeat function_1_1_1 = new Repeat(706, "function_1_1_1");
            function_1_1_1.add(707, s);
            function_1_1_1.add(709, new Str(708, ","));
            function_1_1_1.add(710, s);
            function_1_1_1.add(711, varname);
            function_1_1.add(712, function_1_1_1);
            function_1.add(713, function_1_1);
            function.add(714, function_1);
            function.add(715, s);
            function.add(717, new Str(716, ")"));
            function.add(718, skip);
            Optional function_2 = new Optional(719, "function_2");
            function_2.add(720, block);
            function.add(721, function_2);
            function.add(722, end);

            // namespace = "#namespace" ws varname:name skip
            namespace.add(724, new Str(723, "#namespace"));
            namespace.add(725, ws);
            namespace.add(726, varname);
            namespace.add(727, skip);

            // error = :begin "#error" s "(" s stringExp:message s ")" skip
            error.add(729, new Marker(728, "begin"));
            error.add(731, new Str(730, "#error"));
            error.add(732, s);
            error.add(734, new Str(733, "("));
            error.add(735, s);
            error.add(736, stringExp);
            error.add(737, s);
            error.add(739, new Str(738, ")"));
            error.add(740, skip);

            // command = [spaces] local|set|write|ifcmd|whilecmd|foreach|importcmd|error|macro|function|call
            Optional command_1 = new Optional(741, "command_1");
            command_1.add(742, spaces);
            command.add(743, command_1);
            OrList command_2 = new OrList(744, "command_2");
            command_2.add(745, local);
            command_2.add(746, set);
            command_2.add(747, write);
            command_2.add(748, ifcmd);
            command_2.add(749, whilecmd);
            command_2.add(750, foreach);
            command_2.add(751, importcmd);
            command_2.add(752, error);
            command_2.add(753, macro);
            command_2.add(754, function);
            command_2.add(755, call);
            command.add(756, command_2);

            // astext = "#>" [!"<#"+]:text "<#"
            astext.add(758, new Str(757, "#>"));
            Optional astext_1 = new Optional(759, "astext_1");
            Repeat astext_1_1 = new Repeat(760, "astext_1_1");
            astext_1_1.add(762, new Str(761, "<#", NOT));
            astext_1.add(763, astext_1_1);
            astext.add(764, astext_1);
            astext.add(766, new Str(765, "<#"));

            // text = !(([spaces] "##"|"#*"|"#>"|("#" (letter | "$"))) | stringref)+
            OrList text_1 = new OrList(767, "text_1");
            ElementList text_1_1 = new ElementList(768, "text_1_1");
            Optional text_1_1_1 = new Optional(769, "text_1_1_1");
            text_1_1_1.add(770, spaces);
            text_1_1.add(771, text_1_1_1);
            OrList text_1_1_2 = new OrList(772, "text_1_1_2");
            text_1_1_2.add(774, new Str(773, "##"));
            text_1_1_2.add(776, new Str(775, "#*"));
            text_1_1_2.add(778, new Str(777, "#>"));
            ElementList text_1_1_2_1 = new ElementList(779, "text_1_1_2_1");
            text_1_1_2_1.add(781, new Str(780, "#"));
            OrList text_1_1_2_1_1 = new OrList(782, "text_1_1_2_1_1");
            text_1_1_2_1_1.add(783, letter);
            text_1_1_2_1_1.add(785, new Str(784, "$"));
            text_1_1_2_1.add(786, text_1_1_2_1_1);
            text_1_1_2.add(787, text_1_1_2_1);
            text_1_1.add(788, text_1_1_2);
            text_1.add(789, text_1_1);
            text_1.add(790, stringref);
            text.add(791, text_1, NOT);

            // block = [astext|returncmd|command|stringref|comment|text]+
            Repeat block_1 = new Repeat(792, "block_1");
            OrList block_1_1 = new OrList(793, "block_1_1");
            block_1_1.add(794, astext);
            block_1_1.add(795, returncmd);
            block_1_1.add(796, command);
            block_1_1.add(797, stringref);
            block_1_1.add(798, comment);
            block_1_1.add(799, text);
            block_1.add(800, block_1_1);
            block.add(801, block_1);

            // template = [namespace|(:defaultNamespace)] block|END
            Optional template_1 = new Optional(802, "template_1");
            OrList template_1_1 = new OrList(803, "template_1_1");
            template_1_1.add(804, namespace);
            template_1_1.add(806, new Marker(805, "defaultNamespace"));
            template_1.add(807, template_1_1);
            template.add(808, template_1);
            OrList template_2 = new OrList(809, "template_2");
            template_2.add(810, block);
            template_2.add(812, new End(811, "template_2"));
            template.add(813, template_2);
    View Full Code Here

    Examples of net.sf.laja.parser.engine2.element.Optional

            // *** Declarations ***
            OrList newline = new OrList(1, "newline");
            OrList comment = new OrList(2, "comment");
            Repeat ws = new Repeat(3, "ws");
            Optional s = new Optional(4, "s");
            Str ff = new Str(5, "\"");
            ElementList str = new ElementList(6, "str");
            OrList letter = new OrList(7, "letter");
            Range digit = new Range(8, "digit", "0", "9");
            ElementList name = new ElementList(9, "name");
            Optional _public = new Optional(10, "public");
            ElementList packagestatement = new ElementList(11, "packagestatement");
            ElementList packagename = new ElementList(12, "packagename");
            ElementList fullclassname = new ElementList(13, "fullclassname");
            ElementList importstatement = new ElementList(14, "importstatement", importstatementImportstatement);
            Optional imports = new Optional(15, "imports");
            ElementList type = new ElementList(16, "type");
            ElementList initialValue = new ElementList(17, "initialValue");
            ElementList attribute = new ElementList(18, "attribute");
            ElementList attributeComment = new ElementList(19, "attributeComment");
            ElementList statement = new ElementList(20, "statement");
            ElementList isvalid = new ElementList(21, "isvalid");
            ElementList uname = new ElementList(22, "uname");
            ElementList getter = new ElementList(23, "getter");
            ElementList parameters = new ElementList(24, "parameters");
            ElementList argument = new ElementList(25, "argument");
            ElementList method = new ElementList(26, "method");
            ElementList stateMethod = new ElementList(27, "stateMethod");
            ElementList convertMethod = new ElementList(28, "convertMethod");
            ElementList classStatement = new ElementList(29, "classStatement");
            ElementList stateTemplate = new ElementList(30, "stateTemplate");

            // *** Statements ***

            // newline = "\r\n" | "\n"
            newline.add(32, new Str(31, "\r\n"));
            newline.add(34, new Str(33, "\n"));

            // comment = ("/*" [(comment | !"*/")+] "*/") | ("//" [!newline+] newline|END)
            ElementList comment_1 = new ElementList(35, "comment_1");
            comment_1.add(37, new Str(36, "/*"));
            Optional comment_1_1 = new Optional(38, "comment_1_1");
            Repeat comment_1_1_1 = new Repeat(39, "comment_1_1_1");
            OrList comment_1_1_1_1 = new OrList(40, "comment_1_1_1_1");
            comment_1_1_1_1.add(41, comment);
            comment_1_1_1_1.add(43, new Str(42, "*/", NOT));
            comment_1_1_1.add(44, comment_1_1_1_1);
            comment_1_1.add(45, comment_1_1_1);
            comment_1.add(46, comment_1_1);
            comment_1.add(48, new Str(47, "*/"));
            comment.add(49, comment_1);
            ElementList comment_2 = new ElementList(50, "comment_2");
            comment_2.add(52, new Str(51, "//"));
            Optional comment_2_1 = new Optional(53, "comment_2_1");
            Repeat comment_2_1_1 = new Repeat(54, "comment_2_1_1");
            comment_2_1_1.add(55, newline, NOT);
            comment_2_1.add(56, comment_2_1_1);
            comment_2.add(57, comment_2_1);
            OrList comment_2_2 = new OrList(58, "comment_2_2");
            comment_2_2.add(59, newline);
            comment_2_2.add(61, new End(60, "comment_2_2"));
            comment_2.add(62, comment_2_2);
            comment.add(63, comment_2);

            // ws = (newline | " " | "\t" | comment)+
            OrList ws_1 = new OrList(64, "ws_1");
            ws_1.add(65, newline);
            ws_1.add(67, new Str(66, " "));
            ws_1.add(69, new Str(68, "\t"));
            ws_1.add(70, comment);
            ws.add(71, ws_1);

            // s = [ws]
            s.add(72, ws);

            // ff = "\""

            // str = ff (("\\\"" | !(ff|newline))+):strval ff
            str.add(73, ff);
            Repeat str_1 = new Repeat(74, "str_1");
            OrList str_1_1 = new OrList(75, "str_1_1");
            str_1_1.add(77, new Str(76, "\\\""));
            OrList str_1_1_1 = new OrList(78, "str_1_1_1", NOT);
            str_1_1_1.add(79, ff);
            str_1_1_1.add(80, newline);
            str_1_1.add(81, str_1_1_1);
            str_1.add(82, str_1_1);
            str.add(83, str_1);
            str.add(84, ff);

            // letter = "a".."z" | "A".."Z" | "_" | "$"
            letter.add(86, new Range(85, "letter", "a", "z"));
            letter.add(88, new Range(87, "letter", "A", "Z"));
            letter.add(90, new Str(89, "_"));
            letter.add(92, new Str(91, "$"));

            // digit = "0".."9"

            // name = letter [letter | digit]+
            name.add(93, letter);
            Optional name_1 = new Optional(94, "name_1");
            Repeat name_1_1 = new Repeat(95, "name_1_1");
            OrList name_1_1_1 = new OrList(96, "name_1_1_1");
            name_1_1_1.add(97, letter);
            name_1_1_1.add(98, digit);
            name_1_1.add(99, name_1_1_1);
            name_1.add(100, name_1_1);
            name.add(101, name_1);

            // public = ["public" ws]
            _public.add(103, new Str(102, "public"));
            _public.add(104, ws);

            // packagestatement = "package" ws packagename s ";"
            packagestatement.add(106, new Str(105, "package"));
            packagestatement.add(107, ws);
            packagestatement.add(108, packagename, stateTemplatePackagestatementPackagename);
            packagestatement.add(109, s);
            packagestatement.add(111, new Str(110, ";"));

            // packagename = name ["." name]+
            packagename.add(112, name);
            Optional packagename_1 = new Optional(113, "packagename_1");
            Repeat packagename_1_1 = new Repeat(114, "packagename_1_1");
            packagename_1_1.add(116, new Str(115, "."));
            packagename_1_1.add(117, name);
            packagename_1.add(118, packagename_1_1);
            packagename.add(119, packagename_1);

            // fullclassname = packagename
            fullclassname.add(120, packagename);

            // importstatement = "import" ws ["static":static ws] fullclassname s ";"
            importstatement.add(122, new Str(121, "import"));
            importstatement.add(123, ws);
            Optional importstatement_1 = new Optional(124, "importstatement_1");
            importstatement_1.add(126, new Str(125, "static", importstatementImportstatementStatic));
            importstatement_1.add(127, ws);
            importstatement.add(128, importstatement_1);
            importstatement.add(129, fullclassname, importstatementImportstatementFullclassname);
            importstatement.add(130, s);
            importstatement.add(132, new Str(131, ";"));

            // imports = [s importstatement]+
            Repeat imports_1 = new Repeat(133, "imports_1");
            imports_1.add(134, s);
            imports_1.add(135, importstatement, importsImportsImportstatement);
            imports.add(136, imports_1);

            // type = name [s "<" s type s ">"] [ s "," s type ]
            type.add(137, name);
            Optional type_1 = new Optional(138, "type_1");
            type_1.add(139, s);
            type_1.add(141, new Str(140, "<"));
            type_1.add(142, s);
            type_1.add(143, type);
            type_1.add(144, s);
            type_1.add(146, new Str(145, ">"));
            type.add(147, type_1);
            Optional type_2 = new Optional(148, "type_2");
            type_2.add(149, s);
            type_2.add(151, new Str(150, ","));
            type_2.add(152, s);
            type_2.add(153, type);
            type.add(154, type_2);

            // initialValue = "=" s !";"+:value
            initialValue.add(156, new Str(155, "="));
            initialValue.add(157, s);
            Repeat initialValue_1 = new Repeat(158, "initialValue_1", attributeInitialValueValue);
            initialValue_1.add(160, new Str(159, ";", NOT));
            initialValue.add(161, initialValue_1);

            // attribute = type ws name:variable s [initialValue s] ";" attributeComment|s
            attribute.add(162, type, attributeAttributeType);
            attribute.add(163, ws);
            attribute.add(164, name, attributeAttributeVariable);
            attribute.add(165, s);
            Optional attribute_1 = new Optional(166, "attribute_1");
            attribute_1.add(167, initialValue);
            attribute_1.add(168, s);
            attribute.add(169, attribute_1);
            attribute.add(171, new Str(170, ";"));
            OrList attribute_2 = new OrList(172, "attribute_2");
            attribute_2.add(173, attributeComment);
            attribute_2.add(174, s);
            attribute.add(175, attribute_2);

            // attributeComment = ([" " | "\t"]+ "//" [!newline+]):comment newline|END
            ElementList attributeComment_1 = new ElementList(176, "attributeComment_1", attributeAttributeCommentComment);
            Optional attributeComment_1_1 = new Optional(177, "attributeComment_1_1");
            Repeat attributeComment_1_1_1 = new Repeat(178, "attributeComment_1_1_1");
            OrList attributeComment_1_1_1_1 = new OrList(179, "attributeComment_1_1_1_1");
            attributeComment_1_1_1_1.add(181, new Str(180, " "));
            attributeComment_1_1_1_1.add(183, new Str(182, "\t"));
            attributeComment_1_1_1.add(184, attributeComment_1_1_1_1);
            attributeComment_1_1.add(185, attributeComment_1_1_1);
            attributeComment_1.add(186, attributeComment_1_1);
            attributeComment_1.add(188, new Str(187, "//"));
            Optional attributeComment_1_2 = new Optional(189, "attributeComment_1_2");
            Repeat attributeComment_1_2_1 = new Repeat(190, "attributeComment_1_2_1");
            attributeComment_1_2_1.add(191, newline, NOT);
            attributeComment_1_2.add(192, attributeComment_1_2_1);
            attributeComment_1.add(193, attributeComment_1_2);
            attributeComment.add(194, attributeComment_1);
            OrList attributeComment_2 = new OrList(195, "attributeComment_2");
            attributeComment_2.add(196, newline);
            attributeComment_2.add(198, new End(197, "attributeComment_2"));
            attributeComment.add(199, attributeComment_2);

            // statement = "{" s [(statement | str | !"}")+]:innerStatement "}"
            statement.add(201, new Str(200, "{"));
            statement.add(202, s);
            Optional statement_1 = new Optional(203, "statement_1", statementStatementInnerStatement);
            Repeat statement_1_1 = new Repeat(204, "statement_1_1");
            OrList statement_1_1_1 = new OrList(205, "statement_1_1_1");
            statement_1_1_1.add(206, statement, statementStatementStatement);
            statement_1_1_1.add(207, str);
            statement_1_1_1.add(209, new Str(208, "}", NOT));
            statement_1_1.add(210, statement_1_1_1);
            statement_1.add(211, statement_1_1);
            statement.add(212, statement_1);
            statement.add(214, new Str(213, "}"));

            // isvalid = s public "boolean" ws "isValid()" s statement
            isvalid.add(215, s);
            isvalid.add(216, _public);
            isvalid.add(218, new Str(217, "boolean"));
            isvalid.add(219, ws);
            isvalid.add(221, new Str(220, "isValid()"));
            isvalid.add(222, s);
            isvalid.add(223, statement, isvalidIsvalidStatement);

            // uname = "A".."Z" [letter | digit]+
            uname.add(225, new Range(224, "uname", "A", "Z"));
            Optional uname_1 = new Optional(226, "uname_1");
            Repeat uname_1_1 = new Repeat(227, "uname_1_1");
            OrList uname_1_1_1 = new OrList(228, "uname_1_1_1");
            uname_1_1_1.add(229, letter);
            uname_1_1_1.add(230, digit);
            uname_1_1.add(231, uname_1_1_1);
            uname_1.add(232, uname_1_1);
            uname.add(233, uname_1);

            // getter = "get" uname s "(" s ")"
            getter.add(235, new Str(234, "get"));
            getter.add(236, uname);
            getter.add(237, s);
            getter.add(239, new Str(238, "("));
            getter.add(240, s);
            getter.add(242, new Str(241, ")"));

            // parameters = s [!")"+]
            parameters.add(243, s);
            Optional parameters_1 = new Optional(244, "parameters_1");
            Repeat parameters_1_1 = new Repeat(245, "parameters_1_1");
            parameters_1_1.add(247, new Str(246, ")", NOT));
            parameters_1.add(248, parameters_1_1);
            parameters.add(249, parameters_1);

            // argument = getter | name:variable [s "." s argument]
            OrList argument_1 = new OrList(250, "argument_1");
            argument_1.add(251, getter);
            argument_1.add(252, name);
            argument.add(253, argument_1);
            Optional argument_2 = new Optional(254, "argument_2");
            argument_2.add(255, s);
            argument_2.add(257, new Str(256, "."));
            argument_2.add(258, s);
            argument_2.add(259, argument);
            argument.add(260, argument_2);

            // method = s "." s name:variable s "(" s argument s ")"
            method.add(261, s);
            method.add(263, new Str(262, "."));
            method.add(264, s);
            method.add(265, name, methodMethodVariable);
            method.add(266, s);
            method.add(268, new Str(267, "("));
            method.add(269, s);
            method.add(270, argument);
            method.add(271, s);
            method.add(273, new Str(272, ")"));

            // stateMethod = public name:returnclass ws "state" uname s "(" parameters ")" s "{" s  "return" ws name:implclass s method+ s ";" s "}"
            stateMethod.add(274, _public);
            stateMethod.add(275, name, stateMethodStateMethodReturnclass);
            stateMethod.add(276, ws);
            stateMethod.add(278, new Str(277, "state"));
            stateMethod.add(279, uname, stateMethodStateMethodUname);
            stateMethod.add(280, s);
            stateMethod.add(282, new Str(281, "("));
            stateMethod.add(283, parameters, stateMethodStateMethodParameters);
            stateMethod.add(285, new Str(284, ")"));
            stateMethod.add(286, s);
            stateMethod.add(288, new Str(287, "{"));
            stateMethod.add(289, s);
            stateMethod.add(291, new Str(290, "return"));
            stateMethod.add(292, ws);
            stateMethod.add(293, name, stateMethodStateMethodImplclass);
            stateMethod.add(294, s);
            Repeat stateMethod_1 = new Repeat(295, "stateMethod_1");
            stateMethod_1.add(296, method, stateMethodStateMethodMethod);
            stateMethod.add(297, stateMethod_1);
            stateMethod.add(298, s);
            stateMethod.add(300, new Str(299, ";"));
            stateMethod.add(301, s);
            stateMethod.add(303, new Str(302, "}"));

            // convertMethod = public name ws "convert" [uname] s "(" s name:type ws name:variable s ")" s "{" s "return" ws !";"+:statement ";" s "}"
            convertMethod.add(304, _public);
            convertMethod.add(305, name);
            convertMethod.add(306, ws);
            convertMethod.add(308, new Str(307, "convert"));
            Optional convertMethod_1 = new Optional(309, "convertMethod_1");
            convertMethod_1.add(310, uname);
            convertMethod.add(311, convertMethod_1);
            convertMethod.add(312, s);
            convertMethod.add(314, new Str(313, "("));
            convertMethod.add(315, s);
            convertMethod.add(316, name, convertMethodConvertMethodType);
            convertMethod.add(317, ws);
            convertMethod.add(318, name, convertMethodConvertMethodVariable);
            convertMethod.add(319, s);
            convertMethod.add(321, new Str(320, ")"));
            convertMethod.add(322, s);
            convertMethod.add(324, new Str(323, "{"));
            convertMethod.add(325, s);
            convertMethod.add(327, new Str(326, "return"));
            convertMethod.add(328, ws);
            Repeat convertMethod_2 = new Repeat(329, "convertMethod_2", convertMethodConvertMethodStatement);
            convertMethod_2.add(331, new Str(330, ";", NOT));
            convertMethod.add(332, convertMethod_2);
            convertMethod.add(334, new Str(333, ";"));
            convertMethod.add(335, s);
            convertMethod.add(337, new Str(336, "}"));

            // classStatement = public "class" ws name:classname s ["extends" ws name s] "{" [s attribute | isvalid | convertMethod | stateMethod]+ s "}"
            classStatement.add(338, _public);
            classStatement.add(340, new Str(339, "class"));
            classStatement.add(341, ws);
            classStatement.add(342, name, classStatementClassStatementClassname);
            classStatement.add(343, s);
            Optional classStatement_1 = new Optional(344, "classStatement_1");
            classStatement_1.add(346, new Str(345, "extends"));
            classStatement_1.add(347, ws);
            classStatement_1.add(348, name);
            classStatement_1.add(349, s);
            classStatement.add(350, classStatement_1);
            classStatement.add(352, new Str(351, "{"));
            Optional classStatement_2 = new Optional(353, "classStatement_2");
            Repeat classStatement_2_1 = new Repeat(354, "classStatement_2_1");
            classStatement_2_1.add(355, s);
            OrList classStatement_2_1_1 = new OrList(356, "classStatement_2_1_1");
            classStatement_2_1_1.add(357, attribute, classStatementClassStatementAttribute);
            classStatement_2_1_1.add(358, isvalid, classStatementClassStatementIsvalid);
            classStatement_2_1_1.add(359, convertMethod, classStatementClassStatementConvertMethod);
            classStatement_2_1_1.add(360, stateMethod, classStatementClassStatementStateMethod);
            classStatement_2_1.add(361, classStatement_2_1_1);
            classStatement_2.add(362, classStatement_2_1);
            classStatement.add(363, classStatement_2);
            classStatement.add(364, s);
            classStatement.add(366, new Str(365, "}"));

            // stateTemplate = s packagestatement s imports s classStatement s
    View Full Code Here

    Examples of net.sf.laja.parser.engine2.element.Optional

            // *** Declarations ***
            OrList newline = new OrList(1, "newline");
            OrList comment = new OrList(2, "comment");
            Repeat ws = new Repeat(3, "ws");
            Optional s = new Optional(4, "s");
            Str ff = new Str(5, "\"");
            ElementList str = new ElementList(6, "str");
            OrList letter = new OrList(7, "letter");
            Range digit = new Range(8, "digit", "0", "9");
            ElementList name = new ElementList(9, "name");
            Optional _public = new Optional(10, "public");
            ElementList packagestatement = new ElementList(11, "packagestatement");
            ElementList packagename = new ElementList(12, "packagename");
            ElementList fullclassname = new ElementList(13, "fullclassname");
            ElementList importstatement = new ElementList(14, "importstatement");
            Optional imports = new Optional(15, "imports");
            ElementList type = new ElementList(16, "type");
            ElementList initialValue = new ElementList(17, "initialValue");
            ElementList attribute = new ElementList(18, "attribute");
            ElementList attributeComment = new ElementList(19, "attributeComment");
            ElementList statement = new ElementList(20, "statement");
            ElementList isvalid = new ElementList(21, "isvalid");
            ElementList uname = new ElementList(22, "uname");
            ElementList getter = new ElementList(23, "getter");
            ElementList parameters = new ElementList(24, "parameters");
            ElementList argument = new ElementList(25, "argument");
            ElementList method = new ElementList(26, "method");
            ElementList stateMethod = new ElementList(27, "stateMethod");
            ElementList convertMethod = new ElementList(28, "convertMethod");
            ElementList classStatement = new ElementList(29, "classStatement");
            ElementList stateTemplate = new ElementList(30, "stateTemplate");

            // *** Statements ***

            // newline = "\r\n" | "\n"
            newline.add(32, new Str(31, "\r\n"));
            newline.add(34, new Str(33, "\n"));

            // comment = ("/*" [(comment | !"*/")+] "*/") | ("//" [!newline+] newline|END)
            ElementList comment_1 = new ElementList(35, "comment_1");
            comment_1.add(37, new Str(36, "/*"));
            Optional comment_1_1 = new Optional(38, "comment_1_1");
            Repeat comment_1_1_1 = new Repeat(39, "comment_1_1_1");
            OrList comment_1_1_1_1 = new OrList(40, "comment_1_1_1_1");
            comment_1_1_1_1.add(41, comment);
            comment_1_1_1_1.add(43, new Str(42, "*/", NOT));
            comment_1_1_1.add(44, comment_1_1_1_1);
            comment_1_1.add(45, comment_1_1_1);
            comment_1.add(46, comment_1_1);
            comment_1.add(48, new Str(47, "*/"));
            comment.add(49, comment_1);
            ElementList comment_2 = new ElementList(50, "comment_2");
            comment_2.add(52, new Str(51, "//"));
            Optional comment_2_1 = new Optional(53, "comment_2_1");
            Repeat comment_2_1_1 = new Repeat(54, "comment_2_1_1");
            comment_2_1_1.add(55, newline, NOT);
            comment_2_1.add(56, comment_2_1_1);
            comment_2.add(57, comment_2_1);
            OrList comment_2_2 = new OrList(58, "comment_2_2");
            comment_2_2.add(59, newline);
            comment_2_2.add(61, new End(60, "comment_2_2"));
            comment_2.add(62, comment_2_2);
            comment.add(63, comment_2);

            // ws = (newline | " " | "\t" | comment)+
            OrList ws_1 = new OrList(64, "ws_1");
            ws_1.add(65, newline);
            ws_1.add(67, new Str(66, " "));
            ws_1.add(69, new Str(68, "\t"));
            ws_1.add(70, comment);
            ws.add(71, ws_1);

            // s = [ws]
            s.add(72, ws);

            // ff = "\""

            // str = ff (("\\\"" | !(ff|newline))+):strval ff
            str.add(73, ff);
            Repeat str_1 = new Repeat(74, "str_1");
            OrList str_1_1 = new OrList(75, "str_1_1");
            str_1_1.add(77, new Str(76, "\\\""));
            OrList str_1_1_1 = new OrList(78, "str_1_1_1", NOT);
            str_1_1_1.add(79, ff);
            str_1_1_1.add(80, newline);
            str_1_1.add(81, str_1_1_1);
            str_1.add(82, str_1_1);
            str.add(83, str_1);
            str.add(84, ff);

            // letter = "a".."z" | "A".."Z" | "_" | "$"
            letter.add(86, new Range(85, "letter", "a", "z"));
            letter.add(88, new Range(87, "letter", "A", "Z"));
            letter.add(90, new Str(89, "_"));
            letter.add(92, new Str(91, "$"));

            // digit = "0".."9"

            // name = letter [letter | digit]+
            name.add(93, letter);
            Optional name_1 = new Optional(94, "name_1");
            Repeat name_1_1 = new Repeat(95, "name_1_1");
            OrList name_1_1_1 = new OrList(96, "name_1_1_1");
            name_1_1_1.add(97, letter);
            name_1_1_1.add(98, digit);
            name_1_1.add(99, name_1_1_1);
            name_1.add(100, name_1_1);
            name.add(101, name_1);

            // public = ["public" ws]
            _public.add(103, new Str(102, "public"));
            _public.add(104, ws);

            // packagestatement = "package" ws packagename s ";"
            packagestatement.add(106, new Str(105, "package"));
            packagestatement.add(107, ws);
            packagestatement.add(108, packagename);
            packagestatement.add(109, s);
            packagestatement.add(111, new Str(110, ";"));

            // packagename = name ["." name]+
            packagename.add(112, name);
            Optional packagename_1 = new Optional(113, "packagename_1");
            Repeat packagename_1_1 = new Repeat(114, "packagename_1_1");
            packagename_1_1.add(116, new Str(115, "."));
            packagename_1_1.add(117, name);
            packagename_1.add(118, packagename_1_1);
            packagename.add(119, packagename_1);

            // fullclassname = packagename
            fullclassname.add(120, packagename);

            // importstatement = "import" ws ["static":static ws] fullclassname s ";"
            importstatement.add(122, new Str(121, "import"));
            importstatement.add(123, ws);
            Optional importstatement_1 = new Optional(124, "importstatement_1");
            importstatement_1.add(126, new Str(125, "static"));
            importstatement_1.add(127, ws);
            importstatement.add(128, importstatement_1);
            importstatement.add(129, fullclassname);
            importstatement.add(130, s);
            importstatement.add(132, new Str(131, ";"));

            // imports = [s importstatement]+
            Repeat imports_1 = new Repeat(133, "imports_1");
            imports_1.add(134, s);
            imports_1.add(135, importstatement);
            imports.add(136, imports_1);

            // type = name [s "<" s type s ">"] [ s "," s type ]
            type.add(137, name);
            Optional type_1 = new Optional(138, "type_1");
            type_1.add(139, s);
            type_1.add(141, new Str(140, "<"));
            type_1.add(142, s);
            type_1.add(143, type);
            type_1.add(144, s);
            type_1.add(146, new Str(145, ">"));
            type.add(147, type_1);
            Optional type_2 = new Optional(148, "type_2");
            type_2.add(149, s);
            type_2.add(151, new Str(150, ","));
            type_2.add(152, s);
            type_2.add(153, type);
            type.add(154, type_2);

            // initialValue = "=" s !";"+:value
            initialValue.add(156, new Str(155, "="));
            initialValue.add(157, s);
            Repeat initialValue_1 = new Repeat(158, "initialValue_1");
            initialValue_1.add(160, new Str(159, ";", NOT));
            initialValue.add(161, initialValue_1);

            // attribute = type ws name:variable s [initialValue s] ";" attributeComment|s
            attribute.add(162, type);
            attribute.add(163, ws);
            attribute.add(164, name);
            attribute.add(165, s);
            Optional attribute_1 = new Optional(166, "attribute_1");
            attribute_1.add(167, initialValue);
            attribute_1.add(168, s);
            attribute.add(169, attribute_1);
            attribute.add(171, new Str(170, ";"));
            OrList attribute_2 = new OrList(172, "attribute_2");
            attribute_2.add(173, attributeComment);
            attribute_2.add(174, s);
            attribute.add(175, attribute_2);

            // attributeComment = ([" " | "\t"]+ "//" [!newline+]):comment newline|END
            ElementList attributeComment_1 = new ElementList(176, "attributeComment_1");
            Optional attributeComment_1_1 = new Optional(177, "attributeComment_1_1");
            Repeat attributeComment_1_1_1 = new Repeat(178, "attributeComment_1_1_1");
            OrList attributeComment_1_1_1_1 = new OrList(179, "attributeComment_1_1_1_1");
            attributeComment_1_1_1_1.add(181, new Str(180, " "));
            attributeComment_1_1_1_1.add(183, new Str(182, "\t"));
            attributeComment_1_1_1.add(184, attributeComment_1_1_1_1);
            attributeComment_1_1.add(185, attributeComment_1_1_1);
            attributeComment_1.add(186, attributeComment_1_1);
            attributeComment_1.add(188, new Str(187, "//"));
            Optional attributeComment_1_2 = new Optional(189, "attributeComment_1_2");
            Repeat attributeComment_1_2_1 = new Repeat(190, "attributeComment_1_2_1");
            attributeComment_1_2_1.add(191, newline, NOT);
            attributeComment_1_2.add(192, attributeComment_1_2_1);
            attributeComment_1.add(193, attributeComment_1_2);
            attributeComment.add(194, attributeComment_1);
            OrList attributeComment_2 = new OrList(195, "attributeComment_2");
            attributeComment_2.add(196, newline);
            attributeComment_2.add(198, new End(197, "attributeComment_2"));
            attributeComment.add(199, attributeComment_2);

            // statement = "{" s [(statement | str | !"}")+]:innerStatement "}"
            statement.add(201, new Str(200, "{"));
            statement.add(202, s);
            Optional statement_1 = new Optional(203, "statement_1");
            Repeat statement_1_1 = new Repeat(204, "statement_1_1");
            OrList statement_1_1_1 = new OrList(205, "statement_1_1_1");
            statement_1_1_1.add(206, statement);
            statement_1_1_1.add(207, str);
            statement_1_1_1.add(209, new Str(208, "}", NOT));
            statement_1_1.add(210, statement_1_1_1);
            statement_1.add(211, statement_1_1);
            statement.add(212, statement_1);
            statement.add(214, new Str(213, "}"));

            // isvalid = s public "boolean" ws "isValid()" s statement
            isvalid.add(215, s);
            isvalid.add(216, _public);
            isvalid.add(218, new Str(217, "boolean"));
            isvalid.add(219, ws);
            isvalid.add(221, new Str(220, "isValid()"));
            isvalid.add(222, s);
            isvalid.add(223, statement);

            // uname = "A".."Z" [letter | digit]+
            uname.add(225, new Range(224, "uname", "A", "Z"));
            Optional uname_1 = new Optional(226, "uname_1");
            Repeat uname_1_1 = new Repeat(227, "uname_1_1");
            OrList uname_1_1_1 = new OrList(228, "uname_1_1_1");
            uname_1_1_1.add(229, letter);
            uname_1_1_1.add(230, digit);
            uname_1_1.add(231, uname_1_1_1);
            uname_1.add(232, uname_1_1);
            uname.add(233, uname_1);

            // getter = "get" uname s "(" s ")"
            getter.add(235, new Str(234, "get"));
            getter.add(236, uname);
            getter.add(237, s);
            getter.add(239, new Str(238, "("));
            getter.add(240, s);
            getter.add(242, new Str(241, ")"));

            // parameters = s [!")"+]
            parameters.add(243, s);
            Optional parameters_1 = new Optional(244, "parameters_1");
            Repeat parameters_1_1 = new Repeat(245, "parameters_1_1");
            parameters_1_1.add(247, new Str(246, ")", NOT));
            parameters_1.add(248, parameters_1_1);
            parameters.add(249, parameters_1);

            // argument = getter | name:variable [s "." s argument]
            OrList argument_1 = new OrList(250, "argument_1");
            argument_1.add(251, getter);
            argument_1.add(252, name);
            argument.add(253, argument_1);
            Optional argument_2 = new Optional(254, "argument_2");
            argument_2.add(255, s);
            argument_2.add(257, new Str(256, "."));
            argument_2.add(258, s);
            argument_2.add(259, argument);
            argument.add(260, argument_2);

            // method = s "." s name:variable s "(" s argument s ")"
            method.add(261, s);
            method.add(263, new Str(262, "."));
            method.add(264, s);
            method.add(265, name);
            method.add(266, s);
            method.add(268, new Str(267, "("));
            method.add(269, s);
            method.add(270, argument);
            method.add(271, s);
            method.add(273, new Str(272, ")"));

            // stateMethod = public name:returnclass ws "state" uname s "(" parameters ")" s "{" s  "return" ws name:implclass s method+ s ";" s "}"
            stateMethod.add(274, _public);
            stateMethod.add(275, name);
            stateMethod.add(276, ws);
            stateMethod.add(278, new Str(277, "state"));
            stateMethod.add(279, uname);
            stateMethod.add(280, s);
            stateMethod.add(282, new Str(281, "("));
            stateMethod.add(283, parameters);
            stateMethod.add(285, new Str(284, ")"));
            stateMethod.add(286, s);
            stateMethod.add(288, new Str(287, "{"));
            stateMethod.add(289, s);
            stateMethod.add(291, new Str(290, "return"));
            stateMethod.add(292, ws);
            stateMethod.add(293, name);
            stateMethod.add(294, s);
            Repeat stateMethod_1 = new Repeat(295, "stateMethod_1");
            stateMethod_1.add(296, method);
            stateMethod.add(297, stateMethod_1);
            stateMethod.add(298, s);
            stateMethod.add(300, new Str(299, ";"));
            stateMethod.add(301, s);
            stateMethod.add(303, new Str(302, "}"));

            // convertMethod = public name ws "convert" [uname] s "(" s name:type ws name:variable s ")" s "{" s "return" ws !";"+:statement ";" s "}"
            convertMethod.add(304, _public);
            convertMethod.add(305, name);
            convertMethod.add(306, ws);
            convertMethod.add(308, new Str(307, "convert"));
            Optional convertMethod_1 = new Optional(309, "convertMethod_1");
            convertMethod_1.add(310, uname);
            convertMethod.add(311, convertMethod_1);
            convertMethod.add(312, s);
            convertMethod.add(314, new Str(313, "("));
            convertMethod.add(315, s);
            convertMethod.add(316, name);
            convertMethod.add(317, ws);
            convertMethod.add(318, name);
            convertMethod.add(319, s);
            convertMethod.add(321, new Str(320, ")"));
            convertMethod.add(322, s);
            convertMethod.add(324, new Str(323, "{"));
            convertMethod.add(325, s);
            convertMethod.add(327, new Str(326, "return"));
            convertMethod.add(328, ws);
            Repeat convertMethod_2 = new Repeat(329, "convertMethod_2");
            convertMethod_2.add(331, new Str(330, ";", NOT));
            convertMethod.add(332, convertMethod_2);
            convertMethod.add(334, new Str(333, ";"));
            convertMethod.add(335, s);
            convertMethod.add(337, new Str(336, "}"));

            // classStatement = public "class" ws name:classname s ["extends" ws name s] "{" [s attribute | isvalid | convertMethod | stateMethod]+ s "}"
            classStatement.add(338, _public);
            classStatement.add(340, new Str(339, "class"));
            classStatement.add(341, ws);
            classStatement.add(342, name);
            classStatement.add(343, s);
            Optional classStatement_1 = new Optional(344, "classStatement_1");
            classStatement_1.add(346, new Str(345, "extends"));
            classStatement_1.add(347, ws);
            classStatement_1.add(348, name);
            classStatement_1.add(349, s);
            classStatement.add(350, classStatement_1);
            classStatement.add(352, new Str(351, "{"));
            Optional classStatement_2 = new Optional(353, "classStatement_2");
            Repeat classStatement_2_1 = new Repeat(354, "classStatement_2_1");
            classStatement_2_1.add(355, s);
            OrList classStatement_2_1_1 = new OrList(356, "classStatement_2_1_1");
            classStatement_2_1_1.add(357, attribute);
            classStatement_2_1_1.add(358, isvalid);
            classStatement_2_1_1.add(359, convertMethod);
            classStatement_2_1_1.add(360, stateMethod);
            classStatement_2_1.add(361, classStatement_2_1_1);
            classStatement_2.add(362, classStatement_2_1);
            classStatement.add(363, classStatement_2);
            classStatement.add(364, s);
            classStatement.add(366, new Str(365, "}"));

            // stateTemplate = s packagestatement s imports s classStatement s
    View Full Code Here
    TOP
    Copyright © 2018 www.massapi.com. All rights reserved.
    All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.